用280个字符编写一个程序,你能写出什么?
也许你会说,我用Python调个包,啥功能都能给你实现了。
那可不行,你还得用BBC BASIC语言编写,在BBC Micro Model B上运行,是不是听着很陌生?
BASIC,一个有着56年历史的直译式编程语言,是许多程序员大佬的入门语言,BBC BASIC是由Acorn Computers为BBC编写的版本,相比原来的BASIC加入了许多额外的结构体关键字;BBC Micro Model B则是20世纪80年代的8位计算机,是当时风靡一时的微型电脑开发板,也是许多程序员大佬的入门神器。
我们先来看看大神用这两个古董加上280字符的程序能实现什么?
一个充满历史厚重感的Windows 95 logo,没错,这就是用280个字符写出来的BASIC程序的输出结果!当然,如果你也想亲手试一下,倒不用去淘一台BBC Micro Model B古董机,现在只要发条Twitter就可以一试!
首个云端的“8位机”,被各路大佬玩坏
Arduino业务开发副总裁Dominic Pajak创建了一个名为“@bbcmicrobot”的推特账户,又叫做BBC Micro Robot。
你只要用编写一段BBC BASIC程序,然后发推特@bbcmicrobot,机器人就会接收推文并通过BBC Micro Model B的仿真器运行Basic程序来处理推文,再将结果推回仿真器输出三秒钟的动图。
这个功能一经推出,立马受到了关注,现在已经快被玩坏了。
据统计,这个机器人在最初的几周内获得了超过1000万次的浏览,并且每周要处理超过1000个Basic程序。
许多大佬也爱上了这个机器人,包括喜剧演员达拉 · 布莱恩(Dara Ó Briain),科普作家本 · 戈达克(Ben Goldacre),当然,最著名的要数树莓派创始人埃本 · 厄普顿(Eben Upton)。
厄普顿编写的是一个Game of Life(生命的游戏)程序,我们先来看看输出结果。
你可能会很疑惑,这是个啥?其实,这是一个经典的细胞自动机,也可以说是一个零玩家游戏,它的演变是由它的初始状态决定的,不需要进行后续的输入,是最一种模拟包括自组织结构在内的复杂现象的一个强有力的方法。
大佬的炫技,我们看不懂。
也有人做了一些大佬做的是一看就知道很厉害的东西,比如这个三维的滚动的小球,作者是游戏巨头Activision的技术总监Paul Malin,他使用了一种特殊的编码将361个ASCII代码字符压缩成了280个Unicode字符推文。
据Pajak介绍,这款BBC Micro Robot原本部署在树莓派4上,但此后转移到了亚马逊云服务器上,大概是是世界上唯一一个云端的8位计算机了。
BBC Micro Robot是用Javascript编写的,运行环境是Node.js,具体来说,当机器人发现一条是Basic程序的推文时,它会进行过滤,再将文本输入模拟的BBC Micro缓冲区中,在30秒后使用ffmpeg创建一个3秒的视频。
发个Twitter缅怀40年前的极简编程岁月
之所以这个BBC Micro Robot会得到像树莓派创始人厄普顿这样的大佬的回应,这背后的原因主要还是情怀。
1988年,当埃本 · 厄普顿还是一个10岁的小孩时,他买了他人生中的第一台电脑——一台二手的BBC Micro,没错,就是BBC Micro Robot模拟的那个8位计算机!
电脑一到手,厄普顿就开始用BBC BASIC语言开始编写程序,很快便得心应手。
所以,当厄普顿发现了这个发个Twitter就能用BBC BASIC编写一个小程序的时候,他一定想起了30多年前的少年时代。
埃本 · 厄普顿和他的树莓派
其实作者的经历也是如此,Dominic Pajak也是成长于20世纪80年代的英国,在学校里学会了BBC Micro编程。
Pajak说:“BBC Basic主要由Sophie Wilson(就是后来设计ARM架构的那个大神)开发,而这是迄今为止最好的Basic实现语言,其中一些非常好的特征允许我们将代码最小化。”
受制于当时的技术,老一代的程序员大佬们对于用有限的代码实现更多的功能可谓是乐此不疲,也可以说是那一代人的情怀。
正如Ableton创始人罗伯特•亨克(Robert Henke)所说,“当技术在表达方面受到限制时,极简主义是必要的。”
如果你也想试一试
如果你也想试一试,缅怀一下30多年前的编程岁月,很简单,只要发一个推特@bbcmicrobot就可以了。
当然,你的推文内容必须是BBC BASIC语言,BASIC(Beginner's All-purpose Symbolic Instruction Code),意思就是“初学者的全方位符式指令代码”,是一种设计给初学者使用的程序设计语言。BASIC是一种直译式的编程语言,在完成编写后不须经由编译及连结等手续即可运行,但如果需要单独运行时仍然需要将其创建成可执行文件。
如果你还不熟悉BBC BASIC语言,没关系,作者也提供了很好的学习教程。
网站链接:https://www.dompajak.com/bbcmicrobot.html
入门教程肯定是从“Hello World”开始了。
如果想要进一步探索BBC BASIC,也可以看一些专门的博客,比如Paul Malin的“Fun with BBC Micro Bot”。
博客地址:https://blog.mousefingers.com/post/bbc/bbc_bbcmicrobot/
“发推”编程,乐趣无穷,文摘菌推荐大家自己动手一试。