汉语编程-现存的可能误区及可能方向思考
汉语编程这个东西,很特别,先逐步分析推理下:
1.掌握一门开发语言不难,只要头脑正常的正常人都可以做到.
2.掌握编译器就很困难,好在现有的技术条件,门槛已经大大下降了,一般稍微聪明一点的程序员都可以掌握.
3.设计一门编程语言有一定门槛,它至少要求你了解各种语言,各种编程范式,一些计算机理论等,好在这方面有互联网,只要花些时间就可以.
4.设计一门好的编程语言很难,但山寨一门语言是相对简单的,比如可以山寨C#.
5.把复杂的语言编译成机器指令很困难.因为工作量很大,很底层.而且技术相对更复杂.
6.好在现在有CLR和JAVA虚拟机这样广泛的中间运行时平台.还有浏览器这样的运行时环境,现代的语言不一定非要从底层做起,比如类scala,类coffeescript等,这并不妨碍它成为一门优秀语言.
7.语言未必都必须是编译式的,现在计算机这么快,各种运行时也很流行,比如javascript引擎,因为太流行太强大,连语言大师ander也去搞TypeScript.还有CLR和JAVA虚拟机.
可见,以上一些条件,只要避开困难部分,基于中间语言运行时,或者就做成脚本语言,把底层的难度化解了,完全可以发挥设计及想象力,更多只关注语言层面本身.让一个掌握基本技术的人直接和ander站在同一起跑线上,你也可以去做一个YouScript.
但是计算机语言,更多的是表达计算,所以更"符号化",这就是为什么程序语言里有大量的"关键字","符号","数字"组成呢
如果按正常思路去做,那么传统汉语编程,仅仅只会把"关键字"里的"英文单词"代替成"汉字",这样的东西顶多只是让初学者容易上手.价值不大,不能从根本上发挥汉语的威力.比如易语言,除了中文关键字,所有的都是传统编程语言的结构.所以它更适合初学者上手,但真正做开发,它能实现的和关键字是英语的是一样的.这就是现存汉语编程的误区.
当然,就是这样一条路,也需要有大量人去做,去走,只有一个易语言,实现零的突破是不够的.而吴涛先生创了这个零的突破意义非常大.
那么,以后汉语编程可能的方向应该怎么走呢?
首先我们分析下汉语跟其它语言的差别在哪里,比如英语
1.汉字数量庞大,有丰富的题材.
2.汉字是图形化,结构化的,很直观,表意能力非常强
3.汉字有个最最伟大的特点,就是可以轻松组成"衍生词组",比如"刀",加个前缀就是"小刀","大刀","水果刀",等等.天生就是面向对象,抽象的.而英语根本做不到这点.
4.汉字有个最最伟大的特点,就是可以轻松组成"复合词组",比如"对","象",本身就有其含义,组成"对象",又有另一层含义,天生就是面向函数式的.而英语根本做不到这点.
5.汉字有个最最伟大的特点,就是可以轻松"组合连接",比如"吃","饭",连接就是"吃饭",比如"先进","先出","后出",连接就是"先进先出","先出后出","后进先出","后进后出".天生就是面向组合及接口式的.而英语根本做不到这点.
6.汉字有个最最伟大的特点,就是可以轻松"造词",比如"裸","婚",比如"户","口",比如"哇","靠",本来没关系的东西,一组合就成一新词,而光汉字就有几千个,这样的组合基本上是无穷尽的.连量子计算机都足够使用.而英语根本做不到这点.
7.汉语还有另一个特点,表意能力强.不用很精确.这在计算机发展初期,是个劣势,但随着现在发展过了初级阶段,就变成了优势,现在很多计算都讲究"云","模糊","统计",因为数据量太大了,不用十分精确,也无法做到精确.
比如:要分析"裸婚"这词的某行业流行度,因为这词就是一词,很容易.但象英语就困难了,因为同样概念很多时候不是一个单词,就算一个单词还有不同的时态,还有单复数,根本无法象汉语这样.
通过上面的分析,结合计算机的现有编程理论及技术,我们可以发现如下:
1.面向过程,和英语相当,没有特别的地方
如:
if true then do XXX, 汉语是假如 是 那么 做 XXX
a = b + c, 汉语是 小计= 单价*数量
可见,两者在计算表达式和语句上,是一样一样的.当然汉语的对中国人来说更直观.
2.面向对象.英语那就比较弱了,汉语的强势立即体现
如:
class county
class china : county
class UnitedStates : county
class France : county
class London : county
看上面的继承及类型对应关系,因为英语单词都是不相同的,没规律的,你无法从字面量上迅速看出问题.汉语的是这样的
国家
中国 : 国家
美国 : 国家
法国 : 国家
伦敦 : 国家
看,从字面量上,中文很容易就带上分类,而不增加负担,非常直观.
3.函数式.汉语的超越,相当于量子计算机对传统计算机的超越,不是一个层面的.
以设计输入输出加数列看,英文的就懒得举例了,直接看中文的.
设计函数:输入,输出,先,后,栈,数据
通过函数式的组合:
输入栈,输出栈,输入数据,输出数据,先输入栈后输出数据...这样的组合操作,看上去很自然,把程序变成字面语句.而要知道,几千个汉字,能组成无数的词组,而无数的词组再组成段语,然后再组成...
这个强大的编程功能,量子计算机都够用.
4.逻辑运算.
这方面用汉语编程也很有强项.比如
山 里有 庙,庙 里有 和尚.
可以推理出: 山 里有 和尚
这完全可以做出类似prolog的推理式汉语语言.而且操作和使用都很直观.
5.正则表达式分析.
现代计算机数据处理,需要处大大量的数据,文本,语音,图像.视频
首先来看数据,图像和视频,这中西方是没有任何差别的.略过.
然后就是自然语言的"文本"和"语音".差异就出来了.
看英语:english,法语,france.
如果用中文,都是两个"字",每个"字"都不可以拆分的.处理到"字"就是最小单元.而用字母表达的语言,得处理到"字母",可见汉字算法是更快更容易的.但是汉字比字母多,这在算法上是以空间换时间.
然后是发音,可以看出,每个汉字对应一发音(当然有少数多音字),有很好的对应关系,而单词不是这样的.
综上可以看出,汉语式遍程,可以模仿现有技术,但更主要的是完全可以有突破性的创新.这种创新可以结合上汉字, 汉语的特点,而这些特点经过上面的分析,首先是可行的,其次是有很大优势的.能不能出现体现汉语优势的汉语编程语言,相信只是时间的问题.