???第一臺計算機物理基礎(chǔ)是半導體的開關(guān)操作滥酥,數(shù)學基礎(chǔ)是二進制運算更舞,計算機所支持的各項能力,比如多媒體坎吻、網(wǎng)絡(luò)缆蝉、數(shù)據(jù)、運算等都是CPU反復加操作完成的瘦真。在整個IT發(fā)展過程中返奉,我們通過程序語言與CPU的對話,讓CPU明白我們意圖吗氏,并按照意圖執(zhí)行下去芽偏,經(jīng)歷了很漫長的過程。
一弦讽、程序語言的大致發(fā)展過程
第一階段:我們按照CPU的套路說話污尉,也就是匯編語言膀哲。我們來做絕大多數(shù)事情,拆解邏輯被碗、簡化方程某宪、編碼各類文件等等,CPU替代算盤進行高速的加操作锐朴,完成諸如彈道計算兴喂、原子模擬、流體解算等工作焚志。但是衣迷,程序員生產(chǎn)力很低,與CPU溝通低效酱酬,為了干更多的事情壶谒,我們追求人容易看懂的語言(CPU讀不懂)來寫程序,弄一個中間的東西將人能懂得語言轉(zhuǎn)換成機器能懂得語言膳沽。
第二階段:按照我們的思維汗菜,逐過程告訴CPU怎么做。不同廠商追尋不同的思路挑社,創(chuàng)造出了很多人類基本可讀的語言陨界,前提是這個人類要經(jīng)過大量的學習,并嚴格按照語言規(guī)則進行書寫痛阻,表達自己的想法普碎。比如C語言、B語言录平、Pascal麻车、Fortran等,并借助各種東西斗这,做出適應當時各種操作系統(tǒng)的應用动猬。看似一切大好表箭,面對復雜的大型項目赁咙,搞起來很費勁,相同的工作要反復做免钻,代碼重用彼水,結(jié)構(gòu)擴展都比較麻煩,催生出下一代語言极舔。
第三階段:按照一些人類社會模式凤覆,更接近人的思維方式與CPU溝通。把社會中實體拆魏、遺傳盯桦、變異慈俯、接口等概念引入,形成面向?qū)ο笳Z言拥峦,比如Java贴膘、C#等等。程序員可以更關(guān)注應用要處理的事務(wù)略号,而不是語言本身刑峡。
二、現(xiàn)代程序語言內(nèi)部組成
我前后學過VB玄柠、C#突梦、JavaScript、Python等不同風格随闪、應用環(huán)境的語言阳似,總體上感覺骚勘,我們充分利用CPU高性能蠻力解決日常問題(當然也有優(yōu)化铐伴、仍然蠻力進行),就語言本身俏讹,通常具備以下東東当宴。
數(shù)據(jù)類型:CPU只能玩開關(guān)量,不能直接理解各種數(shù)據(jù)類型泽疆,比如負數(shù)户矢、復數(shù)、小數(shù)殉疼、日期梯浪、字符串等等,隨著位數(shù)發(fā)展瓢娜,CPU處理數(shù)據(jù)類型的范圍也在擴大挂洛,又分了單精度、雙精度等等眠砾。
語法規(guī)則:程序語言要經(jīng)過一個翻譯器才能讓CPU讀懂虏劲,翻譯器本身是個程序,程序員就苦逼地按照翻譯器能翻譯的模式去寫代碼褒颈,不然翻譯器不知道什么時候開始柒巫,什么時候結(jié)束,甚至會出現(xiàn)奇異谷丸,所以語法規(guī)則能有效地避免這種問題發(fā)生堡掏。
控制語句:通過控制語句流轉(zhuǎn)程序走向,經(jīng)典的有判斷刨疼、循環(huán)布疼、跳轉(zhuǎn)等等摊趾,這樣增加了靈活處理能力。
與友鄰打交道:CPU執(zhí)行運算任務(wù)游两,需要從文件砾层、數(shù)據(jù)庫、網(wǎng)絡(luò)贱案、其他組件等地方獲取輸入肛炮,同時將執(zhí)行完的結(jié)果輸出到不同地方,那么就需要補充程序語言如何操作文件宝踪、數(shù)據(jù)庫侨糟、網(wǎng)絡(luò)等知識,這和程序語言本身無關(guān)瘩燥,但非常有用秕重。
三、有什么好的途徑
介紹程序語言相關(guān)的數(shù)據(jù)厉膀,通常都很厚溶耘,常常讓人望而卻步,涉及的東西多服鹅,內(nèi)容廣凳兵,成體系,深究起來企软,門道多庐扫,難入手。在學習時仗哨,程序語言跟自然語言一樣形庭,結(jié)合自身實際,模仿和應用起來厌漂,以一些實際問題為牽引積極地做起來即可萨醒,在被虐中成長。