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