關(guān)于編程語言都是誰發(fā)明的
編程語言是用來定義計(jì)算機(jī)程序的形式語言。以下是學(xué)習(xí)啦小編為你整理的關(guān)于編程語言都是誰發(fā)明的,希望能幫到你。
一、 編程語言是誰發(fā)明的
奧古斯塔·阿達(dá)·金,勒芙蕾絲伯爵夫人(Augusta Ada King, Countess of Lovelace,1815年12月10日-1852年11月27日),原名奧古斯塔·阿達(dá)·拜倫(Augusta Ada Byron),通稱阿達(dá)·洛芙萊斯(Ada Lovelace),是著名英國詩人拜倫之女,數(shù)學(xué)家。計(jì)算機(jī)程序創(chuàng)始人,建立了循環(huán)和子程序概念。
為計(jì)算程序擬定“算法”,寫作的第一份“程序設(shè)計(jì)流程圖”,被珍視為“第一位給計(jì)算機(jī)寫程序的人”。為了紀(jì)念阿達(dá)·奧古斯塔對現(xiàn)代電腦與軟件工程所產(chǎn)生的重大影響,美國國防部將耗費(fèi)巨資、歷時(shí)近20年研制成功的高級程序語言命名為Ada語言,它被公認(rèn)為是第四代計(jì)算機(jī)語言的主要代表。
在1842年,人稱“數(shù)字女王”的阿達(dá)·洛芙萊斯(Ada Lovelace)編寫了歷史上首款電腦程序。
在1834年,阿達(dá)的朋友——英國數(shù)學(xué)家、發(fā)明家兼機(jī)械工程師查爾斯·巴貝其(Charles Babbage)——發(fā)明了一臺分析機(jī);阿達(dá)則致力于為該分析機(jī)編寫算法,并于1843 年公布了世界上第一套算法。
巴貝其分析機(jī)后來被認(rèn)為是最早期的計(jì)算機(jī)雛形,而阿達(dá)的算法則被認(rèn)為是最早的計(jì)算機(jī)程序和軟件。
1852年,阿達(dá)為了治療子宮頸癌,卻因此死于失血過多,得年36歲。無獨(dú)有偶,她與她父親拜倫死于相同年齡,一樣死于治療中的失血過多。她留下了兩個(gè)兒子與一位女兒—安妮·布蘭特貴女。
依她的遺言,阿達(dá)葬于諾丁漢哈克諾的圣 瑪麗亞·抹大拉教堂,長眠在父親的身旁。
在1842年與1843年其間,阿達(dá)花了9個(gè)月的時(shí)間翻譯意大利數(shù)學(xué)家路易吉·米那比亞對巴貝奇最新的計(jì)算機(jī)設(shè)計(jì)書(即分析機(jī)概論)所留下的備忘錄。在這部譯文里,她附加許多注記,內(nèi)容詳細(xì)說明用計(jì)算機(jī)進(jìn)行伯努利數(shù)的運(yùn)算方式,而被認(rèn)為是世界上第一個(gè)電腦程式;因此,阿達(dá)也被認(rèn)為是世界上第一位程式設(shè)計(jì)師。巴貝奇在他所著的《經(jīng)過哲學(xué)家人生》(Passages from the Life of a Philosopher, 1846)里留有下面的述敘:
倫敦科學(xué)館分析機(jī)復(fù)制品
“我認(rèn)為她為米那比亞的備忘錄增加許多注記,并加入了一些想法。雖然這些想法是由我們一起討論出來的,但是最后被寫進(jìn)注記里的想法確確實(shí)實(shí)是她自己的構(gòu)想。我將許多代數(shù)運(yùn)算的問題交給她處理,這些工作也與伯努利數(shù)的運(yùn)算相關(guān)。在她所送回給我的文件,更修正了我先前在程序里的重大錯(cuò)誤。”
阿達(dá)的文章創(chuàng)造出許多巴貝奇也未曾提到的新構(gòu)想,比如阿達(dá)曾經(jīng)預(yù)言道:“這個(gè)機(jī)器未來可以用來排版、編曲或是各種更復(fù)雜的用途。”
她死后一百年,于1953年,阿達(dá)之前對查爾斯·巴貝奇的《分析機(jī)概論》所留下的筆記被重新公布,并被公認(rèn)對現(xiàn)代計(jì)算機(jī)與軟件工程造成了重大影響。[2]
在1980年12月10日,美國國防部制作了一個(gè)新的高級計(jì)算機(jī)編程語言——Ada,以紀(jì)念阿達(dá)·洛芙萊斯。
在微軟的Wins產(chǎn)品里也可以找到阿達(dá)的全息圖標(biāo)簽。
英國計(jì)算機(jī)公會(huì)每年都頒發(fā)以阿達(dá)命名的軟件工程創(chuàng)新大獎(jiǎng)。
二、語言種類
匯編語言
匯編語言的實(shí)質(zhì)和機(jī)器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標(biāo)識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應(yīng)實(shí)際操作過程中的一個(gè)很細(xì)微的動(dòng)作。例如移動(dòng)、自增,因此匯編源程序一般比較冗長、復(fù)雜、容易出錯(cuò),而且使用匯編語言編程需要有更多的計(jì)算機(jī)專業(yè)知識,但匯編語言的優(yōu)點(diǎn)也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能夠?qū)崿F(xiàn)的,而且源程序經(jīng)匯編生成的可執(zhí)行文件不僅比較小,而且執(zhí)行速度很快。
腳本語言
腳本語言(Script language,scripting language,scripting programming language)是為了縮短傳統(tǒng)的編寫-編譯-鏈接-運(yùn)行(edit-compile-link-run)過程而創(chuàng)建的計(jì)算機(jī)編程語言。此命名起源于一個(gè)腳本“screenplay”,每次運(yùn)行都會(huì)使對話框逐字重復(fù)。[1]
早期的腳本語言經(jīng)常被稱為批量處理語言或工作控制語言。一個(gè)腳本通常是解釋運(yùn)行而非編譯。
雖然許多腳本語言都超越了計(jì)算機(jī)簡單任務(wù)自動(dòng)化的領(lǐng)域,成熟到可以編寫精巧的程序,但仍然還是被稱為腳本。幾乎所有計(jì)算機(jī)系統(tǒng)的各個(gè)層次都有一種腳本語言。包括操作系統(tǒng)層,如計(jì)算機(jī)游戲,網(wǎng)絡(luò)應(yīng)用程序,字處理文檔,網(wǎng)絡(luò)軟件等。在許多方面,高級編程語言和腳本語言之間互相交叉,二者之間沒有明確的界限。
腳本編程速度更快,且腳本文件明顯小于如同類C程序文件。這種靈活性是以執(zhí)行效率為代價(jià)的。腳本通常是解釋執(zhí)行的,速度可能很慢,且運(yùn)行時(shí)更耗內(nèi)存。在很多案例中,如編寫一些數(shù)十行的小腳本,它所帶來的編寫優(yōu)勢就遠(yuǎn)遠(yuǎn)超過了運(yùn)行時(shí)的劣勢,尤其是在當(dāng)前程序員工資趨高和硬件成本趨低時(shí)。
腳本語言是一種解釋性的語言,例如Python[2] 、vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進(jìn)制代碼,以可執(zhí)行文件的形式存在.[3]
機(jī)器語言
由于計(jì)算機(jī)內(nèi)部只能接受二進(jìn)制代碼,因此,用二進(jìn)制代碼0和1描述的指令稱為機(jī)器指令,全部機(jī)器指令的集合構(gòu)成計(jì)算機(jī)的機(jī)器語言,用機(jī)器語言編程的程序稱為目標(biāo)程序。只有目標(biāo)程序才能被計(jì)算機(jī)直接識別和執(zhí)行。但是機(jī)器語言編寫的程序無明顯特征,難以記憶,不便閱讀和書寫,且依賴于具體機(jī)種,局限性很大,機(jī)器語言屬于低級語言。
高級語言
高級語言是大多數(shù)編程者的選擇。和匯編語言相比,它不但將許多相關(guān)的機(jī)器指令合成為單條指令,并且去掉了與具體操作有關(guān)但與完成工作無關(guān)的細(xì)節(jié),例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時(shí),由于省略了很多細(xì)節(jié),編程者也就不需要有太多的專業(yè)知識。
高級語言主要是相對于匯編語言而言,它并不是特指某一種具體的語言,而是包括了很多編程語言,像最簡單的編程語言PASCAL語言也屬于高級語言。
高級語言所編制的程序不能直接被計(jì)算機(jī)識別,必須經(jīng)過轉(zhuǎn)換才能被執(zhí)行,按轉(zhuǎn)換方式可將它們分為兩類:
解釋類:執(zhí)行方式類似于我們?nèi)粘I钪械?ldquo;同聲翻譯”,應(yīng)用程序源代碼一邊由相應(yīng)語言的解釋器“翻譯”成目標(biāo)代碼(機(jī)器語言),一邊執(zhí)行,因此效率比較低,而且不能生成可獨(dú)立執(zhí)行的可執(zhí)行文件,應(yīng)用程序不能脫離其解釋器,但這種方式比較靈活,可以動(dòng)態(tài)地調(diào)整、修改應(yīng)用程序。如較早時(shí)期的Qbasic語言。
編譯類:編譯是指在應(yīng)用源程序執(zhí)行之前,就將程序源代碼“翻譯”成目標(biāo)代碼(機(jī)器語言),因此其目標(biāo)程序可以脫離其語言環(huán)境獨(dú)立執(zhí)行,使用比較方便、效率較高。但應(yīng)用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標(biāo)文件(* .obj,也就是OBJ文件)才能執(zhí)行,只有目標(biāo)文件而沒有源代碼,修改很不方便。
看過關(guān)于編程語言都是誰發(fā)明的故事