为什么没有人创造一种中文的编程软件?

小阿呆的故事


为啥总是追求中文编程,无论中文还是英文,只是一种载体,而英文或者说符号化在编程领域有着中文无法比拟的优势,就是简洁,比如if,英语只需要两个按键,中文需要ruguo5个按键,还有,编程与英语无关,只是借用英语这个语言,英语啥都不会也不影响学习编程,一个编程语言就那几个关键字,其他的都用拼音不也一样,我就是学习计算机的,英语极差,但也不影响我学习编程


浅梦凉城


从这个问题来看,题主有一腔热情,但是又对计算机编程的认识不够深刻。在此先说明一下,不是没有中文编程软件,而是不实用,难以解决现实问题,所以知道的人并不多。

先看一段简单的中文程序,关键字、类型、注释等等全是中文,可是这对程序员来说,并没有实际意义,甚至还不如使用英文关键字高效。为什么这么说呢,讲点理论性的东西,就当是做一次科普,希望题主能看懂。

假设某计算机的全体机器指令组成的集合为X,从X中取出一些指令(可重复取同一指令)并组成一个有效的序列称x,则x就是一段用机器语言编写的程序。假设某高级编程语言的全体指令组成的集合为Y,从Y中取一些指令组成一个有效的序列y,则y就是一段用该语言编写的程序。高级语言编写的程序不能直接执行,需要编译器(针对编译型语言,如C/C++等)或者解释器(解释型语言,如javascript、python等)将它们转换为机器语言,也就是将一个由集合Y的元素组成的变量,映射为一个由集合X的元素组成的变量,这就是编程软件做的工作。所以从理论上来说,中文编程、英文编程、或者其它语言编程,只需要将集合Y中的指令和关键字换位不同的语言,就可以实现不同语言编程,这并不难实现,甚至不用改变编译器的源代码,只要使用一些技巧就可以实现中文编程,如上面的程序所示。

既然中文编程可行,为什么没有大范围推广呢,这就要从编程语言的功能说起。编程语言的根本功能是要方便将现实问题用一种高效的方式描述,并转换为计算机可以理解和执行的指令。每一种编程语言就是一种描述问题的方式,对应有一套自己的方法论,比如汇编语言是面向指令的编程,C语言是面向过程的编程,C#、Java等是基于虚拟机的面向对象编程,Lisp是函数式编程语言,Ptyhon是混合编程,此外还有如Labview、Prolog以及PLC中的梯形图,都有不同的编程模型与方法论。开发一门新的编程语言的本质就是要开发一套新的方法论,而这个一方面需要对实际问题的深度认识,另一方面需要扎实的计算机理论知识。

计算机最先起源于欧美,所以很多编程语言由它们发明是很自然的事情,但是随着计算机应用的不断推广,我国在这方面也逐渐追赶上来,相信在不久的未来一定会有一套由中国人提出的编程方法论以及配套的编程语言。


编码之道


首先明确一点,的确有人创造了一种中文的编程软件,“易语言”就是,不过这么多年了,基本处于没人管的状态了。

究其原因,个人觉得将程序语言由英文替换成中文其实是伪需求。原因如下:

第一、意义不大:

首先,虽然在常人看来代码看起来特别难懂,就像是天书,但是大学只要学过计算机语言的都能知道,代码里那些看起来特别“高大上”“难懂”的英文只是表面工夫,重点是里面的算法、逻辑。

比如一些代码常用的英文,在一般人看来是:

Compile、Run、Class、Object、System、out、print、line、variable、type、static、array、parameter、method、function、public、default、get、private、import、set、package、access、protected、void、final......

但是常年跟代码打交道的程序员看到的是:

编绎、运行、类、对象、系统、输出、打印、行、变量、类型、静态的、数组、参数、方法、函数、公有的、默认、得到、私有的、导入、设置、包、访问、受保护的、无(返回类型)、最终的不能改变的......

所以,这样对比下来,代码里出现的那些英文相对于四六级来说,简直是so easy了~将英文替换成中文的意义不是很大~


第二、没必要:

那些英文单词根本就不是阻碍成为程序员的障碍,相反的,代码里那些一般人看不见的算法、逻辑才是最难学习的。

以一个C语言中一个经典的算法举例。

题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

不具备算法思维的人的方法:

一个个的试下去?费时费力不说,人容易变疯吧。

具备算法思维的人的方法:

利用for循环控制100-999个数,每个数分解出个位,十位,百位。然后for循环一写。

————————————

程序源代码:

main()

{

int i,j,k,n;

printf(“‘water flower’number is:”); 

for(n=100;n<1000>

{  

i=n/100;/分解出百位/  

j=n/10%10;/分解出十位/  

k=n%10;/分解出个位/  

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)   

{   

printf(“%-5d”,n);   

} 

}

printf(“\\n”);

}

————————————

所以,还是那个观点,语言不是难的点,算法才是!不管用什么语言来书写代码,里面涉及到的算法逻辑都是大同小异的,而代码里的那些算法一个比一个难,比如:

递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法等。

如果能学会掌握了这些算法,那么,那几个英文单词又有什么难的呢?


最后,最简单的一点!

换成中文后敲键盘次数变多了啊~比如“RUN”,英文敲击键盘3下,中文拼音输入法敲击键盘“yun xing”7下,对于时间如此宝贵的程序员哥哥们来说,浪费时间就是犯罪呀~当然了,这只是玩笑~


最后总结一下:

综上所述,将代码中的英文替换成中文意义不大且没必要。

(以上观点谨代表个人,如有不严谨的欢迎评论)


分享到:


相關文章: