<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    rosial

    lost memory
    數(shù)據(jù)加載中……

    《爪哇夜未眠》- REBOL篇 - REBOL的特色

    ????

    從計算機科學(computer science)的角度來看,REBOL是一個高度動態(tài)(dynamic)、多態(tài)(polymorphic)、反射(reflective)、脈絡相關(guān)(context-dependent)、符式(symbolic)、功能性(functional)的語言【注】。這些學院派的名詞,留著給教授們細細品味。在本文章,我要用白話的方式來解釋REBOL

    REBOLRelative Expression-Based Object Language的縮寫(abbreviation)。顧名思義,REBOL是一種Relative Expression-Based Language,也是一種Object-Based Language,本節(jié)會解釋這兩者的意義。除此之外,我也說明REBOL的一些特殊之處。總而言之,REBOL是一個打破傳統(tǒng),不同流俗的編程語言【注】。

    【注】正因為REBOL不同流俗,所以已經(jīng)有編程經(jīng)驗的人,在學習REBOL的初期,可能會有一些不適應。我給你們建議是,學習REBOL時,最好暫時忘了其它語言。

    方言

    所謂的Relative Expression就是“方言”(dialect)的意思,REBOL能夠如此簡潔,一半功勞要歸于方言。例如:寫一個程序,來打開一個窗口(window),窗口上面顯示紅色的“Hello REBOL”字樣,以及一個“OK”按鈕(button),按下按鈕之后,窗口會立刻關(guān)閉。對許多語言來說(包括JavaC#),要寫出這樣的程序,少則需要十幾行源碼,多則需要數(shù)十行源碼。但是REBOL利用VIDVisual Interface Dialect視覺接口方言)只要下面一行就可以做到【注】,執(zhí)行畫面如圖1所示。

    view layout [ Title "Hello REBOL" red Button "OK" [quit] ]

    【注】如果你想動手試試這一行程序,請記得使用含View功能的REBOL版本。也請注意,REBOL不區(qū)分英文字母大小寫。

    1? 只要一行,就可以寫出這樣的REBOL程序

    這就是方言的威力。不同的應用領(lǐng)域(application domain)會有不同的方言,也就是行話(jargon)。例如:律師有律師的行話,建筑業(yè)有建筑業(yè)的行話,音樂家有音樂家的行話。這些行話不受一般語法的約束規(guī)范,自成一套體系,行話通常比正常的語言來得簡潔、有力。舉例來說,SQLStructured Query Language)就可以算是一種方言,而不是一般的編程語言,SQL專門用來進行數(shù)據(jù)庫查詢。拿SQL來做別的事(例如設計游戲軟件),SQL一定做不好,但是拿SQL來和數(shù)據(jù)庫進行溝通,卻沒有其它編程語言(C#Java)可以做得比SQL好,因為SQL的應用領(lǐng)域在數(shù)據(jù)庫查詢(query)。

    REBOL已經(jīng)有許多方言,每個方言的規(guī)模都不大,很容易學,最有名的REBOL方言是VIDVisual Interface Dialect),可以讓我們很輕易地設計出窗口程序。除了REBOL內(nèi)建(built-in)的方言之外,編程員也可以建立自己的方言。例如:有人用REBOL建立了一個REBOL/Flash方言,可以用來產(chǎn)生FlashSWF檔案格式(file format),請看網(wǎng)址:http://sweb.cz/oliva.david/swf/

    Object

    REBOLobject language,因為它具備封裝(encapsulation)的概念,可以把數(shù)據(jù)和動作包裝在一個對象(object)中。但是REBOL只能算是object-based language,不是Object-Oriented LanguageOOL),因為它不具有繼承和多態(tài)【注】。學院派的定義是:同時具備封裝、繼承、多態(tài)的語言,才是OOL

    【注】本節(jié)一開始提到REBOL是一種多態(tài)的語言,這里卻又說REBOL不具備多態(tài)。我沒有自相矛盾,因為此多態(tài)非彼多態(tài)。REBOL支持參數(shù)式多態(tài)(parametric polymorphism),也就是通稱的Overloading。但是REBOL不支持OO要求的多態(tài)(也就是Overriding / Virtual Method)。

    OO是近年的顯學,似乎大家都喜歡OO。乍聞REBOL不支持繼承和多態(tài),還真是讓人無所適從,擔心REBOL會不會是一個殘缺不全的語言?事實上,因為REBOL設計的非常巧妙,沒有繼承和多態(tài)并無大礙。繼承和多態(tài)的好處在于:程序代碼的復用(code reuse),以及設計的復用(design reuse)。REBOL雖然不支持繼承和多態(tài),但是這兩點都做得到。所以有沒有支持繼承和多態(tài),也就不重要了。反倒因為不支持繼承和多態(tài),REBOL變得相當容易學習,因為繼承和多態(tài)(特別是多態(tài))一直都是OO編程入門者會遭遇到的學習瓶頸。

    豐富的數(shù)據(jù)類型

    C語言支持的類型有intchar等近十種,Java支持類型的數(shù)目稍多一點,C#支持類型的數(shù)目又比Java更多一點,但還是比不上REBOLREBOL所支持的類型超過50個,傳統(tǒng)的整數(shù)、浮點數(shù)(floating point number)、字符(character)、字符串(string)當然REBOL都有提供,更特別的是,REBOL提供許多現(xiàn)代化的類型,例如e-MailURLHTML的卷標(tag)等,都是類型。請看下面的REBOL例子:

    >> myEmail: xy.cai@msa.hinet.net

    >> type? myEmail

    == email!

    我將myEmail設定為xy.cai@ msa.hinet.net,然后問myEmail的類型(type)為何,得到的答案正是email!類型。

    想知道REBOL支持哪些類型嗎?在REBOLconsole中輸入:

    >> help datatype!

    Reflectivity打破數(shù)據(jù)和程序的藩籬

    REBOL里面,一切都是“值(value)”,也就是數(shù)據(jù)。程序代碼(code)和數(shù)據(jù)(data)之間沒有明確的分際。這樣的觀念并非REBOL首創(chuàng),畢竟早在1959年誕生的Lisp語言就是如此,只是這樣的作法并非主流。

    Reflectivity(反射)是一面照妖鏡,所有事物的內(nèi)在無所遁形。REBOL具有高度動態(tài)的reflectivity,所以數(shù)據(jù)和程序碼的分際無須存在,數(shù)據(jù)可以是程序,程序也可以是數(shù)據(jù),一切都被reflectivity所掌控,就好像孫悟空再怎么變,仍逃不出如來佛的掌心。

    請先牢記一句話:任何東西,只要沒被求值(evaluate)【注】,就只是數(shù)據(jù),而不是程序代碼。

    內(nèi)建分析器

    REBOL內(nèi)建分析器(parser),這個分析器相當好用,而且比PerlJavaC#等語言所使用的Regular Expression【注】更簡單易懂,還可以搭配REBOL的數(shù)據(jù)類型來使用。

    【注】Regular Expression的功能強大,沒人會否認;但是Regular Express不好學、容易忘記、容易犯錯,這也沒人能否認。

    有了此分析器,搭配reflectivity,就能輕易地設計出方言解譯器。如果你是其它語言的使用者,你可以告訴朋友,“我寫了一個不錯的C#程序庫,你想不想試試?”。在REBOL世界,我們喜歡告訴朋友,“我設計了一個不錯的REBOL方言,你想不想試試?”酷!

    關(guān)于方言的其它解說,請參考本文章第一小節(jié)的敘述。

    ?

    發(fā)表日期: Feb. 8, 2004

    posted on 2006-07-10 13:21 rosial 閱讀(599) 評論(0)  編輯  收藏 所屬分類: 蔡學鏞

    主站蜘蛛池模板: 中文字幕精品亚洲无线码一区| 亚洲精品成人久久| 久久青草91免费观看| 亚洲av无码片区一区二区三区| 午夜小视频免费观看| 一区二区三区免费视频网站| 亚洲一区综合在线播放| 日本一区二区三区日本免费| 两个人看的www免费视频中文| 中文文字幕文字幕亚洲色| 国产中文在线亚洲精品官网| 成人免费在线看片| 久久免费99精品国产自在现线| 亚洲一级毛片视频| 国产亚洲精品高清在线| 在线观看日本免费a∨视频| 国产一区二区三区免费观看在线| 亚洲日本va一区二区三区| 亚洲av永久无码精品国产精品| 免费无码又爽又刺激高潮| 免费福利在线视频| 美女视频免费看一区二区| 亚洲国产夜色在线观看| 亚洲美女又黄又爽在线观看| 永久免费bbbbbb视频| 精品一区二区三区免费毛片爱| 人成电影网在线观看免费| 亚洲第一男人天堂| 亚洲成AV人片在| 亚洲VA综合VA国产产VA中| 在线视频观看免费视频18| 久久成人免费大片| 国产男女爽爽爽免费视频 | 亚洲午夜一区二区三区| 国产亚洲3p无码一区二区| 免费人妻无码不卡中文字幕18禁| 亚洲综合免费视频| 日本一道本不卡免费| www在线观看播放免费视频日本| 国产精品亚洲专区无码唯爱网| 亚洲午夜电影一区二区三区|