本系列文檔記錄了熊皮皮從0學習Rust編程語言,在開發過程中從C++/Java式基于繼承的面向對象編程慣性思維到Rust式面向數據編程的開發總結,這些內容來自我和團隊使用Rust開發Windows/macOS與移動端iOS/Android等跨平臺共享源碼的復雜圖形渲染項目的設計、思考與實踐。
面向數據編程更接近函數式編程的思維(個人粗淺理解)。Rust語法及思考方式的轉變起初給我和團隊帶來了相當的學習難度,在某些程度上,它“拖慢”了我們的項目進度。換個角度看,它強迫我一直思考自己的架構設計及內存使用是否合理,而我用C/C++/Java等語言在習慣了某些套路后常常忽略思考這些慣例的本質。突然暴露了自己是個菜逼,手動攤手.png。
iOS/Android共享源碼新項目選擇Rust而非C++的主要原因是,兩者性能相似,Rust有方便好用的依賴管理器、跨平臺編譯極其方便、語義明確。
目錄
- C++與Rust變量聲明的比較
- C++與Rust引用外部符號的比較
- C++與Rust數據類型對應關系
- C++與Rust操作裸指針的比較
- Rust 2018開發環境配置
- C++/Java式面向對象在Rust上遇到的問題及解決辦法
- Rust庫導出C接口的總結
- Rust跨平臺與條件編譯總結
- Rust模塊化系統實踐總結
- Rust與C接口(FFI)交互的總結
招聘
我們在招聘圖形渲染開發工程師崗位,工作地點北京海淀,校招、社招都有名額,社招傾向中/高級開發崗,30-50k,希望你:
- 具有一年以上Rust開發經驗的同學,最好也具備扎實的C或C++基礎
- 了解或熟悉手機端常用圖形庫,如OpenGL ES/Metal/Vulkan其中之一,最好具備一個以上圖形渲染或基于Shader的圖像處理(GPGPU)項目開發經驗
- 擁有良好的工程師素養,編寫高質量、整潔簡單、可維護的代碼
- 校招崗位只要求計算機基礎扎實,熟練掌握數據結構、操作系統等課程,了解或熟悉計算機圖形和編譯原理,有ACM等參賽經歷或知名公司實習經歷更好。
致謝
開發與學習過程中,感謝以下朋友的熱心幫助。
fyfcauc、dajinyu_haiyan、FEIPER、leizh007、JoySeeDog、黑化的齒輪、我是傻逼我自豪、λCrLF·o?1o、KiChjang、{ Chaos Bot}、DCjanus、Solmyr。