目前我准备开发一个稍微有一点复杂的 Windows 控制台程序,但是不知道如何选择合适的编程语言,我目前了解到的如下:
C#
- 很久之前学过,对于语法了解一些
- 依赖运行时环境,比如:.NET Framework 4.x
- 容易被反编译
Go
- 刚了解,语法不熟悉,但是感觉还不错
- 不依赖运行时
- 无法被反编译
其它
- 我需要调用 Win32 API ,不知道这两种语言哪个更方便一些
- .NET 我只对于 .NET Framework 了解一点,.NET Core 不懂
先感谢大家帮我分析一下!
目前我准备开发一个稍微有一点复杂的 Windows 控制台程序,但是不知道如何选择合适的编程语言,我目前了解到的如下:
先感谢大家帮我分析一下!
|
cat007Mar 13, 2024
1
Go 不了解,调用 Win32API 用 C#更方便吧,另外 C#代码可以混淆防止被反编译
|
|
LongMaozMar 13, 2024
2
.net 语法比 go 友好一点 不需要自行处理指针
如果是稍微有点复杂,建议直接使用.net |
|
heloneMar 13, 2024
4
这俩语言其实都能满足,更多是看你熟悉哪个,C#开发肯定坑相对较少,Go 在 Windows 下还是有不少的问题的
|
|
0o0O0o0O0oMar 13, 2024 via iPhone
5
> 容易被反编译
> 无法被反编译 否,只是分析难度不同。我认为真需要保护的话也不可能指望这种难度区别,C# 有商业化的保护,Go 据我所知是没有,只有功能有限且用起来略麻烦的开源混淆工具。 > 依赖运行时环境 https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/ > 需要调用 Win32 API 那肯定 C# 方便 |
|
8
@0o0O0o0O0o 感谢,AOT 我还是第一次听说,有机会了解一下。
|
|
ZZ74Mar 13, 2024 via Android
9
都是虚拟机语言 go 怎么就不依赖运行时了。。。
反倒是 c #,现在 win 一般自带一个 net 运行时,更便捷 |
|
JirajineMar 13, 2024
11
现在这个时代,没有什么代码有被逆向的价值。反编译保护几乎是 malware only 的需求。
|
|
12
肯定选 C#了,时代变了 C#非常现代化,并且写 Windows Console 的话没啥更好的选择
.NET 8 不依赖.NET Framework,控制台程序可以 AOT 编译,不存在反编译的可能性 .NET 也更容易调用 Win32 API |
|
beyondexMar 13, 2024
13
你对 C# 的认知停留在多年以前。。。
1. .NET Core 可以发不成不依赖运行时的 self contained 版本,比如这个复杂的桌面搜索程序 https://seadesktopsearch.com/ 2. AOT 就不怕反编译,而且体积也比较小 3. 不 AOT 又不想被反编译,可用混淆工具混淆或加密,比如 Dotfuscator (做混淆的,有免费版也有付费版)、DNGuard 虚拟机壳等。 |
|
shilyxMar 13, 2024
16
|
|
minibear2021Mar 13, 2024
17
op 可以了解一下.net 8 的 aot 机制,另外写 win console 我觉得没用比 c#更方便快捷的了。
|
|
DTCPSSMar 13, 2024
18
C# AOT 或者 Rust
|
|
ysc3839Mar 13, 2024 via Android
21
没法推荐,得看程序是做什么的
|
|
lslqtzMar 13, 2024
22
C# 坑少, Go 跨平台.
|
|
ysc3839Mar 13, 2024 via Android
23
|
|
BiggoldfishMar 13, 2024
24
容易被反编译/无法被反编译
绝大多数代码扔 GitHub 上请我看我都懒得看,除非是不正经的需求不然哪有那么多反编译的需求 |
|
26
@Biggoldfish 哈哈,确实是。
|
|
fgwmlhdkkkwMar 13, 2024
27
如果依赖反射的话,就别用 go ,tag 反人类
|
|
RehttMar 13, 2024 via Android
28
@shilyx 这个库热度高一点 https://github.com/lxn/win
|
|
wWjd5V5L0636B5YVMar 13, 2024
29
@hahade #6 😱😱😱
|
|
FreeGuyMar 13, 2024
30
都标注了 Windows 了,既然都是 Windows 还要啥 Console 程序,直接上 Winforms 或者 Delphi VCL :)
|
|
31
@FreeGuy 我要做的这个功能不需要界面,只需要一个控制台就可以了。主要是看哪个方便一些,并且能够集成 win32api 就更好了。
|
|
oyjcMar 13, 2024
32
如果哪一天你的需求变更了,需要 GUI 了,C# 就更方便了
|
|
FreeGuyMar 13, 2024
34
玩控制台不用思考了,直接上 Golang ,毫无悬念的选择,Windows 上做开发的都是玩可视化,控制台世界和可视化是两个世界,Golang 属于控制台世界!
|
|
ugpuMar 13, 2024
36
没有理由的 C#
简单点 你要去读书: C#是校长的亲儿子 全力支持的那种 |
|
FreeGuyMar 13, 2024
37
Golang 已经在过去几年经过了非常多大厂的实践,在控制台世界非常成熟了,以云原生社区 K8S 生态为代表;反观 Delphi/C# 生态更多还是可视化多,主要是 ToC ,服务端虽然也有人做开发,但解决方案的生态远远没法与云原生生态比较,毕竟背后一堆大厂背书,而 C# 几乎只有微软,我说的是服务端领域,请网友看清楚再喷哦!另外,尽管有 AOT 编译问世提高运行效率,但在服务端领域生产实践还需要一些时间,当然包括 Java 在内;云原生时代之后改变的东西太多了,当然现在 C# 无疑是 ToC 的王者,以 Unity 作为代表!
|
|
9dP06m83vIV00l72Mar 13, 2024
38
推荐你一个非常赞的原生组合:Vala + GLib + MSYS2 + VSCode
|
|
Al0rid4lMar 14, 2024
40
需要调用 Win32 API
就这一条就 C# 吧, 另外别 .NET Framework 了, 现在直接 .NET8 |