新聞中心
“Hello, World!”

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、山西ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的山西網(wǎng)站制作公司
46 年過去,這段被世人熟知的代碼仍散發(fā)著歷久彌新的魅力,和它一起登場的 C 語言,如今也成長為世界幾大通行編程語言之一,為互聯(lián)網(wǎng)世界乃至現(xiàn)實世界都編織著更美好的未來。
為了回顧和紀(jì)念編程史,GitHub 上的計算機神經(jīng)科學(xué)家 Nicolas Rougier 和理論生物物理學(xué)家 Konrad Hinsen 共同發(fā)起了一項 Ten Years Reproducibility Challenge(十年代碼挑戰(zhàn))活動,鼓勵大家找出自己十年前或更早的代碼,看看這些代碼現(xiàn)在還能不能運行,代碼相關(guān)的研究能不能復(fù)現(xiàn)。
目前,活動頁面上已經(jīng)有幾十名參與者提交了十多年前的代碼,這些代碼在當(dāng)年看來算得上高新前沿技術(shù),但現(xiàn)在不少被當(dāng)事人打上了「運行可能性低」的標(biāo)簽。這在我們行外人看來很難理解,編程的字母和符號沒變,為什么就不能運行了呢?
十多年,首先變的是編程語言和工具
之前流行一句玩笑話,說「寫 C 語言的看不起寫 C++ 的,寫 C++ 的看不起寫 Java 的,寫 Java 的看不起寫 C# 的,最后大家一起看不起寫 PHP 的」。
一句玩笑話,充分說明了編程語言的變化。
TIOBE(編程語言排行榜單)公布了近 20 年的編程語言排行變化趨勢圖,總體來看,Java 和 C 語言仍然占據(jù)老大老二的位置,Python 異軍突起,PHP、C++、C# 持續(xù)走低,SQL「起死回生」,Swift 半路「殺出」。
▲ 2002 年到 2020 年編程語言趨勢圖。圖片來自:TIOBE
工具的變化往往和編程語言的變化是同步的。
2009 年,Spring 需要若干 XML 配置和 Java 文件,而 2019 年只需要一個 Java/Kotlin 文件就可以。十年前前端只有 Plain Old Javascript、jQuery、ExtJS 可選,而如今就有二十多個選項。
▲ 工具的變化
▲ 可選性大大提升
「唯一沒大變的,可能就是算法了吧?」國外一位程序員小哥說,十年前的 Statistics(統(tǒng)計),到了十年后搖身一變成了 Machine Learning(機器學(xué)習(xí)),可是算法公式還是一樣的。
先問在不在,再問能不能「run」
▲ 全球最大的程序員「交友」及代碼托管平臺,2008 年才上線
要想知道十年前的代碼還能不能「run」起來,首先必須能找到十年前的代碼 —— 這也是「十年代碼挑戰(zhàn)」雖然在圈內(nèi)引起不少關(guān)注但截至目前參與者不多的原因之一。
知名的項目托管平臺 GitHub 2008 年 4 月才上線,很多人更是在 2012 年后才開始使用它托管代碼,在此之前的代碼大多以論文、雜志期刊等形式保存,因此遺失了不少。
例如,法國國家信息與自動化研究所的計算機科學(xué)家 Roberto DiCosmo 在 1998 年發(fā)布了一篇論文,寫了一個名為「OcamlP3l」的并行編程系統(tǒng),但找遍自己和合著者的硬盤以及備份,他也沒能找到代碼,最后機緣巧合才在一個代碼抓取網(wǎng)站找到當(dāng)年的代碼。
還有一位參與活動的 Rougier ,他的代碼發(fā)表在 32 年前的雜志《Tremplin Micro》上,這家雜志出版商早已消失在歷史的長河中,如果沒有其它備份途徑又找不到當(dāng)年的雜志,這份代碼相當(dāng)于在編程歷史上從未存在過。
很難想象,作為互聯(lián)網(wǎng)的產(chǎn)物,代碼也會因為新老時代存儲容器革新的問題而遺失,這是「十年代碼挑戰(zhàn)」給編程圈帶來的第一個現(xiàn)實意義,如何妥善保管之前的代碼是值得考慮的事情。
你「run」憑你「run」,沒當(dāng)年的軟硬件也白搭
找到當(dāng)年的代碼后,別高興得太早,第二個問題來了,相當(dāng)一部分代碼是「run」在當(dāng)年的軟硬件載體上,現(xiàn)在還能找得到這些軟硬件嗎?
前文提到的 Rougier 就遇到了這樣的問題,32 年前 1988 年他才 16 歲,給 Apple II 電腦(1977 年 - 1993 年)寫了一個圖像放大器的程序代碼,是截至目前「十年代碼挑戰(zhàn)」活動中最古老的代碼。
[[341589]]
▲ Apple II
還好 Rougier 的同事在清理辦公室時搶救出了一臺 Apple II ,這臺「老古董」可不好「伺候」,它的老式磁盤無法和現(xiàn)在的計算機連接,代碼的運行也就成了大難題。最終 Rougier 在亞馬遜上淘到了 1993 年的老式磁盤,寫入了三次數(shù)據(jù)才「盤活」磁盤,有了運行代碼的必要硬件基礎(chǔ)。
遇到類似問題的人不少,比如活動的發(fā)起者 Hinsen 說,他在 90 年代寫的代碼都保存在軟盤里,現(xiàn)在找不到讀取相應(yīng)軟盤的的工具了。
▲ 系統(tǒng)也會影響老舊代碼的運行。圖片來自:Sabino Maggi
另外,系統(tǒng)環(huán)境也很重要。
Sabino Maggi 是意大利的一名計算機物理學(xué)家,他在 1996 年用 Fortran 語言建模了一個超導(dǎo)裝置,并用 Microsoft Visual Basic 來處理結(jié)果。二十多年過去,「Visual Basic 是一門死掉的語言,早就被 Visual Basic.NET 取代」,Maggi 只能在自己的 Mac 電腦上做了一個十年前的 Windows 虛擬機來嘗試運行代碼。好巧不巧,Windows 在 96 年發(fā)布的眾多系統(tǒng)版本不向前兼容,導(dǎo)致 Maggi 的代碼沒能成功運行。
人家 9 歲寫的代碼還能運行,9 歲的我卻在玩泥巴
▲ 十年代碼挑戰(zhàn)網(wǎng)頁第一個提交的代碼
「When I was 9 I tried to heal a trees broken branch with grass.」(當(dāng)我 9 歲的時候,我試圖用草來治療一棵樹的斷枝。)
一位年輕的小哥在 YouTube 上說自己 9 歲寫的代碼還能運行,一位用戶發(fā)布了上面這樣的評論,獲得了 6363 個贊。
這次參與「十年代碼挑戰(zhàn)」的代碼都是什么樣的呢?
愛范兒進入 GitHub 上的活動頁面,發(fā)現(xiàn)這些代碼和我們預(yù)想的不太一樣,相當(dāng)一部分是和科學(xué)研究有關(guān)的,和大眾衣食住行的直接關(guān)聯(lián)性較低。
比如第一個參與人 John (EBo) David 提交的代碼,寫于 22 年前,名為「The behavior of landscape metrics commonly used in the study of habitat fragmentation」(常用于生境破碎化研究的景觀度量的行為)。
還有的代碼涉及物理和數(shù)學(xué)研究領(lǐng)域,像「fermions at unitarity(統(tǒng)一的費米子)」、「Poincaré dodecahedral space parameter estimates(龐加萊十二面體空間參數(shù)估計值)」等。
「Typographical features for scene text recognition(場景文字識別的印刷功能)」、「Effects of fire on regional evapotranspiration in the central Canadian boreal forest(火對加拿大中部北方森林中區(qū)域蒸散的影響)」算是和普通人關(guān)聯(lián)度比較高的了。
▲ 十五年前有關(guān)心血管疾病研究的代碼
能讓我們感覺到有一點「現(xiàn)代互聯(lián)網(wǎng)」的代碼也有一些,例如「Accuracy Study and Improvement of Network Simulation in the SimGrid Framework(SimGrid 框架中網(wǎng)絡(luò)仿真的準(zhǔn)確性研究和改進)」讓我們聯(lián)想到了近幾年大火的「AI」,而這份代碼實際發(fā)布于 2009 年。
基因?qū)W、神經(jīng)學(xué)、計算機學(xué)、生物學(xué)、物理學(xué)、數(shù)學(xué)等都有涉及。
「十年代碼挑戰(zhàn)」頁面參與活動的代碼之所以和想象中「軟件開發(fā)」代碼有所不同,我們推測可能有兩個原因。
第一,得益于完善的論文制度,很多和論文相關(guān)或發(fā)布了論文的代碼都得到了良好的保存,只有保存下來的代碼才有可能參與這次活動。第二,十多年前無論是電腦還是編程技術(shù)都不像現(xiàn)在那么普及,電腦和代碼的運用更多集中在高精尖領(lǐng)域。
備注:以上翻譯均來自谷歌
代碼改變世界
不知不覺中,編程語言已經(jīng)成為能影響世界發(fā)展軌跡的事物之一,和每個人的生活或多或少產(chǎn)生著各種關(guān)聯(lián),甚至可以說我們「生不離編程,活不離編程,死不離編程」—— 接生嬰孩的醫(yī)療器械需要編程好操作軟件,從小到老的方方面面都需要編程參與(例如微信、外賣等),延緩我們死亡的醫(yī)療系統(tǒng)也需要編程制作各種軟件。
今年 3 月 25 日,不少用戶發(fā)現(xiàn)用 iPhone 打開淘寶 app 時,會自動彈出一個對話框,提示用戶 3 天后將無法使用淘寶 app,不少剁手黨都擔(dān)心以后不能愉快清空購物車了。事后,淘寶迅速發(fā)布了新版本,修復(fù)了這一 BUG。
不妨想象一下,如果 3 天后淘寶真的不能用了,我們個人乃至整個社會將會受到怎樣的影響?如果某一天中午 12 點,所有的外賣 app 都不能使用了,又會出現(xiàn)什么樣的局面?
代碼在改變世界的同時,也帶來了很多新的問題,最引人關(guān)注的就是個人數(shù)據(jù)和隱私問題。
前不久,小米的 MIUI 12 測試版上線,新推出了「照明彈」功能,許多 app「原形畢露」,原來在用戶不知情的時候,有的 app 甚至每日悄悄讀取用戶的隱私信息高達(dá)上千次,除了必要的關(guān)聯(lián)喚醒行為,app 那些不必要的「小動作」,究竟是什么樣的代碼在背后驅(qū)動?護衛(wèi)我們隱私的 MIUI 12 照明彈的代碼,又是誰替我們寫的?
▲ MIUI 12 展示的照明彈功能
9 月 3 日,蘇州「蘇城碼」app 上線「蘇城文明碼」功能,該功能旨在構(gòu)筑起文明積分信息識別體系,形成市民文明程度「個性畫像」,文明積分等級高的市民將會享受工作、生活、就業(yè)、學(xué)習(xí)、娛樂的優(yōu)先和便利,引起了大眾的廣泛討論,不少人認(rèn)為「文明」的標(biāo)準(zhǔn)不夠客觀,「不文明」的懲罰也容易被技術(shù)左右。新京報專門發(fā)表了點評 —— 是否遵循了程序正義,是否突破了依法行政的「紅線」。
還有,當(dāng)我們在手機上輸入了一些商品關(guān)鍵詞被云同步或被 app 讀取剪切板后,第二天在購物 app 顯要位置就能看到相似商品,不知這個功能是誰寫下的代碼?
作為構(gòu)建虛擬社會的工具,代碼實際是現(xiàn)實社會人性的折射。編程語言一直在那里,怎么用,終究要看我們自己。
分享名稱:為了運行十年前的代碼,他們翻出了1977年的AppleII
網(wǎng)頁網(wǎng)址:http://fisionsoft.com.cn/article/dpiggoj.html


咨詢
建站咨詢
