想写一些小工具,主要是基于命令行上进行操作的工具,想问问大家哪个语言来写比较方便
![]() |
1
westoy 156 天前 ![]() golang 大法好
|
![]() |
2
alexapollo 156 天前 ![]() 我觉得写小工具可能还真是 https://github.com/geekan/MetaGPT 这个比较方便……
|
3
H0H 156 天前 ![]() Java 这类最通用的跨操作系统的语言就可以。然后用 Native 语言给写个启动器来找到 JRE 后将相关参数传进去启动即可,Windows 下面我用汇编语言写了启动器,你可以选择用 Visual Studio 下的 C++来写这个启动器; macOS 下我就用那个 Swift 写了启动器。
其实只要你会用 native 语言来写这个启动器,那么各种编程语言都能制作成一个单独的 exe 文件。只不过一般人不会要求全部合并成一个 exe 文件,都是一个 exe 文件带很多 dll 或 jar 包等。 比如 Java 写的程序非要合并成一个 exe ,那么就可以将 JRE 、Jar 包作为资源文件放到启动器那个 exe 中,这样就变成了一个单独的 exe 程序。启动器启动后,将 JRE 、jar 包释放到临时目录运行就行了。 |
![]() |
4
Trim21 156 天前
golang ,交叉编译很方便。
|
![]() |
5
LeeReamond 156 天前 ![]() @H0H 你这个方法要是算简单的话那大部分语言都挺简单。。。小工具+好编译成二进制=go 或者 rust
|
6
jackmod 156 天前
能够比较简单制造 exe 的话估计只有 golang 和 rust 了,不过 linux 下的 rust 需要使用 musl 达到 static
|
7
fbichijing 156 天前
你提出的问题和描述似乎不太相同啊。
如果是 exe 的话不是基本上圈定 C, C++ 了吗?独立的可移植的 exe 文件。 如果是基于命令行进行操作的工具,那我觉得使用 python 写命令行是十分舒服的。 写成一个 package ,自定义喜欢的全局命令,只要存在 python 环境自己安装一下就能全局使用了。现在的服务器基本上都预装有 python ,所以就像是写一次可以各个地方运行了。 因为平时经常有这需求,而这种全局命令的文件格式又十分固定。所以我写成一个十分简单的 package 放在 pypi 上,方便自己使用......用来方便自己构建全局命令。 ------ 以下只是我自己平时的使用方式,因为自己写的这个 package 很简单,只是作为举例之用。 pip install package-gen 然后提供了一个全局命令:pk-gen 比如: pk-gen mytest 就生成一个 package 的模板,往里面定义自己想要的全局命令,然后将实现代码敲出来就行了。比起去弄 gui ,全局命令这方面写起来就很舒服。 |
![]() |
8
Trim21 156 天前
|
![]() |
9
Licsber 156 天前
我的设备同时有 linux bsd mac win 所以我的小工具包已经成 python 改成 golang 了
非常方便改下 GOOS 就能换系统 改 ARCH 就能换架构 目前工具类型涵盖了文件元信息计算、文件夹统计、去重、获取微信 token 、快捷打印、检测电脑是否摸鱼(空闲微信提醒)等 |
![]() |
11
kljsandjb 156 天前 via iPhone
Rust 挺合适的
|
![]() |
12
u823tg 156 天前
为啥一定要 exe 之类二进制文件呢, 小工具还是命令行不是脚本语言最好用吗,随时更改的。
|
![]() |
14
Al0rid4l 156 天前 ![]() 生态上 go rust, 很多 tui 以及其他 cli 相关的库, c/c++ 生态不用说, 但是和方便不搭边
产物体积小且快, rust zig 方便且跨平台, go rust c# zig, 后面两个生态差点, 综上 go rust java graalvm 应该也可以, 没用过 |
![]() |
15
lhbc 156 天前 via Android
golang 最佳
别用 cgo |
16
wxf666 156 天前
你给点工具的应用场景出来呗?
比如,音视频处理?文本处理?结构数据处理?…… |
![]() |
17
shuimugan 156 天前 via Android
c sharp(aot 编译)
javascript/typescript(deno 或者 pkg) dart 类似 ts 的语法 |
18
MrKrabs 156 天前
zig rust swift
|
![]() |
19
crab 156 天前
bat
|
![]() |
20
zsj1029 155 天前 via iPhone
Dart 发布二进制自带虚拟机,类似 Java
|
21
GPLer 155 天前 via Android ![]() 只有 C ,其他都不方便。
https://justine.lol/ape.html https://github.com/jart/cosmopolitan 基于 cosmopolitan 编译的 C 能做到二进制跨平台运行 |
22
fyq 155 天前
那显然是 C
|
![]() |
24
musi 155 天前 via iPhone ![]() 第一次见到写小工具用 Java 的,那不得打一个 jre 放包里,小而美?
|
![]() |
25
snw 155 天前 via Android
VB6 ?
|
![]() |
26
placeholder 155 天前
那你还不如用 nodejs 写 cli 呢
|
27
yazinnnn 155 天前
java 写个 hello world, aot 之后都有 11M, 咋做小工具哦...
|
![]() |
28
cozof 155 天前 via iPhone
golang 啊。你看我不费吹灰之力就把 go 写的小工具打包了各平台的几十个可执行文件。 https://github.com/qcozof/portsman/releases
|
![]() |
29
LeegoYih 155 天前
考虑到逆向的话,还是别选解释型语言和 Java 了
|
30
xgdgsc 155 天前
体积小 rust go 最方便。不嫌体积大(500M),从简洁的动态脚本写起,Julia 用 https://comonicon.org/stable/ https://julialang.github.io/PackageCompiler.jl/dev/ 也可以, 参考 https://github.com/ninjaaron/administrative-scripting-with-julia
|
![]() |
31
lsk569937453 155 天前
写命令行还得是 golang/rust,不接受反驳!
|
![]() |
34
gimp 155 天前
首推 Golang ,其次 Rust
|
![]() |
35
a33291 155 天前
推荐 rust 或者 go,主要是交叉编译跨平台特性,cli 比较合适
.net 和 java 就别掺和了,丢脸 |
![]() |
36
tool2d 155 天前
看程序的复杂程度了,我是觉得 C 好,因为你倒退个 10 ~ 30 年,github 上的代码大部分核心算法,都是用 C 写的,随时可以抄作业。
如果程序很简单,那 nodejs 写写也可以,任何语言都可以。 |
![]() |
38
a33291 155 天前
|
![]() |
39
nikenidage1 155 天前
@a33291 纯请教,rust 的 native 水平是啥意思啊?
我前两天用 C#写了一个跨平台原生编译 aot 的 ui https://www.v2ex.com/t/952603 命令行当然也没问题 |
![]() |
40
a33291 155 天前
@nikenidage1 #39 抱歉我可能没表达清楚,每个语言都有他的特色和优势
是这样,就是.net 和 java 都带有 runtime,c/c++/rust 不带,编译就是针对特定平台的产物(win 就是 dll 或 exe),他们 aot 之后的确也不需要安装环境(但是本质上还是内嵌了一个 runtime),通过裁剪等可以减少 aot 的大小达到性能和大小的平衡(也见过使用极限手段优化 aot 大小的,但是并不是开箱即用),但是总是需要付出更多努力的 |
![]() |
41
zysuper 155 天前
golang
|
![]() |
42
c2const 155 天前
小工具,C/C++最舒服、win 平台还可以 C#。
---------------------------------------- go 、java 、python 、js 也可以。 但是 go 写小工具可能误报毒,java 、python 、js 都有打包或者 AOT 编译到 exe ,但体积大。 选个熟悉的语言写就行,别想那么多。 |
![]() |
43
nikenidage1 155 天前
|
![]() |
44
mscorlib 155 天前
跨平台:
首选 golang 次选 rust 然后是 java 、.net 如果仅 windows 的话首选 C#,winform |
![]() |
45
xiangyuecn 155 天前
“主要是基于命令行上进行操作的工具”,干脆直接写命令行脚本得了😂
参考我的一个 Java 开源库,也是命令行里面调用测试的,文件直接在根目录裸奔,给 windows 写了个.bat ,linux macos 写了个.sh ,脚本写法基本上都是通用的 高性能的省市区坐标数据、边界数据查询工具,Java 开源程序、内置 http 查询接口,内存占用低( 1 秒可查 1 万个以上坐标对应的城市信息): https://github.com/xiangyuecn/AreaCity-Query-Geometry |
![]() |
46
zjsxwc 155 天前
虽然但是,既然 java jre 加个起动器都可以,
那么,javascript node 加个起动器也可以。 |
![]() |
47
liantian 155 天前 via iPhone ![]() 这种讨论毫无意义啊…
用最熟悉的语言搞就完事了… 我们这一堆运维脚本是 js 的,挂 node 跑,原因无他,写脚本的大佬以前是个前端 js 大佬… |
50
c3de3f21 155 天前
就用 C 写最好
|
![]() |
51
BingoXuan 155 天前
python ,用 py2app 或者 pyinstaller 打包,配合 dearpygui 这类 imgui 可以很快出效果
|
![]() |
52
billzhuang 155 天前
golang 的 exe 容易被 windows defender 报毒
|
![]() |
53
wu67 155 天前 ![]() 上来就整 Java, 我上着班呢, 差点笑死
|
![]() |
54
GiantHard 155 天前
用最熟悉顺手的编程语言就好了,先把工具写出来,再考虑优化。
|
58
beyondex 155 天前 ![]() c#写起来很舒服啊。也能发布成单 exe 文件。跨平台等等。
|
![]() |
59
shijingshijing 155 天前
Java 可拉倒吧,还得装个 JRE ,命令行+小工具+跨平台,再考虑到开发难度和速度,Python 和 Qt 是最合适的,Python 有一键打包成 exe 的工具。
|
61
idealhs 155 天前
如果只是个 CLI 程序,anything except JAVA ,但是我推荐用 python 来节约你的生命
如果一定需要打包二进制,C ,C++, C#, GO, RUST |
62
Tanix2 155 天前 via iPhone
rust 写命令行工具方便
|
63
fengjianxinghun 155 天前
java c# 脚本仔就别来趟 native 浑水了,写点 web 不挺好的么?
|
![]() |
64
xqdoo00o 155 天前
毫无疑问,go ,配个环境变量就能交叉编译的快感,其他还要配置工具链的语言没法比。
次选 rust 。 说 java 和 c#的是在扯淡,谁写个小工具还会带个 jre 和.net 跑,用 aot 更是麻烦。 |
![]() |
65
Tink 155 天前
rust 和 go 吧
|
![]() |
67
virusdefender 155 天前
首选 go ,还有一个上面没人说过,我也没用过的 kotlin native 也许可以
|
![]() |
68
2NUT 155 天前
必然是 c
|
![]() |
70
wonderfulcxm 155 天前
人家没有说要移植,要跨平台,只要容易转可执行文件,楼上某些哥们的戏是不是有点多?😂
|
![]() |
71
yanmu6626 155 天前
Windows 上开发 rust ,跨平台方便吗?
|
72
imicksoft 155 天前
windows 推荐 aardio ,真的方便
|
![]() |
73
superchijinpeng 155 天前
c 、c++、rust 、go
|
74
dobelee 155 天前 via iPhone
c++ c# go
|
![]() |
75
qistchan 155 天前
VB😂
|
![]() |
77
lujiaxing 155 天前 ![]() @fengjianxinghun 怎么就是蹚浑水了?? .NET 做不了 AOT 编译是咋地?
|
![]() |
78
mohumohu 155 天前
go 吧,rust 跨平台静态编译没这么方便
|
79
ql562482472 155 天前
我目前也有一个需求要做成原生的 cli 工具
我用 java 的 org.graalvm.buildtools.native-maven-plugin 这个插件 AOT 的,还行其实,但是包会变得巨大,大小基本在所有依赖包的总和的水准上了。 同时 JNI 的调用还是会有问题。 另一个就是打包时间稍长了些。 |
![]() |
81
ggvoking 155 天前
首选 golang ,go 写起来真的舒服,交叉编译也方便。再也不想用 c#、python 写了。
次选 rust 。 |
![]() |
82
flyqie 155 天前 via Android
python 或者 go 吧。
看你自己,个人推荐用 go 。 |
83
raycool 155 天前 ![]() 那必须是 C#吧
|
![]() |
85
howfree 155 天前
java 使用 GraalVM 可以生产不同操作系统的可执行文件
|
![]() |
86
hatsuyuki 155 天前
首推 Rust
|
![]() |
87
FightPig 155 天前
我用 go 和 rust 都写过,整体 go 的话写起来轻松些,rust 不熟的话写起来太麻烦了
|
89
seakingii 155 天前
windows 下推荐 c#,原因是 c#语法最方便
linux 或者跨平台推荐 go,库很多,编译方便 |
90
NoOneNoBody 155 天前
写了几十个 python 脚本,自用没有分发需求,反而部分有不时改动一下,所以都没编译
有些传参只是文件路径的,直接在 total commander 工具栏加个按钮就当 GUI 用了 |
91
Slurp 155 天前 ![]() 还是那句话,作为用户巴不得你 Rust 写,Go 的 CLI 几乎都是透露着一种未完善的气息。
Rust 直接调用 Clap 解参数,log 日志,anyhow 错误处理,serde 解配置文件,toml_edit 还能基于结构增量修改配置,要 REPL 还能用 nushell 同款基础库 rustyline 。 能给用户带来非常统一完善的体验。而不是有些 Go CLI 上来一个 panic 给我整乐了。 写小工具 Rust 还具有最快的启动速度,最小的二进制体积,上个 O3 LTO 比 Go 小到不知道多少倍。 |
![]() |
92
jlkm2010 155 天前
cj
|
![]() |
93
lerry 155 天前
go ,编译以后单文件,不需要什么特别配置,很简单
|
94
poporange 155 天前
python
|
95
brookegas 155 天前
golang
交叉编译,直接用 mac 上瞬间编译出 linux 、mac 、windows 下的二进制文件 编译速度快到飞起 |
![]() |
96
cat9life 155 天前
当然是 go 最方便,没啥可争辩的
|
![]() |
97
raptor 155 天前
果然第一个就是 GO
|
![]() |
99
storyxc 155 天前 ![]() 上面说用 java 写的也太搞了,虽然我也是干 java 的,但写工具这种活真没 java 啥事。没接触 go 之前我都是用 python ,接触了 go 之后全都是用 go 写,跨平台编译太香了。
|
![]() |
100
DOLLOR 155 天前
如果是命令行小工具,用 go 就行,dart 也可以。
退两步,那就 python 或者 node 。 |