chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

假如編程用中文?

電子工程技術(shù) ? 來(lái)源:YXQ ? 2019-08-12 14:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    關(guān)注

    90

    文章

    3708

    瀏覽量

    96784
  • 計(jì)算機(jī)語(yǔ)言

    關(guān)注

    1

    文章

    15

    瀏覽量

    9624

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

文章出處:【微信號(hào):EngicoolArabic,微信公眾號(hào):電子工程技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    請(qǐng)問(wèn)NucleiStudio有中文版嗎?

    NucleiStudio有中文版嗎?
    發(fā)表于 11-11 06:59

    kconfig里寫的英文,setting里面顯示的是中文,這是什么原因?qū)е碌模?/a>

    最近在學(xué)習(xí)artpi2,發(fā)現(xiàn)圖片顯示的這里 這里的是英文,但是setting這里是中文 gpio的setting上也有類似的現(xiàn)象,請(qǐng)問(wèn)這是什么原因?qū)е碌?/div>
    發(fā)表于 09-22 06:10

    HarmonyOSAI編程DevEco AI輔助編程工具

    DevEco AI輔助編程工具(CodeGenie)基于BitFun Platform AI能力平臺(tái),為開發(fā)者提供高效的應(yīng)用與服務(wù)AI編程支持,支持智能知識(shí)問(wèn)答、代碼生成、頁(yè)面生成、萬(wàn)能卡片生成
    發(fā)表于 08-18 14:54

    安捷倫Agilent 34411A數(shù)字萬(wàn)

    讀數(shù)/秒、1M 易失性存儲(chǔ)器、模擬觸發(fā)電平調(diào)節(jié)和可編程的前觸發(fā)/后觸發(fā)等特性。 詳情介紹: 安捷倫Agilent 34411A數(shù)字萬(wàn)表 Agilent 34411A數(shù)字萬(wàn)表以工業(yè)標(biāo)準(zhǔn)
    的頭像 發(fā)表于 08-13 16:31 ?738次閱讀
    安捷倫Agilent 34411A數(shù)字萬(wàn)<b class='flag-5'>用</b>表

    黃仁勛中文演講全文分享 中國(guó)人工智能模型世界一流 黃仁勛中文演講提了11家中國(guó)公司

    第三屆中國(guó)國(guó)際供應(yīng)鏈促進(jìn)博覽會(huì)于7月16日在北京開幕,英偉達(dá)首度參展。黃仁勛出席并在第三屆中國(guó)國(guó)際供應(yīng)鏈促進(jìn)博覽會(huì)開幕式上發(fā)表演講, 黃仁勛中文演講 在第三屆中國(guó)國(guó)際供應(yīng)鏈促進(jìn)博覽會(huì)開幕式上黃仁勛
    的頭像 發(fā)表于 07-16 18:36 ?1112次閱讀

    STM32固件庫(kù)使用手冊(cè)的中文翻譯版

    STM32固件庫(kù)使用手冊(cè)的中文翻譯版
    發(fā)表于 06-09 22:38

    STM32參考手冊(cè)——中文

    STM32參考手冊(cè)——中文版,推薦下載!
    發(fā)表于 06-09 22:37

    在Linux中,新設(shè)置對(duì)CY7C65215重新編程后,如何啟用新設(shè)置?

    在 Linux 系統(tǒng)下,如何 1. Linux 中的編程新設(shè)置配置 CY7C65215? 如\"USB 串口配置實(shí)用程序\" 或命令行 fwDownload.exe。 2.在
    發(fā)表于 05-26 08:23

    H5U系列可編程邏輯控制器指令手冊(cè)

    INOVANCE匯川-H5U系列可編程邏輯控制器指令手冊(cè)-中文
    發(fā)表于 04-30 16:38 ?7次下載

    PSoC6怎么設(shè)置Flash讀保護(hù),防止編程器讀出?

    PSoC6 怎么設(shè)置Flash讀保護(hù),防止編程器讀出
    發(fā)表于 04-21 06:15

    請(qǐng)問(wèn)STM32cubeMX中文版怎么設(shè)置?

    STM32cubeMX中文版怎么設(shè)置?
    發(fā)表于 03-13 06:12

    求助,網(wǎng)上看到可以composite.h和composite.c進(jìn)行編程,我的STM32CUBEIDE怎么沒(méi)有?

    網(wǎng)上看到可以composite.h和composite.c進(jìn)行編程,我的STM32CUBEIDE怎么沒(méi)有?
    發(fā)表于 03-12 07:16

    DLP6500能否Python編程進(jìn)行開發(fā),是否有API接口?

    本人第一次接觸DLP的開發(fā)板,想知道DLP6500這款板子能否Python編程進(jìn)行開發(fā),是否有API接口?
    發(fā)表于 02-28 06:58

    DAC8043UC做可編程增益控制(衰減)是否可行?

    請(qǐng)問(wèn)DAC8043UC做可編程增益控制(衰減)是否可行?Vref腳作為電壓輸入,頻率固定1KHz,Vpp 在50nV至5V之間,DAC8043后面有放大電路,謝謝!
    發(fā)表于 02-14 06:08

    EE-33:C語(yǔ)言對(duì)ADSP-21xx定時(shí)器進(jìn)行編程

    電子發(fā)燒友網(wǎng)站提供《EE-33:C語(yǔ)言對(duì)ADSP-21xx定時(shí)器進(jìn)行編程.pdf》資料免費(fèi)下載
    發(fā)表于 01-15 15:46 ?0次下載
    EE-33:<b class='flag-5'>用</b>C語(yǔ)言對(duì)ADSP-21xx定時(shí)器進(jìn)行<b class='flag-5'>編程</b>