自制程式語言有什麼好處?
1. 可以幫助理解程式語言的內部執行機制
程式語言是程式設計師每天都要使用的工具。深刻地理解這個工具,對程式設計師來說非常重要。
一般來說,重新編寫一個與已有程式相似的程式會被說成是“重複發明輪子”,這在行業內是不被認同的。但本書中想要實現的,偏偏是在眾多語言存在的前提下再製作一門新的語言,正是“重複發明輪子”。這是深刻理解程式語言的最佳途徑(缺點是要花很多時間)。
2. 能製作領域專用語言
比如在Unix的世界中,有sed和awk兩種歷史悠久的專為文字處理定製的語言(後來在此方向上發展出了Perl語言)。PHP則是專門面向Web程式開發的語言。如果掌握了製作程式語言的技術,就可以在必要的情況下製作出領域專用語言(DSL,Domain Specific Language)。
領域專用語言不一定會像Perl與PHP那麼複雜,在很多情況下,如果能書寫條件分支或者簡單語句的話會方便許多,這也可以看作是一種專用領域。
比如在業務流程處理等軟體中,很多時候為了切換測試環境與生產環境的資料庫,需要重寫配置檔案,而這一操作經常會引發問題(比如由於版本升級需要增加配置檔案專案,此時必須與舊版本配置合併)。這時候我們可能就會想,如果能直接在配置檔案中寫if
語句將其按域名分開就好了。
除此以外,我們在填寫資料時可能希望能支援類似Excel的簡單計算公式,在玩遊戲時希望能把遊戲中的臺詞匯出到一個外部檔案中,等等。這些都可以看作專用領域並製作對應的DSL。
3. 可以用程式語言擴充套件應用程式
將以上兩方面的考量進一步延伸,我們就會得到以通用語言擴充套件某個應用程式的構想。Emacs這個編輯器就內建了Emacs Lisp這種Lisp方言,從而為Emacs的自定義提供了無限的可能性。同理,Microsoft Office也可以使用VBA進行擴充套件。
對於這類應用程式擴充套件語言,當然完全可以使用某種已有的程式語言(Lua等就在向這個方向發展),也可以在編寫應用程式時從底層到擴充套件全部自己實現。這樣就無需擔心使用其他程式語言在版本升級時引起的相容性問題了。
4. 說不定還會變成名人
如果自制的程式語言能在世界範圍內得到廣泛使用,那就太棒了。比如Ruby之父松本行弘先生就是世界名人。
不過坦白講,通過自制程式語言來獲得成功實在是太難了。即便語言被創造出來,如果沒人用的話就不會產生相應的軟體,這樣就更不會有人用了。況且,即便真的因為發明了新的語言而變成了名人,通過這個賺到錢的希望也十分渺茫啊。其實我自己最近寫的語法處理器都是免費釋出的(不這樣的話,語言沒法普及呀)。
5. 自制程式語言非常有趣
囉嗦了這麼多,說到底其實是因為自制程式語言非常有趣。
自制一門程式語言確實是一件非常有意思的事。有人說過“想寫出終極程式的程式設計師,最終都去寫作業系統或者程式語言了”,你可以通過自制程式語言感受到接觸最核心技術的樂趣。
希望更多的人投入到自制程式語言中來。
本文摘自《自制程式語言》
相關文章
- 資料分析用python語言有什麼好處?Python
- 為什麼自制指令碼語言是程式語言的最高境界?指令碼
- C語言編寫作業系統有什麼好處C語言作業系統
- 學習Python有什麼好處?Python語言為什麼這麼受歡迎?Python
- 財務人員有必要學習Python語言嗎?有什麼好處?Python
- Python對比其他語言有什麼好處?Python就業怎麼樣?Python就業
- 資料分析用python語言有什麼好處?Python入門教程Python
- 什麼是lambda?有什麼好處
- 【自制程式語言】1 - 基本語句(1)
- 什麼是程式碼審計?程式碼審計有什麼好處?
- 常見的程式語言python怎麼樣?各程式語言有什麼區別?Python
- 什麼是Go語言?Go語言有什麼特點?Go
- 服裝行業做小程式有什麼好處?行業
- 為什麼會有這麼多的程式語言?
- 做SEO有什麼好處
- python語言與其他語言有什麼不同?Python
- “Go語言”有什麼用途?有什麼優勢?Go
- 低程式碼開發平臺有什麼好處
- C語言+圖形程式設計——自制象棋C語言程式設計
- 餐飲店做微信小程式有什麼好處?微信小程式
- 微信小程式定製開發有什麼好處?微信小程式
- 中文程式語言——易語言,到底是用來幹什麼的?易語言值得學習嗎?易語言的優勢有什麼?
- Java語言有什麼特點Java
- Go語言的 序列處理 和 並行處理 有什麼區別 ?Go並行
- 什麼是勞動力管理?有什麼好處?
- DevOps的目標是什麼?有什麼好處?dev
- 使用反向代理的好處有什麼?
- MES與ERP相比有什麼好處?
- 使用CRM系統有什麼好處?
- 靜態ip有什麼好處呢?
- Python和其他流行的程式語言有什麼區別?Python
- 為什麼中國人沒有自己的程式語言?
- 使用雲端計算有什麼好處?有什麼幫助
- Python是什麼語言?有什麼優劣勢?Python
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- Python這麼火,它與其他程式語言有什麼區別?Python
- 我來告訴你程式碼重構有什麼好處
- 什麼是WHQL?WHQL對驅動有什麼好處?
- 何為程式語言?為什麼要學C語言?C語言