微控制器程式設計領域正在經歷一場變革,高階語言逐漸進入傳統的低階領域。PicoRuby 是一種為小型裝置設計的替代性 mruby 實現,它引發了開發者關於在資源受限硬體上使用 Ruby 等解釋型語言的優缺點討論。
大小和資源需求
PicoRuby 在 32 位架構上需要約 256 KB 的 ROM 和 128 KB 的 RAM,這些規格在開發者社群引起了不同反應。雖然這些要求使該語言能夠在像 Raspberry Pi Pico(配備 Arm Cortex-M0+ 處理器,264 KB RAM 和 2 MB 快閃記憶體)這樣的裝置上執行,但一些開發者指出,按歷史標準來看,這些並不是特別小的佔用空間。
一位評論者指出,這些規格超過了大約 1990 年前普通計算機的能力,突顯了我們對小的認知如何隨時間演變。這一觀察特別相關,因為 RAM 和快閃記憶體顯著影響微控制器的價格和形態因素。
PicoRuby 規格:
- ROM:256 KB(取決於構建配置)
- RAM:128 KB 或更少(取決於應用程式碼)
- 架構:32位
- 參考硬體:Raspberry Pi Pico(Arm Cortex-M0+,264 KB RAM,2 MB 快閃記憶體)
主要特點:
- 可移植性強 - 僅依賴標準 C 庫
- 生成三個可執行二進位制檔案:
- picorbc:將 Ruby 程式碼編譯為 VM 位元組碼的編譯器
- picoruby:Ruby 直譯器
- r2p2:POSIX 版本的 R2P2
與 MicroPython 的競爭
PicoRuby 進入了一個已被 MicroPython 主導的領域。MicroPython 提供了類似的功能,可在微控制器上執行高階解釋型語言,並已建立了龐大的生態系統。熟悉這兩個專案的開發者建議,對 PicoRuby 感興趣的人也可能想探索 MicroPython,後者目前在這一細分市場中佔有更大份額。
這些專案之間的競爭反映了將開發者友好型語言引入嵌入式系統的更廣泛趨勢,這可能使硬體開發對那些沒有豐富 C 程式設計經驗的人更加容易接觸。
C 語言之爭
也許最熱烈的討論集中在 Ruby 等高階語言是否適合替代微控制器程式設計中的 C 語言。社群在這個基本問題上似乎存在分歧。
「有些人討厭使用 C。有些人接受它,甚至喜歡它(包括許多遊戲開發者!)。你擁有完全控制權!但我想知道...C 真的那麼糟糕嗎??」
C 語言的支持者強調其效率和對硬體資源的直接控制。然而,批評者指出它缺乏安全特性,開發者可能透過簡單的打字錯誤或記憶體管理錯誤輕易引入關鍵性錯誤。正如一位開發者所指出的,C 語言以非常快的執行速度為代價,換取了較慢的開發速度,尤其是在構建以正確性為優先的大型程式碼庫時。
開發體驗和安全性
圍繞 PicoRuby 的討論突顯了嵌入式系統開發中的一個基本張力:執行效率與開發效率之間的權衡。Ruby 的動態型別和更高級別的抽象可以加速開發週期並減少某些型別的錯誤,但代價是執行時效能和記憶體開銷。
一些開發者認為,高階語言的安全特性證明了其資源成本是合理的,尤其是隨著微控制器能力的不斷提高。避免緩衝區溢位、空指標解引用和記憶體洩漏等常見陷阱的能力可以帶來更強大的系統,特別是對於那些不是嵌入式系統專家的開發者。
PicoRuby 在這場辯論中代表了一個有趣的中間立場,提供了 Ruby 的語法和程式設計模型,同時相對於全功能 Ruby 實現保持較小的佔用空間。隨著嵌入式裝置在處理能力和記憶體容量方面的不斷增長,我們可能會看到這類高階語言執行時的採用增加,特別是在開發速度優先於絕對效能效率的原型設計和教育環境中。
參考:PicoRuby