Rust好奇怪……
感觉好像在努力避免指针这种叫法……
但是又没让值引用与句柄引用的区别对用户透明……
甚至还把句柄引用后是否可以编辑的选择权开放给用户
这不是比C还麻烦了么=_=
目前还是感觉Java最优美……可以把经历完全的放在业务逻辑上……脏活都给包装起来由API或VM干了
就是没有个无符号数……对实现个这样那样的网络协议,不太友好=_=
@TurnipG Rust 我之前學了半小時就放棄了
@pcjustin
刚才也感觉快看不下去了……网上转了一圈,结果他们都说go还不如Rust……=_=
话说在目前剧慌的情况下,有啥推荐的值得学一下的东西,打发下时间么?
@TurnipG 其實我覺得 Go 相對比較值得學習(Python還是主流),Rust 只是某些特定族群的理想化成品,一直不斷旳推倒重來。但推到連他媽都不認識他。
@pcjustin
据说swift也是这样?最近这是怎么了……
@TurnipG 大都只有一個理由,因為當初沒規劃好,只好大改。其實願意大改已經很有良心 (回頭看公司老人們)。
@pcjustin
~~~~~~
@pcjustin
可是写东西要坐电脑前面啊……
我只想躺着打发睡不着的时间~
谢谢您了~我去看看这个~
@TurnipG 第一次接触 ownership 是很费脑筋,不过习惯之后效率很高,手感毫无疑问是现代语言;可以确定自己用的数据在内存里只有一份,完全没有多余的拷贝,感觉非常棒。
另外没有句柄的说法,只有“值”和“引用”,一个值只有一个所有者,可以用多个只读引用或一个可编辑引用,这是编译器检查的,没有违反的可能
@wzhd
但我觉得,像Java那样,对用户完全透明岂不是更好?
Java默认对List之类的玩意是传递指针,在内存里只有一份,而且每个获得这个“指针”的程序段都可以读写……
然后多线程的线程安全由对象锁来控制(这样单线程时并不需要特别注意这个读写要怎么移交)
@TurnipG rust 可以说是在零额外开销的前提下尽可能做一门高级语言的实验吧,为了不用垃圾回收,有些东西没法完全透明;是为数不多的能完全取代 C/C++ 的语言,看起来是其中最顺手的。
不过实际上为了零开销做出的取舍好像问题并不大,很多人原来因为 C/C++ 不愿意碰底层软件,现在发现可以用高级语言做底层开发,这一点还是很有吸引力的。
另外不用垃圾回收使得编译到 webassembly 很容易,目前如果想在浏览器里实现最高的性能,不想用 c/c++ 的话只有 rust 可以选
@wzhd
呃……似乎……明白点了?
那我再去往下看看体会体会吧
不过,印象中上世纪末51单片机之类的玩意仿佛就能用C这样的高级语言来开发了?
而且像Arduino之类的东西,也有人把脏活都封装好了,让一般人可以用C来方便的写像Java一样专注于业务逻辑的代码?
@TurnipG 看需求如何啦,学 rust 是得动不少脑筋,花较长时间才会开始觉得有收获,不过学会之后一般会觉得值得
目前单片机基本都是用 C/C++ 呀,不过 要说 C 是高级语言还有争议, Linus 说它就是可移植的汇编而已
Arduino 是 C++ , 用现成的封装写规模不太大的程序还算轻松。不过也有些问题封装无法完全解决,比如令人发狂的段错误,rust 是可以做到保证不出段错误的,只要编译通过,这也是 rust 设计的一个主要出发点
@wzhd
了解了~谢谢~
对了……
还保留了Basic那种古老语言里才有的Loop(记得小时候刚学编程就被教导虽然有,但别用)……
作为强类型检查语言,还允许变量/常量的句柄重新指向其他类型的变量/常量
方法能嵌套……
不同作用域同名变量会导致外层变量隐藏……但仿佛并没有像Tihs之类的关键字来引用被隐藏的变量?
有多种长度的整数,但下标竟然只能用长度机器相关的整数=_=
听起来就很容易引起BUG