2008年5月30日

使用Console(二)


REBOL預計會有兩個Console,目前已完成的只有文字模式的DevStdIO,而圖形模式的DevConsole短時間之內是不會出現的,看樣子我們得使用DevStdIO好一段時間。「使用Console」 這篇文章有介紹一些用法。除此之外,如果你要使用「複製 / 貼上」功能的話,你必須啟用「快速編輯模式」和「插入模式」。作法如下:

  1. 用滑鼠右鍵點選REBOL Console視窗的標題列,叫出系統選單。
  2. 從選單中選取「內容」。你會看到附圖的視窗。
  3. 將兩個編輯選項(「快速編輯模式」和「插入模式」)都選取。然後按下「確定」。

只要有上面的設定,你就可以用滑鼠選取文字,用滑鼠右鍵複製反白區的文字到剪貼簿;在沒有反白區的情況下,按下滑鼠右鍵可以將剪貼簿的文字貼到Console上。


2008年5月28日

REBOL剖析URL時的問題

昨天用REBOL寫了一個Spider程式,要下載某些網站的內容。這些網站所使用到的URL中,有出現「!」與「@」等特殊字元,REBOL 2.x在剖析URL的時候,會因此判斷錯誤。因此。我必須自己剖析URL,然後利用下面的方式讀取資料:

read [
scheme: 'http
host: "www.some-host.net"
port-id: 80
path: "database/!data.html"
]

2008年5月26日

還是要進化

我一直樂於推薦REBOL,許多人因此接觸REBOL之後,反應卻都不太妙。其中有相當大比例的人,對於REBOL的語法感到相當不適應。因此,他們的結論往往是「Jerry的判斷有問題,推銷一個不是很好的東西」,更嚴重的說法是「REBOL是邪魔歪道」。

我只能說,「一個東西的理念領先人家太多,也不見得是好事」,因為大家的程度跟不上,當然也就不識貨。太先進的東西會被原始人當作垃圾。我只好讓他們繼續留在原地當原始人,我先一步進化去了。

2008年5月25日

Torn between two lovers

I am an F# lecturer in the Taiwan MSDN Forum. Call me a traitor, but I got bills to pay. I like F#, but I love REBOL from the bottom of my heart. I wish I could have a REBOL-related full-time job, so I wouldn't have been switching between REBOL and the others. Seriously.

2008年5月23日

REBOL最新動態:VID、Desktop、REBOL/Services

在Unicode核心開發告一段落,且網路介面與圖形介面也整合進來之後。REBOL科技公司CTO Carl Sassenrath表示,近期的目標是將REBOL桌面和REBOL/Services整合進來,應該不久之後就可以對Alpha小組釋出這個版本,開始測試。

2008年5月20日

從OOP到FP

如果你只習慣OOP(Object-Oriented Programming)的編程方式,現在想改用FP(Functional Programming)的方式,但不知道要從何下手,你可以參考我的這篇文章。

利用Delect設計方言

REBOL具有豐富的Literal,除了可以提高程式的「可讀性」和「可寫性」之外,也可以方便設計方言(dialect,也就是所謂的DSL)。這一點是其他語言遠比不上REBOL的。

以往,設計REBOL方言的方式,是利用Parse函數。在REBOL 3.0之後,又多了一個方式,就是利用Delect。Delect是DEcode diaLECT的意思。REBOL內部的方言,許多都是利用Delect做出來的。

大多數的方言,都會定義一些關鍵字(keyword)。每個關鍵字後面可以有0到多個參數。有些時候,這些參數出現的次序無所謂,因為透過型別就可以推測出參數的意義。例如:「Circle 100x100 50」與「Circle 50 100x100」,雖然100x100和50的出現次序不同,但是都可以讓我們認為這是要表達一個「圓心在100x100,半徑是50」的圓。所以處理這類方言的時候,值的次序不重要,重要的是值的型別,這種方言用Delect設計會相當容易。

良好的方言,應該要方便學習與使用。放寬參數的次序,可以幫助使用者學習與使用方言。以上面的Circle例子來說,使用者就不需要牢記,到底是先寫半徑再寫圓心,還是先寫圓心再寫半徑。

關於Delect的用法,請見DocBase的這篇說明。我以後也會寫文章說明Delect的詳細用法。

2008年5月18日

REBOL, Erlang, F#

我在這篇文章中,比較了REBOL、Erlang、F#這三個語言的能力,你可以參考閱讀。為什麼我要不斷地把REBOL拿來和其他語言做比較?因為當別人用Google搜尋「Erlang vs ...」或「F# vs ...」的時候,很可能就會看到這一篇文章,然後會基於好奇心而去研究一下REBOL,然後喜歡上REBOL。

2008年5月16日

好事多磨

我最近忙工作的事,連幫忙REBOL測試的時間都沒了。本來想要透過DevBase幫忙改寫一些REBOL函數,也因此遲遲未動手。

近年來,REBOL面臨一個嚴重的問題:核心開發人力不足。這使得REBOL具有相當先進的理念,美好的願景,但是卻進展步調緩慢。每次我們看到其他軟體又推出新版本了,裡面有一些不錯的想法,我們不免緊張心急,因為這些想法都是REBOL很早已前都早就想到的,但是人力不足,讓我們眼睜睜看著別人捷足先登。其他公司的產品使用的人力可能是REBOL的數十倍。

真正「有能力」且「有意願」協助REBOL的人已經不多,加上符合條件的人還是得為現實生活的帳單奮鬥,只能提供相當有限的時間協助REBOL開發。大多數的開發還是集中在Carl等少數幾個人身上。這使得他們的Load相當重。背負著大家的期望,壓力也相當大。

如果REBOL能夠Open Source,或許就可以解決開發人力的問題。但是Carl為了打造一個理想中的語言,並不願意這麼做,他認為這會造成語言的分歧。因此他試圖透過一個「半開放源碼」的作法,來維持核心不被更動,但是可以讓其他人幫忙將REBOL輕易地移植到各個平台,並為REBOL加進各種擴充能力。這也是REBOL 3.0的一部份設計理念。

但是在REBOL 3.0正式釋出之前,我們外人能做的不多。我們只能希望,有人能將資金投入REBOL,來增聘一些寫程式高手,早一點將REBOL 3.0做出來。

… 總是好事多磨。

2008年5月7日

REBOL 3.0 - 2.100.11

REBOL 3.0今天釋出2.100.11。這個版本整合了Unicode的核心和圖形系統,並修正了一些先前提出的錯誤。接下來,Carl會和Gabriele(VID設計者)進行VID的檢討,如果順利的話,很快就可以有VID(視覺設計方言)可用了。

2008年5月2日

RHAE & RRTE


REBOL 3會推出一個適合嵌入(embed)到其他應用的版本,此版本分成兩部份:
  1. RRTE(REBOL Runtime Environment)
  2. RHAE(REBOL Host Application Environment)

RRTE是封閉源碼的DLL,RHAE則是將RRTE包裝(wrap)起來的薄薄一層程式,RHAE開放源碼(應該是使用C語言)。你的程式如果想嵌入REBOL環境,成為REBOL Host,就必須實踐RHAE所宣告的函數。