哪种语言编写的程序转成可执行文件比较方便(exe / binary file) ?

2023-07-04 00:23:01 +08:00
 aim467

想写一些小工具,主要是基于命令行上进行操作的工具,想问问大家哪个语言来写比较方便

13508 次点击
所在节点    程序员
159 条回复
GeruzoniAnsasu
2023-07-05 02:55:44 +08:00
@H0H
> 支持自动下载并安装特定版本的 JRE 的,这样 exe 程序本身就可以保持的很小,一般都小于 20M

你有没有想过……
H0H
2023-07-05 02:57:22 +08:00
@LeeReamond 的确,什么语言都能写写小工具,我有些现在还在跑的小工具,就是 win32asm 汇编写的。但这类工具做不大,如果将来做着做着小工具需要转为大工具持续开发,那汇编、C 、C++、Qt 这类用起来就很麻烦。主要缺失的就是生态里面的各种第三方库。招人也很难。这类语言市场一直做不大,本就证明了这一点。

如果做一个小工具就不再维护了,那的确什么语言都行。C 这类麻烦的就用 Python 或 Go 这类更新的语言。但如果一个小工具打算用几十年(我自己用汇编写的小工具都有 10 年的历史了,至今还在用,而且在 windows 11 ARM 版验证过,也能自动被转译执行),那技术选型选来选去,最终就会发现还是 Java 这类市场占有率最大的语言最省事。想做成桌面版轻轻松松搞定,想改成 Web 版在服务端运行也很容易,想支持三大桌面操作系统也不需要重新开发,又有最完善的生态,需要什么都有第三方库。而 C/C++/Python/Go 这类,如果要求也这么高,那它们还真是搞不定。

至于不会打 exe ,这明显是技术水平问题。至于说程序包太大,Electron 也不小啊,迅雷这种不就在用嘛。更不用说,手机上的 App ,现在随便一个都轻轻松松几百 M ,一个 Java 带 JRE 也是几百 M 的桌面版小工具还有什么不能接受的?

当然,Java 是泛指,不是特指。我的意思就是说应该尽可能选择市场占有率最高的语言及其生态来开发 exe 小工具。可能基于 js 的也行,只不过我没有足够踩坑经验,而我在 Java 踩坑够了,所以对我来说就选了后者。

所以这是一个小马过河的故事,无非就是看站在哪个层面看需求了。
H0H
2023-07-05 02:59:20 +08:00
@GeruzoniAnsasu #121 ,实在不懂的话可以不评论。
owt5008137
2023-07-05 03:01:39 +08:00
golang ,rust
GeruzoniAnsasu
2023-07-05 03:03:52 +08:00
@H0H 一个猜想,不一定对,你阿里 P7

我想我很委婉了。
iseki
2023-07-05 03:42:27 +08:00
Go ,或者 (Java|Type)Script 然后用 deno compile 打包成 exe······
zjsxwc
2023-07-05 06:55:31 +08:00
@lhbc
kphp 生成的独立二进制可执行文件,也可以推荐。
zjsxwc
2023-07-05 06:57:18 +08:00
zjsxwc
2023-07-05 06:58:26 +08:00
@zjsxwc 但本质上 kphp 是 c++,需要对 c++有一定的了解。
hez2010
2023-07-05 08:09:53 +08:00
要不试试 bflat ,go 工具链体验版本的 c#,默认就是 nativeaot ,既具备交叉编译同时类库还比 go 丰富得多,出来的体积还比 go 更小。
既然是命令行工具那也就没有什么所谓的 nativeaot 限制,基本想咋用就咋用。
其实就算是 gui 应用你拿 avalonia 写照样不存在限制,人家原生就支持 nativeaot 。
hez2010
2023-07-05 08:11:31 +08:00
arfaWong
2023-07-05 08:29:24 +08:00
@nikenidage1 go 能编译出来只有一个 exe 文件,但是你的小软件除了 exe 还有 dll 文件。
hez2010
2023-07-05 08:40:36 +08:00
@arfaWong 那是 Google ANGLE 的 dll ,虽然可以静态链接进去但是作者没这么做。
chengxiao
2023-07-05 08:52:17 +08:00
golang 不需要特别的设置,只要不涉及 cgo,写出来直接用交叉编译,跨 win/mac/linux 跨 x86/arm64 都可以,而且不需要在特定平台下编译,可以直接在 x86 编译 arm64 可以在 win 下编译成 mac 的可执行文件
Alias4ck
2023-07-05 08:57:43 +08:00
小众语言 vlang !!!
wulili
2023-07-05 09:00:13 +08:00
肯定是 C#呀,结合宇宙第一 IDE Visual Studio ,直接一键打包发布成各个平台的可执行文件
都不需要去折腾什么编译环境了
Corybyte
2023-07-05 09:17:54 +08:00
@westoy golang 大法好
xingjue
2023-07-05 09:44:59 +08:00
必须 golang 大法
githmb
2023-07-05 09:54:28 +08:00
必须 Rust ,cargo 那么多库,不香?
nikenidage1
2023-07-05 10:11:03 +08:00
@arfaWong 啊,因为我这是 ui ,所有有点依赖的 dll ,如果是命令行就一个文件。再者,应该也可以链接进去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/953828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX