IO
IO編程語言
“動態語言”現在是一個很時髦的術語,常用來表示那些編程語言十分地具有彈性而且很合適“敏捷”開發環境。在這種趨勢背後有一些很有趣和很強大的語言,Io就是其中一個十分重要的語言。
Io最早發布在2002年,它混合了Lua、Lisp、Smalltalk和其他一些語言的某些方面的一個小語言。而起初的大想法是要把Io作為一個完整的可視化編程語言的基礎,就像Self一樣。
Io屬於“解釋型”語言家族(像Perl、Python等等),這種語言的代碼並不是通過編譯而是直接解釋並運行的。和很多“解釋型”語言一樣,Io也是高度動態的:一個程序可以迅速地生成並解釋新的代碼。同時,Io通過採用了Lisp的“代碼即數據”的模型讓這個特性向前邁進了一步,它可以讓任何Io程序訪問和處理它自身在內存中的對象模型。毫無疑問,這也讓Io成為一個自省的語言。
併發編程在很多應用中都是一個新興的被關注的方面,尤其是大多數用戶界面和Web應用。Io從Act1中獲得了靈感並使用了“參與者”(Actor)的概念。參與者介於線程和延續之間,它可以讓你更容易編寫你的併發應用,而原有的基於線程或者是進程編程的負擔則不復存在。
簡介清晰在Io的語法和他的對象模型中是顯而易見的。語法可讀性很好,而且看上去很好地結合了Lisp和Smalltalk。Io的對象模型是基於原型的。一個基於原型的對象模型不使用類來表示泛化和特化,取代的是創建特定的對象來用作“模型”或是“原型”並通過他們來創建新的對象。在這種編程范型中,對象是從原型中克隆出來的而不是從一個類實例化得來的。
對象模型是基於消息的,這表示方法調用甚至是變數訪問都是通過發送動態的消息來完成的,而不是“硬布線”的(像C++和Java那樣)。同時,Io對象響應消息的方式可以在運行時進行改變,這也是一個很典型的“動態”特性。
Io的足跡很小可以很方便地嵌入C或者是C++應用中。這方面它最有趣的特點之一是他的Objective-C的橋接器,這在集成上達到了一個令人驚奇的程度,在Io中使用你的Objective-C對象幾乎不要寫任何粘合代碼。
Io的主要的優點來自他簡潔的設計:它是一個可以很快學會的語言因為他有一個簡單而且一致的語法、語義和API。由於Io的足跡小,所以它十分合適嵌入式編程。Io的另一個長處是它的速度。它能在性能上勝過很多其他解釋型語言,這讓他成為密集工作的一個理想選擇。
Io的另一個長處——從一個嵌入的角度來看是很有意思的——是你可以重新定義幾乎任何運行機制。Io語法中的任何東西都已經轉化成了消息,而消息是可以在運行時重新定義的。從這方面來看,實際上你就可以改變裡面任何東西來滿足你的需求。
同時,Io對於併發編程的解決方案對於Web應用和GUI腳本編程也極具吸引力。
儘管Io有很多有趣和先進的特性,然而它還是十分年輕。到目前為止它還沒有什麼值得稱讚的開發工具諸如文檔生成器或者是代碼檢查器等等,而且在解釋其上面仍然有一些問題。儘管如此,隨著Io社群的不斷壯大,更多的代碼被製作共享,這個“青少年問題”會最終消失。