谢博士专访:父母“刻意规划”成才的孩子,能厉害到什么程度?
时间:2023-8-23 来源:BataGo倍塔狗 访问数:276次
2023 RISC-V中国峰会(RISC-V Summit China 2023)将于8月23日至25日在北京香格里拉饭店举行。届时上海也有分会或分论坛开展。
本次谢凯年博士专访的主人公就和RISC-V技术有关。
上海慕客信教育科技有限公司也是RISC-V产业联盟成员。RISC-V是一个对中国特别有好处的,一个免费开源的,一个可能会对解决技术卡脖子问题都非常重要的一个引擎技术。(谢凯年博士关于RISC-V的科普介绍,可在文末查阅。)
谢博士:学生平时用的是PC机或手机,根本没机会碰到RISC-V,那怎么办呢?我们就做了一个模拟器。在电脑上模拟一个RISC-V。模拟它运行,能够在上面跑程序。因此,指令集模拟器,这件事蛮重要的,特别值得做。
上海慕客信就准备向青少年普及RISC-V。最后,我们选了一条青少年有可能可以理解的一条路,就是用Python做一个指令集仿真器。
把这事儿做出来,需要什么技能呢?首先要英语特别好,要能够读得懂David Patterson用纯种英语写的那个300多页的指令集的描述。读懂之后,再把它变成程序,模拟跑起来。所以除了英文之外,第二就要编程能力也要特别好。
这个模拟器程序可以有两个选择,一个是用C语言来做,一个是用Python来做。
用C语言有人已经做过了,特别麻烦,写得非常复杂,但是跑起来效率挺高的。
还有一个方向就是Python来做。用Python来做,其代码会超级简单,学生都能看得懂,这样呢,也特别容易教学。
所以,我们就选了一个用Python来做RISC-V的模拟器的这么一个技术路线。
这件事,我准备让我的学生来做。我自己以前在大学里教过这方面的,我知道,这个项目的难度可以说算不大不小吧。说大也不算大,毕竟只是个模拟器,而是一个Python的模拟器。说小呢其实也不小,你不但要理解指令集,还要理解汇编语言。现在C语言理解的已经不多了,还要理解汇编语言,所以这个还是一个挺高技术的活。
这个项目,我自己其实也很感兴趣,如果我能它做出来,不管挣不挣钱,我自己也有技术上的成就感。但是我试了一下,不行。什么不行呢?是体力不行。你想想看,先得记300多页的英文,你要从300多页的英文里面找到其中的细节,这对脑子的专注力是巨大考验,我年轻的时候肯定是可以的,但是我现在真的没那个体力。
我就指导许元开同学来做。稍后我会讲,为什么是许同学来做这个。
所以,我需要把我的经验以及我对业界的洞察力,做什么,大概怎么做,和一个年轻的学生结合在一起,这事可能能成。但做之前我并不知道能不能成的。
我教许同学的时候,他是五年级,这个项目做完时,他是高二。
他在高一之前的学习都是在准备,我带着他各种各样的训练,大概有4、5年的时间。到高一的时候才开始着手这个项目。然后高二把它做完了。这个项目还获得了上海市青少年科技创新大赛一等奖。
做之前呢,它不是从0开始做的。我教学生永远不会让他们从零开始制造车轮,我们永远不发明轮子,因为轮子被人发明过了,再去发明有什么意思呢。永远要站在巨人的肩膀上。
我们明确了目标之后,就去找巨人了。看看有没有人做过。有人做过我们就不用做了。
我们就跑到Github这个网站(已被微软收购了),一个程序员交流的地方,叫social coding上面去搜,一搜还真有人在用Python做了一个RISC-V指令集。
既然有人做了,那我们只需要给它加点图形界面,把面目可憎的界面优化一下,能够动画显示,就很好用了。刚开始我们打算走这条路。
于是,给它加了个图形界面,而且是游戏界面,在“我的世界”里面,搭了一个计算机,那个计算机在运行里面的代码。很快我们就做好了。
但运行过程中,我们发现,基本上它只能跑三行它的demo的代码。因为他那个程序里面只写了三行汇编代码。我们试着换别的代码上去跑的时候,通通是跑不出来的。尤其是稍微复杂点的代码就跑不出来。
我们就意识到这个模拟器肯定是有bug的。那这就复杂了,这个工程量就大了。这意味着,我们要重头做了,要在他的基础上,把它的bug修好。
- 第一修复这个模拟器的bug;
- 第二要能够图形化显示,让在“我的世界”里面能够显示出来它的运行过程;
- 第3,我们要能够跑C语言,毕竟用汇编也太痛苦了,这样,这个模拟器才算做好了。我跟许同学一起商量,要实现这三个目标。
许元开这个孩子的特点呢,就是特别喜欢各种烧脑的挑战。人和人真的不一样,别人觉得好枯燥没兴趣的东西,他就特别感兴趣。
而且他英文特别好。他爸爸在他小学三年级的时候,因工作原因带他去美国上过两年的学。许同学五年级的时候回来的,所以说他的英文特别好。他基本上看英文文献就是用英文在思维,不用再切换成中文了。这点非常重要。
所以,我直接给他Patterson写的指令集原文。最原汁原味的给他,他能够看明白,而且看得比我快。300多页的英文指令级的描述,指令的描述特别规范,先搞明白指令集是怎么回事,然后再对着那个代码一行一行看。看看到底错误在哪。
我给了好多例程给他,有些例程是可以跑通的,有些是跑不通的。我们就要分析那个跑不通的例程,到底是错在哪里了?要各种分析。这个事情搞得好长时间,最后都没有把这个BUG挖出来。
因为你面对着一个是完全陌生的,别人造好的,不是你造的一辆车,到底哪个地方卡了螺丝这是很痛苦的。
我知道大概怎么做,但是我确实没这个精力。这位许同学就吭哧吭哧一点点调,调了好几个月,终于发现问题了。
就是作者错误的理解了那个原始文档中的一句英文。具体说,就是long jump,就是长跳转。如果按一般人的理解,short jump后面跟个数字3,就是在目前的情况下往前跳3
在其它的指令集里面,long jump是什么意思呢?
它是直接跳到你给那个数字。
比如long jump3,就要跳到3那个位置去
long jump 1000,就要跳到那个第1000行去。别的语言都是这样看的。
可是如果仔细分析这个英文,RISC-V里面这个long jump,它仍然是在现在的基础上加的那个数字。
Github上那个作者没有读懂这行英文,因此他的程序写错了。具体来讲,就是下一个位置是等于那个数字,还是说下一个位置等于现在的位置加那个数字。就这么一点点的小理解偏差,导致了所有的跳转是通不过的。
所以说它只能运行从零开始的程序,因为零加任何东西就能前三行,再往下的都不行了,稍微长一点就不行。
找到这个就不容易。就是个突破。
我们就把C语言编译成汇编,然后慢慢的再跑起来。最后还是做的很成功。能够跑很多C语言的程序,包括打印什么都跑起来了。同时我们还有一个“我的世界”里面有个演示,有个虚拟的一个屏幕,只要写一个C语言的打印hello world,屏幕上就一个点一个点一个点打出来hello world,就很精彩!
许同学把这个事情弄完了之后就写了篇论文,参加比赛去了。更有意思的事情出现了。高一的时候,他做了这个项目去参赛,结果连三等奖都没得到。我们分析可能是没人相信是他做的,因为对于一个高一的学生太难了,因此质疑他。还有可能就是这个项目没有几个人明白,RISC-V到底是怎么回事。
所以说最后连三等奖都没得,我就觉得挺郁闷的。
他后面还是锲而不舍,继续做,然后高二的时候获得了一等奖。
在这个中间还发生了一件神奇的事。许同学在过程中,还去参加了一些大赛,期间遇到一位评委,特别懂,问了他很多细节,而且句句都问得非常到点子上。一般很少遇到这么懂的评委,后来才知道,原来这个评委就是当年2018年在Github上用Python做RISC-V的指令集的那个作者。他2018年把程序放上去后,就再也没有更新过。如今,帮他找到bug的居然是我们的许同学,而且是一位高中生。
因为这不是一个编程问题,而是一个英语的理解问题导致的bug。
过了这么多年,这个事情就停在那里,没有推动。从18年一直到2023年有个叫许元开的高中生,终于跑通了代码,还能跑通那么多C代码,而且遇上了他当评委,估计百感交集吧。
我也没想到这位作者就在上海,我只看那个Email长得有点像中国的,论坛上我一搜,他曾经发过几个中文帖子,我觉得这位作者大概率是中国人,但没想到在上海啊。
许同学获奖之后,最初的作者就把这篇论文转给了另外一个在北京专门做开源文化的一位袁老师。袁老师说,这个可不得了。因为他本身就有一个RISC-V的讨论组,好多人在讨论Python做RISC-V的指令集好多年都停滞不前了,现在有推动了,而且推动者居然是个学生。他认为这个项目应该进今年的RISC-V的全球的大会讨论组的,所以许元开就被邀请加入到讨论组里了。到时候在会议上会分享他是如何设计的,怎么推动的,怎么跑通了。这件事对于我们教学生也是一个天大的好消息。因为我试过其他的模拟器都好麻烦,得安装这个安装那个,然后还要装Linux系统,最后能跑起来但面目可憎,代码都特别长,学生学起来就很费劲。
这个代码很简单,就300行代码。300行就把整个代码给模拟出来了,Python的效率还是高。代码很简洁,又容易看得懂,因为它那个语法特别接近于人类的思想。
小学五年级,我刚教了他Python,六年级时,带他去参加美国信息奥赛。美国信息奥赛还是蛮有挑战的,要花很多功夫,多年的训练,才可能拿个奖,但是得金奖银奖都很难。结果6月我教他学了Python,学了一个月,在我的世界里用Python玩这些游戏,他就觉得不过瘾了。那么我就直接把美国信息奥赛的英文网站给他,让他直接去做题。那个时候,美国信奥都是用C或C++的,因为跑起来快。
他学的Python,但学得很彻底,因为他的英文好,他的思维和形式逻辑都是英文的,这意味着他天然的理解里面的逻辑和设计思想,他很容易把本来很复杂的东西,用最紧凑的,最理想的,最native的Python的算法给写出来。
按理说,美国信奥最适合C语言和C++的,他作为一个刚学了几个月的Python“土著”,一参赛就得银奖了。
原来,他不光是学Python,他以前还学过奥数啊,所以数学也很棒。他做信奥题,做着做着,就说,这是一道奥数题嘛。
到了寒假,第一次参加美国信奥就过了,而且快得很,大概只用了一半的时间,然后他一下子这个自信心就特别强,觉得这么简单,就想挑战金奖了。要过金了,实际上对算法的速度就有要求了,所以他用Python就一直过不了金。所以他就说不然转到C吧。他就死磕这个USACO。
从侧面你就发现他是一个特别喜欢烧脑,并从挑战中获得乐趣的一个孩子。
他当时读的是交大附中的国际班,他在高一下的时候,决定走国际路线,以后出去。所以不用准备国内高考了,他突然找我说,老师我现在特别清闲,有时间了,他就同时搞了四五个项目,这个项目是其中的一个。
他的理想是什么呢?是设计游戏。我就引导他,说,按你的天资,设计游戏情节什么的就可惜了,你还是要去攻克游戏的三维引擎之类的。所以说你要去熟悉什么GPU的编程这些。
总的来说,这个孩子是一个中西合璧教育模式下的一个成果。一方面他用了中国的奥数,他特别适合各种卷,还如鱼得水,同时他还保持了好奇心,还保持了对于“没用的事情”的追求。
他爸爸也是大学的教授,教创新创业方面的,他说,“我爸在上网课的时候,我在旁边听,怎么创新创业,这些我都耳熟能详了。但是我爸是文科生,所以我到你这儿学各种实现的手段。”作为中西合璧的教育,在他身上体现的蛮淋漓尽致。既能攻坚,又思想开阔。
他的成长路径,更像是一个“刻意规划”的典型。虽然很多观念中对孩子的“刻意规划”多少有些不屑,但这个孩子就是一个很成功的“实验品”,他很优秀,既勤奋内卷又思维开阔。他爸爸对他的培养,相当成功的,这个孩子除了在我这边跟我学之外,他还跟很多顶级圈子的各方面的专家学过。有点像郭靖,一个有天分的孩子,很多高手教过他,他站在巨人的肩膀上往前迈了一小步,包括他做的这个项目,也是在互联网上遇到了高手,不经意间又迈了一步。
我们从小的教育过程中,更多强调练基本功,而且总想要自己弄一套。其实,你可以看看别人的东西,再改进一下,也算成功。而如今,如果你能够看得懂别人的,然后在他的基础上再改进一下,这样的创新,其实才是常态。也是工作上的常态。我们并不需要重新造轮子。改进,也是一种创新。
从教育角度上来说,其实教育也是一场探索。需要家长保持开放性,让孩子多尝试,接受各种可能性,过程尽可能地跟优秀的人在一起。创造外在环境这件事,还是可以效仿的。古人说,读万卷书,行万里路,遍访名师,自己开悟,这些都是成才之路。无论是创新还是教育,不拘泥于某种具体形式,不设限,机会和成才之路就会比你想象的多得多。
用语言来比喻的话,就相当于一种“普通话”。就是我发明了一种话,一种语言,你用它来描述你的计算机,至于你怎么实现,你的组织结构是怎么样的,那是八仙过海各显其能。但是我们在指令这一个级别上,大家是通用的。这意味着在往上跑WINDOWS系统,跑操纵系统,就不用管了。它是一个统一接口。
比如说PC机,目前用的芯片,要么是英特尔(Intel)公司的要么是AMD的。虽然是两个公司造不同的芯片,但是它俩的相同点是它们的指令集是一样的。因此微软可以跑在Intel上,也可以跑到AMD上。这个世界上一共有两种指令集,一种是X86指令集,一种是RISC的指令集。
Intel的指令集叫CISC,就是“复杂指令”。复杂指令级的意思就是一条指令,可以干很多事,因此很复杂。这个只有Intel在用,是一个很古老的、复杂指令集。目前除了Intel没别人用了。那他为什么要用呢?也是为了保持跟以前古老的芯片的一个兼容,所以他一直坚持在用。RISC的指令集,是“精简指令”。就是一条指令,只干一点点事。如果复杂的事,就要用好多指令集去干复杂的事。
如果做个类比,两者就像蚂蚁和大象的区别。
CISC就是大象。一个大象可以轻松扛起一堆木头。
RISC就是蚂蚁。蚂蚁其实也可以扛起一堆木头,就是需要一群蚂蚁扛起一个木头。
两者的设计思想不同。
RISC这个芯片其实也很古老,也都是七八十年了。两者的分野其实也是七八十年代的事。本来芯片,特别是CPU这个行业已经多少年从来都没有过改进了。大概在2015年之前,这个世界只有两个阵营:一个是手机的,肯定用ARM,ARM用的是RISC做智能手机的。;一个是PC机,用Intel或AMD的。再也没有其他的了。
2015年以后,发生了变化。有一个UC伯克利大学的教授叫David Patterson, 他算是计算机行业的鼻祖了。因为他发明了RISC。而且所有的全球的计算机系讲计算机结构的学校都会用到他的教材,我也曾经用过他的教材教计算机结构。这位老兄在这个行业待了很多年,天天教学生。直到2015年,他对这个行业的现状忍无可忍了。他觉得,我教了这么多学生,毕业了一茬又一茬,这么多年过去了,全世界还只有两款CPU,都没有过改进过,太悲哀了。
于是,他就告诉他的2015届的学生说,咱们得为此做点事,做点不一样的事。
他说,我憎恨收钱,我憎恨商业。英特尔赚了太多的钱,ARM赚了太多的钱。我希望有一个开放的指令集。这个指令集,谁的也不抄,就用我教科书上的指令集。当然了,教科书上的还不够专业,我们再改进一下。
2015年他就发明了RISC-V,就是在他教学的基础上让研究生把这个新的指令集做出来了。因为是第5版的RISC,所以叫 RISC-V。做出来之后,他就开放给全世界。也就是谁都可以拿这个新的指令集去做自己的芯片,也不用给他交钱。
虽然他自己是美国人,但是他为了防止美国人搞破坏,为了防止美国出口管制,他特意把 RISC-V基金会挪到瑞士去注册。
他本人还对中国情有独钟,还跑到中国来到处演讲。因为他知道PC都美国人干的,自然不会再搞个新东西。ARM是英国人干的。这个领域,英国人和美国人垄断了全世界。
他认为中国还有机会,从头搞一个CPU。就跑到中国来演讲,在15年的时候在交大也来过。
我跟他还有过交集。很多年前,因为David Patterson做研究要用到我之前那个公司的芯片,我就时不时的跑他在美国的实验室,给他送捐赠的芯片去。
简而言之,RISC-V是一个不受美国控制的,一个开源的,免费的CPU。这个意义非常大,这意味着人人都可以做CPU,而且还不需要向他们两家交钱。把这个CPU做好,就不会再被其它国家卡技术的脖子,所以说RISC-V对中国的意义还是蛮大的。当然了,想完全替代Intel他们还是不太可能,但是在很多领域已经可以慢慢替代了。
最核心的就是那类小东西,比如可控灯这种,已经在大量使用了。到今天为止已经非常多的商用的东西,可以连到网上的小东西,在使用了,总归它们都需要一个CPU。所以应用还是蛮广泛的。
目前我们中国有1000+家做RISC-V CUP的公司。国家也在重点支持这个领域。
RISC-V在中国也成立了产业联盟,就是大家一起来推RISC-V,我们公司也是其中的会员之一。
我们公司的定位也很清楚,就是致力于在学生中普及了RISC-V的教育,让学生更理解RISC-V。
▼▼▼
![](http://www.batago.cn/wp-content/uploads/2023/08/5ca74d1fa8e2a4f09d846e17f03dc7a.png)
倍塔狗人工智能教育机构拥有丰富的赛事实战经验,不管是赛事报名、参赛作品指导、赛前特训还是赛事过程中所需用到的各种素材,我们为各位参赛的同学们提供最专业的帮助。
倍塔狗提供专业的初高中综合素质评价指导和面试辅导,帮助学员进入理想的高中和大学。我们指导的学生通过综合素质评价,进入了上海交通大学、复旦大学等985、211大学。
了解更多的科创比赛辅导详情
![](http://www.batago.cn/wp-content/uploads/2023/08/39b405596f639b8e66a8e94b348f5d3.png)