一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

圖靈社區(qū) : 閱讀 : 帶您走進七周七語言的程序世界

 看見就非常 2012-05-14

編者按
這是一本2011年Jolt大獎圖書,在本文中,截選了七門各不相同的語言的概況,這七門語言,無論教還是學,對我們而言都是一個宏偉目標。書中的代碼足以深刻闡釋每一門語言的精髓。這七門語言都有非常優(yōu)秀的支持社區(qū),這也是我選擇它們的原因之一。本書為你鋪就的學習途徑......

第一周:Ruby

有糖相伴好下藥?!狹ary Poppins

松本行弘(Yukihiro Matsumoto)大約在1993年發(fā)明了Ruby,大家多稱他為Matz。從語言的角度看,Ruby出身于所謂的腳本語言家族,是一種解釋型、面向對象、動態(tài)類型的語言。解釋型,意味著Ruby代碼由解釋器而非編譯器執(zhí)行。動態(tài)類型,意味著類型在運行時而非編譯時綁定。從這兩方面看,Ruby采取的策略是在靈活性和運行時安全之間尋找平衡點,我們稍后還會深入討論這一點。面向對象,意味著Ruby支持封裝(把數據和行為一起打包)、類繼承(用一棵類樹來組織對象類型)、多態(tài)(對象可表現(xiàn)為多種形式)等特性。Ruby多年來一直默默蟄伏,只為等待一個恰當的出現(xiàn)時機。終于,隨著Rails框架嶄露頭角,Ruby也在2006年前后一鳴驚人。在企業(yè)開發(fā)的叢林中跋涉了十年之后,Ruby指引人們重新找回了編程樂趣。盡管從執(zhí)行速度上說,Ruby談不上有多高效,但它卻能讓程序員的編程效率大幅提高。

關于Ruby、關于松本行弘請參見松本行弘的程序世界


第二周:Io

問題不是“我們要干點兒什么”而是“我們有什么不能干”?!狥erris Bueller

Io和Ruby一樣,Io懂得變通,行事不拘小節(jié)。他血氣方剛、聰明過人,想了解他不難,想猜透他要做什么可就難了,活脫一個Ferris Bueller 。如果你愿意享受喧囂熱鬧的狂歡,跟著Io逛逛絕對沒錯,他什么都會帶你嘗試一遍。和他在一起,你可能會有最美妙刺激的體驗,但你老爸的車也可能變成一堆廢銅爛鐵。不過,無論發(fā)生什么,你都決不會無聊。正如本頁最上方Ferris所說,沒那么多清規(guī)戒律束手束腳。


第三周:Prolog

Prolog這門語言有時特別聰明,有時又特別令人失望。只有當你知道如何提問時,你才會得到令人驚奇的答案?;叵胍幌隆队耆恕?這部電影。我還記得片中的主角Raymond,他在前一晚讀過一本電話簿后便可以背出Sally Dibbs的電話號碼,而他當時翻電話簿的時候根本沒有考慮是否需要記住這個號碼。對于Raymond和Prolog,我經常問出這樣兩個分量等同的問題,“他是怎么知道的?”和“他怎么不知道?”。只要你能以正確的方式表達你的問題,那么他將是一個知識源泉。

Prolog與前兩章談到的編程語言有較大的不同。Io和Ruby被稱為命令式語言(imperative language)。命令式語言就像是一本烹飪食譜,你需要精確地告訴計算機如何去完成一項工作。更高級別的命令式語言可能會給你帶來更多杠桿效力,即將多個比較長的步驟合并為一個步驟。不過從根本上說,你其實是在列出原料的購物清單,并描述烤蛋糕的詳細步驟。


第四周:Scala

我們不是綿羊?!舻妒?Edward

Scala可以說是一個科學怪人,但卻不是一個怪物。想一想《剪刀手愛德華》 這部電影。

隨著對計算機程序的需求越來越復雜,計算機語言也在發(fā)展演化。每隔20年左右,老的編程范型就會變得不足以應對一些組織和表達思想的新要求。新的范型必定會涌現(xiàn)出來,但這并不是一個簡單的過程。每個新的編程范型都會引入一批編程語言,而不僅僅只是一種語言。最初的語言往往具有驚人的生命力,但也很不實用。比如面向對象編程語言Smalltalk或者函數式編程語言Lisp。接下來,其他范型的語言會加入一些新特性,允許開發(fā)人員在采用新概念的同時也可以安全地使用原先的老范型。例如Ada語言,它能夠在過程式語言中使用一些面向對象的核心思想,比如封裝。某些時候,一些混合語言恰恰是搭建在新老范型之間的一座實用的橋梁,比如C++。緊接著,你將看到一些可用于商業(yè)應用的編程語言,比如Java或C#。最后,你才會看到新范型的一些成熟且完整的實現(xiàn)。

Scala與Java的密切關系

Scala至少可以作為一座橋梁,也許還不僅如此。它與Java緊密集成,為人們提供了一個保護投資的機會,這體現(xiàn)在以下幾個方面。

  • Scala運行在Java虛擬機上,這使得Scala可以和現(xiàn)存的應用同時運行。
  • Scala可以直接使用Java類庫,使得開發(fā)人員可以利用現(xiàn)有的框架和遺留代碼。
  • Scala和Java一樣都是靜態(tài)類型語言,因此兩種語言遵循一樣的編程哲學。
  • Scala的語法與Java比較接近,使得開發(fā)人員可以快速掌握語言基礎。
  • Scala既支持面向對象范型也支持函數式編程范型,這樣開發(fā)人員就可以逐步在代碼中運用函數式編程的思想。

第五周:Erlang

似Erlang這般充滿神秘感的語言寥寥無幾。這門并發(fā)語言既可將難事化易,也可將易事變難。在健壯企業(yè)部署方面,它的虛擬機BEAM是唯一堪與Java虛擬機匹敵的對手。它調用起來十分高效,甚至效率以外的東西它都很少考慮。因此,它的語法也不像Ruby那樣優(yōu)雅和簡潔。

Erlang其名,乍聽之下很怪。但你若知道,它既是Ericsson Language的縮寫,又恰是一位丹麥數學家的大名,你就不會再抱怨“這什么破名兒”了。作為電話網絡分析的數學奠基人,Agner Karup Erlang 可稱得上是赫赫有名。

1986年,Joe Armstrong在愛立信公司(Ericsson)開發(fā)了Erlang語言的首個版本。隨后的五年間,Erlang在他的精心雕琢下日漸完善。20世紀90年代整整十年間,Erlang的發(fā)展都不溫不火、時斷時續(xù),但到了2000年之后,它卻開始成為眾人矚目的焦點。兩個廣受歡迎的云數據庫CouchDB和SimpleDB,都是用Erlang開發(fā)出來的,此外,Erlang還是Facebook的聊天系統(tǒng)所采用的語言。正因為Erlang身懷可伸縮并發(fā)性和可靠性這兩項拿手絕技,而其他語言在這兩方面都力不從心,所以Erlang開始越來越多地成為人們談論的話題。


第六周:Clojure

做或不做,不要嘗試。 ——Yoda(尤達大師)

Clojure是JVM上的Lisp實現(xiàn)。Lisp復雜強大,是計算機領域里最早和最新的編程語言之一。許多Lisp方言都曾嘗試擠進主流語言的行列,卻都無功而返。即便是對今天的開發(fā)者而言,其語法和編程模型也有些難以消化。即便如此,Lisp的特質仍叫人禁不住去重溫,去回味,新的方言層出不窮,一些編程領域最好的院校也用Lisp語言來幫助學生們塑造創(chuàng)新、開放的思維方式。

從很多方面來看,Clojure就像是睿智的功夫大師,神隱山脈的先知或是高深莫測的絕地師父。想想Yoda。在《星球大戰(zhàn)系列之五:帝國反擊戰(zhàn)》 中,Yoda是一位小巧、可愛的配角。他總是使用“倒裝”語序說話,但卻意味高深 ,就像Lisp所使用的前綴表示法(相信過一會兒你就會明白)。他小巧到難以辨別,就像Lisp的語法不過是一些括號和符號。但是和Yoda一樣,它絕非看上去那么簡單。Yoda和Lisp年歲都很高,擁有的智慧(例如開頭的引語)經過時間磨礪與烈火考驗。Lisp宏和高階編程單元如同Yoda掌握的內在原力,看似無人能掌控。從許多角度講, Lisp開創(chuàng)了一切。在深入Clojure之前,讓我們先來談談Lisp,然后再來了解Clojure的激動人心之處。


第七周:Haskell

邏輯是草地上幾只吱吱作聲的小鳥在鳴叫。 ——Spock

對于很多函數式編程的忠實擁躉來說,Haskell 象征著純潔和自由。它的功能豐富且強大,但擁有這些功能是需要付出一定代價的。你不可能輕易地就掌握這門語言,因為Haskell 會迫使你去了解關于函數式編程的全部內容。想想《星際迷航》的Spock吧,他上面說的那句話 很有代表性,完美地結合了邏輯和真理。他性格中擁有的那種堅定的純潔性,這使他得到了幾代人的愛戴。當Scala、Erlang和Clojure還允許你少量使用命令式編程概念的時候,Haskell卻沒有留下任何的回旋余地。在使用Haskell做I/O操作或狀態(tài)累積(accumulate state)時,你將遇到這門純函數語言所帶來的挑戰(zhàn)。

和以往一樣,如果想了解一門語言為何包含那些妥協(xié)方案,就應該從它的歷史開始。在20世紀80年代中前期,純函數編程領域涌現(xiàn)出了多門語言。純函數式編程和我們曾在Clojure語言中見到過的惰性處理(lazy processing)等關鍵概念引領著新研究的方向。1987 年的“函數式編程語言與計算機體系結構大會”(Functional Programming Languages and Computer Architecture)成立了一個小組,決定建立一個關于純函數編程語言的開放標準。Haskell就出自于這個小組,它于1990年誕生并于1998年重新修訂。目前的標準是Haskell 98,經過多次修訂,包括一份Haskell 98 標準的修訂版和一個稱為Haskell Prime的新版本定義。

因此,Haskell是一門從開始就按照純函數式編程思想構建的語言,它結合了一些最好的函數式語言思想,并著重于支持惰性處理。

和Scala一樣,Haskell也是一門強類型定義的靜態(tài)類型語言。它的類型模型基于推斷理論(inferred)并被公認為是函數語言中最高效的類型系統(tǒng)之一。你會發(fā)現(xiàn)該類型系統(tǒng)支持多態(tài)語義并有助于人們作出十分整潔清晰的設計。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲一区二区精品久久av| 在线免费观看黄色美女| 亚洲清纯一区二区三区| 91久久精品在这里色伊人| 日韩高清一区二区三区四区 | 中文日韩精品视频在线| 亚洲精品一区三区三区| 国产日产欧美精品大秀| 老鸭窝老鸭窝一区二区| 久久亚洲午夜精品毛片| 日韩欧美一区二区黄色| 好吊妞视频这里有精品| 老熟妇乱视频一区二区| 亚洲伦理中文字幕在线观看 | 欧美午夜性刺激在线观看| 在线亚洲成人中文字幕高清| 久一视频这里只有精品| 亚洲国产成人av毛片国产| 中文字幕精品一区二区三| 欧美中文字幕一区在线| 国产欧美高清精品一区| 午夜精品成年人免费视频| 精品人妻一区二区三区免费| 精品欧美日韩一区二区三区| 丰满的人妻一区二区三区| 不卡一区二区高清视频| 午夜小视频成人免费看| 国产女性精品一区二区三区| 一二区不卡不卡在线观看| 色一情一乱一区二区三区码| 亚洲一区二区三区三区| 亚洲a码一区二区三区| 国产在线成人免费高清观看av| 国产精品自拍杆香蕉视频| 日本不卡在线视频中文国产| 亚洲综合色在线视频香蕉视频| 美国欧洲日本韩国二本道| 国产精品久久香蕉国产线| 少妇激情在线免费观看| 精品人妻一区二区四区| 懂色一区二区三区四区|