一个引起巨大争议的问题:为什么中文不能用来编程?
学过计算机的应该都知道计算机语言经历了机器语言,汇编(伪机器语言 ),高级语言三个阶段。
假设我们要计算1+2(数值先不管,我们只看+号,)。计算机可不认识什么加号,它只认识0和1。
计算机诞生之初,只有人来迁就计算机,我们就假定0000 0001这段代码表示加法,当计算机读到这段代码时计算机就知道它要将两个数值进行相加了(最开始就是这么干的,用打孔器打孔,打个冻表示1不打表示0,然后把纸带也即'程序'输入给计算机)。这就是机器语言。
这么做的效率显然效率非常低下(比如一个几十页的纸带,错打了一个孔,吼吼……),也不方便人去理解,怎么办呢,我们可不可以用一个短语(词)来方便我们记忆呢?当然可以,然后约定俗成就让“ADD(话说如果是中国人发明的,这个可能是[加]了)”替代0000 0001来代表加法,这个时候程序大概就变成了ADD 1 2,我们将这个输入计算机,可惜了,计算机还是不认识,仍旧需要转换成00000001 1 2的形式计算机才能理解,只要能开发出门转换的工具(核心技术),事实上就是这么做,这个时候人只需要关注ADD就可以了,剩下的可以不管,交给转换工具来处理。这是汇编语言 (第二阶段),相对机器语言而言,更加接近自然语言,更加方便人去理解成语了。
但是汇编语言仍旧是是直接操作硬件,对人仍旧不友好,然后就出现了高级语言,高级语言仍旧需要将程序翻译成计算机可识别的代码,这个翻译的过程肯定不是漫无目的(比如add,不能说我第一次翻译成加,第二次翻译成减吧),它仍旧需要遵从一定的规则(这个规则就是各个编程语言的语法[关键字],比如c语言的print,就是打印,当碰到这个关键字时就会分解成多个指令调用计算机硬件完成向计算机屏幕打印信息)(听到有人说中文的多意性导致计算机不识别的,真想呵呵你们一脸!)
其实从这个角度来说,高级语言就是一套语法,然后和这套语法对应的翻译器。这套语法怎么实现无所谓(中文也OK),只要你能有对应的翻译器将这个翻译成计算机可执行的程序……
不难看出计算机语言的发展是越来越接近人类语言,越来越方便人的理解的,所以也有人提出计算机语言的发展到最终的结果就是自然语言。
总结一下吧,中文编程肯定是可以的,问题是值不值得?有没有必要的问题??
这是我个人的一点粗浅看法,碍于能力见识,可能有不对之处,欢迎指正!
首先,编程是可以用中文的。只不过大部分的编译器都是外国人写的,国人写的编译器寥寥无几。那怎么用中文编程呢,其实很简单。
比如用中文编程,打印hello world,那可以把所有的英文字母,英文字符替换成中文的。同样能够用文中编程,实现打印效果。替换代码如下:
QString tmp = str.replace(“主函数”, “main”).replace(“整数”, “int”).replace(“。”, “;”).replace(“开始”, “{“). replace(“收工”, “}”).replace(“打印”, “printf”).replace(“返回”, “return “)。
其他中文的编译器实现原理跟这个差不多,都是借助现有的语言,转译成中文。易语言就是如此,他就是基于汇编、C/C++写的。
为什么是这样的结果呢?主要原因是编译器是在特定的操作系统上集成的,而操作系统都是用英文写的,他可不认识中文。我们没有自己的操作系统,而一个操作系统是非常庞大的工程,他可是历经了几十年、几代人的心血才铸建而成的,并且至今都在不断的更新与优化。
美国人可不会为了我们而兼容中文,即使愿意,这工程也非常巨大。那只能是我们自己写一套操作系统,那就得花上几十年、几代人的努力才行。
花上几十年的精力写个山寨版的操作系统有必要吗?谁来写呢?那已经用惯了美国人那一套的人,又得花精力去学我们自己的操作系统。我们有自己的操作系统之后,总不可能不用别人的东西了吧。别的国家都用英文,就你自个儿在那闭门造车。所有还得相互兼容。额,想想就害怕。
即使这些都实现了,但中文编程也不好用啊。虽说我国语言博大精深,但很明显在编程这件事上,英文看起来更简洁,而且他们可以用26个字母随意拼凑。但是我们不行,我们笔画可不能乱涂乱画,什么笔画特指什么语义的字都是规定好了的。汉语一语双关的现象很平常,但是计算机听不懂,所以只能把话按长了说,避免语句重复。
再退一步讲,现在的C/C++、JAVA等编程语言历经几十年的发展,已经是相当成熟了。虽是用英文写的,但都是些简单的英文,而且命名都是约定俗成的,地球人都知道。
领取专属 10元无门槛券
私享最新 技术干货