编程_从入门到遁入空门_第一篇_到底什么是编程?
“編程”,英文為:programming,意指編寫(xiě)程序,設(shè)計(jì)程序。在如今大多語(yǔ)境下,編程從單純的設(shè)計(jì)一系列程序轉(zhuǎn)變?yōu)樘刂傅?#xff1a; 對(duì)于計(jì)算機(jī)體系,進(jìn)行運(yùn)算流程的設(shè)計(jì),而設(shè)計(jì)方式則是“編程”,就是大家所說(shuō)的“寫(xiě)代碼”,而“代碼”則常常是程序的常規(guī)表現(xiàn)形式。
如此闡述介紹編程,對(duì)于沒(méi)有接觸過(guò)編程和編程語(yǔ)言的學(xué)習(xí)者而言是不友好的。我們先試著通過(guò)理解幾個(gè)例子和了解計(jì)算機(jī)的發(fā)展再思考上面的關(guān)系。
計(jì)算機(jī)(computer)的最初始的作用就是“計(jì)算”(compute)。在戰(zhàn)爭(zhēng)中,軍備設(shè)備和通信密碼破譯都需要對(duì)數(shù)據(jù)進(jìn)行大量計(jì)算。1944年正在負(fù)責(zé)美國(guó)的氫彈研制工作的馮?諾依曼也遇到了這個(gè)問(wèn)題。氫彈的研制需要解決大量的計(jì)算問(wèn)題,當(dāng)時(shí)并沒(méi)有好的計(jì)算機(jī),而馮?諾依曼自己則靠心算。
此時(shí),美國(guó)陸軍為了研制長(zhǎng)程火炮,委托賓夕法尼亞大學(xué)電機(jī)工程的教授莫奇利和他的學(xué)生埃克特博士設(shè)計(jì)和研制人類(lèi)第一臺(tái)通用電子計(jì)算機(jī),就是大名鼎鼎的——“ENIAC”。
而由于設(shè)計(jì)上的限制,ENIAC想要對(duì)于不同的計(jì)算需求做計(jì)算前,還需要修改電路,但對(duì)于如此一個(gè)龐然大物,修改電路可沒(méi)有那么簡(jiǎn)單。好在馮?諾依曼意識(shí)到這個(gè)問(wèn)題的嚴(yán)重性,在1944年就向軍方建議再造一臺(tái)新的、通用的計(jì)算機(jī),這樣他就和莫奇利、埃克特一起提出一種全新的設(shè)計(jì)方案,稱(chēng)為艾迪瓦克(EDVAC,Electronic Discrete Variable Automatic Computer,離散變量自動(dòng)電子計(jì)算機(jī)),而EDVAC其實(shí)才是世界上第一臺(tái)程序控制的通用的電子計(jì)算機(jī),并且是今天所有計(jì)算機(jī)的鼻祖。馮諾依曼也在因?yàn)槠浯箜攲釉O(shè)計(jì)思路——馮諾依曼體系更加廣為人知(莫奇利、埃克特同樣偉大)。馮諾依曼體系也成為計(jì)算機(jī)相關(guān)專(zhuān)業(yè)課程必備知識(shí)。后續(xù)的計(jì)算機(jī)體系結(jié)構(gòu)模型也不多,出名的有哈佛結(jié)構(gòu),后面再來(lái)說(shuō)吧。
對(duì)于編程,其中最重要的就是和計(jì)算機(jī)“交流”。我們要讓計(jì)算機(jī)幫我們運(yùn)算,是ok的,但我們要事先告訴計(jì)算機(jī)它該專(zhuān)門(mén)運(yùn)算,怎么去做。“交流”就是為了這個(gè)目的。舉個(gè)栗子,而我作為一個(gè)四川人,只需要使用四川話(huà)即可,若是來(lái)了一個(gè)留學(xué)的美國(guó)小伙,我可以選擇我還勉強(qiáng)能使用的英語(yǔ)。那么若是一個(gè)意大利小姐姐呢?我只會(huì)Ciao,而她的中文也不能獨(dú)擋一面。那么這個(gè)時(shí)候我們常常選擇一個(gè)“中間的”辦法去解決問(wèn)題。比如用一個(gè)我們都掌握的非母語(yǔ)語(yǔ)言——English。
編程語(yǔ)言的誕生與上面的例子。無(wú)論熟悉或不了解計(jì)算機(jī)的人大多都知道計(jì)算機(jī)和 “二進(jìn)制” 有千絲萬(wàn)縷的聯(lián)系,即計(jì)算機(jī)是‘0’,‘1’的世界。因?yàn)?#xff0c;計(jì)算機(jī)實(shí)質(zhì)是使用高電平和低電平兩個(gè)物理狀態(tài)來(lái)表示數(shù)據(jù)的,那么內(nèi)部的運(yùn)算,數(shù)據(jù)的表達(dá),控制的流程等等等所有的一切都是以二進(jìn)制的形式表達(dá)的,這種質(zhì)樸無(wú)華的表達(dá)方式所構(gòu)成的一套系統(tǒng),就像一門(mén)語(yǔ)言——機(jī)器語(yǔ)言。不過(guò)這門(mén)語(yǔ)言一定是晦澀難懂的,因?yàn)樗墒贾两K都只有2個(gè)字母:0,1。想要表達(dá)設(shè)計(jì)2000個(gè)“單詞”你會(huì)超過(guò)10位“字母”去表達(dá)。這意味著,你的任何數(shù)據(jù)位數(shù)會(huì)變得很大,大到你操作這個(gè)數(shù)就記不住上一個(gè)數(shù)是多少了。
一個(gè)簡(jiǎn)單的 50 + 45 變成了: ?00110010? + ?00101101?,這還沒(méi)有展示‘+’號(hào)的編碼。一個(gè)5位的表達(dá)式變成得超過(guò)20位。
為了解決這個(gè)問(wèn)題,大師們?cè)O(shè)計(jì)了 “匯編語(yǔ)言”,把一個(gè)一個(gè)的指令變成了助記符 ,比如,原來(lái)我設(shè)計(jì)的系統(tǒng)里10000000代表“加法”,而匯編中,ADD這個(gè)單詞就表示了加法。 而運(yùn)算數(shù)據(jù)也可以直接用10進(jìn)制或16進(jìn)制,其中的轉(zhuǎn)換由計(jì)算機(jī)自動(dòng)完成。這極大得簡(jiǎn)化了編程的工作量,增大了程序員的效率喔,值得一提的是世界上第一個(gè)程序員是女士喔。
由此之后再進(jìn)行分化,新技術(shù)與新需求的碰撞使得設(shè)計(jì)出了更高級(jí)的編程語(yǔ)言:C,Python , PHP…不勝枚舉。對(duì)于如此多的語(yǔ)言,選擇時(shí)在于你的需求和領(lǐng)域是什么。是硬件還是軟件,人工智能還是大數(shù)據(jù)分析,服務(wù)器端還是用戶(hù)端…這樣編程語(yǔ)言貼合需求而分化的高級(jí)語(yǔ)言也大大提高了編程的效率和速度。
IEEE Spectrum_2018年度頂級(jí)編程語(yǔ)言排行榜
編程就是告訴計(jì)算機(jī),該怎么做,是在此刻加一下儲(chǔ)存器區(qū)編號(hào)8951和編號(hào)8952數(shù)據(jù),還是立刻跳過(guò)5個(gè)指令,直接從當(dāng)前那一條指令開(kāi)始,又或者要讀寫(xiě)編輯一張1024*1024像素的圖片,又或從網(wǎng)絡(luò)中截取下一個(gè)的數(shù)據(jù)包。。。命令有大有小,但大的命令都是由小的命令堆疊起來(lái)的,共同構(gòu)建起了一個(gè)或高效或bug橫飛的程序代碼罷了。
總結(jié)
以上是生活随笔為你收集整理的编程_从入门到遁入空门_第一篇_到底什么是编程?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 各种数据类型的大小
- 下一篇: PPT批量替换字体、行间距操作