十一出游 之路过@老杨的西北(2015.10.01)
群山峻且长,
有水浊而黄。
故人志所在,
射雕与牧羊。

老杨

老杨是我大学时最好的朋友。我们一样不爱上学,翘课泡图书馆,考试搞突击。

刚毕业那会儿,在知乎上回答过这个问题: 你的大学生活,除了上课,其他时间都干了什么?, 里头提到跟老杨一起骑车的经历:

四年里基本每周都会骑车出去1~2趟(一般是周四和周日,周四下午没课),四年下来骑遍了城市的每个角落,往每个方向都骑到过城市的边缘。我知道哪家的蛋挞太甜,而哪家又太酥…
有个朋友喜欢同我聊维特根斯坦和休谟,有时也聊圣经,我们常常就聊上一个下午,直到天快黑了就回头,吃晚饭的时候,看着眼前那些热腾腾香喷喷,真真实实的饭菜,有种梦里回到现实的感觉,前一时刻我还在怀疑神秘主义者是如何可能系好鞋带的,现在一点也并不怀疑眼前饭菜能填饱肚子。
如果是早上出发,时间就更多,出了城市,再骑不远,就能看到不少村镇,也不开地图,《三体》中说“一知道在哪儿,世界就变得一张地图那么小了”,随便挑一个乡镇进去,有时会遇到赶集,不算宽敞的街道两边,琳琅满目的东西。我们也不买什么,就挨个看过去,凑个热闹,他们用方言讨价还假我也听不大懂,眉飞色舞的很有趣。从街头走到街尾,可以耗上半天,最后买3-5斤香蕉离开,价格一般都比超市便宜。
中途饿了的时候就停在路边,春天的麦田绿油油的一大片,各自拿出车上的零食,蹲在麦田边或是小路上吃,就像小学时参加春游,也蹲在杏树林下吃过,我是第一次见到这么一大片的杏花,南方是没有的。天很蓝微风刚好阳光不噪,让人就想躺在麦田里睡个午觉,心情愉悦得难以形容。
傍晚回去的时候,有时会遇到小学生放学,我们就同他们挤进小卖铺,买上两包干脆面和一罐“六个核桃”,吃的时候得推车,味道真挺好的。那时辣条还不像现在这么有名,当时见过但没买。
直到毕业离校的前一天我们还一同骑车逛了大半个城市,第二天我先启程,送别的时候,哭得像6岁时丢了变形金刚。

结识

我在 aboutme 记录了自己关于友谊的价值取向:

视 真挚、勇敢、善意 为可贵的品质

随年岁增长,越发珍视基于价值观而双向选择的友谊。最近打算写这篇文章的时候,才意识到,当时可能是以老杨为模版写下了上边的话。

人与人的缘分真奇怪。我们可能与他人相伴一生,而形同陌路(@曾老师说中国的亲子关系多半如此,从未敞开心扉),也可能因一次交心的对话,成莫逆之交。

与老杨的结识,发生在大二(重新分宿舍)的一个晚上。

那天晚上,舍友们都去上晚自习了,我照常打算泡个脚去图书馆看闲书,老杨则躺在上铺看书,他突然爬下床问了我一个问题,我现在已经记不大清问题的内容,但与《圣经》有关,这是他反复阅读的东西。

那段时间,我被大卫·休谟吸引,而翘课泡图书馆。休谟对因果关系的质疑,和他的归纳问题导致我对自然科学兴趣全无,几乎翘光了这方面的课,后来波普尔/库恩拯救了我的兴趣。阅读休谟的时候,觉天旋地转, 整个大地都不再牢固。 后来我从伯特兰·罗素那儿得知, 康德和罗素自己阅读休谟时,也有过类似的震颤。仿佛整个大地都要塌陷。

因为休谟, 我那段时间对终极问题都感兴趣。传统上,这些终极问题,要么出现在哲学里,要么出现在神学里。

所以当老杨严肃地跟我讨论《圣经》里的神学问题时(许多也是生命的终极问题),我感到十分震惊。第一次发现图书馆之外的世界里,有人如此深刻而严肃地思考这些终极问题。

这次交谈进行了很久,持续到大家晚自习回来,交谈结束后,跟老杨成了莫逆之交,仿佛已是多年老友。就彼此观念的了解程度来说,实际胜过多年老友。

之后我们便经常一起翘课、骑车、看书、瞎逛。 我后来总结经验,翘课这事儿,要是有人跟你一起干,胆子就会变大,这和做其他坏事差不多。我们经常整天整周整月或整学期都不去上课。

多出来的时间,可干的事情可就多了。

四年下来,我读了差不多 1000 本书,一开始是诗词、武侠,后来是哲学、计算机… 差不多每个图书分类都翻过。我那会儿有个错觉,觉得两个校区的图书馆里,哪个位置多了本新书我都最新知道。

翘课多出来的时间,除了读书和骑车,还干了其他不正经但有意思的事。可惜这篇文章的主角不是我, 我们说回老杨。

爱搞发明

翘课多出来的时间,老杨都拿来搞发明。

老杨爱思考。

形而上的问题和形而下的问题,都感兴趣。他喜欢通过搞发明来解决生活中的问题。宿舍阳台上就有一些老杨发明的 “生活问题解决方案”,诸如门窗坏了关不紧之类问题的解决方案。

老杨对矫揉造作的课堂问题不感兴趣,所以在学校里不算什么好学生。捣鼓的那些东西,纯粹算“瞎折腾”。老杨为人正直憨厚,很受同学欢迎,常有人问他最近在捣鼓什么,他都说“唉就那些东西”,带着淳朴的西北口音。

有段时间,老杨对安全事故感兴趣。他就想能不能发明一些东西来保护生命。后来,他申请的几个专利都跟这个话题有关。

有段时间,他想为交通事故和溺水问题提供解决方案。就经常跟我讨论这两个问题,围绕这个话题,我们前后讨论了快一个学期,虽然大多时候我更想讨论哲学问题。

那些日子,我们经常一起泡图书馆。老杨先是通过统计报告(图书/刊物)收集数据,深入了解问题,然后开始想解决方案。后来意识到这个问题域庞大而混乱,于是准备挑选一些严重但集中的问题来解决: 诸如保护公路上的私家车安全。

在几次的讨论中,我们意识到,为了避免这些灾难,需要让汽车能够理解外部情境并作出反应,最好是紧急时刻自动作出反应(就像防抱死制动系统)。

困境

很长一段时间里,我们都不知道怎么才能让汽车拥有这些能力,对外界刺激作出应激反应,好像是生物才有的能力。我们隐约感觉它应该属于某个研究领域,只要向搜索引擎提出正确的问题,就能找到很多解决方案,至少得到线索。但我们不知道如何正确提问。

这种情况很常见,对一个领域的新手来说,最大的困难是,你不知道如何描述你的问题,不知道向何处寻求帮助,不知道如何找到前人在这方面已经积累的经验/工具/文献。Alan Kay 有一篇精彩演讲与这个话题有关: How to Invent the Future II - CS183F

后来,当我偶然了解了传感器和单片机的概念后, 我才大致知道应该去往哪儿。 传感器和单片机这些词我之前是听过的,但我意识不到它与我的问题有关,理解一个东西与知道它的名字是不一样的(费曼)。

确切的说,我们需要进行 物理计算(physical computing)。我们需要采集物理世界的信息并对物理世界施加影响。具体来说,在老杨关心的汽车碰撞问题里,我们需要知道汽车之间的距离,和彼此的速度,然后对行驶中的汽车施加影响,使其中的人尽可能不受伤害或少受伤害。

用硬件编程(主流领域更喜欢用这个词,而不是物理计算)的话说,需要把我们的想法(安全策略)写成代码,烧入到单片机上,单片机跟传感器交互(超声波/雷达)来获取诸如距离之类的信息,然后根据代码里写的策略决定何时驱动执行器,诸如打开电磁开关,来缓解撞击的力度(楞次定律)。

我跟老杨都喜欢物理学,我们当时觉得,有许多物理原理可以运用在这方面(诸如楞次定律),但我们感觉使不上劲儿,因为我们需要有一个可以运行我们想法(策略)的智能系统,很久以后,我才知道,我们需要一台能对物理世界编程的通用计算机。

那时我们一点硬件编程经验都没有。

缘木求鱼

乘法对你有好处—-看! 你可以解决书中的问题. – Seymour Parpert 《Mindstorms》

练习小提琴,三年后我们会告诉你关于音乐的事. – Seymour Parpert 《Mindstorms》

了解到传感器和单片机可以帮助我们后,我告诉老杨,我们需要学习单片机编程,这些教材可能在自动化相关的分类里的。我们在图书馆里很快就找到它们,书架上有很多「51单片机」相关的教材。

我们开心极了,看了扉页,了解到单片机在工业中被广泛应用,来实现自动化,觉得就是这东西了!既能够被编程,又能控制其他传感器/执行器。

我跟老杨便决定好好学习单片机编程(或者叫它硬件编程/物理计算),那时我已经有一些软件编程经验,但只是初学者。很快我们就发现,学习单片机太难了!可怕得像一场灾难。

翻了后一页,就忘了前一页的内容,因为每一页都有无数细节,根本记不住。也不知道哪些重要哪些不重要,作者只是一股脑都告述你。玲琅满目的新名词,看起来完全不像中文,读起来像生造词。每一个概念又牵扯出一大堆其他概念,好像永远没有尽头。我们这本看不懂,就看那本,但都差不多。

书里事无巨细罗列的各种细节,好像把你当成一个计算机,疯狂地给你输入知识点。如果我们当时了解机器学习的话,会发现这个过程很像监督学习,只是被训练的是人脑而不是机器。

我想,我们的教育里,有很多东西是非常先进的,它仿佛早就知道神经网络的重要性,于是提前用训练机器的方式,来训练人脑。遗憾的是,大多学生的大脑(比如我和老杨),不像人工神经网络那样先进,这当然不怪我们的教材和教育方式,怪我们的大脑不行 :)

让孩子对计算机编程,而不是让计算机对孩子编程 – Seymour Parpert 《Mindstorms》

多年后,我在阅读《Mindstorms》时, 几乎感动的落泪, 这是一个何等慈悲善意的心灵,为初学者少受些苦难,对教育界宣战,“要改变的是学校的教育机制,而不是孩子”。Seymour Parpert 所抨击的计算机教育里的那些灾难性想法/做法,我大多都亲历过,尽管这本书在我上学时,已经出版了30年(40年后才有中文版), 但整个计算机教育领域好像闻所未闻似的(今天基本依然如此)。 可想而知,主流计算机教育领域到处都是车祸现场(今天基本依然如此)。

Seymour Parpert 几乎是计算机世界里的希波克拉底。

首先,不伤害 – 古老医学箴言

说回当时。在图书馆里,老杨跟我反复尝试之后,都决定放弃。因为就算我们把整本书弄懂了,好像也只能做那些非常无聊的课后习题,或者一些收音机什么的,我们一点不感兴趣的标准项目。知识后边又有知识,像老和尚跟小和尚讲从前有座山故事似的没完没了,我们只想尽快动手做我们自己的东西,在若干次尝试后,发现还是啥也干不了。只是有一个声音一直说:

练习小提琴,三年后我们会告诉你关于音乐的事。

我们等不了那么久。于是放弃。

老杨在这次尝试后,从此对计算机编程再也没有任何热情。

第一次被劝退是C语言课(许多理工科学生都会学这门课),第二次被劝退是计算机等级考试,第三次是自学单片机教材。

教育最糟糕的一面,并不是没有教会你东西,而是让你从此对那些被教育过的领域再无热情。多年后,回想起我跟老杨经历的这场悲剧,可谓触目惊心,当我跟身边的人交谈,发现它并不属于个例。

我当时的内心潜台词是: 这玩意儿根本不是人学的。

当然,做题家们或许并不觉得。他们对解决真实的问题是不感兴趣的,这类同学的人生苦恼只有一个: 要怎么才能证明自己比别人更优秀? 做题和竞赛是再好不过的方式了,越难的教材越有区分度呀!

在之后的很多年里,我对硬件编程都提不起兴趣,对我来说那些知识太难了,而我太笨了。一个人对做题没兴趣的人,在主流教育体系里,要经历不知多少次这样的捶打。

除非一些意外的机遇,否则我们会一辈子远离那些令人痛苦的东西。我的机遇是后来遇到树莓派和 micro:bit。它们让我重新燃起热情。

但老杨不像我一样好运。

物理计算

真正的教育是用一颗心唤醒另一颗心。

最早唤醒我疲惫心灵的是树莓派。

树莓派社区热情而友善。 那些爱好者写的教材,都有这个气质,他们没有傲慢地板着个脸,像我跟老杨读到的教科书那样,让你一会儿解着这道题,一会儿解那道题; 他们告诉你可以用手中的玩意儿,找点乐子,别管是不是恶作剧,玩得开心就好; 他们给你提供无微不至的引导,努力用人话跟你解释点亮一个LED的过程看似微不足道,但发生了什么了不得的事情; 他们不会丢给你一堆读不懂的名词, 让你永无止境记东西; 最重要的是,他们传递想法和乐趣 …

后来 micro:bit 也深深地打动我,他们为初学者做得更多。我第一次在 Maker Faire 上接触它的时候,就深深爱上了这个小板子,迫不及待地买了一块带回家,将它连到香蕉之类的水果上玩。

好的编程环境/硬件会点燃你的童心。让你手痒痒地想折腾点东西。

MicroBlocks

物理计算新起点

最近一次打动我的是 MicroBlocks。

我突然意识到,这可能我十年前跟老杨一直寻找的东西。十年过去,它终于出现了。如果我们在上学时遇到它,能用它来做多少有趣的东西呀!

seek, and ye shall find – Matthew 7:7–8

在我深入 MicroBlocks 并成为它的贡献者之后(我的贡献量可能仅次于三位创始人), 我确信,这正是当时的老杨需要的东西。 老杨没有兴趣花太多时间在编程里,他只希望编程足够简单,快速掌握以后,立马去做自己真正感兴趣的事情,老杨不想在计算机科学上耗上几年时间,然后才能去做 “真正的事情”。

MicroBlocks 满足所有这些。 这几乎正是 John Maloney 设计它的初心:

让学习者专注于解决问题而不是操心系统机制 – John Maloney

我想这是我能送给老杨最好的礼物了🎁。

我准备今年挑个时间带上这礼物去拜访老杨。并同他一起做几个项目,然后他就可以在 MicroBlocks 做自己的项目,我想老杨这些年,一定积累了很多有趣的点子。

如果你跟老杨一样,喜欢胡思乱想,想通过发明创造来改善世界。那么很可能常规的编程是不够的,你需要进行 物理计算。你需要让计算机跟现实世界(物理世界)交互,进而影响现实世界,事实上,你需要对现实世界编程。在这个过程里,你的想法通过某种咒语(编程语言)铭刻在硅芯片上,这块石头染上这些想法之后,仿佛通了灵性,它将忠于你的想法,并对现实世界施以影响。

如果你跟老杨一样,想立马通过想法改变真实的世界,而不是一直学习无尽的概念,那么, MicroBlocks 是你最好的起点。

礼物 🎁

给老杨的礼物,包含以下的东西:

  • 《通灵芯片》: Alan Kay 认为最适合初入计算机领域的人阅读的书
  • 一份支持 MicroBlocks 的套件(大多是在这里挑的)
    • 2 个 micro:bit : Radio 通信,用于远程控制等
    • 2 个 ESP32: WiFi、蓝牙
    • 若干传感器和执行器
      • 传感器
        • 超声波传感器
        • 人体存在传感器
      • 执行器
        • 电机
        • 舵机
        • 电磁铁
        • NeoPixel 灯带
        • 继电器
    • 其他
      • 杜邦线
      • 电池盒
      • 移动小车
        • 用于构建防碰撞汽车模型

这份清单,在我出发去西北找老杨之前会继续调整,添加有趣的东西。

结语

这份礼物,也送给千千万万像老杨一样热爱思考和创造的人。 MicroBlocks 让我们愉快的创造,这也正是 MicroBlocks 的作者 John Maloney 设计这个项目时希望看到的。

大家可以参考我给出的清单,结合自己感兴趣的事情,自行采购传感器/执行器,MicroBlocks 平台是开放/免费的。

参考