未來卡車上的 Crystal 動力儀表板

Nikola Motor Company 的使命是在全球範圍內轉型並顛覆運輸產業,而 Crystal 正在為他們的軟體提供動力。他們設計和製造電池電動車 (BEV) 和氫燃料電池車 (FCEV)、汽車零件、能量儲存系統和電動汽車動力總成。這些是未來的卡車。
Nikola 開發了幾種不同的車輛,它們都具有高度的創新性和高性能:三款 8 級電動半掛卡車 -Nikola One、Nikola Two 和 Nikola TRE-、兩款越野全電動車輛 -Nikola NZT 和 Reckless,一款軍用級 OHV-,以及 Nikola WAV,一艘電動水上船隻。從能源的生產到消耗,他們致力於實現完全零排放,並且他們將在未來幾年內將它們投入生產,首先從 2020 年 Nikola TRE 的測試和驗證開始。
該公司的一個重要重點是他們的客戶體驗:速度、舒適性和安全性被有意識地整合到他們所做的一切中。沿著這個方向,他們的車輛配備了最先進的數位駕駛艙:他們的大部分車輛功能和駕駛員控制都是透過中央 17 英寸觸控螢幕資訊娛樂系統和 12.8 英寸儀表盤操作,這是在 Crystal 中開發的。
當我們得知此事時,我們忍不住聯繫了 Nikola Motor Company 的資訊長暨軟體架構師 Isaac Sloan,以了解更多資訊。
您與 Crystal 的故事是如何開始的?
在我之前任職的公司中,我花了約四年的時間主要使用 Java,而在 2005 年,當我發現 Ruby 時,我「偷偷地」開始將大量程式碼遷移到 Ruby。當公司發現時,他們試圖讓我重寫它,但是當他們看到它讓我完成多少工作時,他們就讓我繼續使用 Ruby。
我大約在 2015 年 3 月在 Mountain West Ruby Conf 上了解了 Crystal,並開始用它編寫我所有的興趣專案。幾個月後,我們在一個使用過多記憶體的應用程式上遇到了一些挑戰,因此我嘗試使用 Crystal 重寫幾個瓶頸點,而將其餘部分留在 Ruby/Rails 中,並使用 NginX 進行代理,這證明可以解決問題。從那時起,這是一個自然的轉變。
您目前使用 Crystal 做什麼?
資訊娛樂系統、儀表盤和遠程資訊處理系統(車輛和雲端之間的通訊)都是使用 Crystal 和 Amber Framework 編寫的,並且它已內建在我們所有的車輛中。我們有三個不同的 Crystal 應用程式,主要是因為將它們分開執行是有意義的,這樣我們可以給它們不同的權限,但它們都是整合的:一個以 root 身分執行並處理權限,另一個充當使用者介面,另一個則與雲端通訊。Crystal 是將所有東西結合在一起的膠水:連接我們平台中每個元件的應用程式都是使用 Crystal 編寫的,我們的目標是 x86 架構,但我們已經能夠在 Raspberry Pi 上編譯它。
是什麼讓您選擇 Crystal 而不是其他選項來進行此專案?您是否發現您在 Crystal 中開發的軟體比您在其他語言上編寫的軟體效能更好?
好吧,我們討論了幾種不同的替代方案。Rust 不那麼適合使用,而且對於我們的需求來說有點過頭了。Electron 使用 node.js 作為後端,而 Chromium 作為前端,但是對於我們的使用來說,它消耗了太多記憶體。我們基本上遵循 Electron 範例,但是我們使用 Crystal 而不是 node.js 來產生所有 API 和 HTML。
它快得多,例如,快 Go 兩倍。我們一開始嘗試使用 Go,因為它是 1.0 版,而且很受歡迎,但是根據我們的經驗,Crystal 的效能優於 Go,而且編寫起來更令人愉快。我們的投資者和利害關係人都很喜歡資訊娛樂系統及其執行速度。
對於我們想要做的事情,C 或 C++ 幾乎是標準。我們也嘗試使用網頁實用程式和網頁語言,例如 html、javascript 和 chromium。我們與 WebOS 專案中的許多人交談過,因為他們證明了它可以在非常小的處理器和行動裝置上作為介面工作。
在 Crystal 中編寫 C Bindings 也相當容易。使用 Python 或 Ruby,如果沒有針對 C 函式庫的 binding 或 wrapper,則需要花費更多時間。我使用 Crystal 已經很多年了,在伺服器和客戶端上都是如此,而且它從未崩潰過。它可能在「沒有重大變更」的意義上不穩定,但它在編譯後不會崩潰的意義上非常穩定。無論如何,它比 Java 更穩定。
您何時開始在 Nikola 使用 Crystal?您是否在任何先前的專案中使用過它?
它已經在我們的程式碼庫中使用了兩年多了。我們經歷了此應用程式的多次迭代,而且我們現在正在完成我們的生產目標。汽車產業需要花費很多時間來驗證一切,而且在此過程中,利害關係人有時會要求變更,因此它總是不斷發展的。
您是否有任何計劃在您即將進行的專案中擴大 Crystal 的使用範圍?
現在,我們正在驗證安全性方面的一切。在接下來的幾個月中,我們將致力於與手機連接以進行遠端控制,所有這些都將與 Crystal 應用程式整合。

Isaac Sloan,Nikola Motor Company 資訊長暨軟體架構師
我喜歡使用 Crystal。它具有 Ruby 在開始時的許多幸福價值,而且社群正在做非常了不起的事情。