We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Story: From Burnout to Breakthrough

Story: From Burnout to Breakthrough

2024/6/4
logo of podcast CoRecursive: Coding Stories

CoRecursive: Coding Stories

AI Deep Dive AI Chapters Transcript
People
F
Felienne Hermans
主持人
专注于电动车和能源领域的播客主持人和内容创作者。
Topics
Felienne Hermans教授讲述了她从学术倦怠到在编程教育领域取得突破性进展的经历。她起初在大学从事学术研究,但由于研究成果影响有限而感到沮丧。之后,她开始在荷兰一个贫困地区的中学教授12岁的孩子编程,这让她意识到传统的编程教育方法存在问题,即学习者缺乏先验知识,无法将新知识与已有的知识联系起来,且传统的编程语言语法过于复杂,错误信息难以理解,不利于学习。这些经历促使她深入研究学习方法,并最终设计了一种新的编程语言Hedy,该语言逐步引入语法规则,降低学习难度,并支持多种语言,让来自不同文化背景的学生都能更容易地学习编程。Hedy的成功也证明了她的教学方法的有效性,并为编程教育带来了新的思路。 主持人对Felienne Hermans的经历进行了梳理和总结,并对Hedy编程语言的独特之处和影响进行了评价。主持人还强调了Felienne Hermans的职业发展历程,以及她如何通过倾听学生和教师的反馈,不断改进Hedy编程语言,最终在编程教育领域取得了显著的成就。

Deep Dive

Chapters
Felienne Hermans, a computer science professor, experienced burnout from her research. Seeking renewal, she started teaching programming to underprivileged 12-year-olds. She initially used a university-level curriculum, but quickly realized its inadequacy for this age group, leading her to explore the science of learning.
  • Professor Felienne Hermans' burnout from academic research
  • Transition to teaching underprivileged 12-year-olds
  • Inadequacy of university-level curriculum for 12-year-olds
  • Initial struggles and subsequent exploration of learning science

Shownotes Transcript

你能想象为了让学习编程更容易而冒险放弃你的事业吗?让我们认识一下 Felienne Hermans,一位教授,她通过走出学术界重新定义编程教育做到了这一点。Felienne 对她的研究影响有限感到幻灭,在教授弱势学生编程的过程中发现了新的使命。她的旅程导致了 Hedy 的诞生,这是一种旨在消除编程中语言和学习障碍的编程语言。面对同行的质疑,Felienne 对普及编程的奉献精神挑战了传统的学术优先级。Felienne 的故事有力地提醒我们,一个人如果坚持自己的热情,即使逆境重重,也能产生巨大的影响。 节目页面 支持节目 订阅播客 加入通讯  </context> <raw_text>0 欢迎收听 Co-Recursive。每一集都是一个软件构建的故事。今天,我们讲述的是一位精疲力尽的学者,为了重燃激情,开始教弱势的 12 岁孩子编程的故事。我仍然清晰地记得第一次家长会。班上有一个孩子在计算机科学方面表现非常出色。

于是孩子的爸爸找到我说:“为什么我的儿子应该选择计算机科学?”孩子就站在那里。我说:“如果他选择计算机科学,也许他可以在谷歌、脸书或亚马逊工作。”这个人看着我的眼睛,对他说:“我不认为我的儿子会在谷歌工作,伙计。”

我想,你为什么要剥夺你孩子的雄心壮志?我丈夫在亚马逊工作。他以前在谷歌工作。所以我明白这对你的孩子来说是可能的。我可能会说,如果你的儿子选择计算机科学,他的背上会长出翅膀,对吧?他可以飞到太阳上去。

这也是一个种族问题,因为我是白人。所以这位非白人父亲也觉得,这位白人女士不了解我们是谁,对吧?我也不认为他一定是在这样想。但我认为我的生活经历和他之间存在着巨大的差异,以至于他认为我在欺骗他的孩子。我给他描绘了一个与现实毫无关联的幻想生活。那一刻改变了我的生活。

那是 Felina Hermans,一位计算机科学教授,每周有一天在高中任教。

Felina 的故事很精彩,对吧?她在学术界面临挑战。这些挑战使她开始教 12 岁的孩子。然后,她为了这个疯狂的副项目冒险放弃了自己的事业,我们将对这个项目进行深入探讨,它使她重新思考了计算机编程,并在她所到之处引发了争议。内容很多,但我认为它会改变你对编程语言以及学习的看法,这两个领域都是她非常关注的。

但更重要的是,Felina 关于她职业生涯的故事告诉我们如何规划自己的职业生涯。当所有选择似乎都不合适时,也许你可以创造自己的道路。这可能是听过的最好的职业建议之一。我不想夸大其词,但是的,这是一个引人入胜的故事,可能会改变你对编程的看法。这一切都始于 Felina 完成博士学位。

所以,完成博士学位和成为一名,让我们说成年学者,并不是一回事。我做博士学位时真的玩得很开心。所以我认为这很有趣。所以我只会做更多这种有趣的事情。所以,几年来,我一直努力成为一名专业的学者。它会吞噬你。你必须遵守系统的规则。而我不太擅长遵守系统的规则。然后,

在我没有意识到的时候,对吧?并不是说有一天我想,“我不能做这份工作。”只是每天都越来越感觉像是在泥泞或淤泥中移动,一切都很慢,你没有能量。但绝对不是从一天到另一天你就会想,“我讨厌这种生活。”它只是慢慢地进行,你真的想成为一名学者。但后来我意识到,我想我再也做不下去了。

问题的一部分是,Felina 感觉自己的工作没有意义。如果你从事学术研究,那么,你知道,你会下载一个数据集并进行分析。你写一篇论文,说明这是我们的假设。这是数据。然后你发表论文。你必须等待数月,有时甚至整整一年,才能从其他三位随机的学者那里获得批准。然后论文发表了。

世界发生了怎样的变化?每年可能会有数百篇、数千篇、数十万篇论文出现。

我在做什么?这真的是我能发挥最大价值的地方吗?我没有语言来表达这些感受,但我确实有相关的感受。比如,我无法让自己每天都做这件事,因为没有人吸收我的知识。没有人站在另一边。所有这些,我应该提到,都发生在荷兰。Felienne 在代尔夫特理工大学任教,住在鹿特丹附近。重要的是,她公寓只需骑自行车 5 分钟就能到达一所高中。

他们需要开始向学生教授编程。

他们找到我说,我们已经知道了很久了,你有没有学生可以为我们的孩子上课?然后我记得自己说,如果我这样做呢?现在,如果我回顾一下,我有点像,我在天花板上盘旋,对吧?看着这个场景,没有任何计划。我没有想过这是否符合我的时间安排?我没有想过如果我这样做,我的系主任会怎么想?我

我只是有这种冲动。我想,我想做这件事。这听起来像是我想做的事情。我已经很久没有这种想做某事的感受了。所以我只是说,那我能教你们的课吗?他们说,是的,当然。如果你想做,那就去做吧。这就是我开始在高中任教的方式。

这所高中位于一个非常繁华的地区。但不是在富裕的市中心,不像曼哈顿那样。而是内城,就像很多高层建筑一样。我的学校所在的地区是荷兰最贫穷的邮政编码之一。

我们学校的孩子们经常来自少数民族家庭,鹿特丹是一个大型港口城市,所以父母通常从事非熟练工作。这就是这所学校的一些背景,这也是为什么我很高兴在那里教书的原因。在这所多元化的学校教授一个全新的课程,Felienne 可以自主设计教学大纲。她最初认为自己可以依靠大学课程。

因为在大学里,并没有假设孩子们或学生已经了解编程。所以我们会或多或少地和我们在大学里做的一样。什么是变量?什么是 for 循环?什么是条件?但那是针对 12 岁的孩子。

哦,是的,12 岁的孩子。在加拿大,我 14 岁开始上高中,我想。但在荷兰,你 12 岁就开始上高中。Felienne 实际上是在教七年级的学生,她的计划是使用大学水平的 Python 课程来指导他们。是的。而那些 12 岁的孩子,我记不清确切的数字了,但假设我有 120 张 PowerPoint 幻灯片。我会向你解释很多事情。所以五张幻灯片之后,就像,我不认为我会读完……

我认为我会读完 120 张 PowerPoint。12 岁的孩子在感到困惑时不会静静地坐着。他们会告诉你。所以我不明白你在说什么,但这也是为什么我们要学习这个,对吧?因为大学里 18 岁的计算机科学专业的学生和他们不一样,他们已经知道自己想学习编程。所以他们可能感到困惑,但至少有一些学习的动力。而一个 12 岁的孩子,你真的必须诱导他们,说,好吧,

这看起来很令人困惑。我看到这个 Python 没有任何意义,但坚持下去。然后在三节课之后,我们可以做到这一点。所以我确实意识到,更小的孩子,也可能是大学生,确实需要你解释一些东西,然后他们做一些事情,你再解释一些,他们再做一些。所以我的教学风格,包括我在大学里的教学也发生了变化,因为我

我认为 18 岁和 12 岁孩子的区别在于,一个感到困惑的 18 岁孩子会认为这是关于他们的。他们什么都不懂。他们回到宿舍哭泣,也许他们会说,我什么都不懂。但一个感到困惑的 12 岁孩子会告诉你他们感到困惑。他们会说,我什么都不懂。你说的任何东西。就像,好吧,但是你能,比如,你记得一件事情吗?不。

如果它对我来说有意义的话,对吧?这很伤人,但它也很有用,因为它要求你再次思考,好吧,那我该如何用不同的方式来解释呢?所以这绝对是一块磨刀石,如果你能从孩子那里得到反馈,你可以用它来磨练教学的技巧。记住,这不是 Felina 的真正工作,对吧?她的真正工作是在大学,而且本身就超过了全职工作。

如果这门课只是引导孩子们学习现有的课程,那么这门课可能还算容易管理。但这似乎并非如此。所以我肯定想,哦,我的上帝,这比我想象的要难得多。但这更像是我想知道为什么。因为这些都是真正有功能的 12 岁孩子,对吧?他们会阅读,他们会做数学题,他们在德语、法语、历史方面做得很好。所以他们的脑子没问题,对吧?

但他们都在努力学习编程,几乎所有的人都努力学习编程。所以我不能自欺欺人地认为,他们只是懒惰,他们只是不够聪明。显然,这是我的错。整件事让 Felina 感到好奇。她从比这些孩子更小的时候就开始编程了,所以她知道这是可能的。在她大学工作的职业生涯中,她当然也教过很多人如何编程。所以她有教学经验,她知道这是可能的,但她却无法取得任何进展。

然后我进入了我职业生涯中的一个阶段,几年来,我并没有真正做我作为学者的实际工作。我开始阅读大量关于人们如何学习任何东西的资料。这本身就非常有趣,因为我学习了计算机科学的学士、硕士和博士学位。然后所有这些计算机科学教授都说,我认为尤其是在计算机科学方面,好吧,我们只教你一种编程语言,但是

但在你职业生涯的后期,你会学习许多其他编程语言。所以你必须自学更多编程。是的,很好。这是很好的建议。但没有人教你如何学习任何东西。学习有很多科学知识。我认为这太令人沮丧和悲伤了,在计算机科学、学术界或专业编程中,没有人知道学习。为什么没有……

在任何计算机科学课程或任何课程中,关于学习的一门课程,这将是有用的。顺便说一下,那时 Felina 还没有获得终身教职。大学的终身教职人员,他们对如何工作有很大的自由度,但她还没有达到那个阶段。而且她的博士论文是关于编程语言重构的。那是她的领域。她的领域与教育无关。

基本上,她的职业生涯并不安全。晋升到下一阶段有严格的标准。而她正在做的是停止那种工作,并深入研究教师教育,对吧?让她教这些孩子成为她的新焦点。她坚持这个不同的方向几年。

这方面的巅峰之作是她的书《程序员的大脑》,由 Manning 出版。一本很棒的书,但它并不属于她的工作范围。但从所有这些研究中,她确实开始看到一条途径来教这些学生。所以我认为我学到的最重要的一点,也在书中提到,那就是你已经知道的知识会影响你能学到什么。如果你什么都不知道,你也什么都学不会。

我认为向那些例如说英语但不说法语的人解释这一点的最好方法是,如果我用法语对你说些什么,你甚至记不住我在说什么。我不知道。我坐在椅子上织毛衣。这对你来说很容易理解。你可以立即处理它。你可以重复它。你也可以立即提出问题。哦,Felina。

你在织什么毛衣?什么类型的椅子?所以你可以获取这些信息,将其整合到你正在思考的内容中,并利用这些信息。但如果你不懂法语,或者你不知道椅子是什么,或者织毛衣是什么意思,你甚至无法解释为什么它令人困惑。为什么你不懂法语,对吧?我懂法语。我认识的每个人都懂。你为什么对我刚才说的话感到困惑?我认为这是我学到的最重要的事情。

如果你在长期记忆中只有很少的元素可以将信息连接起来,那么它就会消失,我可以每天用法语和你说话几周。你仍然什么都不记得。你没有学习语法或词汇,什么都没有。这就是很多编程教育的方式。我认为它没有完全彻底失败的原因是

是因为传统上在计算机科学项目中的很多孩子都像我一样。当他们 18 岁时,他们已经编程了大约十年。所以然后

你的水平可以很高。你可以解释很多事情,因为他们可能不太了解编程,但至少他们已经有一些内容。我知道编译器是什么。我知道一些关键字,我的大多数朋友也是如此。但是,如果你的群体正在发生变化,如果越来越多的人对编程的理解较低,那么你就会开始看到问题,因为他们有更少的先前知识可以连接起来。

这对我来说是正确的。我觉得,是的,我学习了计算机科学,而且我知道如何编程。

而且进展顺利。还有很多人没有进展顺利。但如果你仔细想想,是的,如果你上了一节法语课,有些孩子已经懂法语了,而且他们似乎很擅长,也许老师只是不知道如何教法语。是的,是的。我认为这在计算机科学教授的辩护中也一直是如此。他们会说,好吧,所以他们都理解了。所以我一定不是太糟糕。而且,你知道,他们已经理解了。这也是我在高中第一代学生身上学到的。

是的,有些孩子喜欢它并学习它,但他们也已经了解编程,而且他们也喜欢编程。所以这并没有让他们更有热情。我可能让其中一些人热情降低了,他们并没有从零开始到,“啊,这还可以。”我让那些“我喜欢这个”的人变成了“哦,我真的很喜欢这个”,

所以唯一前进的道路,对吧,就是找到学生不知道的所有东西,然后倒着来,找到方法将这些知识与他们已经知道的知识联系起来。这可能是一段漫长的旅程,对吧?例如,以“Hello World”程序为例,这是编程的传统第一步。

你必须学习的是,有一些东西是源代码,那就是 print hello world,并且它会产生输出。这是你必须学习的东西。你必须学习在哪里输入代码?我点击哪里才能得到它?许多这些需要学习的东西与编程本身无关。它们只是基础的东西,对吧?文件在哪里?如何编辑它?文件是什么?更不用说 print 是什么了

为什么我需要括号?为什么我需要引号?这个语法错误是什么意思?而如果我们教其他东西,如果我们教数学或语言,那么孩子们会在纸上写字,他们会犯一个拼写错误。我们不会立即说,“Jin tengs ae hor”,对吧?只是,你知道,我们作为老师会纠正它。所以这种对抗,这种不人道的机器,并不是一种很好的教学方式。要做到万无一失非常非常非常困难。

如果你做错了什么,你会收到错误消息。你阅读字母会让你感到非常紧张。这些条件对学习非常不利。

所以我认为,我知道如何制作编程语言。我可以制作一种编程语言,它不会同时教所有东西。为什么我们需要括号和引号?如果你只想打印“Hello world”,语法也可以只是 print “Hello world”。为什么会有引号?如果你只有一个参数,为什么需要括号?所以我认为我会制作一个小型原型,其中包含几个步骤。首先,你什么都不用 print。

然后我们添加引号,然后我们添加括号。然后我们也可以对其他引号这样做。如果你想重复,为什么我们要使用 for I in range?你只需要重复三次。然后我们再添加一些,再添加一些。我认为,好吧,让我们制作一个包含几个级别的微型原型,这样他们就可以看看,对于我的下一代学生来说,这是否更容易、更引人入胜,以及他们抱怨更少的东西。

对我来说,我有点担心 Felina 的职业发展。所以这是一个好消息,对吧?她冒险走得很远,但她回到了自己的专业,编程语言。然而,她正在考虑的编程语言有一些不寻常的功能。所以我有了这个想法。我正在阅读一本关于语言学的书,书中某个地方写道:

如果你是一个语言使用者,那么你也是一个创造者。因为我可以造词,没有人能阻止我造词。如果你理解这些词的意思,恭喜你,现在你有了这个词,对吧?例如,如果你犯了一个错误,然后在美国英语中,你可以说,我的错,这实际上

实际上是最近有人编造出来的。这个,我不记得他的名字了,但有一个篮球运动员曾经在比赛中说过这句话。哦,我的错。现在这是一个概念。但这在 30 年前可能还不是一个概念。所以,我的研究日记中有这个的截图。然后就在它旁边,类似于,我希望编程也像这样。

为什么我必须按照编译器告诉我的方式编程?为什么我不允许改革?它为什么必须是这种模式?这对表达能力来说太有限了。在 Felina 的设想中,编写含糊不清的代码是可以接受的,因为你只需运行它,而不是触发编译器错误。然后系统会说,嘿,用户,我可以通过两种方式解释这一点。你想要这种方式还是那种方式,或者你以后再决定?

所以我把我这个想法告诉了我丈夫,他也是一名程序员。我说,你知道,也许编程语言可以是这样的。这就像这个假设性的想法很糟糕。他立刻说,不,但那样一切都会崩溃,没有人可以再工作了。冷静点,对吧?这只是一个实验。看到我们允许什么样的思想实验,这太有趣了,对吧?作为一名程序员,我理解这一点,在编写代码时含糊不清感觉很糟糕。

考虑到有多少奇怪的编程语言,这很奇怪。但是,与此同时,她并没有真正从事作为她工作一部分而期望她做的传统研究。然后我认为对每个人来说都令人困惑的是,我的研究仍然在某种程度上取得了成功,我的研究也转向了计算机科学教育。我开始撰写关于孩子们如何学习编程的论文,因为这就是我正在做的,也是我感兴趣的。

但我是在一所工程学院工作,就像荷兰的麻省理工学院一样。然后围绕学习进行研究感觉并不超出范围。感觉这并不是我们在工程学院做的事情。你必须做工程方面的事情,而不是采访 12 岁的孩子。所以很明显,我并不适合我感兴趣的那种事情的文化。

我想 Felina 的系里只是对她感到困惑,对吧?如果你非常热衷于这件事,而这件事本来不应该成为你的重点,然后你没有做你应该做的事情,这对你老板来说有点奇怪。所以他们最终给了我终身教职,但非常勉强。他们也明确表示,如果我留在这里,我的职业生涯可能不会继续蓬勃发展。所以你获得了终身教职,但是……

但你也受到了威胁。你是如何处理这一切的?是的。我认为他们并没有将其视为威胁,而是将其视为建议,对吧?这就像,如果你分手了,你会说,好吧,我只是认为你会和其他人更快乐。更像是这样。就像,我们认为这里不是最适合你的地方。在那之后几天,我接到另一个大学打来的电话,距离 20 分钟路程,说,好吧,

我们有一个空缺职位。你愿意申请这个职位吗?然后我可以升职吗?因为我想成为一名社会教授,因为我已经是一名有终身教职的助理教授了。我没有告诉他他们不再那么兴奋了。也许你可以给我升职,这会在考虑范围内吗?他说,也许这会在考虑范围内。来聊聊吧。所以我得到了那里的工作机会。

所以,Felina 有了这份新工作,部分原因是由于这项教育研究,这项研究是由她努力教 12 岁孩子引起的。这大约是在 2019 年底,所以新冠疫情即将到来。但她当然不知道。她只知道她无法停止思考她关于一种软编程语言的想法。在 2019 年到 2020 年的圣诞假期,那个冬天,我想我会在几周内制作一个小型原型。

只有三个语法步骤,非常简单,这样我就可以在我的下一代学生身上尝试一下。

看看会发生什么。所以研究问题首先是,我能构建它吗?解析器框架是否允许我这样做,因为它们也以这种非常严格的方式思考。我可以制作一些更柔和的东西吗?我可以制作一种具有不同级别的语言,首先你不需要引号,然后你需要,你不需要括号,然后你需要括号。最后一步是 Python 的一个功能子集。这就像自行车上的辅助轮,你有一辆成人自行车

你想要那辆自行车。你看到你要去哪里,但现在太难了。所以我们在自行车上安装了辅助轮,这样他就可以练习了。然后过了一会儿,我们把辅助轮取下来,现在是同一辆自行车了。它仍然很酷,但没有辅助轮。真正的自行车部分很重要,因为整个事情必须通过 12 岁孩子的测试。他们必须认为他们在学习一些重要的事情。Felienne 之前教过孩子们一种可视化语言 Scratch。但然后一个 12 岁的孩子会说……

这是一个玩具线。这是给小学生用的。我想用文本语言。

Python 有点太多了。所以问题也是,我能否向孩子们推销这门语言作为一门真正的语言?所以 Flina 花了她的圣诞假期来开发这种语言,她沉浸在这种兴奋中,这是新项目初期的一种兴奋。我还记得,在那之后的一月份,我开始取消很多约会。我只是说,“对不起,我知道我约了这个时间,但我正在做一件非常重要的事情。”

所以她发布了该语言的第一个版本。它是一个基于网络的系统,带有你可以点击的课程。而且,你知道,它托管在一个 Heroku URL 上。你会学习这个带有辅助轮的 Python 版本。

然后疫情爆发了。一切都停止了。但好消息是,很多人想在家和孩子们一起做点什么。我当时所在的大学,莱顿大学,他们写了一篇简短的新闻博客。哦,你被困在家里和孩子们一起吗?我们的一位科学家制作了一种不错的免费编程语言,你可以使用。很多人开始使用它,它是开源的。它在 GitHub 上。所以人们开始为这门语言做贡献。所以我开始迭代。

在疫情期间。那实际上,好吧,那并不伟大,对吧?没有人喜欢新冠疫情。但对我来说,这很完美,因为我有充足的时间,不去参加会议,什么都不做。即使在

第一年,也就是从 2020 年初到 2020 年底,已经有 10 万个程序是由使用该系统的人创建的,这对于快速迭代来说非常棒,因为我可以轻松地挖掘数据,说,哦,这是一个非常常见的错误,所以也许应该有所不同。这真正启动了这个项目。

所以 Felina 全身心投入到这个项目中,并且它继续传播。随着项目的增长,她难以跟上进度。在某个时候,托管 Hedy 的成本开始失控,她的丈夫也参与进来了。哦,我会做很多优化来节省我们的钱。所以我对此感到高兴。但它也从未停止过。我的一个朋友,他也是一名教授,抱怨说,

好吧,如果我回家,我想做一些研究。但是我的妻子想和我聊天,我的孩子们想和我一起玩。真烦人。我想回家,我想考虑编程。然后我说,好吧,我离开你让你自己待着。你知道我的生活是怎么运作的吗?我整天都在编程。我回家了。我想放松一下。我想和我的丈夫聊天,看电影。你知道我丈夫怎么说吗?塞琳娜,欢迎回家。我有一个很棒的主意,亲爱的。让我们来编程吧。

所以他也非常兴奋关于Hattie,而且他经常有想法。所以有一次我说,不,我不想在周末做这个。我也不想让你在周末做我的旧资源项目。如果你的丈夫给你发送未经请求的拉取请求,这真的很奇怪。但有一次我说,我不想让你在Hattie上工作太多,因为那样我也在工作,我也会一直工作在Hattie上。

所以Hedy挺过了疫情。即使在疫情之后,增长仍在继续。但是Hedy真正的利基,我觉得它最独特的地方,直到Felina决定对这门语言进行用户研究才出现。这是我们仍在网上进行的。所以课程是在线上的。孩子们会来到我们的在线课堂。我没有教课,因为如果我教课会有点奇怪。所以我请了一位同事来教课。然后我们让他们填写一份问卷。

这里有三个问题:你喜欢什么?你讨厌什么?你认为我们应该改进什么?调查显示,“你想改进什么?”孩子们说:“我们想用荷兰语编程。”

“Waps”,对吧?荷兰的孩子们,荷兰人应该非常擅长英语,荷兰语就像英语,“Brijt is brijnt”。我们有这个回显命令,回显就是回显。它只是询问vraag。所以如果前三个是手,其中两个已经相同了。但是孩子们说:“我们想用荷兰语编程。”现在Heidi的网站一直都提供荷兰语的说明,以及英语和荷兰语的错误消息。我们会说,“Brijnt hallo wereld”。

只有关键词是英语。所以从这个角度来看,就像所有这些东西都是荷兰语,只有那些小词不是荷兰语。为什么?

因为这是我学习的方式。制作非英语的东西真的很难。我并没有真正考虑过这个问题,但我认为,如果这是12岁的孩子告诉我的,我应该听他们的,对吧?我不能只是说,好吧,我认为我比你更了解你需要什么。我做这项研究是因为我想真正正式地了解他们想要什么。而且,作为一个技术挑战,我也很好奇。我想,哦,让我看看我能不能做到。怎么样

构建非英语编程语言有多远?然后我就构建了它。一旦我们构建了它,项目就爆炸式增长了。

因为你作为一个程序员理解这一点,如果你有两种语言,你就有N种语言,对吧?法语是我们拥有的第一批语言之一。法语、西班牙语、德语。这些语言与英语的距离比我的语言更远。“Brient”在荷兰语中是“brient”,但在西班牙语中是“imprimeer”,在法语中是“affiche”,在德语中是“drukken”。这些词非常不同。所以我们离英语越远,我就越觉得,这实际上是有道理的。

然后人们开始添加非拉丁语,如印地语和孟加拉语是最初的两种非拉丁语。现在我们遇到了荷兰语或法语版本中没有的许多技术问题,因为它们有不同的字符集,我们没有正确支持。

所以我们不得不做越来越多的编程,越来越多的语言被添加,以至于我的一个来自巴勒斯坦的朋友说,好吧,阿拉伯语呢?

这听起来像很多工作,伙计。但它也听起来像一个很酷的技术挑战。所以我们现在也支持阿拉伯语,这需要我们使用的CSS框架Tailwind。他们过去没有正确支持从右到左。他们现在做得更好,但当时没有。编辑器、错误消息、字符集,所有我都不了解的阿拉伯语内容。但同样,它向我展示了

编程有多不同?什么是编程,你能推动到哪里?所以多语言支持就像滚雪球一样,直到Felina遇到一个她从未听说过的难题。所以我们称我们的数字,比如我的零,它是一个圆圈,称之为阿拉伯数字。但实际上阿拉伯语使用不同的数字。他们用一个点表示零,而不是像一个圆圈。

不同的神经系统是我们必须实现的,我对此一无所知。旋转标记是另一个,对吧?我们在英语中使用单引号或双引号,但在法语中,有些人可能知道,你使用guillemets,它小于大于,用作引号。丹麦语使用相同的符号,但方向相反,我们支持这一点。汉语的引号看起来像方块。我们支持这一点。这些是我没想到的事情。

阿拉伯语有不同的逗号。我们的逗号指向句子的开头。阿拉伯语逗号也是如此。所以它指向相反的方向,所以它指向向上而不是向下。所以他们有不同的逗号、问号和感叹号。所以所有这些我都不了解的事情,我还必须更改,我们还需要将其添加到语法中。

这比我想象的要多,对吧?我考虑过翻转UI。我没有想到UI会不同。我怎么知道这些事情?我什么都不知道。是的。但是,如果我需要处理一些软件,它是比利时人编写的,而且我不理解佛兰芒语,你知道吗?是的。而且……

这是一个很好的问题。我不怪你问这个问题,但这个问题有两个答案,甚至可能三个答案。一个答案是,你为什么需要知道,对吧?可以有像黑人空间和女性空间一样的空间吗?也许可以有一些空间,人们以其他人不理解的方式表达自己。所以也许只会有佛兰芒语源代码,只供佛兰芒人使用。

另一个答案是这个世界已经存在,因为许多人,如果他们创建软件,他们必须使用他们输入的语言的字符串。例如,荷兰政府有一个荷兰语的税收系统,因为人们用荷兰语使用它,我们有非常具体的词,比如抵押贷款利息折扣,你不能轻易翻译。所以字符串是荷兰语。

变量名是荷兰语,因为如果你用荷兰语编写命令,你为什么要翻译如此具体的荷兰语文本词呢?所以整个代码库都是荷兰语、汉语或印地语,这些东西现在已经存在了。只是关键词被强制使用英语,但现在已经有许多用英语编写的编程库了。多语言编程的第三个答案是一个技术性的答案,翻译。

我们这样做。你可以用阿拉伯语编写程序,我可以查看荷兰语的程序。只要它像一个工作的解析程序,将程序漂亮地打印成另一种语言,我就可以解析所有语言。

即使你想查看它,你也可以查看翻译版本,我们翻译所有关键词,我们甚至有一个小的API到谷歌翻译,我们为你翻译字符串和变量名,我们以一种聪明的方式来做,以便相同的变量在任何地方都有相同的名称。对Felina来说,有趣的是,说英语的程序员总是说同样的话。如果有人说阿拉伯语,然后我说荷兰语呢?

它是如何工作的?但没有人说我可以解决这个问题。而还有很多其他的事情,比如,比如只用空格制作编程语言,人们会说,这听起来像一个有趣的挑战。为什么每个人,我从未遇到过一个说英语背景的人说过,哦,这很有趣。让我为你编写这个程序。每个人都像,哦,不。

这不可能做到。举手投降。我放弃了。为什么?这很容易。这只是一个解析树。这是一个需要解决的真正问题。是的,这很有趣。这是一个有趣的例子。

我想这是一种我没有意识到的特权,对吧?我会说英语,我一直都会,但是……是的。是的。这也是我没有意识到的特权,因为我不说英语,但我母语使用拉丁字母。这是一种计算机特权。你不知道什么是计算机特权。我认识几个说西班牙语和葡萄牙语的人

他们的字母有很多重音符号,比如E上的短横线或I上的短横线。人们说,我只是停止用护照上的方式写我的名字了。我只是从我的实际名字中去掉了这个重音符号来适应电脑。我妻子的姓是O'Dwyer。它是O撇号D-W-Y-E-R。

它破坏了一切。我们之前有过争论,因为,我的意思是,在很小的意义上,对吧?我们去商店,他们说,哦,你有奖励卡吗?是的,好的,查一下我的名字。它应该是这样的,哦,撇号,无论什么,然后她按回车键。然后他们的电脑崩溃了,他们说,我不知道该怎么办,对吧?所以我告诉她,不要告诉人们撇号。把它去掉就行了。但这是一种……

一种占主导地位的做法。只是改变你的家庭名来适应机器,或者改变让你成为你的一个东西,你的父母想给你这个名字,上面有那个重音符号,这只是一个普通的字母,然后西方英语世界的电脑迫使你改变你的名字来适应机器

事实上,我们无法让电脑做到这一点,因为我们不在乎,对吧?这种不在乎,特别是编程语言中隐含的忽视非英语人士的问题,导致Felina找到了本地化编程兴起的一个不同的原因。

我们在非洲南部的博茨瓦纳进行了一项全国性的研究,所有高中都参加了一个小时的代码使用Hedy,然后一半的学校用英语编程,一半的学校用茨瓦纳语编程。

这是一个双语国家,因为英国人以前在那里呆过一段时间。所以这并不是为了让它更容易,而是我们查看程序,然后在茨瓦纳语组的孩子们说,我不知道编程可以用我的语言存在。我认为英语是科技的语言。所以如果我参与科技,它必须用英语。看到编程可以用我的母语来做,这太酷了。这与更容易无关,因为他们都会说英语,而是

通过使英语成为主导语言,我们也给每个人都打上了烙印。英语是科技的语言,也是唯一的语言,而它非常有价值。例如,在波多黎各,它是美国的一部分,从法律上讲,那里每个人都说英语,但他们喜欢Hattie,他们喜欢用西班牙语使用Hattie,因为他们真的不想说英语。事实证明……

在世界许多地方,人们都能很好地说英语。但它却带有殖民主义、战争或他们不喜欢或任何其他文化的包袱,对吧?加拿大的说法语的人就浮现在脑海中。但是是的,用你的母语编程,它完全避免了这个问题。

我可以一直坐在这里,但我永远不会得出结论,有些人就是不喜欢用英语。我的国家与英国已经很久没有战争了,所以我对英语没有愤怒的感觉,除了因为这是一种很难的语言,有很多奇怪的字母,你用不同的方式发音。这是你只有通过与人交往和闭嘴才能学到的东西。

并倾听其他人关于使用你的工具的意见,就像这12岁的孩子一样。如果你仔细想想,事情是如何循环往复的,这很奇怪,对吧?Felina一开始是,你知道的,在编程语言领域工作的人,然后转向所有这些教学工作。因为这些12岁的孩子英语不好,经常来自非荷兰语家庭,这让她回到了她编程语言的根源。她发现

在她原来的领域里,真正独特、可解决的问题,对吧?就像这个没有人想到的本地化世界一样。所以她又回到了编程语言的世界,对吧?现在专注于让非英语人士更容易使用。理论上,对吧?她可以重新访问她早期职业生涯中的会议和社区,向他们展示一些他们从未想过的新颖、有趣的挑战。

然而,有一个问题。唯一允许你让编程语言更容易的地方是在教育领域。在这里你可以做到这一点,人们不会真的生气。人们甚至可能会兴奋。哦,你让编程语言更容易了。这对孩子们来说太好了。但是专业程序员每天也处理错误消息。但是你不能让

让它更容易。这不在研究范围内,因为,好吧,他们只需要处理它,对吧?你不能在编程语言本身中做这项工作,因为我们喜欢编程语言很难,对吧?我们喜欢C++,我们喜欢Haskell,因为它很难。简单的东西不是真正的编程,对吧?真正的编程很难。

这是一个问题,对吧?Felina,她对本地化和解析有很多有趣的想法。然后你如何将一个转换成另一个?也许你只是存储语法树。我不知道。有趣的东西。但是PL的人,他们不想听。如果你和专业程序员谈话,情况更糟。这仍然是一条人们不喜欢越过的红线。

人们因为我构建非拉丁编程语言而对我生气。他们给我发愤怒的邮件。他们参加我的会议演讲,他们会生气,因为他们说,例如,“好吧,但是现在我们有一个大型英语社区。然后如果不同自然语言有不同的编程语言,那么社区就会分裂。这更糟。你让编程更糟了。”

我有一个工具,我讨论编程语言的本地化,我试图将阿拉伯数字放在十大最常用的编程语言中。所以只需打印2+5,但是用阿拉伯数字2代替2,用Hamza代替5,它对我们来说看起来像0,但它是阿拉伯数字5。只是字符。没有关键词,什么都没有,只有数字。十大最常用的编程语言中没有一个,甚至Farsis也没有。

3亿人使用阿拉伯数字。我甚至从未听说过这些东西。我在本科时上了五门编译器课程。没有人告诉我阿拉伯数字。没有编程语言支持这个。当所有主要的编程语言甚至不支持这个星球上的所有数字系统时,我们怎么能谈论人工智能呢?

与此同时,在某个时候,COVID结束了,Felina本人可以用带训练轮的多语言版本的语言进入课堂,看到学生使用它,看到回报。我们学校的一些孩子有时会说土耳其语或阿拉伯语,因为那是他们的第一语言。这太酷了,因为通常在荷兰学校系统中,他们不允许说阿拉伯语,因为如果人们可以用不是每个人都理解的语言交谈,那就不是很好。

我理解。但是现在他们可以用自己的语言来做,你会看到我们从其他社区得到的同样的惊奇。他们说,伙计,这在阿拉伯语中有效吗?仅仅因为我们关注这一点。我说,是的。现在我懂一点阿拉伯语了。所以他们立刻对我知道的这五个词印象深刻,因为它们是由荷兰人、聪明的荷兰人使用的,阿拉伯语有点粗糙。

可怕的,对吧?就像其他人对英语感觉不舒服一样,一些白皮肤的荷兰人可能对阿拉伯语感觉不舒服,因为它是一种不适合这里的外语。所以他们不习惯荷兰白人允许他们在课堂上拥有他们身份的这一部分。

这非常非常酷,而且非常有益。这时,学校的其他老师也在使用Hedy,其中一位也是程序员联系了我。当我们使用Python时,我有30个孩子,30个12岁的孩子,对吧?

如果他们在电脑前,我帮不了他们,因为他们都有语法错误。他们都像老师,老师,老师,我卡住了。我倾向于四处跑。就像所有的语法错误,意外的EOF一样。即使在这些专业程序员中,除了当老师之外。但这只需要你一两分钟就能弄清楚错误是什么,因为他们做了这个愚蠢的事情,对吧?他们在分号应该出现的地方放了一个引号,或者其他什么。它很小,但它不一样。所以他说,

它总是感觉像一场马拉松,一直在奔跑。然后一旦他切换到Hedy,错误就变成了完整的解释,而且它们是荷兰语的。哦,带D的print不是关键词。你是说带T的print吗?孩子仍然会说,我卡住了,因为我没有读,对吧?当老师过来时,他们阅读错误消息,他们可以说……

也许你应该阅读错误消息,因为我认为它解释了问题。这需要10秒钟,然后他们转向下一个孩子。所以他说这感觉更容易管理。进行编程课程感觉不那么费力了,因为我们现在让孩子们在一个合理的系统中,我们可以期待一些独立的工作。而如果你让一个12岁的孩子,尤其是一个不说英语的12岁的孩子,

在Python中,你不能指望他们做独立的工作。他们将需要一直手把手指导,因为错误是语法错误和预期的EOF。

甚至一个说英语的成年人也不会理解。它甚至不是英语,对吧?所以我觉得这是一个很好的反馈。从角度来看,这真的让我思考,孩子们不是我的客户。老师是我的客户,老师害怕编程正是因为这个原因。因为你有30个孩子,他们认为,

他们不知道该怎么办。他们都需要我的关注,这也是事实。这是Flina一次又一次发现的一件事。教Python的人,它实际上语法相当低,但他们只是筋疲力尽地试图帮助一个班的孩子克服语法错误。

我曾经收到过来自巴基斯坦的一位男士的电子邮件,他说用Hedy,他说,“我看到了前所未有的参与度。”这甚至不是魔法,对吧?我认为我们没有做任何特别的事情来让孩子们兴奋。只是我们没有把他们赶走。这就是魔法。我们不会把复杂的语法概念和可怕的错误消息摆在他们面前,然后他们就不会辍学了。这就是魔法。

我们回到我们大约一个半小时前说过的话,你当时说,你的目标是教Python吗?是的,过去是目标。但是现在有些人用,比如说,汉语学习了所有级别的Hedy。然后最后,我们说,不,你可以去学习Python了,对吧?训练轮掉了。好的,但是我必须用英语而不是汉语来做。所以

所以去年我写了一篇关于你的编程语言的12个方面可以本地化的论文。如果你想这样做,这就是方法。但在文化上,我希望通过我所做的所有工作,发表关于此的演讲,像你这样的人现在可能会逐渐接受这样一个事实,嘿,也许编程语言可以用非英语编写。在某个时候,语言社区,要么现在在那里的人被我的论点说服,

或者过一段时间后,现在在那里的人会被成长于Hedy或Scratch(这是一种本地化语言,即使它是基于绘图的)的新人所取代。他们会说,嘿,就像我的12岁的孩子一样,嘿,Python,为什么这在汉语中不起作用?然后这两件事导致了一个世界,在这个世界中,这是近乎可能的。我认为,随着使用Hedy的学生数量以及大量的非英语使用者,很有可能

有人会带头创造一个多语言的编程未来。也许他们会采用Hedy,并开始将其用于学习环境之外。他们将开始使用这种语言来构建真实的东西。而Felina的故事,你知道的,它始于倦怠,以及她感觉自己对她的研究没有产生影响,但现在她正在产生巨大的影响。

就像我仍然不知道我是否想留在学术界一样,我的研究生觉得这很有趣,因为,哦,你是一位正教授。所以,你知道,你成功了。是的。但我认为我做的很多事情都要感谢学术界。只是,尽管学术界试图阻止我做我想做的事情,对吧?我现在维护着一个巨大的开源项目。我们有,我不知道,每周一百个拉取请求。

它非常非常大。如此多的翻译人员,如此多的老师,对吧?如果老师想问问题,我们会为他们运行一个帮助台。这些都不是传统上得到奖励的,因为得到奖励的是做科学,做科学是写论文。

这不像维护一个开源项目是教授的工作。我的意思是,感觉好像有一种想法,也许你并不是说有什么东西是你期望研究的样子,或者是你期望你的职业生涯的样子,我不知道,影响力,我想这是这个词。绝对的。这绝对是其中一部分。就像有些人只是喜欢研究,因为他们喜欢进行研究的活动。好吧,祝他们一切顺利。这很好。但对我来说,研究某事是因为我想改变世界。

我想发明一些以前不存在的东西。我想理解一些我以前不理解的东西,这样我也可以帮助其他人理解它。我写过一些从未被引用过的论文,所以也许没有人读过这篇论文。而我们教学确实不仅仅是孩子们很高兴你在这里,而且我让孩子们进来,他们经常是女孩,经常是来自低社会经济背景的孩子,他们没有像我小时候那样拥有电脑。

第一周你就像,为什么计算机科学是必修课?这学期有多少周?多长时间?14周?哦,这很长。有些人就是这样,对吧?这永远不会改变。好吧。但有些人,几周后,他们说,这还不错,这是一个很好的赞美。然后几周后,他们就像,好吧,老师,你认为我的成绩够好,可以实际选择这个主题了吗?下一个模块。

我认为是的。所以你有一些学生,如果我不在那里,或者我们的项目不在这里,他们可能永远不会认为自己是计算机科学方面的人。

女孩,特别是少数民族女孩,正如我所说,来自没有电脑的家庭的女孩,她们不认为自己是电脑方面的人。所以如果它是可选的,她们不会选择它。但如果我让他们看看,那么其中一些人会说,“我喜欢这个。”然后我知道这是一个微小的改变,但这导致了一个你也可以用自己的眼睛观察到的改变。即使只有两三个这样的孩子,对我来说也有起床的理由。这绝对是我需要的。

所以这种需求和影响力,Felina找到了。对她来说,这一切之所以成功的原因非常清楚。正如我之前所说,当人们说我们需要有人在这个学校教这个程序时,我没有想。

这并不总是好的,我做了很多事情都没有思考。这并不总是很好。但当时只是,我没有想,我有时间吗?这在实践中如何运作?为了做这件事,我将不再在大学做什么?我只是觉得这是正确的事情。我认为大多数人真的知道他们想要什么。

就像我构建第一个Hattie原型时一样,这是圣诞假期,正如我所说。我只是认为我需要在这接下来的两周内构建它,这两周应该是休假时间。我想在这上面工作,因为我觉得我需要构建这个东西。然后我知道我让一些人对我也承诺过的事情感到失望,但我只是觉得这是我需要做的,因为这是一个好主意。我可能不会有那么多好主意,所以我需要追求这个。

总是有理由,比如来自社会、朋友或父母的期望,他们告诉自己,不,我不应该留在这份工作上,因为有原因。大多数人实际上真的非常了解他们喜欢什么。人们真的知道他们想要什么。所以如果你只是倾听,那可能是你能做的最好的事情。但我有什么资格建议呢,对吧?

这就是节目。谢谢你,Felina。从鹿特丹熙熙攘攘的教室到波多黎各、博茨瓦纳和巴基斯坦,她的语言传播和彻底改变世界各地各种学生和教育者的教育方式真是令人难以置信。它现在支持54种不同的母语。Felina继续开发它,需要更多支持和资金,了解更多详情,请访问剧集页面

您可以在那里找到一些链接,或在 H-E-D-Y-C-O-D-E.com 找到 Hedy。也就是 Hedyco.com。除此之外,对我来说,Felienne 的故事证明了直觉的力量,对吧?你可以在情感层面上知道你需要做什么,而不仅仅是理性的思考,对吧?

她想在她热爱的领域有所作为,她只是倾听自己内心的声音。她追寻着这种感觉,最终产生了如此巨大的影响。如果您喜欢这个播客,请考虑订阅我的时事通讯。我也会写作,所以您可以欣赏到一些内容,并且我会通知您何时发布新剧集。

另外,我很想听听您对这一集的看法。您可以在 Twitter 上关注我 @Adam Gordon Bell。您可以给我发电子邮件。我很喜欢收到反馈。说真的,有人说些好话能让我开心一整天。

对于真正的粉丝来说,支持我继续制作剧集的最佳方式是访问 co-recursive.com/supporters。您可以在节目说明中找到链接。成为支持者。支持者可以访问额外剧集,并加入社区。直到下次,非常感谢您的收听。