最近又把 rust 捡起来学了
上次学了 2 个星期把
这次决定至少学完一本书把
我看的是 programming rust 第二版
主要目的是可能个人需要一些命令行程序, 虽然 python 方便, 但编译出来至少几十 m, 太大 而且编译麻烦
rust 至少随时就编译出来了, 方便用
1
fxxkbioinfo 132 天前
clap 确实牛逼
|
2
wlingxiao 132 天前 via Android
命令行程序我还是推荐用 go ,rust 的编译速度实在是太慢了。
|
3
apkapb 132 天前 1
个人觉得 go 是神器
|
4
zzhaolei 132 天前
go 在这方面还是好用的
|
6
yuanmomo 132 天前 via iPhone
我现在用的是 go
|
7
powerman 132 天前
python 快啊,rust 还要考虑 ownership
|
9
cmdOptionKana 132 天前
go 性能够用时就用 go, 追求更高性能才用 rust 。
|
10
DOLLOR 132 天前 via Android
我推荐 dart ,也可以像 go 一样编译成一个几 MB 的可执行程序。(似乎 Google 家的东西都喜欢这样?)
而且 dart 语法基本跟 js 、java 大同小异,容易入手。 |
11
thedog 132 天前
啊,好多语言啊,现在有没有什么工具能够让我写 python ,然后随便调用包,然后就能随便编译成任何其他语言的
|
12
kneo 132 天前 via Android
rust 只在高性能领域才堪堪一用。其它领域都劝退。
|
13
w568w 132 天前
clap 确实神器。
关于 Go ,不妨自己看看现在 Go 的 Argument Parsing 库哪个符合 GNU 规范的、哪个是在活跃维护的。每次找 CLI 相关库,一看 star 一堆,最后提交时间缺失「 4 年前」,都感觉 Go 的生态有一种垂垂老矣之相。Rust 这边就欣欣向荣多了。 另外说 Go 跨平台编译无出其右的…… 说实话,这套说法在 Rust 出来之前我还相信,现在 Rust 的编译体验比 Go 好多了,起码不用在那里摆弄 net 和 libc 的链接问题,还有纯血 Rustls 之类的系统替代库,实现一键全静态编译。 利益相关:臭写 Go 的,写 Go 比写 Rust 多。 |
15
yplam 132 天前 via Android
如果对可执行文件大小以及内存占用有较高要求的话 Rust 的确挺合适,曾经给一个嵌入式 Linux 系统写过一个类 supervisor+OTA 功能的工具,优化后大小只有一百多 K ,用 go 的话要几 m 起步
|
16
RedBeanIce 132 天前
go
|
17
zjp 132 天前 via Android
像 uutils 这类 rust 重写的工具确实不少
|
18
treblex 132 天前
|
19
Suomea 132 天前
没有人提 C 吗
|
21
haoxingxing 132 天前
go
|
22
XiLingHost 132 天前
@Suomea C 的工具链和开发体验太差了,而且相比于 rust 太容易写出 bug 来了
|
23
crackidz 132 天前
我猜你是不是想找 NodeJS...
NodeJS 整天在重写已有的 CLI |
24
Evrins 132 天前
如果只是做命令行工具的话 Golang 会更好, 语法更简单, 还支持跨平台编译
|
26
jlkm2010 132 天前
现在感觉 cangjie 写命令行更舒服
|
27
tairan2006 132 天前 via Android
go 肯定是最简单的,如果不用 cgo
否则最简单的一定是 zig |
28
charlie21 132 天前
@DOLLOR 关于用 dart 语言写一个命令行软件 是否还需要什么额外 SDK ,请问有什么推荐零基础教程(纯 dart, 非 flutter SDK 相关的)
|
30
lylgb 132 天前
没人提 C#吗?
|
31
vincent7245 132 天前
能学会就用 rust ,学不会就用 go
|
32
jplay 132 天前
为什么不用 C++开发命令行程序,开发效率和产物大小都能兼顾
|
35
InkStone 132 天前
@jplay 就是因为开发效率太低了才不想用 C++。
同样的命令行工具,我的感觉是,开发效率 Python >> Rust >> C++。长期维护时的迭代效率,Rust≈Python >> C++(这条时间越长 Rust 优势越大,C++在任何情况下都没有优势)。 Go 没高强度用过,但体感语法糖太弱,应该没法和熟练使用的 Rust 比. |
37
Goooler 132 天前
|
38
jrqlxue 132 天前
[安装 Visual Studio 时,建议选择几个 Windows 工作负载,例如 .NET 桌面开发、使用 C++ 的桌面开发和通用 Windows 平台开发。 你可能认为不需要全部三种,但很有可能会出现某依赖项需要全部三种,因此我们认为选择全部三种会更简单。]( https://learn.microsoft.com/zh-cn/windows/dev-environment/rust/setup)
对于 VS 生成工具 2022 ,勾选上面 3 种后 C 盘 12.37G+安装盘 5.57G ,对于 C 盘不够大的人而言不够友好,这些是 windows 下使用 rust 的其中一个障碍(仅编译使用,不写代码) 另外,rust 编译会有体积很大很大的中间文件残留 |
39
Yadomin 132 天前 1
周末把一个 go 写的小工具用 rust 重写了,用 go 写完全用的标准库,换成 rust 一共引了 200 多个 crates😥
不是很喜欢 rust crates 逐渐 node modules 化,甚至它的 target 目录比 node_modules/ 还逆天 |
40
ty29022 132 天前
zig is better
|
41
standchan 132 天前
go 也不错
|
45
libook 132 天前
上周刚用 Rust 写了一个命令行程序,总体上中规中矩,跟其他大多技术栈区别不大。
rust 、go 这类的编译完可以不依赖运行时,python 、perl 这类绝大多 Linux 都自带运行时,其实都还行。 大小其实无所谓,现在硬盘都那么大了。 编译速度其实也还好,因为用户使用的时候主要使用编译生成的可执行文件,只需要开发者发版或用户安装的时候编译一次就行了。 主要还是看你的个人喜好,以及当前项目有没有对一些技术特性有强依赖。 |
46
w568w 132 天前 2
@kk2syc 稳定是稳定,但是大多还有一堆报告不兼容性或者 bug 的 issue 没修,作者基本也摆烂了……
另外,楼主问的是 Rust 和其他语言相比的优缺点吧? 1. 论跨平台,静态编译方面 Rust 早就超过 Go 了。还认为「 Go 的跨平台是独家优势」的该更新更新观念了; 2. 论易用性,Rust 有 clap 之类的神器,一键生成 help message 、schema 和类型校验,不像 Go 每个参数的解析要写一些像 python argparser 那样的 boilerplate 。而且 Go 的哲学是 verbose is better than implicit ,适合写网络解析之类的通信逻辑,对命令行工具很不友好; 3. 论生态,Rust 的命令行解析器和 CLI 基本都在活跃更新,而且都卷出新高度了( https://github.com/rosetta-rs/argparse-rosetta-rs ,看这里,甚至在卷毫秒级的解析性能和内存占用)。 作为被 Go 折磨的人,我实在不推荐这种需求上 Go 。 |
49
guanzhangzhang 132 天前
|
50
sagaxu 132 天前
@w568w
go 标准库现在支持 xxx.map(...).filter(...).reduce(...)这种写法了吗?还像以前那样干啥都要写 for ? 错误处理支持 Exception 或者 Result<T, E>这种风格了吗?还是像以前一样满屏幕的 if err ...? |
51
w568w 132 天前 1
@Nasei 你是想找一个 https://github.com/spf13/viper 那样的库吧?这种大而全的库我确实没看到比较好的,clap 本身不支持,还在讨论中(虽然已经讨论 6 年了)。
可以用 clap + config + clap_config 来做,总共也就多写一行代码。也有一些相对不流行的包实现了多来源参数合并,例如 hyperparameter 、argone 。 @sagaxu 不支持,干啥都要写 For 。当然也可以自己写一个 Map 之类接受闭包的函数,但 (1) 我没找到过好用的工具包;(2) Go 的闭包函数不是零成本的,会损失性能,高性能场景慎用。 |
52
DOLLOR 132 天前
@charlie21
Dart SDK 本身就可以开发命令行程序,比如简单的 HTTP 服务器,不需要 flutter SDK 之类。 然后给你的编辑器(比如 vscode )装个语言扩展。 纯 Dart 语言开发照着官网教程就可以 https://dart.dev/language https://dart.dev/resources/dart-cheatsheet Dart SDK 相关 https://dart.dev/get-dart/archive https://dart.dev/tools/dart-compile |
53
cwcc 132 天前
为什么不试试最好的语言( PHP )呢?现在可以打包成单文件执行了(狗头)
https://static-php.dev |
54
PureWhiteWu 132 天前
看你的具体目标和 ROI 了。
如果是写一个非常简单的,对性能没啥要求的,一次性的(不咋会维护迭代 or 加功能)命令行工具,那么 go 或者 python 就成,实在不行 bash 糊一下都是可以的。 如果是要长期维护迭代的项目/重要的项目/对性能稳定性有要求的项目,那么就 Rust 吧。不说性能安全性这些,光抽象能力和表达能力都甩 Go 不知道几条街了。 利益相关:Go 和 Rust 都写过,目前主要写 Rust 。 |
55
a132811 132 天前 1
|
56
iyear 132 天前
Go 。兼顾了开发者数量/CLI 生态/学习难度。
至于楼上的回复,不知道 kubectl 、gh cli 、hugo 、lxc 能不能在他那算“长期维护迭代的项目/重要的项目/对性能稳定性有要求的项目”?🤔 https://github.com/spf13/cobra/blob/main/site/content/projects_using_cobra.md |
57
timothyye 77 天前
Rust 确实比较适合开发一些 cli 的小工具,今天又挖了个坑:
https://github.com/TimothyYe/tcping |