<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      在我嘗試著記錄下這幾天所學到的關于Intentional Programming的一些東西之前,請先允許我表示一些感謝:

      首先,感謝Intentional Programming的發明者,Charles Simonyi
      然后,感謝Generative Programming一書的作者,以及譯者
      最后,感謝易語言的發明者,吳濤

      OK,The play begin

      這些天突然對編譯原理感興趣了,也許是受到了myan的影響吧,想著補補計算機科學的基礎了。看了一兩頁編譯也沒多少收獲,于是想著自己是不是要弄一個什么比較酷的東西,just like MOOP。看看,AOP,看看,Context Bound Component。在決定要做些什么之后,去了一趟書店,發現了一本以前想買但是又嫌貴的書,《產生式編程》

      研讀了幾章之后,我就發現了其中我最感興趣的章節了,第十一章,意圖編程(Intentional Programming)。因為我想做一些酷的東西出來,說到底就是想玩玩語言特征的組合什么的。而意圖編程就正好是做這樣的游戲的最佳平臺。當然,意圖編程又正好和徐昊一直鼓吹的元數據和MDA一路走得非常相近,更巧的是我在易語言身上發現了意圖編程的潛力或者說影子。于是乎,我與意圖編程,相愛了。

      這大概能歸納這幾天的思路走向了。先是想學一點計算機的基礎,然后又不安分的想自己動手做一些語言方面的實現和游戲,然后買了《產生式編程》這本書,然后與意圖編程墜入愛河。下面就來描述一下女主角的樣子和為什么她如此誘人。

      傳統的計算機語言的編譯過程大概如斯:讀入文本源代碼->詞法語法解析->抽象語法樹->語義分析->代碼生成。而按意圖編程,第一個突破之處就是揚棄了抽象語法樹之前的部分,也就是說直接對抽象語法樹編程,而沒有了文本形式的源代碼,沒有了語法解析,甚至可以說沒有了語法。

      要講明白這樣對抽象語法樹的編程是如何進行的,最佳的實際演示是易語言。對于這一點,說實話,我自己都大吃一驚。雖然我當年曾經是易語言的總斑竹,但那都是高中時代的事情了,無論如何我都不否認從專業的眼光來看,易語言就是玩具。不過這次,我發現了易語言的閃光點了。我帖一張圖上來,大家就明白什么是對抽象語法樹編程了:

      這是一個易語言IDE顯示源代碼時截圖。你可以看到,用表格的形式表示出了AST(抽象語法樹),而不是文本+文法的形式。從這點上來說,易語言是脫離了語法的,也是它為什么能用中文來寫程序的原因。而不是大家想象的那樣是改進了文法解析,讓parser支持了中文。

      OK,這是第一步,對AST編程,而不是對Source Code編程。但是這并沒有看到什么實際上的好處,不是嗎?呵呵,是的。

      現在來具體挖掘這樣做的好處。首先一個好處是,語言的設計者不需要挖空心思的設計語法了,因為不再存在語法了。而且所謂的Syntax Sugar也就不存在了,語言更加回歸本源,語言之間的爭斗就沒法在語法上簡潔一些花哨一些上斗法了。
      然后一個好處是代碼的表現可以任意的酷了,可以看到表格來現實變量聲明,沒問題。用矩陣的樣子來顯示二維數組,也沒問題。現實偏微分方程什么的,都可以的。輸入也可以變得很自由。還是以易語言為例子,你輸入rg,它就可以顯示出如果出來,而且兩條分支的代碼路徑也給顯示出來了。而且你還可以輸入if,效果和rg是一樣的。
      再一個好處是如果形成了標準的API,那么對于源代碼進行處理的工具,比如版本控制(不同版本文件的合并),就可以直接獲取AST,不需要重寫一遍parser了,這將是一個極大的功能與成本比的提高。
      還有就是大家常說的重構了,現在要做重構就很容易了。比如就易語言吧,這么玩具的東西都支持最簡單的重構,改名。你在里面只要改一處名字,所有相關的引用都一并修改了,這就是因為AST中定義和引用是互相知道的,形成了一張graph。對于定義的修改,所有引用的也都改過來了(因為只是一個指向而已嘛)。
      可見,Intentional Programming僅僅在其第一個突破上,就獲得了如此多的好處,何其可貴。btw,Charles Simonyi是第一個所見即所得編輯器的作者,也是WORD之父,可見提出這樣的代碼編輯方式是非常正常的。

      接下來是Intentional Programming真正能體現其名稱意義的突破了,那就是Intention的引入。先不說Intention吧,先來看看有了第一步的工作之后,程序是什么樣子的吧。在面向了AST編碼之后,程序的形式就是一顆樹了。而樹的節點是什么?應該對應的是語言中的一些概念,比如If the else這樣的代碼塊,或者+-*/這樣的表達式。一個語言的構成除了文法之外,最重要的就是這些文法標識出來這些關鍵字,操作符了。但是你有沒有想過,為什么一個語言的關鍵字的語義是固定的,而又為什么關鍵字是不能擴充的,而又為什么我們不能擴充已經有的語言,而又為什么不能有一個平臺給我們發明自己的語言并賦給其我們希望的語義?OK,這就是Intentional Programming的第二個偉大的突破了。她揚棄了寫死關鍵字操作符的形式,并且用Intention來一統天下。如何一統天下,這是最難解釋的部分,也是最復雜的一部分。

      多說無益,用圖來說明問題:

      看到了嗎?以前int,while這樣的節點的含義是由編譯器來解釋的,因而是固定的,沒法擴充的。而現在,這些節點是引用到了它們的定義節點,而這些定義就是intention,而具體int,while在語句中的出現就是intention 的instance。由于intention不是寫死在編譯器中的,是以intention庫的形式提供的,也就是說AST節點中能出現的節點種類是無限制的,從而繼不再有語法限制之后,不再有語言特征的限制了。你可以自己添加關鍵字,自己添加語言特性了。
      posted on 2004-10-01 20:53  taowen  閱讀(1180)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 人成午夜免费大片| 白丝乳交内射一二三区| 亚洲最大成人免费av| 蜜芽久久人人超碰爱香蕉| 天天澡日日澡狠狠欧美老妇| 国产毛片精品av一区二区 | 精品亚洲国产成人痴汉av| 无码福利写真片视频在线播放| 亚洲欧美高清在线精品一区二区| 99视频在线精品国自产拍| 91久久性奴调教国产免费| 亚洲第一无码专区天堂| 日韩人妻无码一区二区三区综合部| 自拍偷拍视频一区二区三区| 巨爆乳中文字幕爆乳区| 亚洲中文字幕日产无码成人片| 亚洲天堂av免费在线看| 国产99在线 | 免费| 激情六月丁香婷婷四房播| av大片在线无码免费| 精品亚洲无人区一区二区| 亚洲高清日韩专区精品| 久久综合亚洲鲁鲁九月天| 日本不卡码一区二区三区| 四虎永久在线精品无码视频| 国产成人精品一区二区三区免费| 色婷婷综合久久久久中文一区二区| 国产精品亚洲国际在线看| 制服 丝袜 亚洲 中文 综合| 亚洲美女厕所偷拍美女尿尿| 欧美videosdesexo吹潮| 高潮喷水抽搐无码免费| 中文字幕精品人妻丝袜| 象山县| 国产亚洲精品久久综合阿香| 肇庆市| 无码日韩做暖暖大全免费不卡| 四虎影院176| 啊┅┅快┅┅用力啊岳网站| 国产高清精品在线一区二区 | 国产乱子伦视频在线播放|