去年等了很久的国产编程语言----仓颉问世了,当然,是基于英文的,这也许是没有办法的权衡办法,也或是与国际迅速接轨的一种策略考虑。可以理解。也因此并未等到期待的汉语编程语言。
现在汉语编程语言实际也是有几种的,例如酷似vb的易语言,基于python汉化方式的中蟒、草蟒、周蟒等,还有基于freebasic、qbasic、vb、java等汉化为基础的汉语编程语言。当然,也有利用古文搞的编程语言。这毕竟是一个学习、探索的过程。
这些语言的问题,现在重点还是受众有限的问题,支撑的库有限的问题(不够简单拿来主义的方便)。当然,搞的人多了,用的人多了,也许就好了。这需要时间,还需要经营的战术策略(也许这才是主要问题,毕竟这方面我们已经失去先机)。没有哪个编程语言,起初就是爆棚发展的。就连如今号称排行榜第一的python,也是经过了几十年的发展,才有今天。而几十年,对于急功近利的人来说,太漫长了。
汉语编程语言现在已经不是技术性的问题,仅仅是所谓的环境、支撑库的问题。使用英文编程语言的优势也在于此,无论支撑的库、可借鉴的素材、还是培训资料,等等,经过多年的发展,这类语言占了先机,同时也占据了市场,占据了先入为主、喜欢省事、图懒惰的大脑。
学编程从娃娃抓起,这里还有一个语境影响思维方式的问题
现在有给孩子们使用的scrartch语言,或者闹了一次乌龙的木兰语言,微软也有个smallbasic。学这类语言的前提是,你多少得懂点英文。否则培训资料、扩展资料看着都头疼,虽然有些基础资料已经汉化或出了汉语版,但是如果扩展学习,又都是英文材料了。
同时,如果学英文编程语言,不仅仅是先学英文的问题,还有一个语境带来的影响思维方式的问题。
某一种语言,通常都是基于本土的文化环境以及历史产生的一种表达方式,也就是语言本身也是一种文化。
例如西式语言的逻辑方式往往是偏重决定性的逻辑方式,yes or no这种二元化逻辑;而汉语却同时兼容了yes and no的这种量子式的表达方式。重点学西学的孩子年轻的时候会越来越难以接受这种兼容式的汉语表达方式,那么在本土就存在与本土文化冲突的问题。直到老了,吃了亏,才再成本土文化思维方式。
而且,基于唯心文化为基础的语言表达方式与基于唯物文化的语言表达方式,也是有不同的。这也是问题。学英文,学来一点有毒鸡汤,学来一点西式玄学,也是常见的事情。
那么问题来了,先别说编程语言直接与国际接轨的问题(这事华为已经在探索努力),有没有适合小孩子的汉语编程语言?鉴于国际上编程语言发展的现状,这个汉语编程语言就得提高要求,有与这些语言兼容、接轨的能力。也就是学了这个基础以后,未来要升级学习,需要可以“无缝衔接”地升级过渡到功能复杂的高级语言上来,而无需再另起炉灶。实际上,这个才是最麻烦的技术问题。也是时间问题。
几个搞汉语编程语言思路上的启发
笔者学python几年,能力有限,尚无开发一种新的编程语言的能力,否则早就自己下手搞了。但是在学习过程中,也见识了一些编程语言的发展过程。30年前学过dos、basic,现在早就不用了。
1、basic的发展过程的启发。
在dos被windows代替以后,basic也发展出qbasic、freebasic等。同期,汉语编程也产生了中文培基语言,类似basic逻辑。仅仅是后来这个语言消失了,现在已经很难找到相关资料。后来产生vb支持windows。再后来产生smallbasic语言,直接针对孩子的学习,且直接使用窗口技术,培养使用习惯。之后vb有了汉化版,模仿类似vb的使用习惯又产生了国内的汉语编程语言----易语言。
现在的普通使用者,通常喜欢窗口式的表达,毕竟直观、美观。而黑客、编程的,还有一些人坚定地喜欢如dos界面的简洁的结果表达方式。技术上来说,dos这种模式,可以更小地占用硬件资源,而窗口方式,占用更大的硬件资源同时,冗余代码也更多,其中部分功能,很多人一辈子实际都没用过。
那么,针对孩子这个学习群体,汉语编程就需要一步到位地逼近现在最高技术的编程语言。假设未来易语言有前途(它与国际上最好的编程语言去比拼),那么就该有一个small易语言,来解决汉语编程初学者入门的问题,以及培养编程思路、方式的习惯。而这种small类的“小”语言,至今尚未产生。当然,这有“大”语言尚在竞争中的前提问题。
2、古文编程语言的启发
一位在国外学习的华人大学生,利用很短的时间,搞出来一个利用古文编程的语言,同时可将编码转化为python或c++。这个语言娱乐性有,同时这也提供了一个编程语言的思路。
编程语言并非必须用英文,各种语种的编程语言也是存在的,仅仅是使用者以及支援、兼容的库的多少问题。汉语编程语言的技术性难度,在基于现有技术发展的前提基础之上,并不大。同时,考虑的技术问题往往就是与其他高级语言或者使用者众多的语言的兼容、转译的问题。
3、中蟒、周蟒、草蟒的汉化的启发
python3.8以后,由于采用了unicode编码,已经兼容变量名使用汉字,也就是即便使用python,已经可以部分内容直接采用汉字表达方式。仅仅是python的几十个关键词,必须是英文。对于笔者这样技术性偷懒的,也就是需要熟悉几十个英文关键词的问题了。
而周蟒是基于python的汉化性版本;草蟒不仅仅是汉化,是基于关键词都汉语方式表达的一种探索。也就是这依然是python编程语言的有中国特色的系列发展方向之一。
汉化本身也是一种技术性偷懒的拿来主义方式。但基于可应用的开发速度和方便性而言,这也是办法。但是,如果考虑安全性、政治、经济等因素,华为这几年的困难就是前车之鉴。而一些软件公司也参与了经济战,禁止国内一些场合用某些软件,这都是不得不防的。小软件有个人写的,大软件不管是否免费、共享,通常是有大公司背景的。
4、汉语方式的程序与其他语言的兼容、转译问题
各种编程语言产生的编码之间的兼容、转化问题,一些语言已经可以互相转译。基于笔者暂时仅仅了解python语言多一点这种现状,笔者看到一篇文章《用Python代码自己写Python代码,竟如此简单》,很受启发。也就是我们可以改变编程的习惯,然后让电脑自动转译为某种语言。
这很关键,因为我们说话的习惯,与西方语言的说话习惯方式并不完全相同。西式语言在西方发展起来的一个基本前提基础之一是,编程语言本身就符合其说话习惯。
而编程语言的转译问题,实际比实际使用的语言之间的转译要简单很多。因为编程语言有更多的规范性限制。
5、变量使用中文还是英文更方便?标点符号的半角还是全角问题。
这两都不是技术问题,是习惯问题;这也不是输入法的问题。笔者利用双拼双音打汉字肯定比打英文字母快,因为英文不够熟悉。同时,输入法现在也能够解决在全角的汉字输入过程中使用半角的标点符号问题,并不用切换。同时,草蟒也提供了标点符号全角半角自动转化的方案。
笔者心中汉语编程语言的理想样貌
1、这个语言至少与c++、python、java等流行排行榜暂时居前列的语言,可以互相转化或转译。
2、能有python的“胶水”功能最好,方便利用现有资源。
3、搞出来一个小的small语言,孩子就可学会。
4、有窗体和类似dos两种版本,以适合普通用户和专业者的使用需求。
虽然仅仅是几个小小的要求,至少现在笔者都做不到。
基于各种编程语言产生、发展的历史经验,现在仓颉有完成上述任务的能力,可惜华为暂时还有很多事情在忙,缺的是时间;也或者某大学的研究机构有这能力,如果再有公司或者风投支撑,那也可以快速发展。
“路虽远,行则将至;事虽难,做则必成。”汉语编程如果从中文培基这个汉语编程语言开始算起,也有五十年的探索研究历程了。未来终会有一个趁手的中文编程利器。
这种理想化的汉语编程语言以兼容python为例的表达
因为我就懂点python,别的还没学。先说说意思了。
以这一段简单的python代码为例:
# coding=utf-8
for i in range(10):
print(i)
如果用笔者想象的汉语编程语言表达就是:
变量_1的范围:0-9,整数
显示 变量_1
当然变量_1,也可以就用i来表达,这就是我们数学作业本上的直接逻辑。显示,也可以用“?”这个符号代替,如”? 变量_1”,就是显示 变量_1,就是print(i)。
上面这段程序汉语编程最简化的表达:
i的范围:0-9,整数
? i
“的范围:”在这里就是汉语编程语言中如同range一样作用的关键词。“?”在这里就是汉语编程语言如print一样的关键词。
再如调入某个现有py程序,python的写法是:
import numpy as np
import matplotlib.pyplot as plt
这种汉语编程的写法可以是:
调入 numpy 简写为 np
调入 matplotlib 简写为 plt
或者假设调用我们的一段自编程序,自编_1.py,就可写作
调入 自编_1 简写为 自
当然,你简写为z,也没人管你,都可以看懂。
这里的汉语编程语言的关键词是“调入”、“简写为”,等效于import和as。
尽量避免用单引号、双引号,括号能省就省,但括号似乎有时候没法省。而且,这种汉语编程语言的直观结果,应该就像我们在证明一道数学题。那么,里面就算有字母、数字、符号,也是正常的事情,只要符合我们的通常表达习惯就好。如果用i表达变量最省事,何必一定用变量_1。也没人要求汉语编程语言禁止用英文、符号。海纳百川,择优录用。我们已经习惯了数学中采用阿拉伯数字,为何不用大写的汉字数字?简洁而已。
只要编程过程就像一个平时训练有素的人相对准确的说话一般,技术比拼的是算法、逻辑,而不是恼人的编程学习过程,以及没完没了的编程技术坑。那么汉语编程语言的所谓技术问题就剩下几十个关键词,用中文表达能够让人可以简单接受,符合语言表达习惯,以及这些关键词使用的格式问题了。别总弄个gui、类、布尔值之类的新词,普通中国人听不懂,外国人都能看懵的中文糊弄人。这会占用学习时间,提高学习的社会成本。
笔者的意见是汉语编程语言应该就像中国人写数学证明题一样简洁!