計(jì)算機(jī)編程語(yǔ)言發(fā)展史
1 編程語(yǔ)言簡(jiǎn)介
編程語(yǔ)言(programming language
)可以簡(jiǎn)單的理解為一種計(jì)算機(jī)和人都能識(shí)別的語(yǔ)言。一種計(jì)算機(jī)語(yǔ)言讓程序員能夠準(zhǔn)確地定義計(jì)算機(jī)所需要使用的數(shù)據(jù),并精確地定義在不同情況下所應(yīng)當(dāng)采取的行動(dòng)。一方面,人們要使用計(jì)算機(jī)語(yǔ)言指揮計(jì)算機(jī)完成某種特作,就必須對(duì)這種工作進(jìn)行特殊描述,所以它能夠被人們讀懂。另一方面,計(jì)算機(jī)必須按計(jì)算機(jī)語(yǔ)言描述來(lái)行動(dòng),從而完成其描述的特定工作,所以能夠被計(jì)算機(jī)“讀懂”。
2 編程語(yǔ)言發(fā)展
計(jì)算機(jī)編程語(yǔ)言能夠?qū)崿F(xiàn)人與機(jī)器之間的交流和溝通,而計(jì)算機(jī)編程語(yǔ)言主要包括低級(jí)語(yǔ)言、高級(jí)語(yǔ)言以及面向?qū)ο笤O(shè)計(jì)語(yǔ)言,具體內(nèi)容如下:
2.1 機(jī)器語(yǔ)言
機(jī)器語(yǔ)言是用二進(jìn)制代碼表示的計(jì)算機(jī)能直接識(shí)別和執(zhí)行的一種機(jī)器指令的集合。它是計(jì)算機(jī)的設(shè)計(jì)者通過(guò)計(jì)算機(jī)的硬件結(jié)構(gòu)賦予計(jì)算機(jī)的操作功能。二進(jìn)制用兩個(gè)不同的符號(hào)0(代表零)和1(代表一)來(lái)表示 ?,F(xiàn)代的計(jì)算機(jī)和依賴計(jì)算機(jī)的設(shè)備里都使用二進(jìn)制。早期的程序設(shè)計(jì)均使用機(jī)器語(yǔ)言,程序員用0、1數(shù)字編程的程序代碼打在紙帶或卡片上,1打孔、0不打孔,再將程序通過(guò)紙帶機(jī)或卡片機(jī)輸入計(jì)算機(jī)從而進(jìn)行運(yùn)算。機(jī)器語(yǔ)言,也就是第一代編程語(yǔ)言。
2.2 匯編語(yǔ)言
不難看出機(jī)器語(yǔ)言作為一種編程語(yǔ)言, 靈活性較差可閱讀性也很差,為了減輕機(jī)器語(yǔ)言帶給軟件工程師的不適應(yīng),人們對(duì)機(jī)器語(yǔ)言進(jìn)行了升級(jí)和改進(jìn):用一些容易理解和記憶的字母,單詞來(lái)代替一個(gè)特定的指令。通過(guò)這種方法,人們很容易去閱讀 已經(jīng)完成的程序或者理解程序正在執(zhí)行的功能,對(duì)現(xiàn)有程序的bug
修復(fù)以及運(yùn)營(yíng)維護(hù)都變得更加簡(jiǎn)單方便,這種語(yǔ)言就是我們所說(shuō)的匯編語(yǔ)言, 即第二代計(jì)算機(jī)語(yǔ)言。
2.3 高級(jí)語(yǔ)言
在編程語(yǔ)言經(jīng)歷了機(jī)器語(yǔ)言,匯編語(yǔ)言等更新之后,人們發(fā)現(xiàn)了限制程序推廣的關(guān)鍵因素——程序的可移植性。需要設(shè)計(jì)一個(gè)能夠不依賴于計(jì)算機(jī)硬件,能夠在不同機(jī)器上運(yùn)行的程序。這樣可以免去很多編程的重復(fù)過(guò)程,提高效率,同時(shí)這種語(yǔ)言又要接近于數(shù)學(xué)語(yǔ)言或人的自然語(yǔ)言。同時(shí),因?yàn)橘Y源的稀缺,計(jì)算機(jī)的運(yùn)行效率也成為了那個(gè)年代工程師追尋的目標(biāo)。為了更高效的使用計(jì)算機(jī),人們?cè)O(shè)計(jì)出了高級(jí)編程語(yǔ)言,來(lái)滿足人們對(duì)于高效簡(jiǎn)的編程語(yǔ)言的追求。用高級(jí)編程語(yǔ)言編寫(xiě)的程序需要經(jīng)過(guò)翻譯,翻譯成機(jī)器所能識(shí)別的二進(jìn)制數(shù)才能由計(jì)算機(jī)去執(zhí)行。
2.4 面向?qū)ο笳Z(yǔ)言
隨著計(jì)算機(jī)硬件的飛速發(fā)展,以及應(yīng)用復(fù)雜度越來(lái)越高,軟件規(guī)模越來(lái)越大,原有的程序開(kāi)發(fā)方式已經(jīng)越 來(lái)越不能滿足需求。傳統(tǒng)的面向過(guò)程(包括 結(jié)構(gòu)化程序設(shè)計(jì))方法已經(jīng)越來(lái)越不能適應(yīng)快速多變的業(yè)務(wù)需求了,軟件領(lǐng)域迫切希望找到新的銀彈來(lái)解 決軟件危機(jī),在這種背景下,面向?qū)ο蟮乃枷腴_(kāi)始流行起來(lái)。
面向?qū)ο笳Z(yǔ)言(Object-Oriented Language)是一類(lèi)以對(duì)象作為基本程序結(jié)構(gòu)單位的程序設(shè)計(jì)語(yǔ)言,指用于描述的設(shè)計(jì)是以對(duì)象為核心,而對(duì)象是程序運(yùn)行時(shí)刻的基本成分。語(yǔ)言中提供了類(lèi)、繼承等成分,有識(shí)認(rèn)性、多態(tài)性、類(lèi)別性和繼承性四個(gè)主要特點(diǎn)。
3 碼農(nóng)洞見(jiàn)
3.1 編程語(yǔ)言Bug的由來(lái)
Bug一詞的原意是“臭蟲(chóng)”或“蟲(chóng)子”。但是現(xiàn)在,在電腦系統(tǒng)或程序中,如果隱藏著的一些未被發(fā)現(xiàn)的缺陷或問(wèn)題,人們也叫它“bug”,這是怎么回事呢?
1945年,計(jì)算機(jī)還是由機(jī)械式繼電器和真空管驅(qū)動(dòng)的,機(jī)器有房間那么大。體現(xiàn)當(dāng)時(shí)技術(shù)水平的MarkⅡ,是由哈佛大學(xué)制造的一個(gè)龐然大物。當(dāng)技術(shù)人員正在進(jìn)行不整機(jī)運(yùn)行時(shí),它突然停止了工作。他們爬上去找原因,發(fā)現(xiàn)這臺(tái)巨大的計(jì)算機(jī)內(nèi)部一組繼電器的觸點(diǎn)之間有一只飛蛾,這顯然是由于飛蛾受光和熱的吸引,飛到了觸點(diǎn)上,然后被高電壓擊死。
原來(lái),第一代的計(jì)算機(jī)是由許多龐大且昂貴的真空管組成,并利用大量的電力來(lái)使真空管發(fā)光??赡苷怯捎谟?jì)算機(jī)運(yùn)行產(chǎn)生的光和熱,引得一只小蟲(chóng)子(Bug)鉆進(jìn)了一支真空管內(nèi),導(dǎo)致整個(gè)計(jì)算機(jī)無(wú)法正常工作。研究人員費(fèi)了半天時(shí)間,總算發(fā)現(xiàn)原因所在,把這只小蟲(chóng)子從真空管中取出后,計(jì)算機(jī)又恢復(fù)正常。后來(lái),Bug這個(gè)名詞就沿用下來(lái),用來(lái)表示電腦系統(tǒng)或程序中隱藏的錯(cuò)誤、缺陷、漏洞等問(wèn)題。
到此這篇關(guān)于Java計(jì)算機(jī)編程語(yǔ)言發(fā)展史的文章就介紹到這了,更多相關(guān)計(jì)算機(jī)編程語(yǔ)言發(fā)展史內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java使用httpclient 發(fā)送請(qǐng)求的示例
HttpClient 是Apache Jakarta Common 下的子項(xiàng)目,可以用來(lái)提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并且它支持 HTTP 協(xié)議最新的版本和建議,這篇文章主要介紹了java使用httpclient 發(fā)送請(qǐng)求的示例,需要的朋友可以參考下2023-10-10Java實(shí)現(xiàn)限定時(shí)間CountDownLatch并行場(chǎng)景
本文將結(jié)合實(shí)例代碼,介紹Java實(shí)現(xiàn)限定時(shí)間CountDownLatch并行場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07Java中使用ForkJoinPool的實(shí)現(xiàn)示例
ForkJoinPool是一個(gè)功能強(qiáng)大的Java類(lèi),用于處理計(jì)算密集型任務(wù),本文主要介紹了Java中使用ForkJoinPool的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09MyBatis一級(jí)緩存與二級(jí)緩存原理與作用分析
mybatis-plus是一個(gè)Mybatis的增強(qiáng)工具,在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,這篇文章帶你了解Mybatis的一級(jí)和二級(jí)緩存2022-12-12Java while(scanner.hasNext())無(wú)法跳出的解決方案
這篇文章主要介紹了Java while(scanner.hasNext())無(wú)法跳出的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10spring基礎(chǔ)系列之JavaConfig配置詳解
本篇文章主要介紹了spring基礎(chǔ)系列之JavaConfig配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07