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

    文章

    3619

    浏览量

    93781
  • 计算机语言
    +关注

    关注

    1

    文章

    15

    浏览量

    9388

原文标题:深度:如果编程用中文!

文章出处:【微信号:EngicoolArabic,微信公众号:电子工程威廉希尔官方网站 】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    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 1472次阅读

    esp32什么软件编程

    ESP32是一款由乐鑫(Espressif)推出的低功耗、高性能的Wi-Fi和蓝牙双模微控制器,广泛应用于物联网、智能家居、智能穿戴等领域。要对ESP32进行编程,需要选择合适的编程软件和开发环境
    的头像 发表于 08-19 17:24 3636次阅读

    新一代智能插件AOI极速编程颠覆了传统AOI认知

    为了解决传统AOI自动光学检测设备存在的问题,新一代AI视觉前沿威廉希尔官方网站 公司将神经网路深度学习算法应用于AOI中,匠心打造了D系列产品,极速编程颠覆了传统AOI认知。
    的头像 发表于 06-25 15:00 772次阅读
    新一代智能插件AOI<b class='flag-5'>用</b>极速<b class='flag-5'>编程</b>颠覆了传统AOI认知

    三菱plcfx3u什么编程软件

    三菱PLC FX3U是一款非常受欢迎的小型可编程逻辑控制器,广泛应用于工业自动化领域。为了编写和调试FX3U PLC程序,我们需要使用专门的编程软件。本文将详细介绍三菱PLC FX3U的编程软件
    的头像 发表于 06-20 10:15 2727次阅读

    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 67次下载

    fpga什么语言编程

    FPGA(现场可编程门阵列)的编程主要使用硬件描述语言(HDL),其中最常用的是Verilog HDL和VHDL。
    的头像 发表于 03-14 18:17 2856次阅读

    fpga的是什么编程语言 fpga什么语言开发

    fpga的是什么编程语言 FPGA(现场可编程逻辑门阵列)主要使用的编程语言是硬件描述语言(HDL)。在众多的HDL中,Verilog HDL和VHDL是最常用的两种。 Verilo
    的头像 发表于 03-14 17:09 3542次阅读

    fpga芯片什么编程语言

    FPGA芯片主要使用的编程语言包括Verilog HDL和VHDL。这两种语言都是硬件描述语言,用于描述数字系统的结构和行为。
    的头像 发表于 03-14 16:07 1534次阅读

    fpga是什么 fpga什么编程语言

    FPGA(Field-Programmable Gate Array)是一种可编程逻辑威廉希尔官方网站 ,它使用可重构的硬件单元(如门阵列和查找表)来实现电路功能。相比传统的专用集成电路(ASIC),FPGA具有
    的头像 发表于 02-04 15:26 1727次阅读

    编程逻辑阵列(PLA)有什么

    PLA可以根据用户的需要进行编程,实现各种逻辑功能。通过编程,可以将多个逻辑门(如与门、或门、非门等)和触发器组合在一起,构建复杂的数字逻辑电路。
    的头像 发表于 02-02 11:30 3129次阅读
    可<b class='flag-5'>编程</b>逻辑阵列(PLA)有什么<b class='flag-5'>用</b>?

    假如伺服电机一键优化没有达到理想的效果,电流环、速度环和位置环该如何调节呢?

    请问哪位大神方便详细讲讲,假如伺服电机一键优化没有达到理想的效果,电流环、速度环和位置环该如何调节呢?全靠试吗?
    发表于 01-09 06:10