280字編程挑戰:把一條推特長度的程式碼玩出花
- 2020 年 3 月 27 日
- 筆記
機器之心報道
機器之心編輯部
推特與電腦能擦出什麼樣的火花呢?大多數人可能就想到在電腦上發推特唄。但是,有人就不這麼想。酷愛電腦演進史和推特的 Dominic Pajak 創建了 BBC Micro Bot,它能夠將一條 280 字元的推特經過模擬處理進而創建 3 秒時長的影片。

開源社區總是鼓勵人們分享程式碼。近日,BBC 舉辦了這樣一個活動,名為 BBC Micro Bot。比賽要求參賽者在推特上 @BBC Micro Bot 這一帳號,帳號機器人會收集推特程式碼,然後在類似於 80 年代的 BBC Microcomputer 上運行,並輸出一個 3 秒鐘的 gif 動畫,而這一微電腦是 Basic 語言運行的。
乍一聽並不覺得有什麼難度,但我們會發現,參賽者們在一篇推特所限制的字數(280 字)下,會儘可能的展示出他們令人吃驚的編程技巧。這些參賽者當中不乏有我們熟悉的大神,如 Raspberry Pi 的創始人 Ebon Upton 等。
該帳號的發起者 Dominic Pajak 表示,@bot 進行輸出的帖子在短短的幾周內達到了 1000 萬的訪問量,大約每一周運行 1000 余個 Basic 程式。



開發者的自動程式可以按照演算法繪製不同的圖案。
Upton 為 BBC Micro Bot 的原始 CPU,即 6520(8 位元組微處理器)編寫了 150 位元組的數據和機器程式碼。同時模擬器在處理時也非常全面。然後,他利用 Base64 Binary-to-text 編碼方案將二進位數據轉化為 tweetable 文本,並利用具有解碼功能的 Basic 小程式將數據封裝起來,進而啟動機器程式碼。之後,人們一直想用更複雜的編碼方案來封裝更多數據。

BBC Micro Bot 技術詳解及演化
BBC Micro Bot 的創建者 Pajak 是 Arduino 的商務拓展副總裁,他非常熱愛電腦演進史和推特,因此創建了這個項目。Pajak 表示,將電腦和推特二者結合起來的點子很不錯。此外,他選擇創建 Micro Bot 也有技術方面的理由,BBC Basic 主要是由 Sophie Wilson 開發的,這是目前為止最好的 Basic 實現,其中的一些特性使得程式碼「縮小」成為可能。

BBC Micro Bot 創建者 Dominic Pajak。
從技術層面具體來說,Bot 是由 Javascript 語言編寫的,並作為 JSbeed 模擬的前端。當 bot 發現一條推特,它會進行資訊過濾,然後將文本添加至模擬的 BBC Micro 鍵盤緩衝區。經過 30 秒的模擬時間,bot 使用 ffmpeg(音影片記錄、轉換和流處理的完整、跨平台解決方案)創建 3 秒時長的影片。需要注意的是,bot 最初是在樹莓派 4 上運行,之後遷移至了亞馬遜網路服務(Amazon Web Service)上。
用戶對此有什麼樣的回饋呢?Pajak 表示自己收到了很多正面的回饋。人們對首次通過推特使用 BBC BASIC 非常好奇,也發現了其中的很多樂趣,拉丁美洲的用戶甚至創造出了很多口號和表情包。
與此同時,bot 程式的複雜程度也大幅提升,從簡單的 Basic 程式到 Upton《生命遊戲》的實現等等。隨著程式門檻不斷提升,Pajak 也在思考 280 字元的程式碼是否真的能夠實現這些功能。因此,他轉向使用 Katie Anderson Windows 3.1 logo 的搞笑編碼(tongue-in-cheek encoding),以及 Paul Malin 經典彈力球 demo 的復現,後者通過特殊的編碼方式將 361 個 ASCII 字元程式碼壓縮至 280 個 Unicode 字元的推特內容。

Katie Anderson 的 Windows 3.1 logo 搞笑編碼。

Paul Malin 經典彈力球 demo 復現。
如果有人想要在 Apple II 和 Commodore 電腦上創建類似的 Bot,Pajak 會給出指導建議。此外,Pajak 正考慮在實體 BBC Micro 上執行這些推文,並表示已經使用 Arduino MKR1010 將 BBC Micro 聯網了。
參考鏈接:https://spectrum.ieee.org/tech-talk/computing/software/show-the-world-you-can-write-a-cool-program-inside-a-single-tweet
本文為機器之心報道,轉載請聯繫本公眾號獲得授權。