幾則關於動態型別語言的事件

2006 年 十月 24 日 (星期二) 8:09 pm
分類:電腦
標籤:,

在過去,動態型別語言 (dynamically-typed languages) 一向被主流陣營視為次等公民。在主流陣營裡,不管是理論派還是實務派,多半都傾向於靜態型別系統的編譯期檢驗措施,以及連帶而來的 up-front design 思維。儘管 OO 將部份動態觀點帶入主流語言陣營,reflectionAOPmetaprogramming 思維也激起部份漣漪,但整體而言,主流觀點仍然是:能夠靜態就不要動態,能集中於一處 model 出來就不要將 model 散布各處。

於是,我們常常嘲笑 LAMP 裡面的 “P”,不管這個 “P” 是 PHP 還是 Perl 還是 Python(或許隨著 Ruby 的崛起,將來 “LAMR” 縮寫會流行起來也說不定)。但有趣的是,近一兩年來,軟體大廠漸漸體認到這些動態型別語言(或者說:scripting languages)的草根生命力,轉而釋放出不少善意的合作計畫。以下姑且就我所知舉幾個例子:

搬得上抬面的這幾家軟體大廠都開始正視動態型別語言了,那麼,象牙塔裡面的學究呢?

自從七月中旬躺在希臘 Mykonos 島的 Paradise Beach 看完 Beyond Java 之後,靈感泉湧。這些日子以來,我鉤勒一些關於動態型別語言的研究構想,便想搜尋看看有沒有類似觀點的文獻。兩則學界動態引起我的注意:

  1. OO 領域頂級年會 OOPSLA,今年特地為動態型別語言另闢一個獨立議程:Dynamic Languages Symposium。台灣知名的唐鳳也受邀介紹 Perl 6 的目標及目前進度。
  2. IEEE Software 將在明年九/十月推出一期專刊:Rapid Application Development with Dynamically Typed Languages

聊舉數例,約略可窺見動態型別語言不再只是次等公民,已引起主流陣營的正視。不管你喜不喜歡動態型別,你都該正視這個現象或者趨勢。

相關閱讀


◤建議您一併閱讀以下文章:

6 項留言回應 給 “幾則關於動態型別語言的事件”

  1. 1 Yukuan 留言:

    比起 Python,Ruby 除了 Web AP 這個領域外,其他方面的 library 還很欠缺,且它的執行效率也是個讓人詬病的地方。一些特定的應用,連 Python 都嫌不夠快了,何況是 Ruby ,雖然這項缺點可以靠砸錢下去來補足。

    以下分享幾個相關的 links:

    Strong Typing vs. Strong Testing
    Are Dynamic Languages Going to Replace Static Languages?
    Python & Java: a Side-by-Side Comparison
    Type system
    Duck typing
    structural type system

  2. 2 Saint 留言:

    動態型別語言, 還有一個工具在很早前就有了, 而且也支援物件導向; 那就是 Foxpro ! 它還活著哦..^^ 看這裏!

  3. 3 william 留言:

    @Yukuan:

    「執行效率」這件事,只要該語言本質上沒有太大的瑕疵,是有可能隨著改版而不斷精進的。JVM 就是很典型的例子。

    「程式庫」這件事,一直是新語言的痛處,這也沒什麼方法可解,只有祈禱族群熱絡、大廠青睞。不過,如果 .NET 的 RubyCLRIronPython、JVM 的 JRubyJython 都成熟了,那麼,程式庫問題也變得不是那麼嚴重了。

    所以對於 Ruby,我目前是抱著欣賞的角度,欣賞它有趣的 metaprogramming 功能,以及 Ruby on Rails 所導入的新思維。

  4. 4 Drake 留言:

    我同樣覺得「執行效率」不是那麼重要,尤其當你需要的是 scripting language/dynamic language 的其它優點時,就更不會去在乎執行效率才是。

    就我的觀察,scripting language 有很重要的一點,「讓非專業的程式設計人員,在面對學習 programming 的路上,順利不少」。

    話說回來,Yukuan 推廣 python 真是不遺餘力呀 :)

  5. 5 Yukuan 留言:

    Large-Scale Network Analysis with the Boost Graph Libraries 中提到:

    Prototype in Python to get your ideas down
    Port to C++ when performance matters
    Parallelization for scalability

    不過這得靠 The original BGL, BGL-Python, The Parallel BGL, Parallel BGL-Python 等四者間幾乎無縫的設計方式,可以輕鬆 porting,才顯得實用。

    其中第十七張投影片,可以看出純粹的 Python 版本,比起原生的 C++ 版本,其間的速度最少有百倍之差…

    所以說,除非應用在執行效率無關痛癢的場合,否則還是要慎選解決方案的。

  6. 6 Programming Tutorials 引用:

    Programming Tutorials…

    I couldn’t understand some parts of this article, but it sounds interesting…

留言回應

[檢核碼]  


Allowed XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

本站已啟用 spam 防護機制。為避免系統誤判,請在按下按鈕之前,先備份您的留言,以防不測。如果您一直無法順利留言,請改用 email 方式。
此外,如果您想留的言與本篇文章及討論串無關,也請轉而點選這裡。謝謝您!