一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度解析:為什么編程語言不用中文?

5RJg_mcuworld ? 來源:YXQ ? 2019-07-31 16:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

之所以想寫這篇文章,是因?yàn)樽蛱煸陬^條看到了一個這樣的問題,但回答里有很多答案都讓人哭笑不得,更加讓人哭笑不得的是一些看似高大上但其實(shí)非常離譜的答案居然還有很多人點(diǎn)贊。

有人說一個漢字占兩個字符,一個英文字母只占一個字符,所以用中文編碼浪費(fèi)空間,轉(zhuǎn)化成二進(jìn)制的0101之后臃腫執(zhí)行效率低浪費(fèi)空間。

有人說漢字各種排列組合太復(fù)雜,可能性太多,而漢語一詞多意非常普遍,電腦理解起來會很吃力,很容易產(chǎn)生歧義,英文就要簡單的多。

更有人高大上的說,中國講究“一生二,二生三,三生萬物”,那么中國的計算機(jī)更可能采用三進(jìn)制,甚至八卦的八進(jìn)制來取代二進(jìn)制。

如果學(xué)過計算機(jī)組成原理和編譯原理,就會知道這些回答都是非常離譜的。因?yàn)閷I(yè)相關(guān),所以來和大家一起好好的聊一聊這個問題。

首先,我們要理解現(xiàn)在的計算機(jī)都是二進(jìn)制的電子計算機(jī)。二進(jìn)制就是說我們計算機(jī)的大腦(CPU)只認(rèn)識0和1這兩個數(shù)字,其他的東西它通通不認(rèn)識,不管是2345這些數(shù)字,還是我們在電腦手機(jī)里看到的圖片視頻軟件,他們最終都會被轉(zhuǎn)化成一堆一堆的0101,這一個0或者一個1就叫一個比特位(bit),八比特位組成一個字節(jié)(byte)。比如,一張100KB的圖片就是100*1000=10萬個字節(jié)=80萬個比特位,也就是說在計算機(jī)的眼里,這張100KB的圖片就是80萬個0101組成的一串東西。

那為什么我們非要用二進(jìn)制的0101來表示這些東西,而不是用人類更常用的十進(jìn)制的0123456789呢,十進(jìn)制的數(shù)字包含的信息明顯比二進(jìn)制多一些,這樣表達(dá)起來也要方便一些啊?主要是因?yàn)槭M(jìn)制在機(jī)器里要實(shí)現(xiàn)起來遠(yuǎn)沒有二進(jìn)制方便,你要讓計算機(jī)認(rèn)識0101總得用不同的東西來表示這兩個最基本的東西吧?如果只是區(qū)分兩個狀態(tài),那么太簡單了,大自然里到處都能找到這種自然對立的兩個狀態(tài),比如陰陽天地男女正負(fù)黑白等等等等。如果要用到機(jī)器里面去呢?最容易想到的就是開關(guān),在機(jī)器里弄一個開關(guān),開關(guān)開的時候表示1,關(guān)的時候表示0,多簡單。如果用一個東西同時表示10個狀態(tài),那么麻煩多了,以前也有人用齒輪的十個位置來表示十進(jìn)制的10個基本數(shù)字,但是問題一復(fù)雜就直接要崩潰了。所以后來大家形成的共識就是要想制造穩(wěn)定的計算機(jī),必須使用二進(jìn)制。

現(xiàn)在我們提到計算機(jī),大多數(shù)人都會感覺計算機(jī)的思想和設(shè)計都是20世紀(jì)快中葉時的事情。其實(shí)不然,早在19世紀(jì)初期,英國就有一個叫巴貝奇的牛逼科學(xué)家提出了現(xiàn)代計算機(jī)的模型,他的一生都在試圖制造這樣的計算機(jī),但是他失敗了。他失敗的原因一是因?yàn)樗乃枷朐诋?dāng)時實(shí)在是太超前了,根本沒多少人能理解,但是更重要的是他所處的時代機(jī)器的精度還遠(yuǎn)遠(yuǎn)不夠,因?yàn)槟菚r候還沒有到電子時代,他制作的計算機(jī)都是機(jī)械計算機(jī),只能用齒輪開關(guān)之類的東西實(shí)現(xiàn),但是無論多么精密的機(jī)械齒輪開放在現(xiàn)代計算機(jī)的眼里都太粗糙了。他的失敗是必然的,他所設(shè)計的那一套超前的計算機(jī)模型也只有等電子時代才能實(shí)現(xiàn),而這一等就是一個世紀(jì)。

電子計算機(jī)之所以能夠?qū)崿F(xiàn),主要是20世紀(jì)初出現(xiàn)了二極管。二極管是一個非常簡單的東西,它利用半導(dǎo)體的特性干了這么一件事:它只允許電流從一個方向經(jīng)過它。這樣我們就可以把二極管想象這樣一個電開關(guān):當(dāng)你給它一個高電平的時候,電流可以通過二極管,那么這個開關(guān)是開的;如果你給它一個低電平,那么電流就無法通過二極管,這時候這個開關(guān)就是關(guān)著的。利用這個特性,我們就可以用電平的高低來控制開關(guān)的閉合,而如果用開關(guān)的開表示1,關(guān)表示0,這樣我們就可以用電平的高低來表示二進(jìn)制的兩個數(shù)字1和0,而不再需要用齒輪或者機(jī)械開關(guān)來表示二進(jìn)制的01,這就是電子計算機(jī)的實(shí)現(xiàn)基礎(chǔ)。后來的三極管、晶體管以至于集成電路只是物理技術(shù)上的改進(jìn)。

明白了電子計算機(jī)的由來,接下來就要開始編程了。計算機(jī)被造出來了肯定不是拿來看的,要想讓計算機(jī)幫我們做事我們就必須“告訴”計算機(jī)想要他做什么,但是怎么告訴?你說話寫字它聽得懂么?當(dāng)然聽不懂,因?yàn)榍懊嬉呀?jīng)說了計算機(jī)只認(rèn)識0101,其他的一概不認(rèn)識,所以,你如果想和計算機(jī)交流,那么,請用0101跟他們交流。最開始的編程就是這樣的,他們在一個長長的紙帶上面打了各種各樣的空,打孔的代表1,不打孔的代表0,計算機(jī)把這一串的穿孔紙帶讀進(jìn)去就識別了一連串的0101,然后他就工作去了。

注意,事情發(fā)展到現(xiàn)在并沒有出現(xiàn)任何中文編碼英文編碼的事情,現(xiàn)在的編程用的是打孔的紙帶,這顯然不是任何一個國家的語言。也就是說主流編程語言都用的是英語而不是漢語的原因,現(xiàn)在還沒到,還需要繼續(xù)往下走。

在往下走就是人類的偷懶時代了。直接打0110計算機(jī)看看得是爽,但是人看得不爽啊,人要編寫一段程序就要不停的寫一大串0101,這太難寫太難讀而且太容易出錯了,隨便哪個地方把0寫成了1都會出問題,于是人類就要想辦法偷懶了,人們就把在編程中會用到的這些固定0101串用一些簡單的英文字母來表示。比如“1000100111011000” 就按照約定被替換成了“mov ax,bx ”,執(zhí)行程序的時候另外再讓用另外一個程序把這些字母按規(guī)則重新變成0101,這個程序就叫編譯器,因?yàn)楹竺娴恼Z言被叫匯編語言,所以這種程序就被稱為匯編編譯器。

到這里我們第一次發(fā)現(xiàn)了英文字母的身影,為什么這里的匯編語言要用英文寫呢?當(dāng)匯編語言的思想流行起來后,大家就一致決得必須拋棄0101這種折磨死人不償命的機(jī)器代碼了,然后生產(chǎn)處理器的廠家就直接把各種操作處理器的指令用匯編語言表示了,這樣你就可以直接使用這些匯編語言寫成的指令去直接控制處理器。因?yàn)橐蛱貭柺翘幚砥黝I(lǐng)域的王者,你要使用英特爾的處理器就必須使用它規(guī)定的那些匯編指令,英特爾是美國的公司,因此他用英文編寫這些指令就非常正常了。如果這時候處理器的霸主是中國的公司,而這家中國的公司用特定的漢字去代替這些0101,那么一樣可以形成漢字的指令集。所以,匯編這一層用什么語言主要看生產(chǎn)處理器的公司用啥語言。

時代繼續(xù)往前走,人們繼續(xù)越來越懶。雖然匯編語言看起來比0101這種東西舒服多了,但是它僅僅是把0101這種東西一個字一個字對應(yīng)的翻譯過來了,但是它的思維依然是機(jī)器的思維,不符合人類自己的思維習(xí)慣。這種感覺就像是讓一個英國人去讀“You can you up,no zuo no die”這種中式英語,他肯定是一頭霧水。于是人們要繼續(xù)開發(fā)更加符合人類自己思維的的語言,畢竟寫程序的是人不是機(jī)器,用符合他自己思維的語言去寫程序肯定更加輕松。于是在匯編語言之后又出現(xiàn)了一大堆更加高級的編程語言,我們就以其中大名鼎鼎的C語言為例。

C語言有多牛逼?我隨便舉一個例子你就你就明白了:現(xiàn)在主流的操作系統(tǒng),不管是Windows、Linux、Unix還是安卓 IOS,它都是用C語言寫的(有的在一些特殊的地方還包含一些匯編)。C語言是怎么工作的呢,你隨便發(fā)明一種新的語言這計算機(jī)的處理器認(rèn)得么?C語言它當(dāng)然不認(rèn)得,但是你不是認(rèn)得匯編指令么,那么我用C語言寫好一個程序之后再利用一個軟件將C語言翻譯成匯編語言讓你執(zhí)行不就是了。實(shí)際上它也是這么干的,這個把C語言翻譯成匯編語言的東西就叫編譯器。

這樣問題就簡單了,C語言之所以是是用英文寫的,是因?yàn)榘l(fā)明C語言的人是個美國人,他發(fā)明了C語言之后再弄一個能把C語言翻譯成匯編語言的編譯器就完了。所以我們看到了問題的核心其實(shí)在編譯器上,只要你高興,你完全可以隨意定義一套編程語言,定義一套語法,你也完全可以讓人用中文來寫程序,但是你要是想讓你發(fā)明的新語言能夠正常工作,你必須給他弄一個配套的編譯器出來,用這個編譯器把你發(fā)明的語言翻譯成匯編語言。大學(xué)計算機(jī)學(xué)院都會有一門非常重要的課程叫《編譯原理》,就是專門教你怎么去開發(fā)編譯器的。

所以,我們知道了開發(fā)一門新的語言是很簡單的,只需要你自己定義一套語法,再弄一個編譯器就行了,真正難的是推廣,為什么別人要用你開發(fā)的語言?如果你發(fā)明的語言沒有什么特別大的優(yōu)勢,我為什么要放著原來熟悉的語言不用用你的?除非你能像蘋果一樣硬:想不想開發(fā)IOS的app來賺錢了?想的話就老老實(shí)實(shí)的用我的語言,別廢話。C語言那么牛逼,為什么到了90年代Java又流行起來了呢?因?yàn)橛肑ava來做網(wǎng)絡(luò)編程比C語言要簡單的多,這個簡單的多的意思就是Java的編譯器幫你翻譯了很多很多網(wǎng)絡(luò)相關(guān)的事情,這樣你要做的事情就簡單的多了。

所以,在這一層面上用什么國家的語言開發(fā)編程語言都是可以的,中文、英文、法文、德文都沒問題,也是很簡單的,只要你在配套的弄一個編譯器出來就行了。其實(shí),易語言就是用中文開發(fā)的編程語言。

說到這里,再回過頭來看開頭的問題就簡單了。不管是哪個國家的人先發(fā)明了計算機(jī),在0101打孔的時代都是一樣的。然后,除了匯編語言要和生產(chǎn)處理器的廠家綁定以外,其他的高級語言都是很自由的,這些高級語言對你是用中文還是英文編寫沒有任何的限制,而我們現(xiàn)在的主流編程語言也都是這些高級編程語言,直接使用匯編語言的已經(jīng)非常少了。之所以現(xiàn)在主流的編程語言里都是英文,主要還是因?yàn)檫@些高級語言的發(fā)明者都是說英語的(主要是美國人)。

至于那些說中文編程語言占空間大或者中文語義難以理解的都是錯誤的看法。不管你用的是什么語言,這些語言在執(zhí)行前都會被編譯成匯編語言,你書寫占用的空間大一點(diǎn)對程序的執(zhí)行沒有任何影響。而說中文語義多難以理解的,要理解你寫的高級語言不是處理器,而是你自己寫的編譯器,如果使用你的語言會產(chǎn)生歧義,那只能說明你寫的編譯器嚴(yán)重不合格,這跟中文英文沒有任何關(guān)系。

最后,如果你自己想去設(shè)計自己的編程語言,就去好好學(xué)學(xué)編譯原理把。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    807

    瀏覽量

    42319
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1956

    瀏覽量

    36635

原文標(biāo)題:深度:如果編程用中文!

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    深度操作系統(tǒng)deepin 25全面支持凹語言

    近日,deepin(深度)社區(qū)宣布,deepin 25 現(xiàn)已完成對國產(chǎn)通用編程語言語言 (Wa-Lang) 的兼容性測試。在 deepin 25 默認(rèn)安裝環(huán)境下,即可直接使用凹
    的頭像 發(fā)表于 07-10 15:26 ?278次閱讀
    <b class='flag-5'>深度</b>操作系統(tǒng)deepin 25全面支持凹<b class='flag-5'>語言</b>

    Nginx核心功能深度解析

    Nginx核心功能深度解析
    的頭像 發(fā)表于 05-09 10:50 ?281次閱讀

    數(shù)字電路編程語言介紹

    數(shù)字電路編程語言是專門為描述和模擬數(shù)字電路而設(shè)計的編程語言。它們通常具有以下特點(diǎn): 硬件描述語言(HDL) :大多數(shù)數(shù)字電路
    的頭像 發(fā)表于 01-24 09:39 ?771次閱讀

    gitee 支持的編程語言有哪些

    Gitee(碼云)是一個基于 Git 的代碼托管和研發(fā)協(xié)作平臺,類似于 GitHub 和 GitLab。它支持多種編程語言,允許開發(fā)者托管和管理代碼,進(jìn)行版本控制,以及協(xié)作開發(fā)。以下是一些
    的頭像 發(fā)表于 01-06 09:50 ?672次閱讀

    三菱PLC編程語言解析

    (Sequential Function Chart, SFC)等。以下是對這些編程語言的簡要解析: 1. 梯形圖(Ladder Diagram, LD) 梯形圖是PLC編程中最常用的
    的頭像 發(fā)表于 12-26 17:36 ?1335次閱讀

    Triton編譯器支持的編程語言

    編寫和優(yōu)化深度學(xué)習(xí)代碼。Python是一種廣泛使用的高級編程語言,具有簡潔易讀、易于上手、庫豐富等特點(diǎn),非常適合用于深度學(xué)習(xí)應(yīng)用的開發(fā)。 二、領(lǐng)域特定
    的頭像 發(fā)表于 12-24 17:33 ?963次閱讀

    深度解析 4G模組GPIO編程技巧篇

    本文將解析4G模組GPIO編程技巧,從概述、軟硬件環(huán)境準(zhǔn)備、示例等詳細(xì)道來:
    的頭像 發(fā)表于 11-20 23:08 ?684次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>解析</b>  4G模組GPIO<b class='flag-5'>編程</b>技巧篇

    編程語言的誤區(qū)與常見問題

    誤區(qū)一:編程語言的選擇 常見問題: 初學(xué)者在選擇編程語言時,往往會被市場上的熱門語言所吸引,而忽視了自己的實(shí)際需求和興趣。 一些開發(fā)者認(rèn)為某
    的頭像 發(fā)表于 11-15 09:35 ?749次閱讀

    NPU支持的編程語言有哪些

    NPU(Neural Processing Unit)是一種專門為深度學(xué)習(xí)和人工智能應(yīng)用設(shè)計的處理器。NPU支持的編程語言通常與它所集成的平臺或框架緊密相關(guān)。以下是一些常見的編程
    的頭像 發(fā)表于 11-15 09:21 ?1920次閱讀

    MCU編程語言和開發(fā)環(huán)境介紹

    微控制器單元(Microcontroller Unit,簡稱MCU)是嵌入式系統(tǒng)的核心,廣泛應(yīng)用于各種電子產(chǎn)品中。隨著技術(shù)的發(fā)展,MCU編程語言和開發(fā)環(huán)境也在不斷進(jìn)步,以適應(yīng)不同的應(yīng)用需求。 1.
    的頭像 發(fā)表于 11-01 11:51 ?2194次閱讀

    C語言與其他編程語言的比較

    C語言作為一種歷史悠久的編程語言,自其誕生以來,一直在軟件開發(fā)領(lǐng)域扮演著重要角色。它以其高效、靈活和可移植性強(qiáng)的特點(diǎn),成為了系統(tǒng)級編程的首選語言
    的頭像 發(fā)表于 10-29 17:30 ?1077次閱讀

    Orin芯片的編程語言支持

    Orin是一款高度集成、高性能的車載計算平臺,由英偉達(dá)推出,并采用了英偉達(dá)自家的Volta架構(gòu)GPU和其他高級處理器技術(shù)。關(guān)于Orin芯片的編程語言支持,可以從以下幾個方面進(jìn)行介紹: 一、主要編程
    的頭像 發(fā)表于 10-27 16:45 ?983次閱讀

    plc編程語言編程相關(guān)技巧有哪些

    PLC(可編程邏輯控制器)編程語言及相關(guān)編程技巧是工業(yè)自動化領(lǐng)域中不可或缺的知識。 一、PLC編程語言
    的頭像 發(fā)表于 10-21 16:56 ?1109次閱讀

    技術(shù)干貨驛站 ▏深入理解C語言編程高手必備,全方位解析運(yùn)算符的核心技能!

    在C語言編程領(lǐng)域中,運(yùn)算符是實(shí)現(xiàn)數(shù)據(jù)處理與邏輯操作的關(guān)鍵工具。無論是在處理簡單的數(shù)值計算,還是在構(gòu)建復(fù)雜的邏輯結(jié)構(gòu)時,運(yùn)算符的使用貫穿始終。作為編程語言的基礎(chǔ)組成部分之一,運(yùn)算符不僅
    的頭像 發(fā)表于 09-18 15:56 ?765次閱讀
    技術(shù)干貨驛站 ▏深入理解C<b class='flag-5'>語言</b>:<b class='flag-5'>編程</b>高手必備,全方位<b class='flag-5'>解析</b>運(yùn)算符的核心技能!

    plc編程st語言怎么編

    PLC(可編程邏輯控制器)編程中的ST(Structured Text)語言是一種高級編程語言,它類似于Pascal或C
    的頭像 發(fā)表于 08-25 10:05 ?2803次閱讀