附錄2 編程的本質(zhì)
===
N
尼古拉斯·沃斯(Niklaus Wirth,1934年2月15日—),生於于瑞士溫特圖爾骤菠,是瑞士計算機科學(xué)家瞄沙。Pascal語言之父己沛。
讓我們暫時撇開平臺、框架距境、技術(shù)申尼、設(shè)計模式、對象思想垫桂、敏捷開發(fā)論等师幕。 追問程序本質(zhì)。
2.0 什么是編程诬滩?
編程的本質(zhì)是創(chuàng)造世界霹粥。
從本質(zhì)上來說, 程序就是一系列有序執(zhí)行的指令集合疼鸟。 如何將指令集合組織成可靠可用可信賴的軟件(美妙的邏輯之塔)后控, 這是個問題。
N有一句在計算機領(lǐng)域人盡皆知的名言:
算法+數(shù)據(jù)結(jié)構(gòu)=程序(Algorithm+Data Structures=Programs)
所有編程語言的最終目的都是提供一種“抽象”方法空镜。這里的抽象浩淘,就是思維的對問題空間的映射。語言吴攒,只是為了表達我們的思想张抄。
每一次“抽象”都拋棄了一些非本質(zhì)特征而提煉出更普適的精髓特征,因而每一次抽象都是在透過現(xiàn)象看本質(zhì)舶斧,每一次提煉都是一次質(zhì)的飛躍和升華欣鳖,從而使由此得到的新理論更具普遍性與包容性。例如量子力學(xué)不僅能解釋經(jīng)典力學(xué)的各種現(xiàn)象茴厉,還能解釋微觀世界里特有的(不能被經(jīng)典力學(xué)或經(jīng)典電動力學(xué)解釋的)現(xiàn)象泽台,如AB效應(yīng)什荣。
從硬件電路上的高低電平,到機器代碼的01組合怀酷,再到匯編指令的mov稻爬、add,再到蜕依,中高級語言中的for桅锄、print, 編程語言的從底層到高層的發(fā)展,在做一層一層抽象的样眠,正是編譯器友瘤。
就好比是在數(shù)學(xué)中,無論多么復(fù)雜的問題檐束,最終都可以拆分化歸到最基本的運算和公理上一樣辫秧;對于編程來說,每一個程序最終都可以被分解成一個一個最基本的指令以及這些指令的組合被丧。
人類對這些問題的分析和理解盟戏,對問題的拆分,并用算法和代碼來描述的過程甥桂,就是“編程”柿究,這樣的人,我們稱之為“程序員”黄选。
詩人用優(yōu)美的意象蝇摸,構(gòu)建一個美的情感世界。作家用個性鮮明的人物办陷,曲折離奇的情節(jié)探入,創(chuàng)造一個理想王國。音樂家用音符懂诗,創(chuàng)造一個悠遠優(yōu)雅的聲音世界。數(shù)學(xué)家苗膝,通過最基本的公理推導(dǎo)出定理殃恒,數(shù)學(xué)規(guī)律,構(gòu)建一個龐大的宇宙空間形式的邏輯世界……程序員辱揭,通過最基本的算法离唐,數(shù)據(jù)結(jié)構(gòu),構(gòu)建龐大的互聯(lián)網(wǎng)云端的“虛擬世界”问窃。是的亥鬓,他們都是在創(chuàng)造一個世界。