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