如何評價國內剛誕生的編程語言 Def ?

開源中國上看到的,官網:http://www.deflang.org

我是搞 C++ 的,看不懂這類腳本語言的「強大」之處。之前王垠的 Yin 語言還在懷孕中?

請大神來說說吧


感覺還沒到「如何評價」的程度。題主要是真的關心這個語言的發展,可以選擇參與到其中,也可以選擇觀望,但現在去「評價」實在為時過早。

粗看了一下,這個語言的設計和實現確實如題主所說還在「剛誕生」的階段。

此時說啥都還沒什麼意義——說它設計粗糙吧,設計者用它來寫更多代碼的時候就會感受到各個邊角設計得不順的地方然後會修改;說它實現不完善吧,這得靠時間慢慢完善,急也急不來。

這個語言的語法反映了設計者的口味(嗯我寧可說「口味」而不是「品味」),只能說作者就是喜歡這種語法,沒啥特別對或者錯的。

每個人都有自己的角度,例如說我覺得:

  • 用冒號來賦值但是變數卻不是靜態單賦值形勢的有點奇怪,但這不是啥大問題。賦值用=、:=、&<-、(def ...)之類的各種語法都有,這裡Def-lang要用冒號也不算出奇。

  • 用分號來終結某些聲明/控制流語法結構也略詭異,但也不是啥大問題。
  • 可選的逗號…這個以後一定是個坑

語法方面的設計要注意的問題是「編碼空間」(encoding space)——有些符號或者語法形式一旦被用作某些用途之後,它們就沒辦法再被用作別的用途了,或者會導致添加新語法有困難。不過一個語言在剛開始設計的時候很難體會到這一點。

語義方面,這個Def語言並沒有特別新奇的地方,基本上就是現有的各種語言已有的功能挑選了一些放在一起。

可變的變數、普通的順序/分支/循環的控制流,這些都挺正常。

有block語法但卻沒有non-local control flow,這就不夠痛快。這點請參考Ruby的block和non-local control flow。

所謂「Def處理器」的思路其實真的不算特別——雖說實現有它自己的特色

如作者的文檔所說,這個構造的想法來源於Lisp,而實際上現有的非Lisp系語言也有不少有實現quoting、hygine macro等功能。隨便舉個例子,例如Scala的quasiquote:Quasiquotes - Use cases,然後Haskell的quasiquote:Quasiquotation

實現方面,執行引擎是AST解釋器而且控制流的實現略詭異,自動內存管理是用簡易引用記數,都有待完善…

例如:Def/break.cc at 2b89c5a9f11279d3f04164fa95438a7a62dffd1c · yangjiePro/Def · GitHub

/**
* 循環退出
*/
DO* Exec::Break(Node*n)
{
// cout&<&<"Break !!!"&<&

break可以不通過拋異常來實現的…至少local的break不需要。

總結:一言以蔽之——還沒到需要吐槽的時候。應該讓作者有時間慢慢完善它。


溫馨提示中文English
該網站暫時無法訪問
尊敬的用戶,您好

很抱歉,該網站暫時無法訪問,可能由以下原因導致:

原因一:未備案或未接入;根據《非經營性互聯網信息服務備案管理辦法》,網站需要完成備案或接入。

原因二:網站內容與備案信息不符或備案信息不準確;根據《非經營性互聯網信息服務備案管理辦法》,網站內容需要與備案信息一致,且備案信息需真實有效。建議網站管理員儘快修改網站信息。

備案管理平台點此進入 ,購買雲伺服器享30元/月超低價


推薦閱讀:

互聯網藥品交易服務和互聯網藥品信息服務以及網上藥店的區別是什麼,比如康愛多網上藥店和95095醫藥平台?
新浪UC被下線了、人工智慧也被擔憂了
他們覺得,好久沒有抬頭看過什麼了
【門牙】 YouTube最紅帥Gay—Joey G,錯過了你就再等一個世紀!
從PRD撰寫說起,淺談產品經理如何煉就「三頭六臂」打怪本領

TAG:互聯網 | 編程語言 | 編程 | 編譯原理 | 如何看待評價X |