每隔几天,就会有人在网媒上讨论中文编程的问题,甚至有编程的套件发布,每次都会引发一场大讨论。但是在程序员的圈子里,却很少看到有人关注这个话题。
为什么汉语编程这个话题总能引吸一些人的眼球呢?我们就开动脑筋,来想一想汉语编程能带来的好处。
1) 民族荣誉感增强,这种感觉就像是以后我们的子孙再也不用学习英文了,而是英国人,美国人,世界各国人民都挤破脑袋来学习汉语,中华民族可以把学习英语的大 把时间节约下来,去做更有意义的事情。这以后,你去国外旅游,当地人一听说你是中国来的,会说汉语,就好吃好喝好妹子的招待你,只求能和你有一个练习口语 的机会。万一你失业了,实在是找不着工作,你还可以找个地方传授别人通关汉语四六级的秘诀。
等到汉语编程取待英语编程的那一天,咱们一定要让老英老美把咱们中国人吃过的苦头挨个吃一遍。这个看来,上升到民族大义的高度,汉语编程还真值得下功夫。
2)汉语编程能降低中国人学习编程的门槛,中国的软件水平有机会领先世界。
对于第一点,帽子太大,我无法发表观点,大多数打着为国为民旗号的行动最后看来都是扯蛋,为自己才是真的。第二点中提到的降低中国人学习编程的门槛,看来更具现实意义。
但笔者调查发现,大多数程序员的英语水平一般,越是顶尖的程序员英语水平越不敢恭维。为什么,码农们把大把的时间都花在编程这件事上,哪有时间学习英语。另外,如果拥有良好的英语能力,那么你的就业选择面就非常广了。其实,没有多少人愿意把青春砸在写代码这件事上。
英语水平不行确实会为程序员的职业生涯带来很多的麻烦,但写代码并不能提高你的英语水平。英文水平差的程序员在读英文资料时会有很大的障碍,但没听说过有程序员因为英语不过关就读不了代码,写不了代码。
写代码用来的英文其实并不是通常意义的英文。英文不好并不会成为你编程路上最致命的障碍。反过来说,汉语编程,并不会在多大程度上方便中国人学习编程这门手艺。只有外行人把编程和英文混为一谈,程序员们从来就没有这么想过。
如果要为汉语编程找一个用武之地,我想,可能最大的用途在于让中国儿童学习编程。但我回答不了,为什么要让儿童学习编程呢,如果用汉语来设计编程语言,用图形来设计,是不是更好呢,更易于儿童学习呢。
说了这么多,汉语编程,在技术上是完全可行的,但我还是找不来汉语编程能带来的实实在在的效益。
从汉语编程这个话题来看,得有多少人愿意学习编程这门手艺呀。
下面,我们来欣赏一段比较接近汉语编程的代码,看看汉语写代码是个个么屌样,注意,这段代码是可以执行的。
#code.汉.js
var 丑化JS = require("uglify-js");
var _ = require("underscore");
var 翻译工具 = require("./translate_util");
var 翻译对象 = {};
module.exports = function(源代码, 回调){
var AST的代码 = 丑化JS.parse(源代码);
var 无功节点 = [];
var 参考节点 = [];
var 跨语言 = [];
AST的代码.walk(new 丑化JS.TreeWalker(function(结){
if (结 instanceof 丑化JS.AST_SymbolVar){
无功节点.push(结); 跨语言.push(结.name); } }));
AST的代码.walk(new 丑化JS.TreeWalker(function(结){
if (结 instanceof 丑化JS.AST_SymbolRef){
if (跨语言.indexOf(结.name) != -1) {
参考节点.push(结);
跨语言.push(结.name);
}
}
}));
跨语言 = _.uniq(跨语言);
console.log("翻译中");
翻译工具(跨语言.join("\n"), function(E, 结果){
翻译对象 = 结果;
无功节点.forEach(function(结){
结.name = 翻译对象[结.name] || 结.name; });
参考节点.forEach(function(结){ 结.name = 翻译对象[结.name] || 结.name; });
回调(null, AST的代码.print_to_string({ beautify: true })); });
};