V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
tinybvjk
V2EX  ›  奇思妙想

感觉需要一门中文编程语言用于青少年的编程教育

  •  
  •   tinybvjk · 2022-04-28 08:37:21 +08:00 · 8526 次点击
    这是一个创建于 728 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在很火的少儿编程大部分都是使用 Scratch 或者类似的图形化编程语言。对于小学阶段的小孩子来说,没有什么问题。但对于初中、高中阶段的青少年来说,就肯定不能满足需求。为何需要一门中文编程语言,我想到的原因主要是下面这些:

    学习编程不应该和学习英语划等号

    现在将学习编程和学习英语等同起来的一个重要原因是因为大部分开源软件或者基础设施都是英语系国家发明的。它们的文档是英语,源码中的注释也是英语。要想使用,在遇到问题时排错,必须要懂英语。

    将英语和编程等同起来无疑增加了学习编程的负担。而且在初中的这个阶段可能英语词汇量还不足以流畅地阅读英文文章,所以会显得额外困难。

    因此,这门理想中的中文编程语言应该有中文的文档,中文化的社区。使用者遇到问题可以阅读文档,也可以用中文求助。

    编程如果是思想的表达,那使用中文会更加流畅

    英语作为母语国家的开发者在编写代码时的感受似乎和非母语国家的开发者是不一样的。这个结论是我之前在有个地方看到的,到时候我把链接补充上。他们阅读代码很自然,几乎没有阻碍,因为使用的是他们的母语。

    当我们使用英语编写代码时,会遇到两个问题。思考时,我们使用的中文,需要转换成英文写下去。阅读时,我们遇到的是英文,需要在脑海里转换成中文。假如说词汇量不足,这种转换就会出现问题。而且,转换本身是有成本的,会多耗费一点时间,结论是我们的效率肯定比他们要低。

    这种理想中的用于教育的中文编程语言可能是什么样子?

    1. 简单易用。
    2. 对性能没有太高要求。
    3. 静态类型。
    4. 解释执行。
    5. 也许还需要一款配套的 IDE 。

    结论

    使用中文编程语言可以降低学习编程的难度,会增加许多人对这方面的兴趣,让更多的人学会编程,所以我觉得是有必要的。


    只是我的一些突发奇想,欢迎大家提出自己的看法。

    第 1 条附言  ·  2022-04-28 09:48:39 +08:00
    感觉有些同学的发言不太友善。如果是讨论我很欢迎,但请不要做出以下行为:

    1. 只下结论,不提个人观点。你如果说不认可,不对,请提出你自己的看法。下结论每个人都会做,但请你说出你的看法,才能够让我们看到你的思考。

    2. 扣帽子。我只是有个想法,有人就怀疑我要做什么商业化。如果说一句话就可以联想那么多,那么大家就都不敢讨论了。

    3. 不讲道理。这个和只下结论是一样的,没有提出自己的论点,就开始攻击,除了情绪宣泄外没有什么意义。

    ------------------

    易语言有个很重要的问题是它不是开源的,而且收费,这肯定会导致它难以普及。不开源的第二个问题是除了作者外没人能够改进它。另外,我没有使用过它,所以暂时并不清楚它的设计能否满足最上面提到的需求。
    第 2 条附言  ·  2022-04-28 16:00:55 +08:00

    看了许多人的评论,我觉得这个问题争议还是很大的。我想先把问题理清楚,再来谈我们的争议。

    “需要一门中文编程语言”这个提议可以看做是“如何让青少年更容易学会编程”的一个答案。

    许多回复里没有抓住这个前提,以为我谈的只是中文编程,就扔出结论说不需要中文编程,那我觉得这并不能证明不需要。

    有人分析了该先学编程还是再学英语,还是一边学英语一边学编程。我觉得这抓住了我们的问题,是值得讨论的。

    还有人提到了中文编程语言不是“让青少年更容易学会编程”的一个最优解,提升数学教育才是更优解。这也是契合我们的讨论的。因为他认为解决这个问题不需要中文编程这个答案。

    对于上面的这些争议,我想先放在一边,先说一下有些人产生的误解

    中文编程就是关键字英语化

    关键字英语化其实大家都已经见过了,好多人在下面举了例子。但我想以Python为例说明关键字英语化只是问题的表象。

    Python的容易上手有几个原因,一个是它语法简洁,另外一个是它“自带电池”(batteries included)。我想着重说一下后者。当你想用什么特性或者功能的时候,你会发现它都被内置在标准库里面了,使用非常方便。对于一门用于教学的编程语言来说,也需要大量的相关标准库,比如画一些绚丽的图形,这样才能吸引学习者的兴趣,让他感觉有成就感。

    我们所说的语言不应只是语法本身,还应该包含它的标准库,以及编译器实现。我们来想象一下这种场景。假如我们的英语很差,但记几个关键字不成问题,不过我们还要记那么多API似乎会比较困难。另外,当出现语法错误时,编译器的报警信息也是英文。请问,这个时候英语不好的我们是否会很容易放弃。

    也有人谈到了中文输入不如英文方便的问题,这个我觉得是另外一个问题,不是我们当前讨论的主要问题。

    英语没有带来问题

    我之前没有贴一些链接,这里可以放两个,里面谈到英语非母语的人学习编程会比较困难。

    1. Coding Is for Everyone—as Long as You Speak English
    2. Non-Native English Speakers Learning Computer Programming: Barriers, Desires, and Design Opportunities

    在第二篇论文中,作者提到了几个结论,母语非英语的人会在下面这几个方面遇到问题:

    1. 阅读材料。
    2. 与人沟通。
    3. 阅读代码。
    4. 编写代码。

    假如英语真的为学习编程带来了困难,就只有三种方案:

    1. 不管。我们不去解决这个问题。
    2. 提高英语教学,让青少年尽量好、尽快地掌握英语。
    3. 尽量将各种英文信息中文化,降低难度。

    青少年不需要学习编程

    这个问题我觉得争议会更大,所以在这里就不做讨论了,大家见仁见智吧。


    请大家友好地发言,不要互相攻击。

    126 条回复    2022-07-26 17:55:49 +08:00
    1  2  
    catror
        101
    catror  
       2022-04-28 18:59:10 +08:00 via Android   ❤️ 1
    不需要,因为也不存在英文编程语言。那些关键字只是符号,就和数学符号、化学符号一样。而现在这套符号体系已经被广泛使用了,所以不需要一套新的符号体系。
    DF104
        102
    DF104  
       2022-04-28 19:42:47 +08:00
    语言是工具 学算法 看文档才是生命力,只为了会写个什么语言 还不如不学
    eason1874
        103
    eason1874  
       2022-04-28 19:57:22 +08:00
    认为“中文编程语言”能降低编程学习成本的人,基本可以确定是不懂编程的

    这观点类似于把数学里的阿拉伯数字“12345690”换成中文“一二三四五六七八九〇”就能让数学变得容易,说出来能让专业人士笑出声

    要想让不懂英文只懂中文的人学好编程,把那寥寥可数的英文关键字改成中文并没什么用,真正有用的是中文社区,和海量中文资料,让学习者遇到问题时能及时查阅到自己看得懂的中文资料
    Feiex
        104
    Feiex  
       2022-04-28 19:58:21 +08:00   ❤️ 1
    说说我自己的看法

    楼主提出的观点:需要一门中文编程语言
    目的:用于青少年的编程教育
    原因:英语和英语思维增加了学习编程的负担

    1 、目前中学生词汇量比我们上学时候的词汇量高得多,对于编程语言寥寥的关键字来说,不构成问题
    2 、个人认为,入门编程的难点在于“入门”,这里面包括计算机编程语言思维(注意不是自然语言)、入门读物、合适的文档(当然需要中文的);如果发明一个中文编程语言,能解决这三类问题吗?
    3 、不同于中文英文,自然语言和计算机语言本来就有差距,后者更多的是标准化的指令,这一点我相信单靠“汉化”很难解决,需要改变的是使用人类自然语言的思维定势
    PureWhiteWu
        105
    PureWhiteWu  
       2022-04-28 20:01:13 +08:00
    木兰?
    cszchen
        106
    cszchen  
       2022-04-28 20:11:18 +08:00 via iPhone
    中文并不能让你有更好的代码阅读能力,代码是逻辑的组合,不是单纯语言的表达
    liuser666
        107
    liuser666  
       2022-04-28 20:29:25 +08:00
    更多的还是学习的流畅度以及一些中文里的特色。我就很烦英文里的缩写,打个比方,微软的 LPWSTR 类型,谁 tm 一开始知道这是什么,少一点还好,多了看代码简直是灾难,用在项目里还能用 IDE 看宏究竟是什么,如果看别人的代码片段就必须一个一个去查,很烦。还有现在的类型名和方法我经常搞混不能第一时间分清,我觉得中文编程都有潜力去解决这些问题。一味地否定中文编程,不是坏就是蠢。
    liuser666
        108
    liuser666  
       2022-04-28 20:31:38 +08:00
    对了,编程不仅仅是你们一味强调的逻辑思维,更多的是与其他人的交流学习,很多资料都 tm 是英文的,学个屁,连材料都没有,逻辑个屁,这就是为什么要发展中文编程环境的原因,就算是天才也不可能在没有资料的情况下学习。
    hackfly
        109
    hackfly  
       2022-04-28 20:51:14 +08:00
    易语言不行?那 vb 总可以了,君不见,XXX 按键,XXX 脚本,几乎都 vb 写法
    tinybvjk
        110
    tinybvjk  
    OP
       2022-04-28 21:04:35 +08:00
    @eason1874 可能是我发的文字太多,大部分人都没有仔细阅读。我所说的中文化不是只替换几个关键字,详细地请见我的第二个 Append 。
    tinybvjk
        111
    tinybvjk  
    OP
       2022-04-28 21:20:10 +08:00
    @liuser666 我同意你的看法,这些问题许多人应该都会遇到。
    tinybvjk
        112
    tinybvjk  
    OP
       2022-04-28 21:26:37 +08:00
    @Feiex 我觉得你讨论问题的态度很好,在这么多回复中很难得见到。
    tinybvjk
        113
    tinybvjk  
    OP
       2022-04-28 21:32:38 +08:00
    @shyrock 学习编程不一定是真正要将编程作为工作,就像我们学习物理、化学不一定要当物理学家、化学家一样。
    tinybvjk
        114
    tinybvjk  
    OP
       2022-04-28 21:34:38 +08:00
    @3dwelcome “英文编程对于国人最大的困难”这个我非常认同,所以我不理解为什么回复里面许多人说英语不是问题。
    tinybvjk
        115
    tinybvjk  
    OP
       2022-04-28 21:37:38 +08:00
    @Pipecraft 虽然你的推断是合理的,但其中也隐含了一些假设,所以我并不完全认同。但是你提出的方案也是一种当下可行的方案。
    techstay
        116
    techstay  
       2022-04-29 00:31:14 +08:00
    问题的关键不是中文关键字的编程语言,而是一个有活力愿意接纳新人的社区。国内开源社区这方面还是太弱了
    shyrock
        117
    shyrock  
       2022-04-29 08:13:45 +08:00   ❤️ 1
    @tinybvjk #113 你看帖不看完。。。如果不是为了工作,那 scratch 就比你的中文编程更好。
    klo424
        118
    klo424  
       2022-04-29 08:56:01 +08:00
    @ekidona #7 这句话没毛病,但障碍不是编程语言中的那点英文,而是很多文档没有中文翻译或者翻译不准确很难懂。再者就是遇到报错信息时,如果是英文的,就不好解决掉。所以,我觉得做汉化翻译比中文编程语音更合适。
    monmon
        119
    monmon  
       2022-04-29 09:20:11 +08:00
    为什么很多人执着于中文编程?
    一部分人应该只是不明白什么叫做中文编程,他们实际上做的是汉字编程相关的事。
    另外一部分人可能只是跟风的误解,以为中文真的能编程。

    [实际上,面向人类的语言表达逻辑与面向计算机的语言完全不同,面向计算机的语言需要使用与面向人类语言完全不同的逻辑,虽然借用了人类的文字,但实际是完全不同的语言。]

    作者:pansz
    链接: https://www.zhihu.com/question/355223335/answer/937354351
    来源:知乎
    RainCats
        120
    RainCats  
       2022-04-29 10:23:18 +08:00
    作为正在从事 java 开发的一员,我还是希望能有一天看到程序的日志、报错信息、注释都是中文。
    我承认我英语水平还比较差,ide 里面还必须安装翻译插件,电脑还必须安装有道词典,我只是新时代农民工。
    不能说英文世界先行了中文就只能用,买办是走不通的,我们还是需要有自己的东西
    ericgui
        121
    ericgui  
       2022-04-29 13:15:43 +08:00
    不要污染一张白纸
    marcong95
        122
    marcong95  
       2022-04-29 14:17:19 +08:00   ❤️ 2
    我小学五六年级接触编程,自己脑抽闹着买了本 vb 的书,学校老师推荐去学的 pascal ,初中参加了学校机器人班,用的 Lego 、中鸣的图形化编程。期间也碰过 C#、Perl 。虽然迫于从小的拖延症末期啥都没做出来

    面向 k12 的 Scratch 、Lego Mindstorm 、中鸣机器人的图形化编程全都是有中文的。语言并不是孩子学习的障碍。要是孩子有兴趣,你只要打开你的淘宝,下单一套 ev3 丢给孩子让他自己折腾去就好了。

    此外 CircuitPython 好像是有拼音表示的报错信息的,你可以看看。

    孩子要是单纯因为报错信息是英文就想着放弃,说明他可能根本没有兴趣,那就别逼着孩子卷了。
    weichzh
        123
    weichzh  
       2022-04-29 17:33:49 +08:00   ❤️ 1
    首先不做动机推测,也不附加自己的意识形态攻击,只针对这个问题谈谈我的想法。
    加上楼主附加的这些信息来看,对问题的说明还是清楚的。先剥离这么几个问题。

    1. 编程跟语言无关吗?
    其实上面的观点是有矛盾的。如果认为编程是一门新的语言,那么只能说是跟其他语言无关,但跟语言学习能力是挂钩的,自然也就得出英语学不好,编程也学不好。但有些人又认为自己英语不好但照样学会了编程,这是试图说明编程并不靠语言能力,而是比如逻辑数学等。所以建议这里解决一下冲突。
    可以将这么一个理论性质的问题转化成实际的问题,比如学编程要不要学好英语?你不能一边说学编程跟语言无关,又说学编程怎么能不学英语。我个人当然认为要,我也不认为编程跟英语无关,理论上可以这么说,如果不是英语国家发明的计算机,照样会有编程。但现在毕竟就是英语国家发明的,那么现实的编程当然是有关系的,上面也都谈到了,比如文档,注释,库,社区的问答等等。我不信大家都没用过翻译,而经过了翻译这一手,效率相比母语者自然是下降的。甚至还会有文化上的障碍,用翻译软件也无法理解的。所以,这里我的结论是:理论上学习编程与特定语言无关,但现实是英语不好就很难做好。
    因此,搞中文编程是理论上可行的,因为理论上编程跟语言无关。但实际上是问题很多的,这个下面再谈。

    2. 如何满足青少年的编程教育?
    首先问个问题:一个孩子在小时候学习的是一门已经淘汰的编程语言,那么是不是后面学习现在流行的语言会有很大障碍?我认为并没有多少障碍,在掌握了一门编程语言之后,学习一门新的语言相对初学者是容易很多的,所以认为学了中文编程之后,就跟之后的发展脱节了的观点我不能认同。CS 一直宣扬终身学习,不能这个时候又说起点是决定性的。但障碍还是有的,所以这可以当成中文编程需要面对的问题,但并不能当成一个有力的反驳。
    而对于吸引青少年编程这个意义上来说,中文只是一个手段,而非目的。是,现在青少年单词量很丰富,但决没有普遍达到能够看英文文档无压力的程度。更何况程序员用翻译软件的时候,自身是有一定的知识储备的,你让一个菜鸟去看翻译后的文档也是一脸懵。所以我还是认为一个好的中文文档和社区才是最应该考虑的问题。用中文搜索结果得到的全是一些小网站机翻 Stack Overflow 的内容,实在让人难以绷得住。比如数学,数学也是理论上跟语言无关的,而且也比编程更有底气,怎么所谓中文数学没有那么多声音呢?不考虑宣传,其实数学的中文资料是非常丰富的,所以我还是认为丰富的中文资料比中文编程更重要。

    3. 中文编程如何进行?
    广受调侃的只是粗暴翻译关键字的编程自然不行。有些术语的中文翻译本来就让人绷不住了,还让青少年学就是不当人子了。还有函数,变量的命名。这也是我特别头疼的事情,所以我对有些人认为的“写程序时全部都要用英文”的观点并不赞同,你让英语不行的人写英文,还不如写中文再机翻呢。顶多是说经验丰富了,才不会觉得棘手,但写英文文档和注释还是不简单的,对于英语实在学不好的人来说。所以中文编程需要解决的问题就是让使用者在中文环境下能够获得英语母语者相近的体验,而这个体验我并不认为只要采用了中文编程就理所当然了。

    总而言之,我还是很期待中文编程能给出一个满意的答卷的。中国闲人现在确实越来越多了,我在 GitHub 和相关论坛上闲逛总能看到国人的作品,有些是玩具,有些则是很有潜力的项目。所以我不会对任何试图做一些事情的人冷嘲热讽。但我也极度反感把这些玩具性质的东西赋予很多“意义”,因为我认为这些“意义”都没有意义。你做得好自然有人捧,无论之前有多少人不看好。你做得不好,糊是应该的,不论之前有多少人加油打气。只是现在这个环境,项目无论是在技术还是应用层面的好坏都不一定能决定其热度了。不是说不该有环境的影响,这是不可能的,但环境的影响确实压过了项目本身的实力。
    tinybvjk
        124
    tinybvjk  
    OP
       2022-04-29 22:39:31 +08:00
    @weichzh 感谢你发表你的真知灼见。你的讨论始终围绕着我们的问题,也回应了我的一些观点,而且非常客观,这也是我发这个帖子时希望看到的讨论,我相信也是许多人都希望看到的。在之前的回复中,很多人没有看清问题,就粗暴地发表自己的看法,对于问题的讨论没有丝毫帮助,这着实令人惊讶。

    你对三个问题的讨论差不多回应了前面回复提到的问题,我大部分都是认同的。关于最后一段话,我可能有些其它的看法。

    我一开始发这个帖子,是抛砖引玉,希望能够看看其他人对这个问题有何看法,理想情况下,也许能够看到部分人提出一些解决方案。有句俗话说,众人拾柴火焰高。但是这次讨论让我看到,关于这个问题,大部分人的分歧非常的大,连一些最基本的认识都不能达成一致。即使我引用了两篇文章,也未能改变许多人的认识。在这样的氛围下,要想讨论出结果,几乎是不可能的事情,最终可能就会变成比谁的措辞更加强硬,嗓门更加大,而不是谁更有理。在我看来,技术人员应当是这个社会最注重逻辑和正确性的一群人,但我在这里所见似乎并不如此。

    最近见到有人在 V2EX 上发了一篇帖子,谈论为何中国缺乏开源文化和开源社区,也是我们在这里提到的问题之一。一群人要想合作达到一个目标,有几个因素。首先,他们要有一个都认同的目标。其次,他们要能够友好地讨论问题,紧密无间地协作,有良好的氛围。最后,他们要解决问题,稳步推进自己的工作。大部分国外的开源项目都是如此。而在这里,我们既没有目标,也缺乏友好地讨论,所以我感觉比较悲观。

    你说的“意义”我觉得是非常重要的。如果一件事情没有意义,那么就没有人去做了。只是在计算机的历史上,有许多时候,是先做出来,才找到了它的意义,比如最著名的施乐发明 GUI 界面,后来被苹果微软“偷窃”。也有许多时候,是先有了意义,再有了实现,比如我们平常使用的 Git ,就是 Linus 先思考再做出来的。
    seanzxx
        125
    seanzxx  
       2022-05-01 23:14:50 +08:00 via iPhone
    "Talk is cheap. Show me the code."
    - Linus Torvalds

    楼主觉得需要一门中文编程语言,就应该说出你期待的中文编程语言应该是什么样子呀,至少展示一些示例代码,这样才是继续讨论的基础,而不是现在这种大而空的讨论
    sihaozi
        126
    sihaozi  
       2022-07-26 17:55:49 +08:00
    base64 MTMzNTY5OTQ2
    OP 加一下 QQ 群详细聊一下
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5408 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:03 · PVG 15:03 · LAX 00:03 · JFK 03:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.