现在很火的少儿编程大部分都是使用 Scratch 或者类似的图形化编程语言。对于小学阶段的小孩子来说,没有什么问题。但对于初中、高中阶段的青少年来说,就肯定不能满足需求。为何需要一门中文编程语言,我想到的原因主要是下面这些:
现在将学习编程和学习英语等同起来的一个重要原因是因为大部分开源软件或者基础设施都是英语系国家发明的。它们的文档是英语,源码中的注释也是英语。要想使用,在遇到问题时排错,必须要懂英语。
将英语和编程等同起来无疑增加了学习编程的负担。而且在初中的这个阶段可能英语词汇量还不足以流畅地阅读英文文章,所以会显得额外困难。
因此,这门理想中的中文编程语言应该有中文的文档,中文化的社区。使用者遇到问题可以阅读文档,也可以用中文求助。
英语作为母语国家的开发者在编写代码时的感受似乎和非母语国家的开发者是不一样的。这个结论是我之前在有个地方看到的,到时候我把链接补充上。他们阅读代码很自然,几乎没有阻碍,因为使用的是他们的母语。
当我们使用英语编写代码时,会遇到两个问题。思考时,我们使用的中文,需要转换成英文写下去。阅读时,我们遇到的是英文,需要在脑海里转换成中文。假如说词汇量不足,这种转换就会出现问题。而且,转换本身是有成本的,会多耗费一点时间,结论是我们的效率肯定比他们要低。
使用中文编程语言可以降低学习编程的难度,会增加许多人对这方面的兴趣,让更多的人学会编程,所以我觉得是有必要的。
只是我的一些突发奇想,欢迎大家提出自己的看法。
看了许多人的评论,我觉得这个问题争议还是很大的。我想先把问题理清楚,再来谈我们的争议。
“需要一门中文编程语言”这个提议可以看做是“如何让青少年更容易学会编程”的一个答案。
许多回复里没有抓住这个前提,以为我谈的只是中文编程,就扔出结论说不需要中文编程,那我觉得这并不能证明不需要。
有人分析了该先学编程还是再学英语,还是一边学英语一边学编程。我觉得这抓住了我们的问题,是值得讨论的。
还有人提到了中文编程语言不是“让青少年更容易学会编程”的一个最优解,提升数学教育才是更优解。这也是契合我们的讨论的。因为他认为解决这个问题不需要中文编程这个答案。
对于上面的这些争议,我想先放在一边,先说一下有些人产生的误解。
关键字英语化其实大家都已经见过了,好多人在下面举了例子。但我想以Python为例说明关键字英语化只是问题的表象。
Python的容易上手有几个原因,一个是它语法简洁,另外一个是它“自带电池”(batteries included)。我想着重说一下后者。当你想用什么特性或者功能的时候,你会发现它都被内置在标准库里面了,使用非常方便。对于一门用于教学的编程语言来说,也需要大量的相关标准库,比如画一些绚丽的图形,这样才能吸引学习者的兴趣,让他感觉有成就感。
我们所说的语言不应只是语法本身,还应该包含它的标准库,以及编译器实现。我们来想象一下这种场景。假如我们的英语很差,但记几个关键字不成问题,不过我们还要记那么多API似乎会比较困难。另外,当出现语法错误时,编译器的报警信息也是英文。请问,这个时候英语不好的我们是否会很容易放弃。
也有人谈到了中文输入不如英文方便的问题,这个我觉得是另外一个问题,不是我们当前讨论的主要问题。
我之前没有贴一些链接,这里可以放两个,里面谈到英语非母语的人学习编程会比较困难。
在第二篇论文中,作者提到了几个结论,母语非英语的人会在下面这几个方面遇到问题:
假如英语真的为学习编程带来了困难,就只有三种方案:
这个问题我觉得争议会更大,所以在这里就不做讨论了,大家见仁见智吧。
请大家友好地发言,不要互相攻击。
101
catror 2022-04-28 18:59:10 +08:00 via Android 1
不需要,因为也不存在英文编程语言。那些关键字只是符号,就和数学符号、化学符号一样。而现在这套符号体系已经被广泛使用了,所以不需要一套新的符号体系。
|
102
DF104 2022-04-28 19:42:47 +08:00
语言是工具 学算法 看文档才是生命力,只为了会写个什么语言 还不如不学
|
103
eason1874 2022-04-28 19:57:22 +08:00
认为“中文编程语言”能降低编程学习成本的人,基本可以确定是不懂编程的
这观点类似于把数学里的阿拉伯数字“12345690”换成中文“一二三四五六七八九〇”就能让数学变得容易,说出来能让专业人士笑出声 要想让不懂英文只懂中文的人学好编程,把那寥寥可数的英文关键字改成中文并没什么用,真正有用的是中文社区,和海量中文资料,让学习者遇到问题时能及时查阅到自己看得懂的中文资料 |
104
Feiex 2022-04-28 19:58:21 +08:00 1
说说我自己的看法
楼主提出的观点:需要一门中文编程语言 目的:用于青少年的编程教育 原因:英语和英语思维增加了学习编程的负担 1 、目前中学生词汇量比我们上学时候的词汇量高得多,对于编程语言寥寥的关键字来说,不构成问题 2 、个人认为,入门编程的难点在于“入门”,这里面包括计算机编程语言思维(注意不是自然语言)、入门读物、合适的文档(当然需要中文的);如果发明一个中文编程语言,能解决这三类问题吗? 3 、不同于中文英文,自然语言和计算机语言本来就有差距,后者更多的是标准化的指令,这一点我相信单靠“汉化”很难解决,需要改变的是使用人类自然语言的思维定势 |
105
PureWhiteWu 2022-04-28 20:01:13 +08:00
木兰?
|
106
cszchen 2022-04-28 20:11:18 +08:00 via iPhone
中文并不能让你有更好的代码阅读能力,代码是逻辑的组合,不是单纯语言的表达
|
107
liuser666 2022-04-28 20:29:25 +08:00
更多的还是学习的流畅度以及一些中文里的特色。我就很烦英文里的缩写,打个比方,微软的 LPWSTR 类型,谁 tm 一开始知道这是什么,少一点还好,多了看代码简直是灾难,用在项目里还能用 IDE 看宏究竟是什么,如果看别人的代码片段就必须一个一个去查,很烦。还有现在的类型名和方法我经常搞混不能第一时间分清,我觉得中文编程都有潜力去解决这些问题。一味地否定中文编程,不是坏就是蠢。
|
108
liuser666 2022-04-28 20:31:38 +08:00
对了,编程不仅仅是你们一味强调的逻辑思维,更多的是与其他人的交流学习,很多资料都 tm 是英文的,学个屁,连材料都没有,逻辑个屁,这就是为什么要发展中文编程环境的原因,就算是天才也不可能在没有资料的情况下学习。
|
109
hackfly 2022-04-28 20:51:14 +08:00
易语言不行?那 vb 总可以了,君不见,XXX 按键,XXX 脚本,几乎都 vb 写法
|
110
tinybvjk OP @eason1874 可能是我发的文字太多,大部分人都没有仔细阅读。我所说的中文化不是只替换几个关键字,详细地请见我的第二个 Append 。
|
114
tinybvjk OP @3dwelcome “英文编程对于国人最大的困难”这个我非常认同,所以我不理解为什么回复里面许多人说英语不是问题。
|
115
tinybvjk OP @Pipecraft 虽然你的推断是合理的,但其中也隐含了一些假设,所以我并不完全认同。但是你提出的方案也是一种当下可行的方案。
|
116
techstay 2022-04-29 00:31:14 +08:00
问题的关键不是中文关键字的编程语言,而是一个有活力愿意接纳新人的社区。国内开源社区这方面还是太弱了
|
118
klo424 2022-04-29 08:56:01 +08:00
@ekidona #7 这句话没毛病,但障碍不是编程语言中的那点英文,而是很多文档没有中文翻译或者翻译不准确很难懂。再者就是遇到报错信息时,如果是英文的,就不好解决掉。所以,我觉得做汉化翻译比中文编程语音更合适。
|
119
monmon 2022-04-29 09:20:11 +08:00
为什么很多人执着于中文编程?
一部分人应该只是不明白什么叫做中文编程,他们实际上做的是汉字编程相关的事。 另外一部分人可能只是跟风的误解,以为中文真的能编程。 [实际上,面向人类的语言表达逻辑与面向计算机的语言完全不同,面向计算机的语言需要使用与面向人类语言完全不同的逻辑,虽然借用了人类的文字,但实际是完全不同的语言。] 作者:pansz 链接: https://www.zhihu.com/question/355223335/answer/937354351 来源:知乎 |
120
RainCats 2022-04-29 10:23:18 +08:00
作为正在从事 java 开发的一员,我还是希望能有一天看到程序的日志、报错信息、注释都是中文。
我承认我英语水平还比较差,ide 里面还必须安装翻译插件,电脑还必须安装有道词典,我只是新时代农民工。 不能说英文世界先行了中文就只能用,买办是走不通的,我们还是需要有自己的东西 |
121
ericgui 2022-04-29 13:15:43 +08:00
不要污染一张白纸
|
122
marcong95 2022-04-29 14:17:19 +08:00 2
我小学五六年级接触编程,自己脑抽闹着买了本 vb 的书,学校老师推荐去学的 pascal ,初中参加了学校机器人班,用的 Lego 、中鸣的图形化编程。期间也碰过 C#、Perl 。虽然迫于从小的拖延症末期啥都没做出来
面向 k12 的 Scratch 、Lego Mindstorm 、中鸣机器人的图形化编程全都是有中文的。语言并不是孩子学习的障碍。要是孩子有兴趣,你只要打开你的淘宝,下单一套 ev3 丢给孩子让他自己折腾去就好了。 此外 CircuitPython 好像是有拼音表示的报错信息的,你可以看看。 孩子要是单纯因为报错信息是英文就想着放弃,说明他可能根本没有兴趣,那就别逼着孩子卷了。 |
123
weichzh 2022-04-29 17:33:49 +08:00 1
首先不做动机推测,也不附加自己的意识形态攻击,只针对这个问题谈谈我的想法。
加上楼主附加的这些信息来看,对问题的说明还是清楚的。先剥离这么几个问题。 1. 编程跟语言无关吗? 其实上面的观点是有矛盾的。如果认为编程是一门新的语言,那么只能说是跟其他语言无关,但跟语言学习能力是挂钩的,自然也就得出英语学不好,编程也学不好。但有些人又认为自己英语不好但照样学会了编程,这是试图说明编程并不靠语言能力,而是比如逻辑数学等。所以建议这里解决一下冲突。 可以将这么一个理论性质的问题转化成实际的问题,比如学编程要不要学好英语?你不能一边说学编程跟语言无关,又说学编程怎么能不学英语。我个人当然认为要,我也不认为编程跟英语无关,理论上可以这么说,如果不是英语国家发明的计算机,照样会有编程。但现在毕竟就是英语国家发明的,那么现实的编程当然是有关系的,上面也都谈到了,比如文档,注释,库,社区的问答等等。我不信大家都没用过翻译,而经过了翻译这一手,效率相比母语者自然是下降的。甚至还会有文化上的障碍,用翻译软件也无法理解的。所以,这里我的结论是:理论上学习编程与特定语言无关,但现实是英语不好就很难做好。 因此,搞中文编程是理论上可行的,因为理论上编程跟语言无关。但实际上是问题很多的,这个下面再谈。 2. 如何满足青少年的编程教育? 首先问个问题:一个孩子在小时候学习的是一门已经淘汰的编程语言,那么是不是后面学习现在流行的语言会有很大障碍?我认为并没有多少障碍,在掌握了一门编程语言之后,学习一门新的语言相对初学者是容易很多的,所以认为学了中文编程之后,就跟之后的发展脱节了的观点我不能认同。CS 一直宣扬终身学习,不能这个时候又说起点是决定性的。但障碍还是有的,所以这可以当成中文编程需要面对的问题,但并不能当成一个有力的反驳。 而对于吸引青少年编程这个意义上来说,中文只是一个手段,而非目的。是,现在青少年单词量很丰富,但决没有普遍达到能够看英文文档无压力的程度。更何况程序员用翻译软件的时候,自身是有一定的知识储备的,你让一个菜鸟去看翻译后的文档也是一脸懵。所以我还是认为一个好的中文文档和社区才是最应该考虑的问题。用中文搜索结果得到的全是一些小网站机翻 Stack Overflow 的内容,实在让人难以绷得住。比如数学,数学也是理论上跟语言无关的,而且也比编程更有底气,怎么所谓中文数学没有那么多声音呢?不考虑宣传,其实数学的中文资料是非常丰富的,所以我还是认为丰富的中文资料比中文编程更重要。 3. 中文编程如何进行? 广受调侃的只是粗暴翻译关键字的编程自然不行。有些术语的中文翻译本来就让人绷不住了,还让青少年学就是不当人子了。还有函数,变量的命名。这也是我特别头疼的事情,所以我对有些人认为的“写程序时全部都要用英文”的观点并不赞同,你让英语不行的人写英文,还不如写中文再机翻呢。顶多是说经验丰富了,才不会觉得棘手,但写英文文档和注释还是不简单的,对于英语实在学不好的人来说。所以中文编程需要解决的问题就是让使用者在中文环境下能够获得英语母语者相近的体验,而这个体验我并不认为只要采用了中文编程就理所当然了。 总而言之,我还是很期待中文编程能给出一个满意的答卷的。中国闲人现在确实越来越多了,我在 GitHub 和相关论坛上闲逛总能看到国人的作品,有些是玩具,有些则是很有潜力的项目。所以我不会对任何试图做一些事情的人冷嘲热讽。但我也极度反感把这些玩具性质的东西赋予很多“意义”,因为我认为这些“意义”都没有意义。你做得好自然有人捧,无论之前有多少人不看好。你做得不好,糊是应该的,不论之前有多少人加油打气。只是现在这个环境,项目无论是在技术还是应用层面的好坏都不一定能决定其热度了。不是说不该有环境的影响,这是不可能的,但环境的影响确实压过了项目本身的实力。 |
124
tinybvjk OP @weichzh 感谢你发表你的真知灼见。你的讨论始终围绕着我们的问题,也回应了我的一些观点,而且非常客观,这也是我发这个帖子时希望看到的讨论,我相信也是许多人都希望看到的。在之前的回复中,很多人没有看清问题,就粗暴地发表自己的看法,对于问题的讨论没有丝毫帮助,这着实令人惊讶。
你对三个问题的讨论差不多回应了前面回复提到的问题,我大部分都是认同的。关于最后一段话,我可能有些其它的看法。 我一开始发这个帖子,是抛砖引玉,希望能够看看其他人对这个问题有何看法,理想情况下,也许能够看到部分人提出一些解决方案。有句俗话说,众人拾柴火焰高。但是这次讨论让我看到,关于这个问题,大部分人的分歧非常的大,连一些最基本的认识都不能达成一致。即使我引用了两篇文章,也未能改变许多人的认识。在这样的氛围下,要想讨论出结果,几乎是不可能的事情,最终可能就会变成比谁的措辞更加强硬,嗓门更加大,而不是谁更有理。在我看来,技术人员应当是这个社会最注重逻辑和正确性的一群人,但我在这里所见似乎并不如此。 最近见到有人在 V2EX 上发了一篇帖子,谈论为何中国缺乏开源文化和开源社区,也是我们在这里提到的问题之一。一群人要想合作达到一个目标,有几个因素。首先,他们要有一个都认同的目标。其次,他们要能够友好地讨论问题,紧密无间地协作,有良好的氛围。最后,他们要解决问题,稳步推进自己的工作。大部分国外的开源项目都是如此。而在这里,我们既没有目标,也缺乏友好地讨论,所以我感觉比较悲观。 你说的“意义”我觉得是非常重要的。如果一件事情没有意义,那么就没有人去做了。只是在计算机的历史上,有许多时候,是先做出来,才找到了它的意义,比如最著名的施乐发明 GUI 界面,后来被苹果微软“偷窃”。也有许多时候,是先有了意义,再有了实现,比如我们平常使用的 Git ,就是 Linus 先思考再做出来的。 |
125
seanzxx 2022-05-01 23:14:50 +08:00 via iPhone
"Talk is cheap. Show me the code."
- Linus Torvalds 楼主觉得需要一门中文编程语言,就应该说出你期待的中文编程语言应该是什么样子呀,至少展示一些示例代码,这样才是继续讨论的基础,而不是现在这种大而空的讨论 |
126
sihaozi 2022-07-26 17:55:49 +08:00
base64 MTMzNTY5OTQ2
OP 加一下 QQ 群详细聊一下 |