- 主题:cpp大佬亲自搞了个cpp2
感觉没戏...
天下苦cpp久矣,目测rust是最有希望成功革命的。
【 在 eGust 的大作中提到: 】
: google 家的大佬不满 c++ 委员会另起炉灶搞了个 carbon
: linus 亲自表态 rust 进内核已经不远了,按照估计12月6.1内核
: cpp 大佬赶在 c++ 23 之前放了一个还没做完的大招,看样子是想努力搞进标准
: ...................
--
FROM 114.222.220.*
就我最近这段时间的观察来说,我感觉rust形成了一个不搞rust就不够sexy的风气。
有些甚至跟rust无关,比如有些比较新的cpp项目,它没有python binding,但有rust binding...
这个潮流我觉得比大厂支持还要strong。
【 在 ztysys 的大作中提到: 】
: 一旦有大厂支持就很难说
: 毕竟C++不干人事,天天搞邪门歪道,来个能替代的,还不都跑了
:
--
修改:lvsoft FROM 114.222.220.*
FROM 114.222.220.*
跟有没有牛人关系不大,rust就没啥牛人嘛,创始人甚至就是个Mozilla这种半死不活项目组里的一个工程师。
【 在 eGust 的大作中提到: 】
: carbon 不也有一堆 c++ 委员会的牛人嘛,而且跟 cpp2 都一样直接支持编译/链接现有代码。这俩实现都还是想改 c++,至少保持兼容性,rust 属于直接换赛道了。理论上来讲,不管怎样有竞争都是好的。但这年头系统语言太多了,比如 zig、nim 之类的也都虎视眈眈,竞争有点儿碎片化了。
:
--
修改:lvsoft FROM 49.93.112.*
FROM 49.93.112.*
那是因为你关注的都是前端领域吧。
前端领域py影响力很有限,但rust也不应该是在前端领域发力的语言,现在却让我看到不少让我眼前一亮的东西。
比如这个
https://github.com/nitnelave/lldap总之,我的感受是,rust这种现在应该还算是未成年人的语言,已经有不少触手伸的比py还要长的例子了。这一点充分说明了它的活力。
【 在 eGust 的大作中提到: 】
: 说实话我个人并没有感觉到 py 的影响力有多大……平时的工作流里,只有 aws-cli 是基于 py 的。而且还只是为了 aws sso login 这一个功能,因为 aws sdk 里对 sso 语焉不详。除了它以外,最多再有个 jc 而已,还是属于一个月也用不了一回的状态……
:
--
FROM 49.93.112.*
老兵不死只是凋零。
很多新兴语言想要占据的生态位其实也谈不上去代替谁,更多的是提供一种更好的option,然后伺机而动而已。
但rust确实是直面c/c++这个生态位的。
我觉得不好说。
【 在 GoGoRoger 的大作中提到: 】
: 没有人可以革cpp命的命,现存几十亿行的代码需要维护,cpp生态虽然烂,但也不是谁都可以取代的,看carbon做得怎么样吧。
:
--
修改:lvsoft FROM 49.93.112.*
FROM 49.93.112.*
cpp一开始就是c的超集,直到越来越复杂...
这种超集的思路可以获得一个很好的起步,解决获得原始用户的问题,最起码在刚开始可以有很高的成功率,比如ts之于js也一样。
但这种思路也没法解决根本性问题,只能在演变中去逐步改良。而改良对生态活跃度有很高的要求。
我感觉就没有哪个语言成功的,js更多的是靠庞大的第三方库,靠商业公司对实现层面的投入等各个方面,实现了对自身一定的改良。如果能走向es,可以算是语言层面接近改良成功的例子,但目前看来还是ts这条路线更受欢迎。
其他生态规模没过一定门槛的语言,连改良的机会都没有。
【 在 DoorWay 的大作中提到: 】
: 我很看好这个思路。
: 一开始cpp的编译器就是翻译成c,再编译成机器码。
: 好处就是吸引C群,用用也无妨。有技术革新分子就往代码库里加点cpp
: ...................
--
修改:lvsoft FROM 49.93.112.*
FROM 49.93.112.*
没办法,脚本语言这块还就是bash...尽管这玩意无敌的老,无敌的慢,但它就是比python还要方便,估计轮方便程度perl能超过它,但perl门槛又远比bash高,所以...
说穿了cli本身就是一个DSL需求,py虽然是脚本语言,但自身定位还是系统语言级的定位,并不适合干这个。
我一直不太能接受整一堆container的做法...我总觉得这也是另一个层面的碎片化。尤其是看到一堆容器每个都要一个veth,ip addr给我整出一堆veth出来真就是看了就心烦...
cli/tui这块主要是现在新的语言在部署上都很给力,都具备单可执行文件一丢就部署的能力。这一点是py/ruby/perl这种老派语言完全没想过的。加上native语言体积小效率高的优势,自然就把这块吃住了。我觉得随着go/rust的生态的进一步扩张,他们可能会做现在container做的事情。
【 在 eGust 的大作中提到: 】
: 我倒觉得,其实许多本该脚本语言发力的领域,比如 cli、tui,目前 rust、go 之类的生态环境非常好。现在部署往往也都不成问题,大不了自己编译慢点儿而已。
: 现在基本除了本地工作流以外,其它的东西大多搞 container 里了,拉下来一个 image 我完全不知道也不在乎里面到底用了啥。本地 cli/tui 的话,既然有原生语言的,那我干嘛要用一个脚本语言写的。
: 的确前端方面的工具链更多感受到 native 语言在发力,esbuild、deno、bun。我现在的自己的脚本,已经慢慢改用 ts 写,也懒得编译成 js 了直接用。再加上各种 runtime 都已经支持 wasm,比如我自己的 aws 工具,就直接搞了个 jq wasm 进去,完美跨平台支持。发布只要3个文件,bin/cli.js + x.js + jq.wasm,压根不存在部署的问题。过去有类似的需求我还是主要写 ruby 的,但部署就有问题了,比如用 jq 的话就得自己先装 libjq,反正目前 ruby 还不支持 wasm。
: ...................
--
FROM 49.93.112.*
wasm我也是相当的认可的~而且我被说服其实是看了这个报告。
这个虽然是pycon2014的报告,但其实跟python一丁点关系都没有...
https://www.bilibili.com/video/BV1zx411d7Gx
【 在 eGust 的大作中提到: 】
: 这个有点儿远了,我一直认为 wasm 之于 js,并不是替代而是互补。一开始 node 想要调用 native 模块非常麻烦,后来有 n-api 但还是麻烦。但有了 wasm 之后,完全提供了另外一个解决问题的思路,而且只要发布一个 wasm 文件也相当方便。
: 另外,js 有许多 runtime,现在最火的是 node,但也有了 deno。bun 虽然很新但是已经融到了一笔钱,至少未来几年是有发展的。但竞争带来的改变却非常有趣:
: 1. 喊了好多年的 fetch API,node v18 终于支持了,没 deno 的话不知道要拖到啥时候
: ...................
--
FROM 49.93.112.*
这个pycon的演讲是标题党了一点,但它的内容还是很有意思的。
它想表达的核心观点是认为整个现代os和cpu都没有存在的必要,用wasm就行了。
计算机在早期是不存在复用的。在漫长的发展过程中,随着系统越来越强,也逐步发展出了越来越多的资源隔离能力。这个演化过程是渐进的,站在现在的眼光来看未必是最好的。
比如最早是计算资源的共享,于是有了进程。为了做好进程隔离,cpu硬件上整出了保护模式,整出了ring0/3(中间还有压根就没人用的ring1/2),内存上整出了MMU,应用跑起来需要不断陷入内核态切来切去,这里都会有性能开销。后来光计算资源的隔离已经不够了,又有了虚拟机,最终演化成容器这种轻量级的全系统级隔离方案。
按他们的观点是这里这一切的开销大约有20%。
但wasm的运行环境也是一个天然的全系统级的隔离机制。而wasm对比native的性能开销也是大概20%,那这样的话,理论上cpu保护模式这种老掉牙的东西根本就不需要存在。直接裸跑wasm,然后用wasm去直接跑应用就行了。wasm的实现可以认为是一个取代了部分CPU和部分OS功能的东西,一种完全基于软件的解决方案。这个思路确实还是蛮有意思的。
【 在 eGust 的大作中提到: 】
: 反正我实在是爱不起来 bash,新来个小伙儿做了点儿东西,里面的 bash 好多语法我都没见过……有个 devops 本来是写 ruby 的,但我们的 ubuntu 环境里实在差别太大,他被迫写 py 了。我自己的 container 如果已经有 node,只要需求复杂点儿,我就写 zx.js 脚本了,各种异步执行比 ruby 方便。
: 之前说的自己的 aws cli,本来是想用来练手 rust 来着,但 aws sdk 没实现 serde。好不容易基本上能把 debug 转成 json 了,然后意识到没法 deserialize。而且官方还解释了原因,就是编译速度已经相当慢了,加了就彻底没法用了,好吧那我就不惦记了……
: container 建一堆 adapter 的确是有点儿烦,我的 mac 现在有这些:
: ...................
--
修改:lvsoft FROM 49.93.112.*
FROM 49.93.112.*
没啥复杂的,用unsafe就行了。
rust的生命周期模型并不能解决100%的问题,也不适合100%的场景,没必要100%的严格遵守。
比如链表这个场景,不用unsafe也不是不能做,但会做的非常难受。有点类似于用lisp去写状态机一样,理论上可以搞,实际上这是自己跟自己过不去。
【 在 Bernstein 的大作中提到: 】
: rust操作链表和图之类的复杂数据结构,貌似有点拉胯
: 不知道rust和Linux内核里那些链表互操作怎么样
:
--
FROM 49.93.112.*