国产av一二三区|日本不卡动作网站|黄色天天久久影片|99草成人免费在线视频|AV三级片成人电影在线|成年人aV不卡免费播放|日韩无码成人一级片视频|人人看人人玩开心色AV|人妻系列在线观看|亚洲av无码一区二区三区在线播放

網易首頁 > 網易號 > 正文 申請入駐

這個沒落的編程語言,無意間改變了全球程序員的命運!

0
分享至

2016年,一個叫 left-pad 的小工具被刪除,整個 JavaScript 生態(tài)瞬間癱瘓。

你能想象嗎?這場“網絡災難”的源頭,能一直追溯到 1995 年,那個被遺忘的編程語言——Perl,以及它發(fā)明的包管理系統(tǒng)CPAN。

01

CPAN的誕生

Perl是一門古老的編程語言。

Larry Wall發(fā)明Perl的時候,目的非常單純,幫助自己做“報告生成和日志分析”。

所以他賦予了Perl無以倫比的文本處理能力,特別適合處理正則表達式、日志文件、配置文本等。

Perl也不是為了優(yōu)雅,而是為了“快速地搞定事情”,所以它的表達能力、信息壓縮能力非常強。

Larry說:“做一件事不止一種方法”,鼓勵程序員用自己舒服的方式寫代碼。

于是有些Perl大師就寫出了這樣的代碼:

#!/bin/perl -s-- -export-a-crypto-system-sig -RSA-3-lines-PERL
$m=unpack(H.$w,$m."\0"x$w),$_=`echo "16do$w 2+4Oi0$d*-^1[d2%Sa
2/d0 $n %0]SX$k"[$m*]\EszlXx++p|dc`,s/^.|\W//g,print
pack('H*',$_)while read(STDIN,$m,($w=2*$d-1+length$n&~1)/2)

短短的幾行代碼就實現(xiàn)了RSA算法!

當時美國政府有嚴格的加密技術出口管制,有人將這幾行代碼印到了T恤上,于是T恤衫就變成了禁止出口的“軍火”。

如果穿著它離開美國,將被處以高額罰款和10年監(jiān)禁。

1993年,Marc Andreessen發(fā)明了Mosaic瀏覽器,網頁開始真正流行起來。

為了增加網頁的動態(tài)性,有人提出了CGI腳本,可以在服務器端執(zhí)行,根據用戶的輸入產生動態(tài)內容。

例如留言板,還有訪問計數(shù)器:

CGI程序員可以用各種語言編寫,最早是用C語言,但很快大家就發(fā)現(xiàn)Perl更合適,因為CGI主要在處理HTML文本,正好是Perl擅長的領域。

早期的互聯(lián)網是免費分享的天堂,大家建立了郵件列表,通過郵件的方式分享各種各樣的Perl腳本。

Perl腳本多了以后,郵件分享就不方便了,有些“囤積者”就把自己收集的代碼放到個人FTP站點上讓大家下載。

FTP站點多了以后,有人就想:大家應該合并資源??!要不然重復代碼很多,找起來很麻煩。

最初,大家整理了一個列表,列出Perl模塊的名稱和下載地址,像這樣:

張大胖寫的計數(shù)器:ftp://xxx.xxx.xxx

趙鐵蛋寫的留言板:ftp://xxx.xxx.xxx

叫什么名稱呢?有人提議“CPAN”(Comprehensive Perl Archive Network),靈感來自CTAN,即TeX和LaTex的代碼庫。(嗯,看來這才是真正的老祖宗)。

后來大家覺得用個人的FTP服務器不好,萬一down機了,就無法下載了,干脆集中到一起吧。

有兩個人Andreas J. K?nig 和 Jarkko Hietaniemi,建立了一個叫PAUSE(Perl Author’s Upload Server)的東西,即Perl作者上傳服務器。

每個人都可以在這個服務器上注冊,上傳自己的Perl模塊。

系統(tǒng)建立了一棵分類樹,從原先按人名和文件簡單分組,變成了“數(shù)據庫模塊”、“用戶界面模塊”、“文件處理模塊”等等,這樣大家找代碼更方便了。

從此以后,用Perl做事,大家第一想到的是CPAN,因為那里有所有模塊。如果找不到,也許你可以做一個再上傳。

Perl 5發(fā)布以后,CPAN上的代碼和模塊激增。

到 1999 年,每個月大約有 200 個包發(fā)布到 CPAN。到了 2001 年,這個數(shù)字超過了 500 個。

Perl成了首個擁有超大集中開源代碼庫的語言,CPAN成了一個強大的生態(tài)系統(tǒng)。

不過,還有一個問題還沒有解決:每個月都有這么多的新模塊上傳,還有成千上萬的模塊更新,怎么才能確定它們沒有問題呢?

一般的Perl模塊都包含測試代碼,用戶把模塊下載以后可以測試,并且反饋是“通過”還是“失敗”。

但是不可能讓每個用戶都這么干,于是CPAN設計了一個自動化的方案:志愿者可以貢獻機器,這些機器會自動下載模塊,運行測試,然后把結果傳到一個叫CPAN Testers的網站。

用戶只需要到網站上一看,就知道哪個模塊在哪些系統(tǒng)上運行正常。

這其實就是一個全球分布式的持續(xù)集成系統(tǒng)(CI),如今CI很常見,但是很少有包管理系統(tǒng)像CPAN Tester那樣,能利用志愿者的電腦,分布式地完成Perl代碼跨版本、跨環(huán)境的測試。

Perl社區(qū)確實太了不起了!

從CPAN的發(fā)展歷史來看,是自然而然,水到渠成的事情,Perl適合寫CGI腳本,后來又是LAMP的重要一員,在互聯(lián)網早期非常流行,用戶眾多,隨著分享代碼需求的出現(xiàn),CPAN這這么一步步地成熟了。

02

"感染"其他語言

Perl語法靈活,Perl社區(qū)黑客精神非常濃厚,這些都是好事兒,但是對很多人來說,門檻就有點高了。

2000年左右,有著更清晰語法,更現(xiàn)代面向對象的Python和Ruby崛起,Perl終于讓出了王者寶座。

很多Perl程序員轉入Python和Ruby陣營,也把Perl的優(yōu)秀理念給帶來過來。

2003年,Python的包管理器PyPI對外發(fā)布。

2004年,Ruby的包管理器RubyGems對外發(fā)布。

而Java經過了10年發(fā)展以后,也通過Maven在2004年建立了自己的中央倉庫。

隨后,CPAN就像病毒一樣,感染了各個編程語言,JavaScript、Go、PHP、Rust都有了自己的包管理系統(tǒng)。

它甚至入侵了微軟,.NET,也建立了NuGet作為包管理系統(tǒng)。

這其中以JavaScript的npm最嚇人,我看到2023年的一個數(shù)據,說npm有300多萬個軟件包!

JavaScript特別自由奔放,特別推崇“一包一事”,鼓勵將功能高度拆分為獨立模塊,哪怕只是幾個字符的功能。

這導致了很多“微型”“極簡”的軟件包,其中只有幾行甚至一行代碼。

例如判斷一個數(shù)字是否是偶數(shù):is-even

module.exports = function(n) {
   return n % 2 === 0;
};

還有最為知名的,讓真?zhèn)€互聯(lián)網都顫抖的left-pad:

它的作者Azer不但寫了left-pad,還寫了其他273個軟件包,是npm一個相當大的貢獻者。

這273個軟件包中有一個叫做kik,這個名稱和加拿大一家叫做Kik Interactive的公司相同,這家公司要求Azer Ko?ulu放棄對kik的控制權,因為該公司擁有Kik商標。

Azer當然不愿意放棄,回復了一個 fuck you 的郵件就不搭理他了。

沒想到Kik公司找到了npm的CEO,也是創(chuàng)始人 Isaac Schlueter ,注意,npm和CPAN不同,這是一家商業(yè)實體,是要盈利的。

Kik威脅說要起訴npm,Isaac Schlueter怕了,就把所有權給了Kik公司。

Azer Ko?ulu看到npm竟然站在對方那一邊,一氣之下把自己的273個軟件包都刪除了,其中就包括left-pad。

這一下子捅了馬蜂窩,因為別看left-pad很簡單,卻是JavaScript的一個核心包。

Babel在用它,Webpack在用它,React也在用它,left-pad被下載使用了1500萬次!

left-pad被刪除,“整個互聯(lián)網被摧毀了”!

所以你看,集中式軟件包管理給程序員們帶來了無數(shù)的便利,但一旦出事兒,就是大事兒。

03

缺席的C和C++

有意思的是,C/C++一直沒有流行的包管理系統(tǒng)。

2008 年,Linux內核開發(fā)者Rusty Russell在開源開發(fā)者大會 和CPAN 管理員Adam Kennedy偶然相遇,相談甚歡,回去以后就創(chuàng)建了CPAN的C語言版本 :CCAN(Comprehensive C Archive Network)。

但是CCAN從來沒有流行起來,倒是微軟,在2016年創(chuàng)建了vcpkg這個C和C++的包管理系統(tǒng),收錄了2613個知名軟件包,還有JFrog創(chuàng)建的Conan,也有幾千個,這規(guī)模完全無法和 npm 或 pip 那種“幾百萬包、全民使用”的盛況相比。

C/C++ 是現(xiàn)在這個狀況,我覺得可能有這么兩個原因:

1.語言設計哲學不同

C 和 C++ 強調底層控制、編譯獨立性和平臺適配性,給了程序員最大程度的控制權。

它們不是“一站式生態(tài)”,而是允許開發(fā)者自由決定怎么構建和鏈接依賴。

所以大家都是手動下載源碼包、makefile、自定義構建。

2.二進制兼容性難以統(tǒng)一

腳本語言(如 Python、JavaScript)模塊多為純文本,天然跨平臺。

而 C/C++ 的模塊多是靜態(tài)鏈接庫(.a/.lib)和動態(tài)鏈接庫(.so/.dll),這意味著編譯器(gcc、clang、MSVC)不一致會導致兼容性問題,不同平臺、架構、選項會生成不同的二進制文件,即使源代碼一致,也可能因構建參數(shù)不一而行為不同。

這極大增加了構建和分發(fā)的復雜性,也使得標準化包管理器難以一統(tǒng)江湖。

C/C++ 沒有統(tǒng)一包管理器,可能不是一種“現(xiàn)代開發(fā)者習慣”的友好體驗,但卻是一種“系統(tǒng)編程者文化”的真實寫照。

04

總結

Perl 可能早已退出了主流舞臺,但它無意間種下的種子——CPAN,首次定義了“集中式代碼共享”的范式,讓程序員們不再孤軍奮戰(zhàn),而是能夠站在彼此的肩膀上協(xié)作創(chuàng)新。

它激發(fā)了Python的 PyPI,啟發(fā)了 RubyGems,影響了Java的 Maven,甚至在JavaScript中演化成了如今世界最大的軟件倉庫 npm。

毫不夸張地說,整個編程世界的生態(tài),全球程序員的工作方式,被Perl永久地改寫了。

全文完,覺得不錯的話就點個贊或者在看吧!

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
滬深交易所發(fā)布:降費!

滬深交易所發(fā)布:降費!

數(shù)據寶
2025-12-27 07:35:44
53歲吳越自曝單身生活,為父母買上海大平層,坦言孤獨是一種福報

53歲吳越自曝單身生活,為父母買上海大平層,坦言孤獨是一種福報

好賢觀史記
2025-12-16 17:01:31
1-0,47歲蘭帕德神了:率領掀翻斯旺西,4輪不敗,狂攬51分排名第一

1-0,47歲蘭帕德神了:率領掀翻斯旺西,4輪不敗,狂攬51分排名第一

側身凌空斬
2025-12-27 00:51:09
43歲迪拜王儲接待馬斯克,帶小妾的兒子出席宴會,沒讓嫡子露面

43歲迪拜王儲接待馬斯克,帶小妾的兒子出席宴會,沒讓嫡子露面

小怪吃美食
2025-12-27 10:16:59
復仇不隔夜,伊朗出兵登船,當場扣押兩艘油輪,美國捅了馬蜂窩!

復仇不隔夜,伊朗出兵登船,當場扣押兩艘油輪,美國捅了馬蜂窩!

墨印齋
2025-12-27 14:06:58
博尼傷了,國米慌了,迪烏夫要上位?

博尼傷了,國米慌了,迪烏夫要上位?

不凡體育
2025-12-27 14:44:19
曾是最美央視才女,甩掉孫紅雷嫁給張嘉益,37歲再嫁富豪成贏家

曾是最美央視才女,甩掉孫紅雷嫁給張嘉益,37歲再嫁富豪成贏家

豐譚筆錄
2025-12-27 11:48:27
近2萬套!一個碗,揭開了李佳琦直播間的隱藏副本

近2萬套!一個碗,揭開了李佳琦直播間的隱藏副本

經濟觀察報
2025-12-25 16:22:10
南京博物館事件后,全國博物館紛紛關閉:施工關閉、臨時關閉

南京博物館事件后,全國博物館紛紛關閉:施工關閉、臨時關閉

爆角追蹤
2025-12-26 11:02:32
郭晶晶一家在廣州看車,霍震霆霍啟剛熱聊看電車,霍中曦玩平板

郭晶晶一家在廣州看車,霍震霆霍啟剛熱聊看電車,霍中曦玩平板

娛樂圈圈圓
2025-12-26 13:10:19
霍啟剛郭晶晶帶娃買蜜雪冰城!奶茶先給爺爺喝,這家風才是真豪門

霍啟剛郭晶晶帶娃買蜜雪冰城!奶茶先給爺爺喝,這家風才是真豪門

大眼瞄世界
2025-12-26 23:54:38
萬萬沒想到,華人在海外竟建立了8個國家,分別都是哪些?

萬萬沒想到,華人在海外竟建立了8個國家,分別都是哪些?

文史達觀
2025-12-27 12:20:57
事實證明,“失蹤”9年的歌手阿寶,早已走上了一條“不同的路”

事實證明,“失蹤”9年的歌手阿寶,早已走上了一條“不同的路”

日落于西
2025-12-27 01:30:49
410次開房記錄流出:央企“女老虎”陶荔芳,背后還有多少同伙

410次開房記錄流出:央企“女老虎”陶荔芳,背后還有多少同伙

深度報
2025-12-14 22:36:54
被低估的AI命脈:電力設備板塊,即將被資本市場重新估值

被低估的AI命脈:電力設備板塊,即將被資本市場重新估值

侃故事的阿慶
2025-12-26 00:52:21
今天起生效!美國出入境新規(guī):含綠卡在內,所有非公民都要強制執(zhí)行

今天起生效!美國出入境新規(guī):含綠卡在內,所有非公民都要強制執(zhí)行

華人生活網
2025-12-27 02:31:57
5架美制無人機圍堵釣魚島,日本賭中方不敢擊落?反制手段早備好

5架美制無人機圍堵釣魚島,日本賭中方不敢擊落?反制手段早備好

文雅筆墨
2025-12-27 14:06:30
關系戶!曼聯(lián)太子爺首秀遭狂噴!基恩評論炸裂!

關系戶!曼聯(lián)太子爺首秀遭狂噴!基恩評論炸裂!

奶蓋熊本熊
2025-12-27 11:49:06
爆冷輸國王!杜蘭特空砍24+10,威少21+13再這么打,你要被哄搶了

爆冷輸國王!杜蘭特空砍24+10,威少21+13再這么打,你要被哄搶了

巴叔GO聊體育
2025-12-27 09:18:41
霍去病二十四歲病逝,武帝哭三日,第四日卻殺盡其十七名貼身侍衛(wèi)

霍去病二十四歲病逝,武帝哭三日,第四日卻殺盡其十七名貼身侍衛(wèi)

掠影后有感
2025-12-25 12:38:58
2025-12-27 15:52:49
碼農翻身 incentive-icons
碼農翻身
有趣且硬核的技術文章
212文章數(shù) 601關注度
往期回顧 全部

科技要聞

小米也漲價了!業(yè)界稱終端再不漲明年必虧

頭條要聞

"和平計劃"差臨門一腳 特朗普放話烏命運掌握在他手里

頭條要聞

"和平計劃"差臨門一腳 特朗普放話烏命運掌握在他手里

體育要聞

NBA教練圈的布朗尼,花了22年證明自己

娛樂要聞

劉宇寧:我的價值不需要靠番位來證明

財經要聞

注意,開始拉物價了!

汽車要聞

好音響比大屏更重要?車企開始“聽”用戶的

態(tài)度原創(chuàng)

本地
時尚
教育
親子
公開課

本地新聞

云游安徽|踏訪池州,讀懂山水間的萬年史書

從0度穿到20度,這件衣服才是今年冬天的“頂流”!

教育要聞

美國境內旅游簽轉學簽到底需要花多少錢?

親子要聞

媳婦把3歲女兒的手工扔了,結果被女兒發(fā)現(xiàn)了,老公竟還挑撥關系

公開課

李玫瑾:為什么性格比能力更重要?

無障礙瀏覽 進入關懷版