Jon Gjengset認為學習Rust語言並不難
Jon Gjengset是書籍Rust for Rustaceans 的作者,曾是MIT CSAIL 並行和分散式作業系統組的博士生,是 Amazon Web Services (AWS) 的高階軟體工程師。在亞馬遜,他的重點是在內部推動 Rust 的採用,包括構建內部基礎設施以及與 Rust 生態系統和社群進行互動。
Rust 連續六年被 Stack Overflow 評為“最受歡迎的語言”,它也因比其他流行語言更難學習而聞名,那些擅長 Python 但由於感知到的學習曲線而猶豫是否需要嘗試 Rust?
Rust 並不難學,而是 Rust 迫使您將其應用到程式碼中的原則。如果您正在使用 Python 編寫程式碼,以您的示例為例,該語言存在大量問題,您無需考慮就可以逃脫 - 也就是說,直到它們稍後回來咬您為止。無論是由於動態型別導致的錯誤、僅在重負載期間出現的併發問題,還是由於缺乏仔細的記憶體管理而導致的效能問題,您都在進行反應式開發。您首先構建一些有效的東西,然後在發現問題時週而復始地解決問題。
Rust 是不同的,因為它迫使你更加主動。今年來自 RustConf 的一個恰當引用是 Rust“首先給你帶來宿醉頭疼反應”——作為開發人員,你被迫對你的程式的執行時行為做出明確的決定,並且你被迫確保相當大的錯誤不會出現存在於您的程式中,所有這些錯誤都在編譯器編譯原始碼之前就能發現。這是開發人員需要學習的東西,以及在編譯時除錯的相關技能,而不是在執行時除錯和發現各種錯誤。
正是開發過程的這種變化導致了大部分(儘管不是全部)Rust 更陡峭的學習曲線。這是一個非常真實和重要的教訓。我也懷疑這將是一個非常有價值的教訓,隨著行業越來越關注透過形式驗證等方式保證正確性,這隻會在這個方向上進一步推動開發人員體驗。例如,當我現在用 Java 編寫程式碼時,我更加了解該程式碼的正確性和效能影響,因為從某種意義上說,Rust 教會了我如何更好地推理程式碼的這些方面。
Rust 比 C 和 C++ 有兩個主要優點
Rust 比 C 和 C++ 有兩個主要優點:人體工程學和安全性。
對於人體工程學,Rust 採用了許多傳統上與高階語言相關的機制,這些機制使得編寫簡潔、靈活、(大部分)易於閱讀且不易誤用的程式碼和介面變得更容易——像代數資料型別這樣的機制、模式匹配、相當強大的泛型和一流的功能。這些反過來讓編寫 Rust 感覺不像我們考慮C等系統程式設計時經常想到的那樣 - 低階程式碼只處理原始指標和位元組 - 並使該語言對更多開發人員更容易上手。
至於安全性,Rust 在型別系統中編碼了更多關於程式碼、訪問和資料的語義的資訊,這允許在編譯時檢查其正確性。執行緒安全和獨佔可變性等屬性在 Rust 的型別級別強制執行,編譯器不會讓你弄錯。Rust 的強型別系統還允許透過型別狀態程式設計將 API 設計為抗誤用,這在 C 等不太嚴格的語言中很難實現。
其他點選標題
相關文章
- Rust 語言學習之旅Rust
- Rust 語言學習之旅(6)Rust
- Rust 語言學習之旅(3)Rust
- Rust 語言學習之旅(2)Rust
- Rust 語言學習之旅(7)Rust
- Kafka並不難學Kafka
- 從Julia到Rust語言的學習 - miguelrazRust
- 學習Python難不難?Python
- Python學習起來難不難?Python
- rust學習五、認識所有權Rust
- 運維為什麼要學開發?linux運維學習難不難運維Linux
- Rust為何無法成為超級語言?Rust
- 這些情況會阻礙你學習Rust語言 - dystroyRust
- 學習Java開發難不難?好學嗎?Java
- 學習go語言的技能難嗎?go開發得學多久?Go
- C語言學習方法,怎麼學習C語言?C語言
- C語言真的很難嗎?那是你沒看這張圖,化整為零輕鬆學習C語言。C語言
- rust學習四、控制語句Rust
- 學習Rust 基礎語法Rust
- 學習Rust 條件語句Rust
- 為什麼要學習Go語言呢?Go
- vue難不難?新手學習多久能上手?Vue
- go語言學習Go
- java語言學習Java
- 以dart語言為例說說如何學習一門新的語言Dart
- 何為程式語言?為什麼要學C語言?C語言
- 為什麼要學習 RustRust
- 學習Python開發難不難?哪些人適合學習Python?Python
- Rust語言4歲了 | rust-langRust
- 為什麼要學習Python語言?哪些人適合學習?Python
- Rust for Linux 新補丁:為 Linux 核心增加對 Rust 作為第二語言的支援RustLinux
- C語言再學習C語言
- C語言學習心得C語言
- go語言學習-介面Go
- go語言學習-goroutineGo
- Go語言學習——mapGo
- Python課程學習難不難?零基礎可以學習Python嗎?Python
- PHP熟手使用Rust作為後端開發語言PHPRust後端