想写一些小工具,主要是基于命令行上进行操作的工具,想问问大家哪个语言来写比较方便
101
pkoukk 2023-07-04 17:38:08 +08:00
go 最合适,编译简单,产物体积小,跨平台交叉编译很容易
|
102
beixiao 2023-07-04 17:41:03 +08:00 via iPhone
用下来还是 go 最方便
|
103
nikenidage1 2023-07-04 17:42:06 +08:00 1
我发现 V2EX 上大家对 .net / c# 的信息很滞后
.net / c# 现在完全可以做到跨平台、原生编译、无需运行时、冷启动快、占用内存低、单文件 exe 等等特性,且不需要什么特殊操作。 可以参考我之前实验性写的跨平台带 UI 的小软件 https://www.v2ex.com/t/952603 |
104
someonedeng 2023-07-04 17:46:23 +08:00
go , rust 学习成本高(已经会的话当我没说)
|
105
monkeyWie 2023-07-04 17:53:43 +08:00
必然是 go 啊,交叉编译体积又小
|
106
xz410236056 2023-07-04 18:22:38 +08:00
golang 官方自带工具,转各个平台的 app ,单个程序,运行不要任何环境
|
107
xz410236056 2023-07-04 18:25:36 +08:00
@someonedeng #104 go 有啥学习成本。。3 分钟入门
|
108
shyangs 2023-07-04 18:27:52 +08:00 1
tabtoy[1] 用 Golang 寫的,5MB.
fd[2] 用 Rust 寫的,1MB. Locale Emulator[3] 用 C# 寫的,1MB. NoClose[4] 用 AutoHotkey 寫的,500KB. PageFileUsageMonitor[5] 用 VB6 寫的,60KB. [1] https://github.com/davyxu/tabtoy [2] https://github.com/sharkdp/fd [3] https://github.com/xupefei/Locale-Emulator [4] https://www.dcmembers.com/skrommel/download/noclose/ [5] http://www.standards.com/ThisAndThat/PageFileUsageMonitor.html |
109
yanue 2023-07-04 19:02:00 +08:00
推荐 node 的没有运行环境怎么跑?
|
110
dw2693734d 2023-07-04 21:50:22 +08:00
go
|
111
tangtang369 2023-07-04 22:17:47 +08:00
go 肯定是最 ok 的 完全的跨平台 随便切换
|
112
chrawsl 2023-07-04 22:22:52 +08:00 1
c#大法好
|
113
SenLief 2023-07-04 22:24:21 +08:00
小型的脚本直接撸 python ,python 自己用写起来小工具是真的舒服,如果是打包分享的,可能还是 golang 更好一些。
|
114
RRRSSS 2023-07-04 22:28:30 +08:00
Go rust
|
115
ViriF 2023-07-04 22:35:46 +08:00
https://github.com/vercel/pkg ( Nodejs ,个人体会很好用)
https://pyinstaller.org/en/stable/ ( Python ,个人体会比较难受,尤其是涉及 Nvidia/LibTorch 等的库文件的时候,启动简直折磨,对硬盘空间也有要求) |
116
lhbc 2023-07-04 23:13:12 +08:00 via Android
为什么没人提 php ?
|
117
lcj2class 2023-07-04 23:21:00 +08:00
|
118
H0H 2023-07-05 02:34:18 +08:00
@idealhs 你咋不直接说自己水平太差呢?做个 exe 小工具,就非要换个语言把现有提供各种库的生态完全抛弃?小工具写着写着要转成大工具持续维护了,此时需要各种功能时没有第三方库难道自己发明轮子? 99%的人真有能力发明轮子?
C++写 exe 的确最适合,为什么市场占有率一直上不去?要不你继续吹吹? 拿语言论高下的,不就是一个没入门的菜鸟嘛 |
119
H0H 2023-07-05 02:40:19 +08:00
@lujiaxing 我做的启动器是支持自动下载并安装特定版本的 JRE 的,这样 exe 程序本身就可以保持的很小,一般都小于 20M ,在大公司就可以通过邮件直接分享。winrar 自解压包怎样轻松实现这个功能?
更不用说,启动器还可以实现 Mutex 单进程运行功能,程序执行过程中被二次启动时可以直接拒绝运行,一般定时任务中很适合。还可以监控最大运行时间等等。 |
120
H0H 2023-07-05 02:43:10 +08:00
@c3de3f21 拿各种编程语言论高低的,不就是没入门的菜鸟嘛,怎么好意思求别人?要不你吹吹高大上的?是不是非要 C++写一下才显水平? Electron 这种 js 开发套个 Chrome 浏览器的,比 JRE 还低效,但迅雷用起来也没感觉有多么难以接受啊,要不你来批评批评?
|
121
GeruzoniAnsasu 2023-07-05 02:55:44 +08:00 1
|
122
H0H 2023-07-05 02:57:22 +08:00 1
@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 踩坑够了,所以对我来说就选了后者。 所以这是一个小马过河的故事,无非就是看站在哪个层面看需求了。 |
123
H0H 2023-07-05 02:59:20 +08:00
@GeruzoniAnsasu #121 ,实在不懂的话可以不评论。
|
124
owt5008137 2023-07-05 03:01:39 +08:00 via Android
golang ,rust
|
125
GeruzoniAnsasu 2023-07-05 03:03:52 +08:00
|
126
iseki 2023-07-05 03:42:27 +08:00
Go ,或者 (Java|Type)Script 然后用 deno compile 打包成 exe······
|
128
zjsxwc 2023-07-05 06:57:18 +08:00 via Android
|
130
hez2010 2023-07-05 08:09:53 +08:00 via Android 1
要不试试 bflat ,go 工具链体验版本的 c#,默认就是 nativeaot ,既具备交叉编译同时类库还比 go 丰富得多,出来的体积还比 go 更小。
既然是命令行工具那也就没有什么所谓的 nativeaot 限制,基本想咋用就咋用。 其实就算是 gui 应用你拿 avalonia 写照样不存在限制,人家原生就支持 nativeaot 。 |
131
hez2010 2023-07-05 08:11:31 +08:00 via Android
|
132
arfaWong 2023-07-05 08:29:24 +08:00
@nikenidage1 go 能编译出来只有一个 exe 文件,但是你的小软件除了 exe 还有 dll 文件。
|
134
chengxiao 2023-07-05 08:52:17 +08:00
golang 不需要特别的设置,只要不涉及 cgo,写出来直接用交叉编译,跨 win/mac/linux 跨 x86/arm64 都可以,而且不需要在特定平台下编译,可以直接在 x86 编译 arm64 可以在 win 下编译成 mac 的可执行文件
|
135
Alias4ck 2023-07-05 08:57:43 +08:00
小众语言 vlang !!!
|
136
wulili 2023-07-05 09:00:13 +08:00 1
肯定是 C#呀,结合宇宙第一 IDE Visual Studio ,直接一键打包发布成各个平台的可执行文件
都不需要去折腾什么编译环境了 |
138
xingjue 2023-07-05 09:44:59 +08:00
必须 golang 大法
|
139
githmb 2023-07-05 09:54:28 +08:00
必须 Rust ,cargo 那么多库,不香?
|
140
nikenidage1 2023-07-05 10:11:03 +08:00
@arfaWong 啊,因为我这是 ui ,所有有点依赖的 dll ,如果是命令行就一个文件。再者,应该也可以链接进去
|
141
yiling1995 2023-07-05 10:12:43 +08:00 1
C#大法好,直接选择 Net7 支持跨平台。
|
144
mxT52CRuqR6o5 2023-07-05 10:49:35 +08:00 via Android
Python 也有办法打包成可执行文件,主要看你自己的技术栈吧
|
146
qfdk 2023-07-05 13:16:47 +08:00 via iPhone
@ViriF pkg 有些库没法打包, 不得不删依赖 改代码. 比如 mongo-session 或者最新的 axios 这样的
|
149
ViriF 2023-07-05 13:39:30 +08:00
@qfdk #146 这个我还真不知道,我自己用它打包过几次服务端带静态资源还挺顺利的;去看了 pkg 的 issue 好像确实有些打包不是开箱即用,这要是遇到就难受了
|
151
Masoud2023 2023-07-05 13:50:40 +08:00
如果你不想被强制要求 runtime
1. Golang 2. Rust 3. Python + PyInstaller 4. cpp 如果你觉得拖个 runtime 也没啥问题 1. .net core 全家桶(比如 csharp )( windows 太低要.net CLR ) 2. Java (别做梦了,怎么弄 Java 不都得挂个 jvm ) 3. Electron (挂个 Chrome ) 如果要跨平台:Golang 、Rust 如果要跨平台 GUI:Electron 、Rust+Qt ? |
152
qfdk 2023-07-05 14:01:12 +08:00
@Trim21 #150 我是打 linux 上面的,因为他们的 package.json 里面缺个版本号还是啥来着看了一眼,放弃了 不折腾完活要紧 哈哈哈哈
|
153
muxueqz 2023-07-05 14:17:36 +08:00 1
nim-lang 语法简单,编译快速,还可以结合 cosmopolitan 一次编译,跨平台运行
|
154
bugmaker233 2023-07-05 15:46:41 +08:00
如果考虑 win 平台,貌似 visual studio 还不错,什么语言都可以支持,直接打包 exe 也不会有太多坑。跨平台或者 UI 要求多可以 QT ,但是 qt 只能用 c++,而且 qt 大又难用
|
155
eoo 2023-07-05 22:29:07 +08:00
PHP yyds
|
157
someonedeng 2023-07-06 16:50:09 +08:00
@xz410236056 我断句问题,rust 成本高
|
158
talkischeap567 2023-11-02 08:53:25 +08:00
@shyangs 建议直接开源,然后弄成乱码论文,采纳.
|
159
Conantv2 2023-11-16 08:53:20 +08:00
|