48 条回复  ·  634 次点击
libook 小成 2024-7-15 12:13:26
上周刚用 Rust 写了一个命令行程序,总体上中规中矩,跟其他大多技术栈区别不大。

rust 、go 这类的编译完可以不依赖运行时,python 、perl 这类绝大多 Linux 都自带运行时,其实都还行。

大小其实无所谓,现在硬盘都那么大了。

编译速度其实也还好,因为用户使用的时候主要使用编译生成的可执行文件,只需要开发者发版或用户安装的时候编译一次就行了。

主要还是看你的个人喜好,以及当前项目有没有对一些技术特性有强依赖。
Nasei 小成 2024-7-15 12:49:54
@w568w 请问 rust 有什么可以同时搞定命令行和配置文件的库吗,几年前看似乎比较别扭,不知道现在怎么样了
guanzhangzhang 初学 2024-7-15 12:58:00
只要不是 cgo ,golang 能自带交叉静态编译,我 windows ,开发 linux 机器上,家里路由器上都有 cli tool 。https://i.imgur.com/agAJ0Rd.png
sagaxu 初学 2024-7-15 12:59:10
@w568w

go 标准库现在支持 xxx.map(...).filter(...).reduce(...)这种写法了吗?还像以前那样干啥都要写 for ?

错误处理支持 Exception 或者 Result<T, E>这种风格了吗?还是像以前一样满屏幕的 if err ...?
cwcc 小成 2024-7-15 13:51:53
为什么不试试最好的语言( PHP )呢?现在可以打包成单文件执行了(狗头)
https://static-php.dev
PureWhiteWu 小成 2024-7-15 13:58:13
看你的具体目标和 ROI 了。
如果是写一个非常简单的,对性能没啥要求的,一次性的(不咋会维护迭代 or 加功能)命令行工具,那么 go 或者 python 就成,实在不行 bash 糊一下都是可以的。
如果是要长期维护迭代的项目/重要的项目/对性能稳定性有要求的项目,那么就 Rust 吧。不说性能安全性这些,光抽象能力和表达能力都甩 Go 不知道几条街了。

利益相关:Go 和 Rust 都写过,目前主要写 Rust 。
a132811 小成 2024-7-15 14:23:59
@w568w go 也有 urfave/cli 等工具提供一键生成 help message 、config 、type checking 。golang 算是 rust+python 的折中方案。

@sagaxu  go 泛型库 lo 可避免写 for 、interface 转换。如果想用函数式的话,可试试 ibm 的 fp-go 库。

错误处理避免 if err 的话,可以像 bufio scan 的方法那样避免 if err 。不过平时开发一般还是 if err 简单顺手。另外错误 chain 是一定要支持,方便定位错误的调用栈
iyear 小成 2024-7-15 14:50:36
Go 。兼顾了开发者数量/CLI 生态/学习难度。

至于楼上的回复,不知道 kubectl 、gh cli 、hugo 、lxc 能不能在他那算“长期维护迭代的项目/重要的项目/对性能稳定性有要求的项目”?🤔 https://github.com/spf13/cobra/blob/main/site/content/projects_using_cobra.md
timothyye 小成 2024-9-7 22:47:42
Rust 确实比较适合开发一些 cli 的小工具,今天又挖了个坑:
https://github.com/TimothyYe/tcping
12345
返回顶部