色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

假如編程用中文?

電子工程技術 ? 來源:YXQ ? 2019-08-12 14:45 ? 次閱讀

之所以想寫這篇文章,是因為昨天在頭條看到了一個這樣的假設,但回答里有很多答案都讓人哭笑不得,更加讓人哭笑不得的是一些看似高大上但其實非常離譜的答案居然還有很多人點贊。

有人說一個漢字占兩個字符,一個英文字母只占一個字符,所以用中文編碼浪費空間,轉化成二進制的0101之后臃腫執行效率低浪費空間。

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

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

如果學過計算機組成原理和編譯原理,就會知道這些回答都是非常離譜的。因為專業相關,所以來和大家一起好好的聊一聊這個問題。

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

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

現在我們提到計算機,大多數人都會感覺計算機的思想和設計都是20世紀快中葉時的事情。其實不然,早在19世紀初期,英國就有一個叫巴貝奇的牛逼科學家提出了現代計算機的模型,他的一生都在試圖制造這樣的計算機,但是他失敗了。他失敗的原因一是因為他的思想在當時實在是太超前了,根本沒多少人能理解,但是更重要的是他所處的時代機器的精度還遠遠不夠,因為那時候還沒有到電子時代,他制作的計算機都是機械計算機,只能用齒輪開關之類的東西實現,但是無論多么精密的機械齒輪開放在現代計算機的眼里都太粗糙了。他的失敗是必然的,他所設計的那一套超前的計算機模型也只有等電子時代才能實現,而這一等就是一個世紀。

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

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

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

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

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

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

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

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

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

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

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

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

最后,如果你自己想去設計自己的編程語言,就去好好學學編譯原理吧。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93916
  • 計算機語言
    +關注

    關注

    1

    文章

    15

    瀏覽量

    9396

原文標題:深度:如果編程用中文!

文章出處:【微信號:EngicoolArabic,微信公眾號:電子工程技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    EE-33:C語言對ADSP-21xx定時器進行編程

    電子發燒友網站提供《EE-33:C語言對ADSP-21xx定時器進行編程.pdf》資料免費下載
    發表于 01-15 15:46 ?0次下載
    EE-33:<b class='flag-5'>用</b>C語言對ADSP-21xx定時器進行<b class='flag-5'>編程</b>

    TMAG5328電阻器和電壓可編程霍爾效應開關實現可編程性和診斷

    電子發燒友網站提供《TMAG5328電阻器和電壓可編程霍爾效應開關實現可編程性和診斷.pdf》資料免費下載
    發表于 09-11 10:01 ?0次下載
    <b class='flag-5'>用</b>TMAG5328電阻器和電壓可<b class='flag-5'>編程</b>霍爾效應開關實現可<b class='flag-5'>編程</b>性和診斷

    倉頡來啦,辟謠:不是中文編程

    倉頡來啦,辟謠:不是中文編程 大家還記得6月21日召開的華為開發者大會(HDC 2024)上,華為內部研發已久的國產自主編程語言倉頡終于正式對外官宣。 隨著萬物互聯以及智能時代的到來,軟件的形態
    發表于 09-03 08:50

    stm32單片機什么軟件編程

    STM32單片機是一種廣泛應用于嵌入式系統領域的微控制器,具有高性能、低功耗、豐富的外設接口等特點。要對STM32單片機進行編程,需要選擇合適的軟件工具。 概述 STM32單片機
    的頭像 發表于 09-02 10:16 ?1860次閱讀

    esp32什么軟件編程

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍牙雙模微控制器,廣泛應用于物聯網、智能家居、智能穿戴等領域。要對ESP32進行編程,需要選擇合適的編程軟件和開發環境
    的頭像 發表于 08-19 17:24 ?4190次閱讀

    新一代智能插件AOI極速編程顛覆了傳統AOI認知

    為了解決傳統AOI自動光學檢測設備存在的問題,新一代AI視覺前沿技術公司將神經網路深度學習算法應用于AOI中,匠心打造了D系列產品,極速編程顛覆了傳統AOI認知。
    的頭像 發表于 06-25 15:00 ?848次閱讀
    新一代智能插件AOI<b class='flag-5'>用</b>極速<b class='flag-5'>編程</b>顛覆了傳統AOI認知

    三菱plcfx3u什么編程軟件

    三菱PLC FX3U是一款非常受歡迎的小型可編程邏輯控制器,廣泛應用于工業自動化領域。為了編寫和調試FX3U PLC程序,我們需要使用專門的編程軟件。本文將詳細介紹三菱PLC FX3U的編程軟件
    的頭像 發表于 06-20 10:15 ?2928次閱讀

    esp idf是否有支持中文路徑解析的接口?

    我在SD卡中有一個中文路徑下的文件需要讀取,使用fopen不可行,因為不支持中文,編碼格式不同,網上搜了一下可以wfopen,轉換成寬字符來做這件事,但是我使用wfopen的時候編譯會報
    發表于 06-05 08:03

    這個工程是什么上位機軟件編程

    這個工程是什么上位機軟件來編程的*附件:22041701ES-X86-R-Flank8 10 12組.rar
    發表于 06-03 18:30

    STM32F030單片機編程中文參考資料

    電子發燒友網站提供《STM32F030單片機編程中文參考資料.pdf》資料免費下載
    發表于 04-01 09:43 ?68次下載

    fpga什么語言編程

    FPGA(現場可編程門陣列)的編程主要使用硬件描述語言(HDL),其中最常用的是Verilog HDL和VHDL。
    的頭像 發表于 03-14 18:17 ?2911次閱讀

    fpga的是什么編程語言 fpga什么語言開發

    fpga的是什么編程語言 FPGA(現場可編程邏輯門陣列)主要使用的編程語言是硬件描述語言(HDL)。在眾多的HDL中,Verilog HDL和VHDL是最常用的兩種。 Verilo
    的頭像 發表于 03-14 17:09 ?3609次閱讀

    fpga芯片什么編程語言

    FPGA芯片主要使用的編程語言包括Verilog HDL和VHDL。這兩種語言都是硬件描述語言,用于描述數字系統的結構和行為。
    的頭像 發表于 03-14 16:07 ?1591次閱讀

    fpga是什么 fpga什么編程語言

    FPGA(Field-Programmable Gate Array)是一種可編程邏輯技術,它使用可重構的硬件單元(如門陣列和查找表)來實現電路功能。相比傳統的專用集成電路(ASIC),FPGA具有
    的頭像 發表于 02-04 15:26 ?1830次閱讀

    編程邏輯陣列(PLA)有什么

    PLA可以根據用戶的需要進行編程,實現各種邏輯功能。通過編程,可以將多個邏輯門(如與門、或門、非門等)和觸發器組合在一起,構建復雜的數字邏輯電路。
    的頭像 發表于 02-02 11:30 ?3219次閱讀
    可<b class='flag-5'>編程</b>邏輯陣列(PLA)有什么<b class='flag-5'>用</b>?
    主站蜘蛛池模板: 一级做a爰片久久毛片免费 一级做a爰片久久毛片潮喷动漫 | 色偷偷成人网免费视频男人的天堂 | 国产做国产爱免费视频 | 福利一区福利二区 | 亚州三级久久电影 | 亚洲免费在线视频 | 中文字幕成人 | 色午夜日本高清视频www | 伊人最新网址 | 国产在线观看不卡 | AV国产乱码一区二区三视频 | 妞干网手机免费视频 | 女侠含泪巨臀迎合79 | 大香伊蕉在人线国产最新 | 国产精品综合AV一区二区国产馆 | 国语自产二区高清国语自产拍 | 国产午夜AV无码无片久久96 | 91交换论坛| 国产成人啪精品视频免费网 | 午夜婷婷一夜七次郎 | 成人高清网站 | 高h肉文合集 | 亚州精品视频 | 国产中文字幕在线 | 国产AV午夜精品一区二区入口 | 在线二区 中文 无码 | 恋夜秀场1234手机视频在线观看 | 丰满的女朋友韩国版在线观看 | 村上里沙快播 | 成人欧美一区二区三区白人 | 小舞被爆操| 777久久人妻少妇嫩草AV | 中字幕视频在线永久在线观看免费 | 999久久久国产 | 成年妇女免费播放 | 精品网站一区二区三区网站 | 99久久久久国产精品免费 | 一二三四在线视频社区 | 好男人好资源在线播放 | 欧美人与动牲交XXXXBBBB免费 | 国产扒开美女双腿屁股流白浆 |