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

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

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

13498 次点击
所在节点    程序员
159 条回复
GPLer
2023-07-04 07:42:29 +08:00
只有 C ,其他都不方便。
https://justine.lol/ape.html
https://github.com/jart/cosmopolitan
基于 cosmopolitan 编译的 C 能做到二进制跨平台运行
fyq
2023-07-04 07:43:49 +08:00
那显然是 C
kljsandjb
2023-07-04 07:57:52 +08:00
@aa51513 是的,这方面生态还是太不成型了
musi
2023-07-04 08:13:49 +08:00
第一次见到写小工具用 Java 的,那不得打一个 jre 放包里,小而美?
snw
2023-07-04 08:25:00 +08:00
VB6 ?
placeholder
2023-07-04 08:25:15 +08:00
那你还不如用 nodejs 写 cli 呢
yazinnnn
2023-07-04 08:35:39 +08:00
java 写个 hello world, aot 之后都有 11M, 咋做小工具哦...
cozof
2023-07-04 08:36:14 +08:00
golang 啊。你看我不费吹灰之力就把 go 写的小工具打包了各平台的几十个可执行文件。 https://github.com/qcozof/portsman/releases
LeegoYih
2023-07-04 08:41:42 +08:00
考虑到逆向的话,还是别选解释型语言和 Java 了
xgdgsc
2023-07-04 08:42:01 +08:00
体积小 rust go 最方便。不嫌体积大(500M),从简洁的动态脚本写起,Julia 用 https://comonicon.org/stable/ https://julialang.github.io/PackageCompiler.jl/dev/ 也可以, 参考 https://github.com/ninjaaron/administrative-scripting-with-julia
lsk569937453
2023-07-04 08:45:36 +08:00
写命令行还得是 golang/rust,不接受反驳!
bthulu
2023-07-04 09:02:56 +08:00
当然是.net 了, 直接支持打包成单文件
recolic
2023-07-04 09:08:15 +08:00
@u823tg 如果是要给别人用的程序,用脚本语言写的话,小白会追在你屁股后面说环境有问题/出错了/跑不了,烦死人。
gimp
2023-07-04 09:09:57 +08:00
首推 Golang ,其次 Rust
a33291
2023-07-04 09:11:35 +08:00
推荐 rust 或者 go,主要是交叉编译跨平台特性,cli 比较合适

.net 和 java 就别掺和了,丢脸
tool2d
2023-07-04 09:17:42 +08:00
看程序的复杂程度了,我是觉得 C 好,因为你倒退个 10 ~ 30 年,github 上的代码大部分核心算法,都是用 C 写的,随时可以抄作业。

如果程序很简单,那 nodejs 写写也可以,任何语言都可以。
jiulang
2023-07-04 09:20:06 +08:00
@a33291 你这么说会把自己的脸打了的。.net 能生成多平台的单文件,也能 aot 编译成多平台的二进制文件
a33291
2023-07-04 09:26:01 +08:00
@jiulang #37 好多语言都能,还能搞 AI 呢,那咋不把 python 都换成 C#?每个语言在特定场景下有其擅长和优势,不要混淆概念和扩大范围.
你想说 C#和 java 很好没问题,但是前置场景也要考虑.
java 和.net 的 AOT 就算非常成熟(况且目前还不够成熟)也不过是现在 rust 的 native 水平

所以,能不能和谁合适,是要看场景的
nikenidage1
2023-07-04 09:28:58 +08:00
@a33291 纯请教,rust 的 native 水平是啥意思啊?
我前两天用 C#写了一个跨平台原生编译 aot 的 ui
https://www.v2ex.com/t/952603

命令行当然也没问题
a33291
2023-07-04 09:36:40 +08:00
@nikenidage1 #39 抱歉我可能没表达清楚,每个语言都有他的特色和优势

是这样,就是.net 和 java 都带有 runtime,c/c++/rust 不带,编译就是针对特定平台的产物(win 就是 dll 或 exe),他们 aot 之后的确也不需要安装环境(但是本质上还是内嵌了一个 runtime),通过裁剪等可以减少 aot 的大小达到性能和大小的平衡(也见过使用极限手段优化 aot 大小的,但是并不是开箱即用),但是总是需要付出更多努力的

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

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

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

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

© 2021 V2EX