作者littleshan (我正在想要換什麼)
看板C_and_CPP
標題Re: [閒聊] Rust 的實用性?
時間Mon Dec 26 01:29:33 2016
※ 引述《Neisseria (Neisseria)》之銘言:
: 根據小弟摸一小段時間 Rust,感受到的一些優缺點:
: Pros:
: - 語言體質佳:支援 OOP、generics、functional programming 等
: 寫起來有某些部分像高階語言
: - 平台支援好:同一套程式碼可直接用,不用根據平台寫 #if 條件句,交叉編譯也很方便
: 有點像高階語言的程式環境,只是 Rust 是編譯語言
: - 編譯檢查嚴格:能通過編譯的程式相對發生問題的機會少
我覺得還有一項優勢是他目標在成為系統程式語言,不使用 GC,允許 stack allocation 也允許在 unsafe block 中進行指標操作,可以達到 C/C++ 等級的效能。
: Cons:
: - 社群資源少:和 C/C++/Java 相比差非常多,新的語言多多少少都有這個問題
: 如果要拉 C 函式庫,要自行處理,跨平台的優點就消失一半
: - 學習資源少:目前大部分都要靠官方文件,目前市面上只有一本 Rust 書籍
靠我們自己啦 XD
我最近正在寫一系列 rust 的教學,並以 C++ 使用者為主要對象,希望最後可以拋磚引玉。
https://goo.gl/5AQE2f
(才寫到第三篇,真是非常抱歉 XD)
: 明年二月到四月,會再陸續出兩三本,總體上還是很少
: - 語言不穩定:Rust 經歷過一些改動,某些特性實作後又放棄掉
: 使得網路上一些 Rust 相關的資訊變成錯的
: 另外,目前 Rust 分為 stable, beta, nightly 三個版本
: 某些函式庫作者會偷用 nightly 的版本,使得函式庫不穩定
追 stable 的話,基本上在 1.0 後就真的很 stable,新功能當然是越來越多,但 1.0 出來的功能並不會突然不見。
nightly 的功能常常變動是很自然的事,我也希望嚴謹的程式語言在加入新功能前有實證過該功能有正確的設計。語言並不是功能越多越好,加了A可能就會犧牲到B。
: - 上手不易:也是因為編譯檢查嚴格,學習 Rust 總是要和 Rust 編譯器奮戰一陣子 Orz
: 其中有些東西和指標有關,如果 C/C++ 學得好,撞牆期會比較短
borrow checker 與 lifetime 那邊真的很難,因為主流語言中沒有這類設計,因此對大部分人來說都是嶄新的概念。
反過來說,只要 borrow checker 與 lifetime 學得會,剩下的真的就很簡單了 XD
: Rust 底層用到 LLVM,但 Rust 包裝得很好,使用者不會碰到 LLVM
: 雖然小弟時常和 Rust 編譯器角力 = =|||,基本上還算欣賞這個語言
: 但是畢竟還很新,若要引入專案可能還是要考慮一下
: 不知道各位大大會將 Rust 用在自己的專案嗎?side project 也可以
: 就當成閒聊吧,聽聽看大家的看法
我自己很有興趣,也會試著在一些 side project 使用。不過要在專案中使用,最大的問題還是其他人也要學的會才行。
rust 還缺一個 killer app ,像是 swift 與 go 都有 killer app (開發 iOS 與 web backend),這點是我對 rust 的未來最擔憂的地方,他可能很強大,但依然叫好不叫座。
-----
Sent from JPTT on my Sony F8332.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 216.2.60.98
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1482686981.A.477.html
1F:推 ilikekotomi: 推拋磚引玉 明天來學一下 12/26 02:10
2F:→ uranusjr: Lifetime 我覺得對原本就有建立良好記憶體 coding style 12/26 03:02
3F:→ uranusjr: 的人而言算很合理, 只是把原本已經內化的習慣變成原則讓 12/26 03:02
4F:→ uranusjr: compiler 檢查, 對 C 或 C++ programmer 不應該是太大 12/26 03:03
5F:→ uranusjr: 障礙; borrow 就確實是需要一些新習慣才能適應 12/26 03:04
6F:→ uranusjr: 我滿希望 Rust 可以朝 rich application 的方向來努力 12/26 03:05
7F:→ uranusjr: 如果能有個好的跨平台 GUI framework 要取代 wx 和 Qt 12/26 03:06
8F:→ uranusjr: 都是有可能的事情 12/26 03:06
9F:推 wtchen: Rust對C重度使用者來說不夠自由.... XD 12/26 03:24
10F:推 eye5002003: 很有心的推廣,幫了大忙! 12/26 06:11
11F:推 b98901056: 感謝分享 12/26 11:05
12F:推 jack82822005: 太神啦!!! 12/29 18:23
13F:推 pkzip: 感謝板大的Rust簡介文 12/30 10:15
14F:推 SLMT: 推好文! 01/03 10:54