??03_程序語言基礎(chǔ)知識

尋址方式就是處理器根據(jù)指令中給出的地址信息來尋找物理地址的方式擎浴,是確定本條指令的數(shù)據(jù)地址以及下一條要執(zhí)行的指令地址的方法悍汛。

尋址方式的種類

操作數(shù)在指令中稱為立即尋址绍赛;

操作數(shù)在某寄存器中稱為寄存器尋址甫恩;

操作數(shù)在主存單元,而其地址在指令中稱為直接尋址榛斯;

操作數(shù)在主存單元,而其地址在寄存器中稱為寄存器間接尋址搂捧。


HTML超文本標(biāo)記語言驮俗,標(biāo)準通用標(biāo)記語言下的一個應(yīng)用。 “超文本”就是指頁面內(nèi)可以包含圖片允跑、鏈接王凑,甚至音樂、程序等非文字元素聋丝。

XML是可擴展標(biāo)記語言荤崇,標(biāo)準通用標(biāo)記語言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言潮针。

SGML標(biāo)準通用標(biāo)記語言(以下簡稱“通用標(biāo)言”)术荤,是一種定義電子文檔結(jié)構(gòu)和描述其內(nèi)容的國際標(biāo)準語言;通用標(biāo)言為語法置標(biāo)提供了異常強大的工具每篷,同時具有極好的擴展性瓣戚,因此在數(shù)據(jù)分類和索引中非常有用;是所有電子文檔標(biāo)記語言的起源焦读,早在萬維網(wǎng)發(fā)明之前“通用標(biāo)言”就已存在子库。

VRML(Virtual Reality Modeling Language)即虛擬現(xiàn)實建模語言。是一種用于建立真實世界的場景模型或人們虛構(gòu)的三維世界的場景建模語言矗晃,也具有平臺無關(guān)性仑嗅。


源程序,是指未經(jīng)編譯的,按照一定的程序設(shè)計語言規(guī)范書寫的仓技,人類可讀的文本文件鸵贬。通常由高級語言編寫。

源程序可以是以書籍或者磁帶或者其他載體的形式出現(xiàn)脖捻,但最為常用的格式是文本文件阔逼,這種典型格式的目的是為了編譯出計算機可執(zhí)行的程序。

將人類可讀的程序代碼文本翻譯成為計算機可以執(zhí)行的二進制指令地沮,這種過程叫做編譯嗜浮,由各種編譯器來完成。


正規(guī)式中的基本運算符號有“丨”摩疑、“ ? ”危融、“*”,分別稱為“或”雷袋、“連接”和“閉包”专挪, 連接運算符“ ? ”可省略。

正規(guī)式“(1|01)”表示的串是“1”或者“01”片排,對其進行運算得到的串為空串寨腔, 或者“ 1 ”無限次地連接“ 1”或“01 ”,或者“01 ”無限次地連接“ 1”或“01 ”率寡,例如“ 1 ”迫卢、 “01”、“11”冶共、“101”乾蛤、“011”、“0101”捅僵、……家卖。“

(1丨01)*0”則表示這樣的0和1構(gòu)成的串: 以0結(jié)尾且0不能連續(xù)出現(xiàn)庙楚。




程序設(shè)計語言的基本成分有數(shù)據(jù)成分上荡、運算成分、控制成分和傳輸成分馒闷。

數(shù)據(jù)成分用于描述程序所涉及的數(shù)據(jù)酪捡;

運算成分用以描述程序中所包含的運算;

控制成分用以描述程序中所包含的控制纳账;

傳輸成分逛薇,用以表達程序中數(shù)據(jù)的傳輸。

控制成分指明語言允許表述的控制結(jié)構(gòu)疏虫,程序員使用控制成分來構(gòu)造處理數(shù)據(jù)時的控制邏輯永罚。

理論上已經(jīng)證明可計算問題的程序都可以用順序啤呼、選擇和循環(huán)這三種控制結(jié)構(gòu)來描述。? ? ? ? ? ?


在實現(xiàn)程序語言的編譯和解釋兩種方式中呢袱,編譯方式下會生成用戶源程序的目標(biāo)代碼官扣,而解釋方式下則不產(chǎn)生目標(biāo)代碼。目標(biāo)代碼經(jīng)鏈接后產(chǎn)生可執(zhí)行代碼产捞,可執(zhí)行代碼可獨立加載運行醇锚,與源程序和編譯程序都不再相關(guān)哼御。而在解釋方式下坯临,在解釋器的控制下執(zhí)行源程序或其中間代碼,因此相對而言恋昼,用戶程序執(zhí)行的速度更慢看靠。 中間代碼生成和優(yōu)化不是編譯過程中必需的階段。對用戶源程序依次進行了詞法分析液肌、語法分析和語義分析后挟炬,原則上就可以產(chǎn)生目標(biāo)代碼了,只是目標(biāo)代碼的質(zhì)量和效率可能不夠高嗦哆。 詞法分析時編譯或解釋用戶源程序過程中唯一與源程序打交道的階段谤祖,其主要功能是按順序分析出源程序的記號。


COBOL是面向事務(wù)處理的語言老速,XML即可擴展標(biāo)記語言粥喜,PROLOG是邏輯式語言, LISP是函數(shù)式語言橘券。Python可稱為通用的腳本語言额湘。

解釋程序也稱為解釋器,它可以直接解釋執(zhí)行源程序旁舰,或者將源程序翮譯成某種中間表示形式后再加以執(zhí)行锋华;而編譯程序(編譯器)則首先將源程序翻譯成目標(biāo)語言程序,然后在計算機上運行目標(biāo)程序箭窜。 解釋程序在詞法毯焕、語法和語義分析方面與編譯程序的工作原理基本相同。一般情況下磺樱,在解釋方式下運行程序時芥丧,解釋程序可能需要反復(fù)掃描源程序。例如坊罢,每一次引用變量都要進行類型檢査续担,甚至需要重新進行存儲分配,從而降低了程序的運行速度活孩。在空間上物遇,以解釋方式運行程序需要更多的內(nèi)存,因為系統(tǒng)不但需要為用戶程序分配運行空間,而且要為解釋程序及其支撐系統(tǒng)分配空間询兴。

編譯程序的功能是把某高級語言書寫的源程序翻譯成與之等價的目標(biāo)程序(匯編語言程序或機器語言程序)乃沙。編譯程序的工作過程可以分為詞法分析、語法分析诗舰、語義分析警儒、 中間代碼生成、代碼優(yōu)化眶根、目標(biāo)代碼生成蜀铲、狩號表管理和出錯處理,如下圖所示属百。

匯編語言是與機器語言對應(yīng)的程序設(shè)計語言记劝, 因此也是面向機器的語言。? ? 從適用范圍而言族扰,某些程序語言在較為廣泛的應(yīng)用領(lǐng)域被使用來編寫軟件厌丑, 因此成為通用程序設(shè)計語言, 常用的如 C/C++渔呵,Java等怒竿。? ? 關(guān)系數(shù)據(jù)庫查詢語言特指 SQL,用于存取數(shù)據(jù)以及查詢扩氢、 更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)耕驰。? ? 函數(shù)式編程是一種編程范式,它將計算機中的運算視為函數(shù)的計算类茂。 函數(shù)編程語言最重要的基礎(chǔ)是λ演算(lambda calculus)耍属,其可以接受函數(shù)當(dāng)作輸入(參數(shù)) 和輸出(返回值)。? ? ? ? ? ?

有些軟件采用“編寫—編譯—鏈接—運行”的過程來創(chuàng)建巩检。將源程序編譯后產(chǎn)生目標(biāo)程序厚骗,然后再與其他模塊進行鏈接來產(chǎn)生可執(zhí)行程序。

解釋程序(也稱為解釋器)可以直接解釋執(zhí)行源程序兢哭,或者將源程序翻譯成某種中間表示形式后再加以執(zhí)行领舰;而編譯程序(編譯器)則首先將源程序翻譯成目標(biāo)語言程序,然后在計算機上運行目標(biāo)程序迟螺。這兩種語一處理程序的根本區(qū)別是:在編譯方式下冲秽,機器上運行的是與源程序等價的目標(biāo)程序,源程序和編譯程序都不再參與目標(biāo)程序的執(zhí)行過程矩父;而在解釋方式下锉桑,解釋程序和源程序(或其某種等價表示荽參與到程序的運行過程中,運行程序的控制權(quán)在解釋程序窍株。一而言之民轴,解釋器翻譯源程序時不產(chǎn)生獨立的目標(biāo)程序攻柠,而編譯器則需將源程序翻譯成獨立的目標(biāo)程序。



SQL即結(jié)構(gòu)化查詢語言后裸,是一種特殊目的的編程語言瑰钮,用于存取及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)微驶。 Verilog HDL是一種硬件描述語言浪谴,以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖因苹、邏輯表達式苟耻,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。 Java是一種通用的程序設(shè)計語言容燕。

題中所列的編程語言都是通用的高級程序設(shè)計語言梁呈,同時具竄各自的應(yīng)用特點婚度。C/C++適合于進行系統(tǒng)級程序開發(fā)蘸秘,設(shè)備驅(qū)動程序與硬件及其抽象層交互,屬于系統(tǒng)級程序語言蝗茁。 Java在企業(yè)級應(yīng)用軟件開發(fā)醋虏、安卓開發(fā)、大數(shù)據(jù)哮翘、云計算等方面都是主流的編程語言颈嚼。 Python適合進行網(wǎng)絡(luò)應(yīng)用開發(fā)。 Visual Basic的主要特點是可視化設(shè)計饭寺、事件驅(qū)動的編程機制等阻课,程序員不用寫多少代碼就可以完成一個簡單的程序,也可以開發(fā)相當(dāng)復(fù)雜的程序艰匙。


主要的程序語言如下: Fortran語言(第一個高級程序設(shè)計語言限煞,科學(xué)計算,執(zhí)行效率高) Pascal語言(結(jié)構(gòu)化程序設(shè)計語言员凝,表達能力強署驻,Delphi) C語言(通用、結(jié)構(gòu)化程序設(shè)計語言健霹,指針操作能力強旺上,高效) Lisp語言(函數(shù)式程序語言,符號處理糖埋,人工智能) C++語言(C語言基礎(chǔ)上增加了類機制宣吱,面向?qū)ο螅咝В?Java語言(面向?qū)ο笸穑虚g代碼征候,跨平臺钦听,通用的程序設(shè)計語言) Python(面向?qū)ο螅忉屝统绦蛟O(shè)計語言倍奢,通用的腳本語言) PHP(服務(wù)器端腳本語言朴上,制作動態(tài)網(wǎng)頁) Ruby(簡單快捷、面向?qū)ο笞渖贰⒛_本語言) Delphi(快速應(yīng)用程序開發(fā)工具痪宰,可視化編程環(huán)境) COBOL(數(shù)據(jù)處理領(lǐng)域最為廣泛的程序設(shè)計語言,高級編程語言) PROLOG(邏輯式語言畔裕,建造專家系統(tǒng)衣撬、自然語言理解、智能知識庫等)


JavaScript是一種屬于網(wǎng)絡(luò)的腳本語言扮饶,已經(jīng)被廣泛用于Web應(yīng)用開發(fā)具练,常用來為網(wǎng)頁添加各式各樣的動態(tài)功能,為用戶提供更流暢美觀的瀏覽效果甜无。通常JavaScript腳本是通過嵌入在HTML中來實現(xiàn)自身的功能的扛点。 JavaScript是一種解釋性腳本語言(代碼不進行預(yù)編譯)。主要用來向HTML(標(biāo)準通用標(biāo)記語言下的一個應(yīng)用)頁面添加交互行為岂丘。 可以直接嵌入HTML頁面陵究,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離。具有跨平臺特性奥帘,在絕大多數(shù)瀏覽器的支持下铜邮,可以在多種平臺下運行(如Windows、Linux寨蹋、Mac松蒜、Android、iOS等)已旧。

PHP是一種服務(wù)器端的秸苗、嵌入HTML的腳本語言。PHP區(qū)別其他像客戶端JavaScript 的地方是其代碼在服務(wù)器端執(zhí)行评姨,PHP可以做任何其他CGI程序所能做的事难述,例如收集表格數(shù)據(jù),生成動態(tài)頁面內(nèi)容吐句,或者收發(fā)cookies等胁后,PHP支持大范圍的數(shù)據(jù)庫。 Lisp是一種函數(shù)式程序設(shè)計語言嗦枢,屬于動態(tài)程序語言攀芯。 SQL(Structured Query Language,結(jié)構(gòu)化査詢語言)最早是IBM的圣約瑟研究實驗室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEM R開發(fā)的一種查詢語言文虏。SQL是高級的非過程化編程語言侣诺,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作殖演。該語言不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式年鸳,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng)可以使用相同的SQL語言作為數(shù)據(jù)輸入與管理的接口趴久。它以記錄集合作為操縱對象,所有SQL語句接受集合作為輸入搔确,返回集合作為輸出彼棍。SQL語言包含4個部分:數(shù)據(jù)查詢語言(SELECT語句)、數(shù)據(jù)操縱語言(INSERT膳算、UPDATE座硕、DELETE語句)、數(shù)據(jù)定義語言(如CREATE涕蜂、DROP等語句)和數(shù)據(jù)控制語言(如COMMIT华匾、ROLLBACK等語句)。 XML (Extensible Markup Language)是一種類似于HTML的標(biāo)記語言机隙,用來描述數(shù)據(jù)蜘拉。


計算機硬件只能識別由0、1字符串組成的機器指令序列黍瞧,即機器指令程序诸尽,因此機器指令程序是最基本的計算機語言原杂。用機器語言編制程序效率低印颤、可讀性差,難以理解和維護穿肄。

匯編語言年局,用容易記憶的符號代替0、1序列來表示機器指令中的操作碼和操作數(shù)咸产,例如矢否,用ADD表示加法、SUB表示減法等脑溢。雖然使用匯編語言編寫程序的效率和程序的可讀性有所提高僵朗,但匯編語言是面向機器的語言,其書寫格式在很大程度上取決于特定計算機的機器指令屑彻。

匯編語言源程序由若干條語句組成验庙,可分為指令語句、偽指令語句和宏指令語句三類社牲。

指令語句又稱為機器指令語句粪薛,將其匯編后能產(chǎn)生相應(yīng)的機器代碼,這些代碼能被CPU直接識別并執(zhí)行相應(yīng)的操作搏恤。

偽指令語句指示匯編程序在匯編源程序時完成某些工作违寿,比如給變量分配存儲單元地址湃交,給某個符號賦一個值等,偽指令語句經(jīng)匯編后不產(chǎn)生機器代碼藤巢。

允許用戶將多次重復(fù)使用的程序段定義為宏搞莺,宏指令語句就是宏的引用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掂咒,一起剝皮案震驚了整個濱河市腮敌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俏扩,老刑警劉巖糜工,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異录淡,居然都是意外死亡捌木,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門嫉戚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刨裆,“玉大人,你說我怎么就攤上這事彬檀》校” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵窍帝,是天一觀的道長努潘。 經(jīng)常有香客問我,道長坤学,這世上最難降的妖魔是什么疯坤? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮深浮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘飞苇。我一直安慰自己,他們只是感情好布卡,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布羽利。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪虚汛。 梳的紋絲不亂的頭發(fā)上皇帮,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天属拾,我揣著相機與錄音,去河邊找鬼渐白。 笑死,一個胖子當(dāng)著我的面吹牛纯衍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播瓦堵,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼菇用,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惋鸥?” 一聲冷哼從身側(cè)響起揩慕,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拴鸵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體八堡,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡兄渺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年挂谍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片口叙。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡俺亮,死狀恐怖疟呐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情启具,我是刑警寧澤,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布晓褪,位于F島的核電站,受9級特大地震影響涣仿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜愉镰,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一丈探、第九天 我趴在偏房一處隱蔽的房頂上張望拔莱。 院中可真熱鬧,春花似錦讼渊、人聲如沸尊剔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拯田,卻和暖如春甩十,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸭轮。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工窃爷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留姓蜂,地道東北人钱慢。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓束莫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親览绿。 傳聞我的和親對象是個殘疾皇子饿敲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

推薦閱讀更多精彩內(nèi)容