我们总是纠结于语言的不足,所以有能人会自己实现的语言。
那么,如果我想实现一种语言,我该怎么去做?
先去熟悉現有的語言。
面向過程的面向對象的函數式編程
以及神一樣的 Lisp 和背後的 Lambda 演算。
然後,你會發現,沒有一款編程語言能超越 Lisp。但是卻很少有人用它去生產。
小時候也有你的想法。那時候我剛開始學 Visual Basic,連 C 都不會。後來才發現,很多當初覺得不足的地方,恰恰是這門語言成爲這門語言的原因,也是這門語言的優勢所在。
當你熟悉了天下絕大多數種類的語言,然後,如果你還能發現,有一種語言,它還未出現,卻能滿足其它所有語言難以滿足的需求。這時候,你可以開發真正屬於自己的語言了。
如果不是這樣的話,僅僅是爲了增強現有的語言,完全沒必要從 0 開始。
現有的解析器編譯器完全可以復用,唯一要做的,只是略微修改語法。(不過有時候是因爲這樣做工作量太大沒人願意做,比如 PHP 對 func()[index] 語法的支持)
func()[index]
或者用全新的但現有的開源架構,比如 LLVM。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(1)
先去熟悉現有的語言。
面向過程的
面向對象的
函數式編程
以及神一樣的 Lisp 和背後的 Lambda 演算。
然後,你會發現,沒有一款編程語言能超越 Lisp。但是卻很少有人用它去生產。
小時候也有你的想法。那時候我剛開始學 Visual Basic,連 C 都不會。後來才發現,很多當初覺得不足的地方,恰恰是這門語言成爲這門語言的原因,也是這門語言的優勢所在。
當你熟悉了天下絕大多數種類的語言,然後,如果你還能發現,有一種語言,它還未出現,卻能滿足其它所有語言難以滿足的需求。這時候,你可以開發真正屬於自己的語言了。
如果不是這樣的話,僅僅是爲了增強現有的語言,完全沒必要從 0 開始。
現有的解析器編譯器完全可以復用,唯一要做的,只是略微修改語法。(不過有時候是因爲這樣做工作量太大沒人願意做,比如 PHP 對
func()[index]
語法的支持)或者用全新的但現有的開源架構,比如 LLVM。