亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 技術(shù)開發(fā) > 正文

如何掌握程序語言(轉(zhuǎn)載)

2023-06-23 14:40:16
字體:
供稿:網(wǎng)友

學(xué)習(xí)程序語言是每個程序員的必經(jīng)之路??墒沁@個世界上有太多的程序語言,每一種都號稱具有最新的“特性”。所以程序員的苦惱就在于總是需要學(xué)習(xí)各種稀奇古怪的語言,而且必須緊跟“潮流”,否則就怕被時代所淘汰。

作為一個程序語言的研究者,我深深的知道這種心理產(chǎn)生的根源。程序語言里面其實(shí)有著非常簡單,永恒不變的原理。看到了它們,就可以在很短的時間之內(nèi)就能學(xué)會并且開始使用任何新的語言,而不是花費(fèi)很多功夫去學(xué)習(xí)一個又一個的語言。

對程序語言的各種誤解

學(xué)習(xí)程序語言的人,經(jīng)常會出現(xiàn)以下幾種心理,以至于他們會覺得有學(xué)不完的東西,或者走上錯誤的道路。以下我把這些心理簡要分析一下。

1. 程序語言無用論。這是國內(nèi)大學(xué)計(jì)算機(jī)系的教育常見的錯誤。教授們常常對學(xué)生灌輸:“用什么程序語言不重要,重要的是算法。”而其實(shí),程序語言卻是比算法更加精髓的東西。任何算法以及它的復(fù)雜度分析,都是相對于某種計(jì)算模型,而程序語言就是描述這種計(jì)算模型的符號系統(tǒng)。算法必須用某種語言表述出來,通常算法設(shè)計(jì)者使用偽碼,這其實(shí)是不嚴(yán)謹(jǐn)?shù)?,容易出現(xiàn)推理漏洞。算法設(shè)計(jì)再好,如果不懂得程序語言的原理,也不可能高效的實(shí)現(xiàn)。即使實(shí)現(xiàn)了,也可能會在模塊化和可擴(kuò)展性上面有很大問題。某些算法專家或者數(shù)學(xué)家寫出來的程序極其幼稚,就是因?yàn)樗麄兒鲆暳顺绦蛘Z言的重要性。

2. 追求“新語言”?;镜恼軐W(xué)告訴我們,新出現(xiàn)的事物并不一定是“新事物”,它們有可能是歷史的倒退。事實(shí)證明,新出現(xiàn)的語言,可能還不如早就存在的。其 實(shí),現(xiàn)代語言的多少“新概念”不存在于最老的一些語言里呢?程序語言就像商品,每一家都為了拉攏程序員作廣告,而它們絕大多數(shù)的設(shè)計(jì)都可能是膚淺而短命 的。如果你看不透這些東西的設(shè)計(jì),就會被它們蒙蔽住。很多語言設(shè)計(jì)者其實(shí)并不真的懂得程序語言設(shè)計(jì)的原理,所以常常在設(shè)計(jì)中重復(fù)前人的錯誤。但是為了推銷 自己的語言和系統(tǒng),他們必須夸夸其談,進(jìn)行宗教式的宣傳。

3. “存在即是合理”。記得某人說過:“不能帶來新的思維方式的語言,是沒有必要存在的。”他說的是相當(dāng)正確的。世界上有這么多的語言,有哪些帶來了新的思維 方式呢?其實(shí)非常少。絕大部分的語言給世界帶來的其實(shí)是混亂。有人可能反駁說:“你怎么能說 A 語言沒必要存在?我要用的那個庫 L,別的語言不支持,只能用 A。”但是注意,他說的是存在的“必要性”。如果你把存在的“事實(shí)”作為存在的“必要性”,那就邏輯錯亂了。就像如果二戰(zhàn)時我們沒能打敗希特勒,現(xiàn)在都做 了他的奴隸,然后你就說:“希特勒應(yīng)該存在,因?yàn)樗B(yǎng)活了我們。”你的邏輯顯然有問題,因?yàn)槿绻麣v史走了另外一條路(即希特勒不存在),我們會過上自由幸 福的生活,所以希特勒不應(yīng)該存在。對比一個東西存在與不存在的兩種可能的后果,然后做出判斷,這才是正確的邏輯。按照這樣的推理,如果設(shè)計(jì)糟糕的 A 語言不存在,那么設(shè)計(jì)更好的 B 語言很有可能就會得到更多的支持,從而實(shí)現(xiàn)甚至超越 L 庫的功能。

4. 追求“新特性”。程序語言的設(shè)計(jì)者總是喜歡“發(fā)明”新的名詞,喜歡炒作。普通程序員往往看不到,大部分這些“新概念”其實(shí)徒有高深而時髦的外表,卻沒有實(shí) 質(zhì)的內(nèi)涵。常常是剛學(xué)會一個語言 A,又來了另一個語言 B,說它有一個叫 XYZ 的新特性。于是你又開始學(xué)習(xí) B,如此繼續(xù)。在內(nèi)行人看來,這些所謂的“新特性”絕大部分都是新瓶裝老酒。很多人寫論文喜歡起這樣的標(biāo)題:《XYZ:A Novel Method for …》。這造成了概念的爆炸,卻沒有實(shí)質(zhì)的進(jìn)步。

5. 追求“小竅門”。很多編程書喜歡賣弄一些小竅門,教你如何讓程序顯得“短小”。比如它們會跟你講 “(i++) – (++i)” 應(yīng)該得到什么結(jié)果;或者追究運(yùn)算符的優(yōu)先級,說這樣可以少打括號;要不就是告訴你“if 后面如果只有一行代碼就可以不加花括號”,等等。殊不知這些小竅門,其實(shí)大部分都是程序語言設(shè)計(jì)的敗筆。它們帶來的不是清晰的思路,而是是邏輯的混亂和認(rèn) 知的負(fù)擔(dān)。比如 C 語言的 ++ 運(yùn)算符,它的出現(xiàn)是因?yàn)?C 語言設(shè)計(jì)者們當(dāng)初用的計(jì)算機(jī)內(nèi)存小的可憐,而 “i++” 顯然比 “i=i+1″ 少 2 個字符,所以他們覺得可以節(jié)省一些空間?,F(xiàn)在我們再也不缺那點(diǎn)內(nèi)存,可是 ++ 運(yùn)算符帶來的混亂和迷惑,卻流傳了下來?,F(xiàn)在最新的一些語言,也喜歡耍這種語法上的小把戲。如果你追求這些小竅門,往往就抓不住精髓。

6. 針對“專門領(lǐng)域”。很多語言沒有新的東西,為了占據(jù)一方土地,就號稱自己適合某種特定的任務(wù),比如文本處理,數(shù)據(jù)庫查詢,WEB編程,游戲設(shè)計(jì),并行計(jì)算。但是我們真的需要不同的語言來干這些事情嗎?其實(shí)絕大部分這些事情都能用同一種通用語言來解決,或者在已有語言的基礎(chǔ)上做很小的改動。只不過由于各種政治和商業(yè)原因,不同的語言被設(shè)計(jì)用來占領(lǐng)市場。就學(xué)習(xí)而言,它們其實(shí)是無關(guān)緊要的,而它們帶來的“學(xué)習(xí)負(fù)擔(dān)”,其實(shí)差不多掩蓋了它們帶來的好處。其實(shí)從一些設(shè)計(jì)良好的通用語言,你可以學(xué)會所有這些“專用語言”的精髓,而不用專門去學(xué)它們。

7. 宗教信仰。很多人對程序語言有宗教信仰。這跟人們對操作系統(tǒng)有宗教信仰很類似。其實(shí)如果你了解程序語言的本質(zhì),就會發(fā)現(xiàn)其實(shí)完全沒必要跟人爭論一些事情。某個語言有缺點(diǎn),應(yīng)該可以直接說出來,卻被很多人忌諱,因?yàn)橹赋鋈秉c(diǎn)總是招來爭論和憎恨。這原因也許在于程序語言的設(shè)計(jì)不是科學(xué),它類似于圣經(jīng),它沒法被“證偽”。沒有任何實(shí)驗(yàn)可以一下子斷定那種語言是對的,那種是錯的。所以雖然你覺得自己有理,卻很難讓人信服。沒有人會去爭論哪家的漢堡更好,卻有很多人爭論那種語言更好。因?yàn)楹芏嗳税殉绦蛘Z言當(dāng)成自己的神,如果你批評我的語言,你就是褻瀆我的神。解決的辦法也許是,不要把自己正在用的語言看得太重要。你現(xiàn)在認(rèn)為是對的東西,也許不久就會被你認(rèn)為是錯的,反之亦然。

如何掌握程序語言

看到了一些常見的錯誤心理,那么我們來談一下什么樣的思維方式會更加容易的掌握程序語言。

1. 專注于“精華”和“原理”。就像所有的科學(xué)一樣,程序語言最精華的原理其實(shí)只有很少數(shù)幾個,它們卻可以被用來構(gòu)造出許許多多紛繁復(fù)雜的概念。但是人們往往 忽視了簡單原理的重要性,匆匆看過之后就去追求最新的,復(fù)雜的概念。他們卻沒有注意到,絕大部分最新的概念其實(shí)都可以用最簡單的那些概念組合而成。而對基 本概念的一知半解,導(dǎo)致了他們看不清那些復(fù)雜概念的實(shí)質(zhì)。比如這些概念里面很重要的一個就是遞歸。國內(nèi)很多學(xué)生對遞歸的理解只停留于漢諾塔這樣的程序,而 對遞歸的效率也有很大的誤解,認(rèn)為遞歸沒有循環(huán)來得高效。而其實(shí)遞歸比循環(huán)表達(dá)能力強(qiáng)很多,而且效率幾乎一樣。有些程序比如解釋器,不用遞歸的話基本沒法完成。

2. 實(shí)現(xiàn)一個程序語言。學(xué)習(xí)使用一個工具的最好的方式就是制造它,所以學(xué)習(xí)程序語言的最好方式就是實(shí)現(xiàn)一個程序語言。這并不需要一個完整的編譯器,而只需要寫 一些簡單的解釋器,實(shí)現(xiàn)最基本的功能。之后你就會發(fā)現(xiàn),所有語言的新特性你都大概知道可以如何實(shí)現(xiàn),而不只停留在使用者的水平。實(shí)現(xiàn)程序語言最迅速的方式就是使用一種像 Scheme 這樣代碼可以被作為數(shù)據(jù)的語言。它能讓你很快的寫出新的語言的解釋器。我的 GitHub 里面有一些我寫的解釋器的例子(比如這個短小的代碼實(shí)現(xiàn)了 Haskell 的 lazy 語義)。

幾種常見風(fēng)格的語言

下面我簡要的說一下幾種常見風(fēng)格的語言以及它們的問題。

1. 面向?qū)ο笳Z言

事實(shí)說明,“面向?qū)ο?rdquo;這整個概念基本是錯誤的。它的風(fēng)靡是因?yàn)楫?dāng)初的“軟件危機(jī)”(天知道是不是真的存在這危機(jī))。 設(shè)計(jì)的初衷是讓“界面”和“實(shí)現(xiàn)”分離,從而使得下層實(shí)現(xiàn)的改動不影響上層的功能??墒谴蟛糠置嫦?qū)ο笳Z言的設(shè)計(jì)都遵循一個根本錯誤的原則:“所有的東西都是對象(Everything is an object)。”以至于所有的函數(shù)都必須放在所謂的“對象”里面,而不能直接被作為參數(shù)或者變量傳遞。這導(dǎo)致很多時候需要使用繁瑣的設(shè)計(jì)模式 (design patterns) 來達(dá)到甚至對于 C 語言都直接了當(dāng)?shù)氖虑?。而其?shí)“界面”和“實(shí)現(xiàn)”的分離,并不需要把所有函數(shù)都放進(jìn)對象里。另外的一些概念,比如繼承,重載,其實(shí)帶來的問題比它們解決的 還要多。

“面向?qū)ο蠓椒?rdquo;的過度使用,已經(jīng)開始引起對整個業(yè)界的負(fù)面作用。很多公司里的程序員喜歡生搬硬套一些不必要的設(shè)計(jì)模式,其實(shí)什么好事情也沒干,只是使得程序冗長難懂。

那么如何看待具備高階函數(shù)的面向?qū)ο笳Z言,比如 Python, JavaScript, Ruby, Scala? 當(dāng)然有了高階函數(shù),你可以直截了當(dāng)?shù)谋硎竞芏鄸|西,而不需要使用設(shè)計(jì)模式。但是由于設(shè)計(jì)模式思想的流毒,一些程序員居然在這些不需要設(shè)計(jì)模式的語言里也采用繁瑣的設(shè)計(jì)模式,讓人哭笑不得。所以在學(xué)習(xí)的時候,最好不要用這些語言,以免受到不必要的干擾。到時候必要的時候再回來使用它們,就可以取其精華,去其糟粕。

2. 低級過程式語言

那么是否 C 這樣的“低級語言”就會好一些呢?其實(shí)也不是。很多人推崇 C,因?yàn)樗梢宰屓私咏?ldquo;底層”,也就是接近機(jī)器的表示,這樣就意味著它速度快。這里其實(shí)有三個問題:

1) 接近“底層”是否是好事?

2)“速度快的語言”是什么意思?

3) 接近底層的語言是否一定速度快?

對于第一個問題,答案是否定的。其實(shí)編程最重要的思想是高層的語義(semantics)。語義構(gòu)成了人關(guān)心的問題以及解決它們的算法。而具體的實(shí)現(xiàn) (implementation),比如一個整數(shù)用幾個字節(jié)表示,雖然還是重要,但卻不是至關(guān)重要的。如果把實(shí)現(xiàn)作為學(xué)習(xí)的主要目標(biāo),就本末倒置了。因?yàn)?實(shí)現(xiàn)是可以改變的,而它們所表達(dá)的本質(zhì)卻不會變。所以很多人發(fā)現(xiàn)自己學(xué)會的東西,過不了多久就“過時”了。那就是因?yàn)樗麄儗W(xué)習(xí)的不是本質(zhì),而只是具體的實(shí)現(xiàn)。

其次,談?wù)Z言的“速度”,其實(shí)是一句空話。語言只負(fù)責(zé)描述一個程序,而程序運(yùn)行的速度,其實(shí)絕大部分不取決于語言。它主要取決于 1)算法 和 2)編譯器的質(zhì)量。編譯器和語言基本是兩碼事。同一個語言可以有很多不同的編譯器實(shí)現(xiàn),每個編譯器生成的代碼質(zhì)量都可能不同,所以你沒法說“A 語言比 B 語言快”。你只能說“A 語言的 X 編譯器生成的代碼,比 B 語言的 Y 編譯器生成的代碼高效”。這幾乎等于什么也沒說,因?yàn)?B 語言可能會有別的編譯器,使得它生成更快的代碼。

我舉個例子吧。在歷史上,Lisp 語言享有“龜速”的美名。有人說“Lisp 程序員知道每個東西的值,卻不知道任何事情的代價”,講的就是這個事情。但這已經(jīng)是很久遠(yuǎn)的事情了,現(xiàn)代的 Lisp 系統(tǒng)能編譯出非常高效的代碼。比如商業(yè)的 Chez Scheme 編譯器,能在5秒鐘之內(nèi)編譯它自己,編譯生成的目標(biāo)代碼非常高效。它可以直接把 Scheme 程序編譯到多種處理器的機(jī)器指令,而不通過任何第三方軟件。它內(nèi)部的一些算法,其實(shí)比開源的 LLVM 之類的先進(jìn)很多。

另外一些 函數(shù)式語言也能生成高效的代碼,比如 OCaml。在一次程序語言暑期班上,Cornell 的 Robert Constable 教授講了一個故事,說是他們用 OCaml 重新實(shí)現(xiàn)了一個系統(tǒng),結(jié)果發(fā)現(xiàn) OCaml 的實(shí)現(xiàn)比原來的 C 語言實(shí)現(xiàn)快了 50 倍。經(jīng)過 C 語言的那個小組對算法多次的優(yōu)化,OCaml 的版本還是快好幾倍。這里的原因其實(shí)在于兩方面。第一是因?yàn)楹瘮?shù)式語言把程序員從底層細(xì)節(jié)中解脫出來,讓他們能夠迅速的實(shí)現(xiàn)和修改自己的想法,所以他們能 夠迅速的找到更好的算法。第二是因?yàn)?OCaml 有高效的編譯器實(shí)現(xiàn),使得它能生成很好的代碼。

從上面的例子,你也許已經(jīng)可以看出,其實(shí)接近底層的語言不一定速度就快。因?yàn)榫幾g器這種東西其實(shí)可以有很高級的“智能”,甚至可以超越任何人能做到的底層優(yōu)化。但是編譯器還沒有發(fā)展到可以代替人來制造算法的地步。所以現(xiàn)在人需要做的,其實(shí)只是設(shè)計(jì)和優(yōu)化自己的高層算法。

3. 高級過程式語言

很早的時候,國內(nèi)計(jì)算機(jī)系學(xué)生的第一門編程課都是 Pascal。Pascal 是很不錯的語言,可是很多人當(dāng)時都沒有意識到。上大學(xué)的時候,我的 Pascal 老師對我們說:“我們學(xué)校的教學(xué)太落后了。別的學(xué)校都開始教 C 或者 C++ 了,我們還在教 Pascal。”現(xiàn)在真正理解了程序語言的設(shè)計(jì)原理以后我才真正的感覺到,原來 Pascal 是比 C 和 C++ 設(shè)計(jì)更好的語言。它不但把人從底層細(xì)節(jié)里解脫出來,沒有面向?qū)ο蟮乃季S枷鎖,而且有一些很好的設(shè)計(jì),比如強(qiáng)類型檢查,嵌套函數(shù)定義等等??墒怯?jì)算機(jī)的世界 真是謬論橫行,有些人批評 Pascal,把優(yōu)點(diǎn)都說成是缺點(diǎn)。比如 Brain Kernighan 的這篇《Why Pascal is Not My Favorite Programming Language》,現(xiàn)在看來真是謬誤百出。Pascal 現(xiàn)在已經(jīng)幾乎沒有人用了。這并不很可惜,因?yàn)樗诲e怪的“缺點(diǎn)”其實(shí)已經(jīng)被正名,并且出現(xiàn)在當(dāng)今最流行的一些語言里:Java, Python, C#, ……

4. 函數(shù)式語言

函數(shù)式語言相對來說是當(dāng)今最好的設(shè)計(jì),因?yàn)樗鼈儾坏屓藢W⒂谒惴ê蛯栴}的解決,而且沒有面向?qū)ο笳Z言那些思維的限制。但是需要注意的是并不是每個函數(shù)式語言的特性都是好東西。它們的支持者們經(jīng)常把缺點(diǎn)也說成是優(yōu)點(diǎn),結(jié)果你其實(shí)還是被掛上一些不必要的枷鎖。比如 OCaml 和 SML,因?yàn)樗鼈兊念愋拖到y(tǒng)里面有很多不成熟的設(shè)計(jì),導(dǎo)致你需要記住太多不必要的規(guī)則。

5. 邏輯式語言

邏輯式語言(比如 Prolog)是一種超越函數(shù)式語言的新的思想,所以需要一些特殊的訓(xùn)練。邏輯式語言寫的程序,是能“反向運(yùn)行”的。普通程序語言寫的程序,如果你給它一個輸入,它會給你一個輸出。但是邏輯式語言很特別,如果你給它一個輸出,它可以反過來給你所有可能的輸入。其實(shí)通過很簡單的方法,可以不費(fèi)力氣的把程序從函數(shù)式轉(zhuǎn)換成邏輯式的。但是邏輯式語言一般要在“pure”的情況下(也就是沒有復(fù)雜的賦值操作)才能反向運(yùn)行。所以學(xué)習(xí)邏輯式語言最好是從函數(shù)式語言開始,在理解了遞歸,模式匹配等基本的函數(shù)式編程技巧之后再來看 Prolog,就會發(fā)現(xiàn)邏輯式編程簡單了很多。

從何開始

可是學(xué)習(xí)編程總要從某種語言開始。那么哪種語言呢?就我的觀點(diǎn),首先可以從 Scheme 入門,然后學(xué)習(xí)一些 Haskell (但不是全部),之后其它的也就觸類旁通了。你并不需要學(xué)習(xí)它們的所有細(xì)枝末節(jié),而只需要學(xué)習(xí)最精華的部分。所有剩余的細(xì)節(jié),會在實(shí)際使用中很容易的被填補(bǔ)上?,F(xiàn)在我推薦幾本比較好的書。

《The Little Schemer》(TLS):我覺得 Dan Friedman 的 The Little Schemer 是目前最好,最精華的編程入門教材。這本書很薄,很精辟。它的前身叫《The Little Lisper》。很多資深的程序語言專家都是從這本書學(xué)會了 Lisp。雖然它叫“The Little Schemer”,但它并不使用 Scheme 所有的功能,而是忽略了 Scheme 的一些毛病,直接進(jìn)入最關(guān)鍵的主題:遞歸和它的基本原則。

《Structure and Interpretation of Computer Programs》(SICP):The Little Schemer 其實(shí)是比較難的讀物,所以我建議把它作為下一步精通的讀物。SICP 比較適合作為第一本教材。但是我需要提醒的是,你最多只需要看完前三章。因?yàn)閺牡谒恼麻_始,作者開始實(shí)現(xiàn)一個 Scheme 解釋器,但是作者的實(shí)現(xiàn)并不是最好的方式。你可以從別的地方更好的學(xué)到這些東西。不過也許你可以看完 SICP 第一章之后就可以開始看 TLS。

《A Gentle Introduction to Haskell》:對于 Haskell,我最開頭看的是 A Gentle Introduction to Haskell,因?yàn)樗貏e短小。當(dāng)時我已經(jīng)會了 Scheme,所以不需要再學(xué)習(xí)基本的函數(shù)式語言的東西。我從這個文檔學(xué)到的只不過是 Haskell 對于類型和模式匹配的概念。

過度到面向?qū)ο笳Z言

那么如果從函數(shù)式語言入門,如何過渡到面向?qū)ο笳Z言呢?畢竟大部分的公司用的是面向?qū)ο笳Z言。如果你真的學(xué)會了函數(shù)式語言,就會發(fā)現(xiàn)面向?qū)ο笳Z言已經(jīng)易如反掌。函數(shù)式語言的設(shè)計(jì)比面向?qū)ο笳Z言簡單和強(qiáng)大很多,而且?guī)缀跛械暮瘮?shù)式語言教材(比如 SICP)都會教你如何實(shí)現(xiàn)一個面向?qū)ο笙到y(tǒng)。你會深刻的看到面向?qū)ο蟮谋举|(zhì)以及它存在的問題,所以你會很容易的搞清楚怎么寫面向?qū)ο蟮某绦?,并且會發(fā)現(xiàn) 一些竅門來避開它們的局限。你會發(fā)現(xiàn),即使在實(shí)際的工作中必須使用面向?qū)ο笳Z言,也可以避免面向?qū)ο蟮乃季S方式,因?yàn)槊嫦驅(qū)ο蟮乃枷霂淼拇蟛糠质腔靵y和冗余。

深入本質(zhì)和底層

那么是不是完全不需要學(xué)習(xí)底層呢?當(dāng)然不是。但是一開頭就學(xué)習(xí)底層硬件,就會被紛繁復(fù)雜的硬件設(shè)計(jì)蒙蔽頭腦,看不清楚本質(zhì)上簡單的原理。在學(xué)會高層的語言之后,可以進(jìn)行“語義學(xué)”和“編譯原理”的學(xué)習(xí)。

簡言之,語義學(xué)(semantics) 就是研究程序的符號表示如何對機(jī)器產(chǎn)生“意義”,通常語義學(xué)的學(xué)習(xí)包含 lambda calculus 和各種解釋器的實(shí)現(xiàn)。編譯原理 (compilation) 就是研究如何把高級語言翻譯成低級的機(jī)器指令。編譯原理其實(shí)包含了計(jì)算機(jī)的組成原理,比如二進(jìn)制的構(gòu)造和算術(shù),處理器的結(jié)構(gòu),內(nèi)存尋址等等。但是結(jié)合了語義學(xué)和編譯原理來學(xué)習(xí)這些東西,會事半功倍。因?yàn)槟銜庇^的看到為什么現(xiàn)在的計(jì)算機(jī)系統(tǒng)會設(shè)計(jì)成這個樣子:為什么處理器里面有寄存器 (register),為什么需要堆棧(stack),為什么需要堆(heap),它們的本質(zhì)是什么。這些甚至是很多硬件設(shè)計(jì)者都不明白的問題,所以它們的硬件里經(jīng)常含有一些沒必要的東西。因?yàn)樗麄儾焕斫庹Z義,所以經(jīng)常不明白他們的硬件到底需要哪些部件和指令。但是從高層語義來解釋它們,就會揭示出它們的本質(zhì),從而可以讓你明白如何設(shè)計(jì)出更加優(yōu)雅和高效的硬件。

這就是為什么一些程序語言專家后來也開始設(shè)計(jì)硬件。比如 Haskell 的創(chuàng)始人之一 Lennart Augustsson 后來設(shè)計(jì)了 BlueSpec,一種高級的硬件描述語言,可以 100% 的合成 (synthesis) 為硬件電路。Scheme 也被廣泛的使用在硬件設(shè)計(jì)中,比如 Motorola, Cisco 和曾經(jīng)的 Transmeta,它們的芯片設(shè)計(jì)里面含有很多 Scheme 程序。

這基本上就是我對學(xué)習(xí)程序語言的初步建議。以后可能會就其中一些內(nèi)容進(jìn)行更加詳細(xì)的闡述。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
色欧美88888久久久久久影院| 亚洲成人在线| 国产一级特黄视频| 九九久久精品视频| 2021国产在线| 国产视频网站在线观看| 在线黄色免费网站| 午夜精品一区二区三区国产| 国产精品久久久久9999| 精品国产福利视频| 精品久久久久久中文字幕人妻最新| 日本一区二区网站| 久久国产精品99国产| 亚洲精品一二三四| 91香蕉在线观看| 亚洲一区二区三区四区不卡| 中文字幕日韩免费| 青草国产精品| 天天操狠狠操夜夜操| 国产精品三级久久久久三级| 丰满少妇一级片| 日本熟妇毛茸茸丰满| 中文字幕在线日亚洲9| 欧美中文字幕在线观看视频| 国产视频三区| 国产影视一区| 91精品国产色综合久久久蜜香臀| 欧美中文在线字幕| 丁香激情视频| 亚洲欧美日韩成人高清在线一区| 国产视频一区二区在线播放| 美女视频一区在线观看| 视频一区欧美日韩| 最新亚洲视频| 污污视频在线观看网站| 亚洲欧美国内爽妇网| 精品欧美一区二区久久久| 91综合免费在线| 免费视频一区| 亚洲欧洲成视频免费观看| 欧美国产97人人爽人人喊| 久久这里有精品视频| 久久免费国产| 污污网站在线观看| 日本在线www| 嫩草懂你的影院| 中日韩av电影| 亚洲精品国产一区| 欧洲精品视频在线观看| 视频一区日韩| 欧美一级视频免费观看| 国产成人精品一区二区无码呦| 一区二区日韩| 中国麻豆视频| 韩国18福利视频免费观看| 2019中文字幕在线视频| 欧美成人一区二区三区高清| 亚洲午夜精品久久久久久高潮| 青青草97国产精品麻豆| 欧美日韩中文另类| 成人久久视频在线观看| 亚洲美腿欧美激情另类| 一本久久综合亚洲鲁鲁| 国产奶水涨喷在线播放| 九九九久久久久久| 欧洲精品乱码久久久久蜜桃| 亚洲天堂一区在线| 极品少妇一区二区| 在线成人免费视频| 国产免费成人在线视频| 亚洲理论电影网| 久久99热只有频精品91密拍| 亚洲精品wwww| 日韩无码精品一区二区三区| 日韩精品一区中文字幕| 天天干天天综合| 国产网站在线播放| 欧美精品99久久久**| a级黄色片网站| 欧美亚洲国产bt| 亚洲小说区图片区都市| 国产日韩视频在线| 久久午夜鲁丝片| 午夜爱爱毛片xxxx视频免费看| 国产精品久久久毛片| 欧美激情 亚洲| а√天堂官网中文在线| 国产真人真事毛片视频| 国产成人97精品免费看片| 亚洲大片一区二区三区| 欧美综合久久久| 欧美日韩爱爱视频| 日本黄网免费一区二区精品| 亚洲国产成人porn| 四虎成人精品在永久免费| 成人综合网址| 草莓视频一区| 91麻豆文化传媒在线观看| 国产欧美日韩精品高清二区综合区| 国产高清视频免费在线观看| 亚洲精品一区二区三区中文字幕| h视频在线免费| 91精品国产网站| 日韩精品视频中文在线观看| 欧美日韩一区二区在线| 久久久亚洲影院| 日本不良网站在线观看| 野花社区视频在线观看| 日韩欧美另类一区二区| 精品三级久久久| 亚洲一区3d动漫同人无遮挡| 国产真实乱全部视频| 5g影院5g电影天天爽快| 色婷婷精品视频| 日韩色性视频| 日韩va在线观看| 亚洲美女久久| 成人xxx免费视频播放| 国产精品久久亚洲7777| 最近免费中文字幕mv视频| 女人抽搐喷水高潮国产精品| 中文字幕第一页在线| 亚洲精品福利视频| 国产成人av一区二区三区不卡| 久久一区中文字幕| 成人av午夜电影| 日韩欧美黄色| 亚洲国产婷婷香蕉久久久久久99| 亚洲国产www| 亚洲中文字幕无码爆乳av| 日韩av大片在线| 国产欧亚日韩视频| 日本最新不卡在线| 免费成人av电影| 日韩精品亚洲人成在线观看| 亚洲五月六月| 久久精品国产68国产精品亚洲| xx免费视频| 亚洲国产精品va在线观看黑人| 国产理论在线观看| 韩国女主播一区二区| 久久免费视频观看| 欧美最猛性xxxxx免费| 国产一区欧美二区三区| 亚洲大尺度网站| 日本久久久久久久久久久| 日日干天天草| 成人性生活视频免费看| 亚洲欧美一区二区三区国产精品| mm1313亚洲国产精品无码试看| 中文字幕精品久久久久| 欧美色老女人| 日韩精品av一区二区三区| 国产精品污视频| 视频在线观看成人| 午夜电影一区二区三区| av福利在线播放| 国产秒拍福利视频露脸| 国产污在线观看| 精品久久久三级丝袜| 蜜桃视频一日韩欧美专区| 91蜜桃传媒精品久久久一区二区| 国产精品久久久午夜夜伦鲁鲁| 亚洲丁香久久久| 亚洲精品电影在线一区| 久做在线视频免费观看| 黄网站色视频免费观看| 国产视频在线观看一区| 91丝袜超薄交口足| 国产亚洲一区二区三区在线观看| 免费视频一区三区| 91精品成人| 555夜色666亚洲国产免| 一本久久知道综合久久| 亚洲精品乱码久久久久久不卡| 韩国福利在线| 国产999精品久久久久久| 亚洲第一精品夜夜躁人人躁| 日韩精品在线一区二区三区| 亚洲片av在线| 国产精品99久久久久久人| 人人干人人爱人人爱| 色妞色视频一区二区三区四区| 色涩成人影视在线播放| 国产亚洲午夜高清国产拍精品| 一二三av在线| 91亚洲国产成人久久精品| 亚洲另类在线一区| 性一交一乱一伧国产女士spa| 免费黄网在线看| 色一情一交一乱一区二区三区| 亚洲欧洲日本精品| 激情久久综合网| 91精品视频在线播放| 全球av集中精品导航福利| 国产伦精品一区二区免费| 亚洲免费观看高清完整版在线观| 午夜一区二区三区免费| 116极品美女视频在线观看| 亚洲资源视频| 国产一级免费视频| xxav国产精品美女主播| aaa一区二区| 米奇.777.com| 先锋成人影院| 天天操 夜夜操| 天天射夜夜骑| 黄色网页免费看| 欧美影院久久久| 最新国产精品久久久| 成人网站免费观看| 欧美丝袜一区| 福利片免费在线观看| 欧美一级国产精品| 奇米成人av国产一区二区三区| 午夜黄色小视频| 精品国产一区二区三区不卡| 一区二区电影| 亚洲精品一区二区毛豆| 欧美日韩 一区二区三区| 韩日在线视频| 亚洲调教视频在线观看| 国产一区二区三区久久久久久久久| 久久成人麻豆午夜电影| 欧美日韩亚洲一二三| 日产精品久久久久| 97精品人妻一区二区三区蜜桃| 亚洲aⅴ网站| 久久99精品国产.久久久久久| 人妻少妇精品一区二区三区| 教室别恋欧美无删减版| 精品久久久久久一区| 中文精品无码中文字幕无码专区| 亚洲美女av网站| 亚洲精品高清在线观看| 日韩国产欧美精品在线| 日韩精品视频在线看| 欧美日韩亚洲一二三| 成人爱爱电影网址| 在线精品高清中文字幕| 亚洲最新视频在线播放| 午夜精产品一区二区在线观看的| 日韩一区电影| 久久艳妇乳肉豪妇荡乳av| 8050国产精品久久久久久| www.亚洲高清| 天堂网av2018| 久青青在线观看视频国产| 国产中文字幕二区| 青青操在线视频| 日本三级理论片| 久久久夜夜夜| 91激情视频在线| 91麻豆精品国产91久久久平台| 欧美一级大片| 欧美精品久久久久久久久久久| 无码aⅴ精品一区二区三区浪潮| 亚洲精品v欧美精品v日韩精品| 欧美一区二区三区视频在线观看| а天堂8中文最新版在线官网| 精品美女视频| 久久久综合香蕉尹人综合网| 日韩欧美一区二区在线| 999国产精品视频| 欧美男男同志| 成年男女免费视频网站不卡| 给个网站可以在线观看你懂的| 欧美人与动牲交xxxxbbbb| 亚洲欧美激情网| 美女被黑人爆操网站| 日本高清xxxx| 992tv成人国产福利在线| 亚洲精品成人天堂一二三| 2019中文字幕在线免费观看| 91久久国产精品| 日本精品免费观看| 亚洲欧洲国产精品一区| 亚洲欧美国产一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 波多野结衣成人在线| 欧美日本一区二区三区四区| 婷婷精品进入| 精品乱码一区二区三区四区| 香蕉影视欧美成人| 韩日成人av| 亚洲激情免费视频| 久久草av在线| 你懂的网站在线观看| 国精产品一区一区二区三区mba| 97se在线视频| 国产精品com| 91露出在线| 手机看片国产日韩| 五月天色综合| 亚洲国产成人综合| 蜜桃传媒一区二区三区| 麻豆传媒在线看| 一本一道久久a久久精品| 欧美视频免费在线| 久久视频这里有精品| 97人妻精品一区二区免费| 久久韩剧网电视剧| 国产精品国模大尺度视频| 最近的2019中文字幕免费一页| 国产精品一区二区三区99| 欧美在线|欧美| 久久99久久99小草精品免视看| 亚洲欧美一区二区三区| 中文字幕欧美亚洲| 给我免费观看片在线电影的| 天堂影视av| 国产成人av电影在线| 国产主播欧美精品| 成人深夜在线观看| 国产永久av在线| 这里有精品可以观看| 99久久影视| 国产视频资源| 日日噜噜噜夜夜爽爽狠狠视频| 丰满亚洲少妇av| 一区二区在线免费看| 精品免费视频123区| 9.1片黄在线观看| 91精品婷婷国产综合久久| 欧美专区在线播放| 欧美大香线蕉线伊人久久国产精品| heyzo在线| eeuss鲁片一区|