<cite id="ffb66"></cite><cite id="ffb66"><track id="ffb66"></track></cite>
      <legend id="ffb66"><li id="ffb66"></li></legend>
      色婷婷久,激情色播,久久久无码专区,亚洲中文字幕av,国产成人A片,av无码免费,精品久久国产,99视频精品3
      網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

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

      0
      分享至

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

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

      01

      CPAN的誕生

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

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

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

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

      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)

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

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

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

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

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

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

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

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

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

      FTP站點(diǎn)多了以后,有人就想:大家應(yīng)該合并資源??!要不然重復(fù)代碼很多,找起來很麻煩。

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

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

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

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


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

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

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

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

      從此以后,用Perl做事,大家第一想到的是CPAN,因?yàn)槟抢镉兴心K。如果找不到,也許你可以做一個再上傳。

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

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

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

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

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

      但是不可能讓每個用戶都這么干,于是CPAN設(shè)計了一個自動化的方案:志愿者可以貢獻(xiàn)機(jī)器,這些機(jī)器會自動下載模塊,運(yùn)行測試,然后把結(jié)果傳到一個叫CPAN Testers的網(wǎng)站。

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

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

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

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

      02

      "感染"其他語言

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

      2000年左右,有著更清晰語法,更現(xiàn)代面向?qū)ο蟮腜ython和Ruby崛起,Perl終于讓出了王者寶座。

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

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

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

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

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

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

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

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

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

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

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

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

      它的作者Azer不但寫了left-pad,還寫了其他273個軟件包,是npm一個相當(dāng)大的貢獻(xiàn)者。

      這273個軟件包中有一個叫做kik,這個名稱和加拿大一家叫做Kik Interactive的公司相同,這家公司要求Azer Ko?ulu放棄對kik的控制權(quán),因?yàn)樵摴緭碛蠯ik商標(biāo)。

      Azer當(dāng)然不愿意放棄,回復(fù)了一個 fuck you 的郵件就不搭理他了。

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

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

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

      這一下子捅了馬蜂窩,因?yàn)閯e看left-pad很簡單,卻是JavaScript的一個核心包。

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

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

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

      03

      缺席的C和C++

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

      2008 年,Linux內(nèi)核開發(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.語言設(shè)計哲學(xué)不同

      C 和 C++ 強(qiáng)調(diào)底層控制、編譯獨(dú)立性和平臺適配性,給了程序員最大程度的控制權(quán)。

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

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

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

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

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

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

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

      04

      總結(jié)

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

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

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

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

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

      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.

      相關(guān)推薦
      熱點(diǎn)推薦
      90后男生上門喂貓,春節(jié)前后20多天賺16萬,最多1天跑55單只睡3小時,律師提醒:上門喂貓需提前明確責(zé)任

      90后男生上門喂貓,春節(jié)前后20多天賺16萬,最多1天跑55單只睡3小時,律師提醒:上門喂貓需提前明確責(zé)任

      瀟湘晨報
      2026-02-18 16:28:53
      維穩(wěn)辦不能變成欺壓辦,孫玉良:真正的穩(wěn)定是讓弱勢群體揚(yáng)眉吐氣

      維穩(wěn)辦不能變成欺壓辦,孫玉良:真正的穩(wěn)定是讓弱勢群體揚(yáng)眉吐氣

      孫玉良
      2026-02-23 08:18:07
      怪發(fā)型,唇穿孔,冬奧花滑華裔冠軍叛逆征服了全世界!

      怪發(fā)型,唇穿孔,冬奧花滑華裔冠軍叛逆征服了全世界!

      ChicMyGeek
      2026-02-24 17:10:12
      75歲張藝謀再掀桌:比748萬罰款更狠的,是陳婷留的這一手!

      75歲張藝謀再掀桌:比748萬罰款更狠的,是陳婷留的這一手!

      手工制作阿殲
      2026-02-24 16:41:37
      巴拿馬政府強(qiáng)行接管長和營運(yùn)的兩個港口,中方回應(yīng):將堅(jiān)決維護(hù)企業(yè)的正當(dāng)合法權(quán)益!

      巴拿馬政府強(qiáng)行接管長和營運(yùn)的兩個港口,中方回應(yīng):將堅(jiān)決維護(hù)企業(yè)的正當(dāng)合法權(quán)益!

      每日經(jīng)濟(jì)新聞
      2026-02-24 18:05:18
      母親獨(dú)自農(nóng)村過年,女兒打開監(jiān)控淚目了,客廳堆滿柴卻沒一點(diǎn)聲音

      母親獨(dú)自農(nóng)村過年,女兒打開監(jiān)控淚目了,客廳堆滿柴卻沒一點(diǎn)聲音

      子芫伴你成長
      2026-02-24 08:10:06
      當(dāng)因殺死毒販,而讓半個國家燃起戰(zhàn)火后,終于理解了墨西哥的絕望

      當(dāng)因殺死毒販,而讓半個國家燃起戰(zhàn)火后,終于理解了墨西哥的絕望

      閱微札記
      2026-02-24 17:06:05
      中美俄意見一致,寧可讓日本從地球上消失,也堅(jiān)決不允許它擁核!

      中美俄意見一致,寧可讓日本從地球上消失,也堅(jiān)決不允許它擁核!

      老范談史
      2026-02-23 20:33:48
      別再吹天生混血臉了,谷愛凌那一頭標(biāo)志性的金發(fā)藏不住天然的黑發(fā)

      別再吹天生混血臉了,谷愛凌那一頭標(biāo)志性的金發(fā)藏不住天然的黑發(fā)

      西樓知趣雜談
      2026-02-24 16:14:33
      戲子誤國!2026年剛開年,就有3位明星相繼塌房,個個荒唐

      戲子誤國!2026年剛開年,就有3位明星相繼塌房,個個荒唐

      林輕吟
      2026-02-24 07:14:49
      明星卸妝后,曾黎臉蠟黃,王子文像老阿姨,看到王一博后我驚呆了

      明星卸妝后,曾黎臉蠟黃,王子文像老阿姨,看到王一博后我驚呆了

      最美的開始
      2026-02-24 19:00:14
      村里紅白事從不回,男子母親離世,鄰居等著看笑話,結(jié)果長了見識

      村里紅白事從不回,男子母親離世,鄰居等著看笑話,結(jié)果長了見識

      子芫伴你成長
      2026-02-23 12:21:40
      A股:今天上沖到4131后回落,種種跡象表明,明天或出現(xiàn)巨變大行情

      A股:今天上沖到4131后回落,種種跡象表明,明天或出現(xiàn)巨變大行情

      股市皆大事
      2026-02-24 16:08:16
      “茶幾”正在退出中國家庭,學(xué)廣東人這樣做,實(shí)用性讓人大開眼界

      “茶幾”正在退出中國家庭,學(xué)廣東人這樣做,實(shí)用性讓人大開眼界

      室內(nèi)設(shè)計師有料兒
      2026-02-19 11:17:18
      從全球第一到業(yè)績腰斬!公牛集團(tuán)被房地產(chǎn)拖垮,十幾億準(zhǔn)備跑路

      從全球第一到業(yè)績腰斬!公牛集團(tuán)被房地產(chǎn)拖垮,十幾億準(zhǔn)備跑路

      小熊侃史
      2026-01-08 07:55:06
      OpenClaw刪光Meta安全總監(jiān)郵箱!連喊3次停手都沒用,她狂奔去拔網(wǎng)線

      OpenClaw刪光Meta安全總監(jiān)郵箱!連喊3次停手都沒用,她狂奔去拔網(wǎng)線

      新智元
      2026-02-24 12:33:20
      同樣煮餃子,“蓋蓋煮”和“不蓋蓋煮”區(qū)別大,難怪煮出來不一樣

      同樣煮餃子,“蓋蓋煮”和“不蓋蓋煮”區(qū)別大,難怪煮出來不一樣

      阿龍美食記
      2026-02-23 17:00:18
      新加坡大滿貫賽:大捷報!林詩棟3:0大獲全勝,王皓起身鼓掌加油

      新加坡大滿貫賽:大捷報!林詩棟3:0大獲全勝,王皓起身鼓掌加油

      國乒二三事
      2026-02-24 14:02:13
      京東上的假貨,為何如此招搖?

      京東上的假貨,為何如此招搖?

      呦呦鹿鳴
      2026-02-22 21:20:32
      全球頭號毒販被斃,墨西哥的天正在晴,也基本順特朗普了

      全球頭號毒販被斃,墨西哥的天正在晴,也基本順特朗普了

      邵旭峰域
      2026-02-24 10:49:17
      2026-02-24 22:48:49
      碼農(nóng)翻身 incentive-icons
      碼農(nóng)翻身
      有趣且硬核的技術(shù)文章
      228文章數(shù) 627關(guān)注度
      往期回顧 全部

      科技要聞

      宇樹科技發(fā)布四足機(jī)器人Unitree As2

      頭條要聞

      白宮答伊朗問題:特朗普首選是外交 必要時也愿用武力

      頭條要聞

      白宮答伊朗問題:特朗普首選是外交 必要時也愿用武力

      體育要聞

      蘇翊鳴總結(jié)米蘭征程:我仍是那個熱愛單板滑雪的少年

      娛樂要聞

      汪小菲官宣三胎出生:承諾會照顧好3個孩子

      財經(jīng)要聞

      縣城消費(fèi)「限時繁榮」了十天

      汽車要聞

      入門即滿配 威蘭達(dá)AIR版上市 13.78萬元起

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

      本地
      健康
      房產(chǎn)
      時尚
      手機(jī)

      本地新聞

      春花齊放2026:《駿馬奔騰迎新歲》

      轉(zhuǎn)頭就暈的耳石癥,能開車上班嗎?

      房產(chǎn)要聞

      330萬人涌入!春節(jié)全國樓市,第一個賣爆的區(qū)域出現(xiàn)了!

      闊腿褲失寵了?這4條褲子承包你整個春天的時髦!

      手機(jī)要聞

      PGYTECH預(yù)熱RetroVa手機(jī)攝影套裝下月國內(nèi)上市

      無障礙瀏覽 進(jìn)入關(guān)懷版