vfp 中调用硬盘_怎样评价数码宝贝第一部中的泉光子郎的编程水平?

c555df18715159b7c0afd8652fc04c83.png

文章授权转载自知乎 作者:Random Forest
受到夜路川答主勇于用 python 进化自己室友的激励,我顺便深挖了一下《数码宝贝》第一部第五集中光子郎在电脑上敲出的代码,终于把原始代码跑了出来,视频在最后。
cc91deb727dccb2cd4cedb5aa5bc5f34.png 《数码宝贝》第一部第五集截图
虽然这段代码会自己乱动并让甲虫兽进化,显得狂拽酷炫吊炸天,但其实和第十集出现的代码是一模一样的 (而动画里表现出的效果明显不同) 。第十集里的代码反而看得更清楚一点。
63f4cf9eed0f4ea919862b4997ea6af3.png 《数码宝贝》第一部第十集截图
根据这张图抽出文本如下:

5f1ea47a87a700cb751f2357d7ab84d0.png

如果想重新原汁原味地运行这段代码,首先要明确它的语言和版本。注意到注释和变量定义的语法更接近 C 系语言,但还有 endwhile、func、endfunc 等关键字,可以确定这不是 VB 或者其他主流的 BASIC 系语言。 但是代码行号的格式暴露了这货肯定是个远古产物,我本来想看看光子郎电脑上这个文件的后缀名是什么,瞅了半天发现是“名称未设定 3” (见上图) ,失去线索的我只能开始疯狂的 google…… 在资料检索过程中主要发现两个问题。一是和这段代码语法相近的语言太多,比如 VFP (Visual FoxPro,知道它的人肯定都老了) 、VimScript、SAP 采用的 ABAP、早期 PHP、伪代码的某个版本。 (https://www.unf.edu/~broggio/cop3530/3530pseu.htm) 乃至德仪计算器的自创脚本语言等等。经过一个个的尝试,发现这些语言都是形似神不似,并不是真正的答案。
a0940762ac0c36f40dd8fc35e5c58440.png Google Books 里找到的一本 TI 计算器手册
第二个问题是,如果仔细看光子郎的代码,你一定会陷入困惑,因为这段代码根本不像是有一个统一的语法规则。这里举两个栗子:
  • 流程控制语法不统一。120-140 行的 while-endwhile 结构,或许让你觉得和 BASIC 有一点点类似,而且顺便猜测 if 语句肯定也会有个 endif 结尾。但是 250-270 行的 if 语句居然用了大括号,更丧心病狂的是在 then 后面接大括号!
  • 变量声明格式不统一。110 行是类 C 的声明格式,而 220 行的函数参数却用了类似 ECMAScript 的声明方式,但用的不是冒号是分号。这让我一度以为这段代码就是导演魔改的,是一种不存在的噩梦般的语言。
然而,在我就要放弃之际,一位国外先行者的博文给了我曙光(尽管文章里有一些错误)。这个语言最终还是被查出来了…… (https://www.zhihu.com/question/30290082/answer/840708044#ref_2) 事情要追溯到 1987 年,夏普发布了一款型号为 X68000 的 PC。作为那个年代的电脑,搭载了 10MHz 的摩托罗拉 68000CPU,1MB 的内存,没有硬盘,且只在日本发售。 其操作系统是夏普为这一系列电脑专门设计的 Human68k,《数码宝贝》中的那段代码,就属于这个操作系统专有的编程语言 X-BASIC。
76f4f0199f93903fc4e150602590810e.png Sharp X68000ACE-HD
6e688600b9359870aa5ecec9a9362912.png X-BASIC手册
0711f7fa3b873a28d59ca0387b620517.png 日本维基上X-BASIC的一段例程
这个系列的最后一款电脑在 1993 年发布 (配置有所增强) ,而《数码宝贝》第一部是在 1999 年放映的,可见在动画制作时期,光子郎的代码也不算特别陈旧。 为了实际地跑一下这段代码,又经过一番艰辛的努力,我搞到了 X68000 的模拟器,还有操作系统 Human68k (version 3.02) 的磁盘映像,现在还能找到这些东西,真的要感谢极客阿宅们的默默奉献。 在模拟器里一开机,感觉就成功了一半:
371d135632be71da7422620e42e1a1f5.png
为了能使代码顺利运行,还需加载 SX-WINDOW 映像。最后终于找到 X-BASIC,一字不差地键入了光子郎的代码:
de506aa859f7ecd5bc2c1456671e5c02.png
执行 run 命令,按代码要求输入一个 1 到 2 之间的浮点数值,下面就是见证奇迹的时刻了! e23e76c085c4de9fb343defa15e5198b.png 我不禁望向窗外的那只放屁虫,它仍在很悠闲地晒太阳,很遗憾我的甲虫兽并没有进化……原因很简单,这真的只是一段随机生成「coast」轮廓的代码。 初始输入是一个阈值,从视频里看,显然阈值越高「海岸」越险峻,阈值越低「海岸」越平滑,很有可能是摘取了当时哪个游戏里地图生成器的一段源码。所以,导演又糊弄事呢? 为了跑这段代码,我查到了一些资料和工具,在此罗列一下,有兴趣可以看看。 X-BASIC文档(日文): https://link.zhihu.com/?target=http%3A//ww3.enjoy.ne.jp/~zoomark/ip/xb/xb_frm.html X68000 Emulator in Java: https://link.zhihu.com/?target=https%3A//stdkmd.net/xeij/ Human68k磁盘映像(日文): https://link.zhihu.com/?target=http%3A//retropc.net/x68000/software/sharp/human302/ X68000相关资料(日文): https://link.zhihu.com/?target=http%3A//retropc.net/x68000/book/x68book.htm 最后话说回光子郎的编程水平,这段代码的难点主要在于用递归实现了分形图形的绘制,虽然没什么特别神秘的地方,但还是需要一定程度的编程技能和数学知识。原理上很像我之前绘制谢尔宾斯基三角形的代码:
Random Forest:小练手:用Canvas绘制谢尔宾斯基三角形 https://zhuanlan.zhihu.com/p/26606208
但是光子郎当时好像上小学四年级?
a2c3631b985dd9a6576bd4f31568e34b.png
而且在动画里,这段程序的输出是这样的,光子郎最后靠这个成功还原了他和美美所在的迷宫。
9a55c6e9bb8b320ef4ccc5db22c6e39d.png
bef30af462c99bfc42f0fba8841940dd.png
嘛,单从这里看,感觉能进科大少年班就是了……
彩蛋:当年 X68000 系列的电脑还随附一个名为 060turbo 的软件,单独装在一个磁盘。 (https://www.zhihu.com/question/30290082/answer/840708044#ref_5) 这个软件的唯一功能是在屏幕上随机打印一张复杂的分形图形 (疑似Mandelbrot 图像?并不是很确定) 。我用模拟器试了一下,效果确实惊艳,感觉光子郎在成为分形大师的路上还需努力。
22afddeb528d5c2191d05d5f59d9d174.png
- END -

bbb252b5110da24e96718d2503757fbf.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值