来自 科技 2020-03-26 16:29 的文章
280字编程挑战
推特与计算机能擦出什么样的火花呢?大多数人可能就想到在计算机上发推特呗。但是,有人就不这么想。酷爱计算机演进史和推特的DominicPajak创建了BBCMicroBot,它能够将一条280字符的推特经过模拟处理进而创建3秒时长的视频。
开源社区总是鼓励人们分享代码。近日,BBC举办了这样一个活动,名为BBCMicroBot。比赛要求参赛者在推特上@BBCMicroBot这一账号,账号机器人会收集推特代码,然后在类似于80年代的BBCMicrocomputer上运行,并输出一个3秒钟的gif动画,而这一微电脑是Basic语言运行的。
乍一听并不觉得有什么难度,但我们会发现,参赛者们在一篇推特所限制的字数(280字)下,会尽可能的展示出他们令人吃惊的编程技巧。这些参赛者当中不乏有我们熟悉的大神,如RaspberryPi的创始人EbonUpton等。
该账号的发起者DominicPajak表示,@bot进行输出的帖子在短短的几周内达到了1000万的访问量,大约每一周运行1000余个Basic程序。
Upton为BBCMicroBot的原始CPU,即6520(8字节微处理器)编写了150字节的数据和机器代码。同时模拟器在处理时也非常全面。然后,他利用Base64Binary-to-text编码方案将二进制数据转化为tweetable文本,并利用具有解码功能的Basic小程序将数据封装起来,进而启动机器代码。之后,人们一直想用更复杂的编码方案来封装更多数据。
BBCMicroBot的创建者Pajak是Arduino的商务拓展副总裁,他非常热爱计算机演进史和推特,因此创建了这个项目。Pajak表示,将计算机和推特二者结合起来的点子很不错。此外,他选择创建MicroBot也有技术方面的理由,BBCBasic主要是由SophieWilson开发的,这是目前为止最好的Basic实现,其中的一些特性使得代码「缩小」成为可能。
从技术层面具体来说,Bot是由Javascript语言编写的,并作为JSbeed模拟的前端。当bot发现一条推特,它会进行信息过滤,然后将文本添加至模拟的BBCMicro键盘缓冲区。经过30秒的模拟时间,bot使用ffmpeg(音视频记录、转换和流处理的完整、跨平台解决方案)创建3秒时长的视频。需要注意的是,bot最初是在树莓派4上运行,之后迁移至了亚马逊网络服务(AmazonWebService)上。
用户对此有什么样的反馈呢?Pajak表示自己收到了很多正面的反馈。人们对首次通过推特使用BBCBASIC非常好奇,也发现了其中的很多乐趣,拉丁美洲的用户甚至创造出了很多口号和表情包。
与此同时,bot程序的复杂程度也大幅提升,从简单的Basic程序到Upton《生命游戏》的实现等等。随着程序门槛不断提升,Pajak也在思考280字符的代码是否真的能够实现这些功能。因此,他转向使用KatieAndersonWindows3.1logo的搞笑编码(tongue-in-cheekencoding),以及PaulMalin经典弹力球demo的复现,后者通过特殊的编码方式将361个ASCII字符代码压缩至280个Unicode字符的推特内容。
作者:xiaobai