速度慢應該是 Python 最受批評的缺點吧?
Tags: rust語言
TechOrange 科技報橘
About author
前沿趨勢、科技生活,TechOrange 渴求創新無極限。追蹤全球正在被網路吃掉、重塑的各類產業,認識因網路與技術而生的 Startup,所有你該知道的,想要知道的都在這裡。
【聯絡我們】
1. 新聞稿提供:[email protected]
2. 業務合作:[email protected]
3. 其他需求或意見:[email protected]
4. 投稿:[email protected]
>> 來信請附上投稿人真實姓名(刊登可用筆名,但請同時提供真實姓名)、背景(已就業者請提供所任職產業,學生請提供就讀科系),並直接附上投稿內容。
《TechOrange 科技報橘》專注創新科技、數位轉型,致力串連最有價值的科技社群觀點,找出台灣在國際趨勢中的定位。
《TechOrange 科技報橘》專注創新科技、數位轉型,致力串連最有價值的科技社群觀點,找出台灣在國際趨勢中的定位。
rust語言 在 [閒聊] Rust 的實用性? - 看板C_and_CPP - 批踢踢實業坊 的推薦與評價
這篇是聊 Rust,但是放在 C/C++ 版是因為 Rust 的特性
如果版主覺得不適合就刪文吧 XD
最近利用空閒時間在學 Rust
發現到 Rust 和其他語言結合得蠻好的,像是和 C 結合:
Rust --> Rust FFI --> C library
或是和 Python 或 Ruby 等高階語言合作:
高階語言 --> 高階語言 FFI --> Rust (as C library)
當然,也可以直接做成執行檔
其時,Rust 有點像 C++ 的角色
需要編譯語言,但是又不想寫 C 時,就用 Rust 寫
反正編成機械碼後,從電腦的角度來存取都一樣
根據小弟摸一小段時間 Rust,感受到的一些優缺點:
Pros:
- 語言體質佳:支援 OOP、generics、functional programming 等
寫起來有某些部分像高階語言
- 平台支援好:同一套程式碼可直接用,不用根據平台寫 #if 條件句,交叉編譯也很方便
有點像高階語言的程式環境,只是 Rust 是編譯語言
- 編譯檢查嚴格:能通過編譯的程式相對發生問題的機會少
- 可做系統語言:不使用 GC,允許 stack allocation 也允許在 unsafe block 中
進行指標操作,可以達到 C/C++ 等級的效能 (感謝 littleshan 說明)
Cons:
- 社群資源少:和 C/C++/Java 相比差非常多,新的語言多多少少都有這個問題
如果要拉 C 函式庫,要自行處理,跨平台的優點就消失一半
- 學習資源少:目前大部分都要靠官方文件,目前市面上只有一本 Rust 書籍
明年二月到四月,會再陸續出兩三本,總體上還是很少
- 語言不穩定:Rust 經歷過一些改動,在 1.0 版以前某些特性實作後又放棄掉
使得網路上一些 Rust 相關的資訊變成錯的
另外,目前 Rust 分為 stable, beta, nightly 三個版本
某些函式庫作者會偷用 nightly 的版本,使得函式庫不穩定
- 上手不易:也是因為編譯檢查嚴格,學習 Rust 總是要和 Rust 編譯器奮戰一陣子 Orz
其中有些東西和指標有關,如果 C/C++ 學得好,撞牆期會比較短
Rust 底層用到 LLVM,但 Rust 包裝得很好,使用者不會碰到 LLVM
雖然小弟時常和 Rust 編譯器角力 = =|||,基本上還算欣賞這個語言
但是畢竟還很新,若要引入專案可能還是要考慮一下
不知道各位大大會將 Rust 用在自己的專案嗎?side project 也可以
就當成閒聊吧,聽聽看大家的看法
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.182.166.115
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1482668235.A.3D0.html
只能靠多練習來克服 冏rz
目前還在學習階段,都是拿來寫簡單的 sample code 而已
其實也沒有非用 Rust 不可,主要是欣賞 Rust 的一些設計
學一陣子 Rust 在回頭學 C++,會增進對 C++ 的了解,蠻有趣的
trait 本身不能實體化,只有 struct 可以實體化
但 trait 可做為 method 的參數來使用
struct 可以實作 trait 所定義的 method
但 struct 間不能繼承,只能透過組成 (composition) 結合
可以想成 struct 是 class,trait 是 interface + abstract class
我以前以為 trait 只有 method 定義,而沒有 method 實作
但其實 trait 可以有 method 的實作,例如 Rust 的 Iterator:
https://github.com/rust-lang/rust/blob/master/src/libcore/iter/iterator.rs
程式設計者也可以實作自己的 Iterator,只要實作 next 這個 method
其他所有的高階函式,都由 Iterator 這個 trait 提供
有點像 Java 8 的 interface,可以實作 code 在 interface 裡
像是 GTK: https://gtk-rs.org/
或是 QT: https://github.com/cyndis/qmlrs (只是其中一個)
看起來,GTK 那邊似乎比較活躍
目前來說,GUI 應該不算強項
如果要做的軟體是以 GUI 為重,可能要選別的方案比較好
但我還沒深入學 gtk-rs,可能有誤,僅供參考
Rust 的 OOP 和 C++ 或 Java 不同,寫的方式要調整一下
剛開始會不太習慣,後來就會自動調整成 Rusty way
※ 編輯: Neisseria (175.182.138.65), 12/28/2016 20:13:16
本來我也不會做,但 stackoverflow 有強者解答這個問題:
https://bit.ly/2i99XvW (Stackoverflow 網址)
※ 編輯: Neisseria (175.180.171.62), 12/29/2016 07:33:36
有在用 Ruby 的人應該會對 Crystal 蠻有興趣的
※ 編輯: Neisseria (175.180.171.62), 12/29/2016 19:54:25
... <看更多>