编程|为了运行十年前的代码,他们翻出了1977年的Apple II
文章图片
文章图片
文章图片
文章图片
文章图片
“Hello World!”
46 年过去 , 这段被世人熟知的代码仍散发着历久弥新的魅力 , 和它一起登场的 C 语言 , 如今也成长为世界几大通行编程语言之一 , 为互联网世界乃至现实世界都编织着更美好的未来 。
为了回顾和纪念编程史 , GitHub 上的计算机神经科学家 Nicolas Rougier 和理论生物物理学家 Konrad Hinsen 共同发起了一项 Ten Years Reproducibility Challenge(十年代码挑战)活动 , 鼓励大家找出自己十年前或更早的代码 , 看看这些代码现在还能不能运行 , 代码相关的研究能不能复现 。
目前 , 活动页面上已经有几十名参与者提交了十多年前的代码 , 这些代码在当年看来算得上高新前沿技术 , 但现在不少被当事人打上了「运行可能性低」的标签 。 这在我们行外人看来很难理解 , 编程的字母和符号没变 , 为什么就不能运行了呢?
十多年 , 首先变的是编程语言和工具 之前流行一句玩笑话 , 说「写 C 语言的看不起写 C++ 的 , 写 C++ 的看不起写 Java 的 , 写 Java 的看不起写 C# 的 , 最后大家一起看不起写 PHP 的」 。
一句玩笑话 , 充分说明了编程语言的变化 。
TIOBE(编程语言排行榜单)公布了近 20 年的编程语言排行变化趋势图 , 总体来看 , Java 和 C 语言仍然占据老大老二的位置 , Python 异军突起 , PHP、C++、C# 持续走低 , SQL「起死回生」 , Swift 半路「杀出」 。
▲ 2002 年到 2020 年编程语言趋势图 。 图片来自:TIOBE
工具的变化往往和编程语言的变化是同步的 。
2009 年 , Spring 需要若干 XML 配置和 Java 文件 , 而 2019 年只需要一个 Java/Kotlin 文件就可以 。 十年前前端只有 Plain Old Javascript、jQuery、ExtJS 可选 , 而如今就有二十多个选项 。
▲ 工具的变化
▲ 可选性大大提升
「唯一没大变的 , 可能就是算法了吧?」国外一位程序员小哥说 , 十年前的 Statistics(统计) , 到了十年后摇身一变成了 Machine Learning(机器学习) , 可是算法公式还是一样的 。
先问在不在 , 再问能不能「run」
▲ 全球最大的程序员「交友」及代码托管平台 , 2008 年才上线
要想知道十年前的代码还能不能「run」起来 , 首先必须能找到十年前的代码 —— 这也是「十年代码挑战」虽然在圈内引起不少关注但截至目前参与者不多的原因之一 。
知名的项目托管平台 GitHub 2008 年 4 月才上线 , 很多人更是在 2012 年后才开始使用它托管代码 , 在此之前的代码大多以论文、杂志期刊等形式保存 , 因此遗失了不少 。
例如 , 法国国家信息与自动化研究所的计算机科学家 Roberto DiCosmo 在 1998 年发布了一篇论文 , 写了一个名为「OcamlP3l」的并行编程系统 , 但找遍自己和合著者的硬盘以及备份 , 他也没能找到代码 , 最后机缘巧合才在一个代码抓取网站找到当年的代码 。
推荐阅读
- 显卡|《半条命:AIyx》使用RTX 3090显卡运行 画面宛如现实
- 苹果|iPhone12 运行内存曝光,又被苹果偷偷阉割了
- 阿里巴巴|IE浏览器真的就成了时代的眼泪,哪个会成为了PC端的霸主
- 苹果|苹果真狠,为了给iPhone12Pro让路,竟然停售iPhone11Pro系列
- IT之家|成功运行《毁灭战士》,达人用700多个土豆发电
- 万微科技2016|必读的编程书:用Python玩转数据科学编程
- 电热汇|意味着什么?,全国首条!世界最大!输煤管道带浆运行成功
- 威锋网|4GB,新 iPhone 运行内存信息曝光:Pro 版本为 6GB,其余则为
- 后代|人类存在的意义是什么?或许不是为了繁殖后代,而是宇宙需要人类
- miui12|MIUI12加入一项新功能,网友炸锅:为了它都要买小米手机!