中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

漫談計算機(jī)語言-創(chuàng)新互聯(lián)

面對需求人員不斷提出的變態(tài)需求,軟件開發(fā)人員的主要工作就是將需求人員口中或文檔中的自然語言翻譯成計算機(jī)能夠理解的形式語言。自然語言指的是人類的語言,比如漢語、英語等,它具有多義性(在不同的上下文中,意義是不同的),冗余性(語法錯了一點(diǎn) 并不會讓人引起誤解)。而形式語言是用精確的數(shù)學(xué)或機(jī)器可處理的公式定義的語言,例如計算機(jī)編程語言,它的特點(diǎn)就是語法非常嚴(yán)格,并不具有多義性和冗余性。

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括介休網(wǎng)站建設(shè)、介休網(wǎng)站制作、介休網(wǎng)頁制作以及介休網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,介休網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到介休省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

計算機(jī)編程語言可以分為高級語言低級語言。高級語言編程更加容易、維護(hù)容易,具備可移植性(一份代碼可以運(yùn)行在多個平臺上),典型代表 :Java、Python、C、C++、Ruby、C#等。低級語言只能在某個平臺上運(yùn)行,不具備可移植性,比如說我們在Intel x86編寫的代碼,無法在PowerPC或ARM上運(yùn)行,它的典型代表有機(jī)器語言和匯編語言。

高級語言中又可以分為解釋型語言(interpreting)編譯型語言(compiling)。解釋型語言通過解釋器讀入高級語言寫的指令,然后解釋執(zhí)行,Ruby、Python、PHP都是解釋型語言。編譯型語言使用編譯器把高級語言變成目標(biāo)代碼。下面舉個例子來介紹解釋型語言和編譯型語言的區(qū)別。

sum = x*4  - y

針對上面這行代碼,計算機(jī)首先要做詞法分析,將代碼變成一個個token。下圖中的每一行表示一個token。
漫談計算機(jī)語言

再獲得token之后,進(jìn)行語法分析 構(gòu)建抽象語法樹(AST)。
漫談計算機(jī)語言

解釋型語言會對抽象語法樹進(jìn)行解釋執(zhí)行,而編譯型語言會繼續(xù)進(jìn)行語義分析、中間代碼生成、代碼優(yōu)化目標(biāo)代碼生成。

目前很多語言都是混合了解釋和編譯,例如Java,如下圖所示,Java編譯器先把Java編譯成Class文件,然后在各個JVM上解釋執(zhí)行,由于每個平臺對應(yīng)一個JVM,因此Java是跨平臺的。由于2-8原則的存在,JVM發(fā)現(xiàn)一段代碼經(jīng)常執(zhí)行,那么,JVM將這段代碼編譯成本地代碼,即如果有熱點(diǎn)代碼,就編譯成本地代碼(Native Code)。

漫談計算機(jī)語言

計算機(jī)高級語言還可以分為靜態(tài)語言動態(tài)語言。靜態(tài)語言是代碼經(jīng)過編譯之后,類型就確定了,典型代表就是Java。靜態(tài)語言可以通過IDE來進(jìn)行類型錯誤檢查。而動態(tài)語言類型錯誤無法在編譯期檢查出來,會在運(yùn)行期出現(xiàn)。為了幫助大家更好的理解,直接上代碼。當(dāng)執(zhí)行test(new Women()),IDEA會報告編譯出錯。為了消除這個錯誤,我們可以抽象出一個對象Person,然后讓ManWomen都繼承于這個Person,而且void test(Person p),這樣一來既消除了錯誤,又維護(hù)了原有的功能。

class Man {
  public void eat(){
    System.out.println(" man eat!");
  }
}
class Women {
  public void eat(){
    System.out.println(" Women eat!");
  }
}

void test(Man m){
  m.eat();
}

如何定義一門語言

通過上述內(nèi)容的介紹,我們知道了計算機(jī)語言的分類,那么,我們該如何
定義一門語言呢?選我們需要定義BNF。通過BNF來判定源代碼是否符合該規(guī)范。下面,以Java的Class的BNF為例。

  • 修飾符(modifier)是“public、private、protected、static等”關(guān)鍵字(keyword)之一;

  • 修飾符之后是class關(guān)鍵字,class之后是標(biāo)識符(identifier),標(biāo)識符是有“a...z $..”組成

  • 可選的extends

  • 可選的implements

具體實(shí)例

public class Employee extend Person{
    ...
? ? 略
    ...

}

編譯器首先讀取public這個token,同時,由于編譯器事先知道BNF,那么 它知道public是modifier是符合語法的。

然后,編譯器讀入class,同BNF進(jìn)行比較,符合語法的。直到編譯器讀入extend,發(fā)現(xiàn)和BNF規(guī)定的不相符,提示錯誤。

如果源代碼符合BNF規(guī)則,則繼續(xù)進(jìn)行詞法分析、語法分析、語義分析等等,這里就不做過多介紹了,我會在后續(xù)文章中詳細(xì)介紹的。

所有語言的基本邏輯

  • 順序

  • 分支(if else,switch)

  • 循環(huán)(while 、for)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:漫談計算機(jī)語言-創(chuàng)新互聯(lián)
鏈接地址:http://www.rwnh.cn/article24/dcieje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)頁設(shè)計公司關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
徐闻县| 周至县| 衡水市| 介休市| 绥化市| 景宁| 思茅市| 杭锦后旗| 阿拉善盟| 淄博市| 龙里县| 疏勒县| 河北区| 海兴县| 大宁县| 大宁县| 海宁市| 沧州市| 保康县| 封开县| 洞口县| 绩溪县| 淮滨县| 迁西县| 平顶山市| 邹平县| 漳浦县| 朝阳区| 阿拉善右旗| 桂林市| 宁夏| 比如县| 阳曲县| 河北省| 朔州市| 五峰| 平和县| 宜章县| 宁南县| 新蔡县| 平果县|