為何軟體IT行業重視創新而不是穩定?使用者為此受苦:使用者體驗差!
彼得-蒂爾有一句名言:"競爭是失敗者的事"。
- 如果沒有必要,就不要把自己置於被迫競爭的境地。
我給年輕程式設計師的建議是,如果你想建立自己的程式語言,那麼不要試圖建立 Python 的子集,或者與現有語言表面上非常接近的語言。做你自己的事情。這樣,您就可以按照自己的節奏和方向發展您的系統,而不會被您的語言必須與其他實現的效能、功能集或庫生態系統相匹配的期望所束縛。
這篇文章討論了建立軟體系統替代實現的挑戰和動態,重點是程式語言及其即時 (JIT) 編譯器。作者從最佳化動態型別程式語言的個人經驗出發,概述了替代實現經常陷入的陷阱,並就如何避免這些陷阱提出了自己的見解。
以下是文章的要點:
- Crystal 語言:這篇文章討論了 Crystal 語言,這是一種類似 Ruby 的語言,它選擇與 Ruby 分道揚鑣,並取得了有限的成功。作者指出,Crystal 與 Ruby 的相似性讓使用者感到困惑,因為它看起來像 Ruby,但卻有很大的差異和不相容性。
- TruffleRuby 和 YJIT:作者將高效能 Ruby JIT TruffleRuby 與直接整合到標準 Ruby 實現 CRuby 中的另一種 Ruby JIT YJIT 進行了對比。YJIT 決定在 CRuby 中開發,這使其與 CRuby 的功能保持了 100% 的相容性,從而得到了更廣泛的採用。
- PyPy 和 LuaJIT:文章以 Python 的 JIT 編譯器 PyPy 和 Lua 的 JIT 編譯器 LuaJIT 為例,指出這兩個專案儘管在效能上有顯著提高,但在應用上卻遇到了困難。主要問題是這些專案難以跟上各自語言不斷髮展的標準,Python 的標準是 CPython,Lua 的標準是預設 Lua 直譯器。
替代實現的挑戰:作者指出,作為主流或典型系統的替代實現往往是一個失敗的命題。這是因為替代方案總是在迎頭趕上,試圖在功能和效能上與典型系統相媲美。
作者認為,試圖建立一個比經典實現更好的替代方案是一條艱難的道路,因為替代方案受制於經典專案設定的方向。作者建議,與其競爭,不如與規範系統整合,這樣可能會更有成效。
這篇帖子提出了一個更大的問題:
- 即該行業重視創新而不是穩定,我們都因此而受苦。
不幸的是,密碼學 API 別無選擇,只能隨著缺陷的發現和修復而不斷髮展。
banq注:好的使用者體驗需要上文與下文銜接順滑,而不是出現斷裂,創新等同於啟動一個新的節奏,新的上下文,此時開始的上文無法銜接以前的下文,使用者只熟悉以前的下文,對創新帶來的新節奏不適應,不清楚這新上下文的上文前提是什麼?新約束有什麼?新的潛臺詞是什麼?