當前位置:編程學習大全網 - 編程軟體 - Meta Programming 主要解決什麽了問題

Meta Programming 主要解決什麽了問題

原則上說,目前能看到的 Meta Programming 有兩種

第壹種專註於重新構成語法,即 DSL,Lisp/Scheme 屬於此類,這幾年的新科狀元 Ruby 也屬於這壹派,甚至還有走得更遠但相對小眾的 REBOL Language

第二種專註於在編譯期進行計算和分派以達到針對特定場景的自動代碼選擇優化,C++ 的模板屬於此類。C 的宏則兼有兩者,但能力都比較弱。據我見過的情況,學院派的比較認可前壹種,後壹種則借 C++ 的東風用得更廣泛。

在實際工作中,無論哪壹種 Meta-programming,我都持否定態度。我認為 Meta-programming 破壞了交流中的壹項基本原則:同樣的編程語言,應當有同樣的交流習慣。過於隨意地構造 DSL,讓程序員之間的交流變得更加困難。這壹方面的典型例子是 REBOL,幾種 DSL 語法差異明顯,重新學習的成本過高,也實際上助長了社區的分裂傾向。閑來無事,自己玩玩也就算了;放在工作裏,害人害己。

至於 Lisp/Scheme 家族的 Meta Programming,與其說是做得更好,倒不如說是語法結構過於簡單導致其怎麽變換都是長得壹個樣子。關於這壹點,不妨對比壹下 REBOL,它構造出來的幾個 DSL 語法上沒有多少相似之處。不過,對我來說,Lisp/Scheme 這種語法簡單其實才是我喜歡的 Scheme:編譯器的設計者可以把更多的精力花在運行時和優化上。

  • 上一篇:學會JavaEE可以做什麽?
  • 下一篇:鯨魚之歌如何幫助科學家繪制海底地圖
  • copyright 2024編程學習大全網