国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

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

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

第一周:Ruby

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

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

關(guān)于Ruby、關(guān)于松本行弘請參見松本行弘的程序世界


第二周:Io

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

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


第三周:Prolog

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

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


第四周:Scala

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

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

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

Scala與Java的密切關(guān)系

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

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

第五周:Erlang

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

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

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


第六周:Clojure

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

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

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


第七周:Haskell

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

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

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

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

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

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
函數(shù)式編程很難,這正是你要學習它的原因
揭秘九大前沿編程語言
博采 27 門語言之長,提升 Python 的能力
13個比較冷門但很實用的編程語言!
程序員不糾結(jié):九大非主流頂尖編程語言!
編程語言:最完整的編程語言分類!知道你學的語言屬于什么嗎?
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服