程序設計語言原理

第一章、基本概念

01锭硼、對自然語言而言房资,那些只掌握有限語言的人,其思維的復雜程度檀头,特別是其抽象思維的深度轰异,必然受到局限岖沛。換言之,人們對不能口頭或筆頭描述的事物結構必定很難將其概念化搭独。

02婴削、往往只有懂得有關的程序設計語言實現(xiàn)細節(jié)的程序員才可能發(fā)現(xiàn)和改正某些類型的程序錯誤;不懂得遞歸調(diào)用是如何實現(xiàn)的程序員牙肝,常常不知道地柜算法比等價的迭代算法要慢得多唉俗。

03、程序設計語言的正交性指的是惊奇,使用該語言中一組相對少量的基本結構互躬,經(jīng)過相對少的結合步驟,可以構成該語言的控制結構與數(shù)據(jù)結構颂郎。而且吼渡,它的基本結構的任何組合都是合法的和有意義的。

04乓序、正交語言特性的意義是獨立于它在程序中出現(xiàn)的上下文的寺酪。缺乏正交性會導致語言規(guī)則異常。語言的正交性與語言的簡單性是緊密相關的:程序設計語言的正交性設計得越好替劈,該語言規(guī)則中的異常情況就會越少寄雀。

05、過分地追求正交性也會產(chǎn)生問題陨献,極端的正交性會導致不必要的復雜性盒犹。一組較少量的基本結構以及一套相互一致的規(guī)則組合(即正交性),比僅僅具有大量的基本結構要優(yōu)越得多眨业。

06急膀、過分的正交性也會有損于可寫性,當基本結構的任意結合幾乎都是合法時龄捡,程序中的錯誤就很難被檢測出來卓嫂。這也會導致編譯器不能夠發(fā)現(xiàn)代碼中的謬誤。

07聘殖、抽象指的是以合法省略許多細節(jié)的方式晨雳,來定義并且使用復雜結構或復雜運算的能力。

08奸腺、類型檢測是語言可靠性中的一個重要因素餐禁。編譯時的類型檢測要比運行時的類型檢測更為理想,因為運行時的類型檢測是高代價的突照。程序中的錯誤發(fā)現(xiàn)得越早坠宴,改正錯誤的代價就越低。

09绷旗、如果具有中斷運行時錯誤(以及這個程序所發(fā)現(xiàn)的其他非正常情況)并改正錯誤然后繼續(xù)運行的能力喜鼓,將顯然有助于提高程序的可靠性。這種程序設計語言的機制稱之為異常處理衔肢。

10庄岖、無論某語言的編譯器質(zhì)量如何,要求進行大量運行時類型檢測的語言必將阻礙代碼的高速執(zhí)行角骤。

11隅忿、由于運算指令被順序地存儲于相鄰的存儲單元,所以馮諾依曼計算機上迭代式的循環(huán)是高速的邦尊。這種高效率不鼓勵使用遞歸式循環(huán)背桐,盡管遞歸式循環(huán)常常更為自然。

12蝉揍、面向?qū)ο蟮某绦蛟O計方法學始于數(shù)據(jù)抽象链峭。這種方法將數(shù)據(jù)處理和數(shù)據(jù)對象封裝在一起,并控制對數(shù)據(jù)的訪問又沾,并添加了繼承與動態(tài)方法綁定弊仪。

13、Java語言的定義要求杖刷,必須對所有數(shù)組元素的引用進行檢測励饵,以保證所有下標都在合法的范圍之內(nèi)。這個步驟給包含大量數(shù)組元素引用的Java程序增加了很大的執(zhí)行代價滑燃。C語言不要求進行下標范圍檢測役听,所以C程序的執(zhí)行速度要比語義上等價的Java程序要快得多;當然Java程序更為可靠表窘。Java語言的設計人員以程序執(zhí)行效率為代價換取了可靠性典予。

14、一臺計算機的存儲器與它的處理器之間的鏈接速度通常決定著這臺計算機的速度蚊丐,因為執(zhí)行指令的速度往往比將指令傳遞到處理器的速度更快熙参,這一問題被稱為馮諾依曼瓶頸。

15麦备、Java語言的最初實現(xiàn)都是采用混合方法孽椰。其中被稱為字節(jié)碼的中間形式給任何裝有字節(jié)碼的解釋器以及與之相關的運行時系統(tǒng)的機器提供了可移植性。所有這樣的機器都被統(tǒng)稱為Java虛擬機凛篙。而現(xiàn)在有些系統(tǒng)將Java字節(jié)碼翻譯為機器碼黍匾,以便達到更快的執(zhí)行速度。

16呛梆、即使(just-in-time锐涯,JIT)實現(xiàn)系統(tǒng)最初將程序翻譯成一種中間語言。然后在執(zhí)行的過程中填物,當中間語言的方法被調(diào)用時纹腌,這種實現(xiàn)系統(tǒng)再將中間語言的方法翻譯為機器碼■眨現(xiàn)在JIT實現(xiàn)系統(tǒng)被廣泛用于Java程序。所有的.NET語言也都是用JIT系統(tǒng)實現(xiàn)的升薯。

第二章莱褒、主要程序設計語言的發(fā)展

第三章、描述語法和語義

01涎劈、語言的使用人員必須能夠通過查閱語言參考手冊來確定如何編寫軟件系統(tǒng)广凸。教科書和培訓課程固然能夠幫助學習語言,然而通常蛛枚,語言手冊是一種語言唯一的權威性信息來源谅海。

02、程序設計語言的語法是它的表達式蹦浦、語句和程序單元的形式扭吁,而它的語義則是這些表達式、語句和程序單元的含義白筹。

03智末、程序設計語言的語法形式描述通常不包括對于最低層次語法單元的描述,這些語法小單元稱為詞素(Lexeme)徒河。詞素的描述由詞法說明給出系馆,它與語言的語法描述是分開的。一種程序設計語言的詞素包括它的字面值顽照、操作符和特殊字由蘑,以及其他。我們也可以認為程序是一些詞素的串代兵,而不是字符的串尼酿。

04、在BNF的描述或文法中植影,抽象通常被稱為非終結符(nonterminal symbol)裳擎,或者簡稱為非終結(nonterminal),而規(guī)則中的詞素和標記則被稱為終結符(terminal symbol)思币,或者簡稱為終結(terminal)鹿响。一個BNF描述,或一種文法谷饿,僅僅是一個規(guī)則的集合惶我。BNF盡管簡單,但它具有充分的表達能力來描述幾乎所有的程序設計語言的語法博投。

05绸贡、數(shù)學中使用省略符號(......)來表示長度可變,BNF中沒有,而是使用遞歸來作為此類替代方法听怕。如果一條規(guī)則中的LHS(Left Hand Side)出現(xiàn)在它的RHS(Right Hand Side)當中捧挺,我們稱這條規(guī)則是遞歸的。

06尿瞭、文法是定義語言的生成裝置松忍。句子的生成則被稱為派生。

07筷厘、語法分析樹的每一個內(nèi)部節(jié)點都由一個非終結符來標記;而它的每一個葉子節(jié)點都由一個終結符來標記宏所。語法分析樹的每一顆子樹都描述語句中抽象的一個實例酥艳。

08、如果由一條文法生成的句子具有兩種或者多種不同的語法分析樹爬骤,就稱這條文法是歧義的充石。

09、語法分析樹與派生之間的聯(lián)系非常緊密:很容易從它們兩者中的任意一個構造出另外一個霞玄。非歧義的文法的每一個派生只有唯一的語法分析樹骤铃,盡管這棵樹能夠被不同的派生所表示。

10坷剧、操作符的結合性:當一條文法的LHS也出現(xiàn)在它的RHS的起始位置惰爬,這條規(guī)則就被稱為左遞歸的,左遞歸說明左結合性惫企。如果一條文法規(guī)則的LHS出現(xiàn)在RHS的最右端撕瞧,則該條文法規(guī)則是右遞歸的,右遞歸說明右結合性狞尔。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丛版,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子偏序,更是在濱河造成了極大的恐慌页畦,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件研儒,死亡現(xiàn)場離奇詭異豫缨,居然都是意外死亡,警方通過查閱死者的電腦和手機殉摔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門州胳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逸月,你說我怎么就攤上這事瑞你。” “怎么了等恐?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瓢颅。 經(jīng)常有香客問我,道長弛说,這世上最難降的妖魔是什么挽懦? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮木人,結果婚禮上信柿,老公的妹妹穿的比我還像新娘。我一直安慰自己醒第,他們只是感情好渔嚷,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稠曼,像睡著了一般形病。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霞幅,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天漠吻,我揣著相機與錄音,去河邊找鬼司恳。 笑死途乃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的抵赢。 我是一名探鬼主播欺劳,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铅鲤!你這毒婦竟也來了划提?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邢享,失蹤者是張志新(化名)和其女友劉穎鹏往,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骇塘,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡伊履,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了款违。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唐瀑。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖插爹,靈堂內(nèi)的尸體忽然破棺而出哄辣,到底是詐尸還是另有隱情请梢,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布力穗,位于F島的核電站毅弧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏当窗。R本人自食惡果不足惜够坐,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望崖面。 院中可真熱鬧元咙,春花似錦、人聲如沸巫员。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疏遏。三九已至,卻和暖如春救军,著一層夾襖步出監(jiān)牢的瞬間财异,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工唱遭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戳寸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓拷泽,卻偏偏與公主長得像疫鹊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子司致,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理拆吆,服務發(fā)現(xiàn),斷路器脂矫,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • 提到“害怕”這個詞枣耀,每個人都會多多少少有點不適,因為它代表的情緒可以說是負面的庭再,貶義的捞奕。但是我今天要演講的是,只要...
    二姑娘舍舍閱讀 497評論 0 1
  • 9.5號 18:00 多哈當?shù)貢r間 中國VS 卡塔爾 我在 Khalifa 場館看球賽拄轻! CHINA VS QAT...
    QR張閱讀 222評論 0 0
  • 感情是一輩子的事 得舒服才行 你也別將就颅围。
    仝爽很酷閱讀 153評論 0 0
  • 你也不知道 什么時候你會死 也許他悄無聲息就來了 你說詩人都死了 活著的也在茍延殘喘 這便是我的歸宿吧 也許在某個...
    啟文閱讀 194評論 0 0