一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - 用戶操作系統Unix的前世今生

用戶操作系統Unix的前世今生

2020-12-10 23:08今日頭條猿學 Linux

在 Kernighan 看來,今天的代碼編寫太難了,比起某個不知道多少層代碼的文檔中去找需要的函數,自己寫程序邏輯這種創作的行為更加容易。Ken 的電子游戲或者類旅行商問題哪個更重要其實說不好,那么如何打造一個提升程序員工

【前言】

Brain Kernighan,加拿大計算機科學家,曾就職于貝爾實驗室,目前為普林斯頓大學教授。他曾參與 Unix 的研發,也是 AMPL 與 AWK 的共同創造者之一,他和 Dennis Ritchie 共同寫作了C語言的第一本著作《C程序設計語言》,他是大名鼎鼎的 K & R 里面的 K,當然也是 AWK 里面的 K 。作為 Unix 的開發者之一、Unix 命名者,親眼見證了 Unix 的誕生。 關于 Kernighan,還有一個有趣的定律——柯林漢定律。

柯林漢定律:調試一段代碼的難度是編寫它們的兩倍,因此如果你的代碼寫的盡可能巧妙,按照定義而言,你可能沒有能力來調試它了。

關于 Unix ,除了 Kernighan,有三個人的名字需要記住:美國計算機科學學者和工程師、B語言發明人 Ken Thompson,美國計算機科學家C語言的創造者、Unix操作系統的關鍵開發者Dennis Ritchie 以及 達特茅斯學院的兼職教授、著名數學家、工程師以及程序員 Doug Mcllory。 Unix 的誕生地貝爾實驗室真的是大神云集,自己好幾天才能做出來的東西別人可能一頓飯工夫就能解決。這種自由的環境令人不禁想起來著名物理學家費恩曼介紹自己在 Caltech 的有趣故事。在 Unix 的誕生之路上,有哪些人和事給 Kernighan 留下了深刻印象呢?

在貝爾實驗室的第一天就遇到了 Richard Hamming !

1967 年,當 Kernighan 還是一個研究生的時候,就拿到了貝爾實驗室的實習,貝爾實驗室可真大,三千多人在此工作,Kernighan 雖然是實習生,也配置了獨立辦公室,讓我等打工人羨慕不已。令人更酸的是,Kernighan 后來去貝爾實驗室都沒有面試,只要完成博士論文就可以了。和我們一樣,快到中午的時候,也會思考“我中午要吃點什么才好呢?。就像電視劇當中的劇情一樣,真的就有一位紳士來邀請共進午餐。他介紹說自己是 Dick(英文名 Richard 的簡寫和昵稱),Kernighan 當時也沒有記住他的名字,只能偷偷去他的辦公室看門口的牌牌,他就是 Richard Hamming!

Hamming 的英文維基百科頁面特別的長,隨便哪個都是碾壓級別的:參與曼哈頓計劃為核武器發射編寫程序、圖靈獎得主、糾錯碼發明人,為了表彰他的貢獻,IEEE 還特意設立以他的名字命名的獎項。和費恩曼一樣,Hamming 在實驗室里面也不喜歡當團隊的領導者。

將 Kernighan 對于 Hamming 的描述概括起來就是兩個字——偉大。這可不是高帽,Hamming 真的是這樣要求自己的,這個天賦異丙而又有趣的人,在很多方面對世界做出了深刻的影響。Hamming 說過,他會把周五的下午用來思考偉大的事情。他還會去找其他方向的人聊天,發出靈魂拷問:“你的研究是否有可能獲得諾貝爾獎?”如果得到否定回答的話,就會化身教鞭“那你為什么要做?這個研究連獲得諾貝爾獎的可能都沒有,肯定沒那么重要了,你為什么要把時間浪費在不重要的事情上呢?”退休幾年之后,他還發表了關于如何獲得成功職業生涯建議的演講,題目為《你和你的研究》。

Fortran 那么難

話題說回 Kernighan,他聽從了 Hamming 的建議,論文研究的課題是圖分割,這個跟著名的旅行商問題比較像。不過他還得用普林斯頓的電腦,要知道,1967年的電腦跟今天的可大不一樣,和段子里面中用針刻光盤類似,那時候的程序員編程還是喜歡用打孔卡,比如 Fortran 和 Combol 語言。Fortran 是用于科學計算的編程語言,現在也有很多科學家的課題組或者專業軟件在使用Fortran語言編程。

Kernighan 其實也是個有趣的家伙,有一次他們參與了一條廣告的拍攝,他反常地打了一條領帶,結果幾周后對方表示照片丟失了,需要再拍一張,結果 Kernighan 堅決表示不打領帶拍攝,后來發現刊登的還是打領帶的照片,因為那張照片居然被他們找到了。

現在連小學生都會玩電腦和平板,但是大部分見到軟盤的話應該會當成“保存按鈕”,就更不用說古老的打孔卡了。感興趣的朋友可以搜索一下關于打孔卡的歷史。編寫一個程序真的太費功夫了。做好的打孔卡裝在盒子里面,去計算機房,計算機操作人員給你們處理,你就只能等結果,而且可不會給你顯示什么報錯,就算這樣,在那個時候真的是足夠快、且昂貴了。

【關于打孔卡】19世紀80年代,美國人口調查局職員發明了用于人口普查的穿孔卡片和機器,用于90年的人口普查,用了六周就完成了之前需要7年的工程。何樂禮創建的公司發展成了今天的 IBM ,1928 年(算到這邊就是民國十七年),IBM 發現矩形孔更省空間,發明了 80 列的矩陣孔卡片。它的設計是這樣的,最下面的 10 行命名為 0-9 行,頂部兩行為 11、12 行,每列的孔代表一個字符,一些特殊的字符用了額外的單孔雙孔表示。 后來 IBM 又對打孔卡進行了一系列的改進。

用戶操作系統Unix的前世今生

80 孔打孔卡

分時系統和 Multics 的誕生

在 Unix 分時系統出現之前,人工和機器的交互簡直就像《瘋狂動物城》里面的樹懶一樣,慢是真慢,而且毫無交互體驗,和現在相同的是,提交者都不希望有 bug 出現,即使多提交幾張打孔卡的代碼也無妨。

Kernighan 講到,他注意到 Jerry Saltzer寫的給博士論文排版的程序,自己也寫了一個代碼來給自己的論文進行排版。但是 Fortran 對于字符的處理實在是不太好,以至于最后論文居然有 3 盒打孔卡,每盒 5000 張,大概 5 公斤那么重,其中 1000 張是程序代碼,等了兩三個小時之后才打出來這份論文。

貝爾實驗室的 Ken Thompson 和 Dennis Ritchie 開始了一個新的項目——Multics。這是個分時操作系統,在交互式方面有著重要的突破。它允許多人連接到計算機上,每個人都可以獲得一部分時間,給用戶一個獨占整個計算機的感覺,不過計算機實際上還會在他們之間來回切換。如果你可以“獨享”的話,你就可以使用電傳打字機而不需要打孔卡了。電傳打字機這個東西是打字機、打印機和電話線的結合體,你可以輸入命令,通過電話線傳給計算機,然后輸出。這種原理和現在的 SSH 其實比較類似,

打孔卡的環境其實叫做批處理環境,這個提交腳本作業、Windows 當中的 bat 比較像,如果代碼完正確的話,其實效率還是挺高的,就比如我們現在利用超算提交作業,往往就是用的批處理腳本,例如著名的競賽網站 Kaggle 平臺就會分別提供 Notebook 交互環境和 Scripts 的模式。有了分時系統,用戶就可以進行及時的人機交互,對于較小的不成熟的作業就能夠及時獲得反饋。

了不起的 Ken Thompson

不過,Multics 實在是太貴了,盡管它能提供很好的計算環境,很多針對它的描述用到了”過度工程“這個詞。 因此,貝爾實驗室在 1969 年退出了項目,只有 MIT 和 AT&T 還在支持。雖然貝爾實驗室退出了 Multics計劃,Ken 可沒閑著,實驗室有一臺 PDP-7,說是一臺微型機,實際上也是需要一件屋子才能放得下,不過還好已經有顯示器了。他就用這臺 PDP-7 機器,把自己寫的《Space Travel》 游戲在上面運行了。游戲當中玩家可以互相射擊,而且還加入了引力效果,讓玩家對軌道動力學有了簡單了解。

總是有那么多巧合,Ken 的愛人帶著一歲的孩子去加州呆了三周度假。利用這三周的時間,Ken 完成了可以正常運行的系統,他命名為“Uniplexed Information and Computing System”,縮寫為 UNICS ,這可以說是 Unix 的初代機了。

對于文檔處理軟件,Ken 也很感興趣,為了論文格式之類的問題,他們買了一臺排字機,這個東西有點像現在的激光打印機,打印到感光紙上,然后洗成照片。不過機器本身的軟件很容易出錯,兩人商量了決定逆向一下這個軟件,設計自己的軟件來運行。一臺機器、使用手冊,匯編語言的代碼,這就是他們目前手頭上有的東西。Kernighan 想著太難了還是先吃個晚飯,等他回來的時候,Ken 已經寫出了反匯編程序看到裸機當中代碼了,第二天他甚至還用 B 語言寫了一個解釋器。Kernighan 表示說這些事情你我都可以完成,但絕對不是幾個小時就能搞定的。對 Ken 來說簡直就是砍瓜切菜,手到擒來。

文件系統、shell 和管道

早期的計算機,例如 IBM,實際上沒有什么文件系統,雖然存儲信息的方式比較多,但是都比較局限于特定設備和場景,但訪問輔助存儲的信息是,你就得記住注入光盤柱面等等奇怪的屬性。而 Ken 在 Unix 當中就實現了更加簡單整潔的文件系統。只要 6 個系統調用就能獲得處理信息需要的所有東西。

關于 Unix 另外一個偉大的點在于交互式 shell,也就是我們喜歡的命令行。這個想法最初在 Multics 上就有體現,只是 Unix 上更加清晰。早期的管道概念也是在這里萌生的,你不用經過中間件,就能將程序的輸出放到另一個的輸入當中,大概 1973 年,Doug Mcllory 希望把程序接在一起,就像花園里面的水管連接起來一樣,后來反復提及,他想到了用豎線,也就是我們今天的管道符號。Ken 也將管道符號添加到了 Unix 系統。這個有點像函數式編程,Unix 程序似乎一下子變成了積木,有了拼接的可能。

Unix 文化

Unix 系統后來被移植到了 PDP-11 上面,放置這臺機器的地方在貝爾實驗室的 6 層,這就是 Unix 房間,房間很大,但是走廊光線很差,還有些二戰時期的垃圾設備。不過房間本身不錯,就像現在開放式環境一樣,大家可以閑聊,雖然有點嘈雜,畢竟大家的工作一致,有時候很容易得到啟發。

你可以在辦公室里面思考程序,也可以寫在黑板上,需要的時候在放回公共區域,有些人就喜歡一直在公共區域里。比如 Ken,他從來不在自己的辦公室里面,Kernighan 就喜歡在辦公室里面,然和每隔一兩個小時就去沖個咖啡,和別人交流一下。整棟大樓的人都很愿意和別人交流,樓里面的走廊里面貼著很多東西。計算機方向的人在兩個小走廊直接辦公,他們很愿意來回走動。不過 Unix 房間某個時期在走廊的一端,后來又到了六樓,空間非常緊湊,不過這種布局也更方便了大家交談。這種友善的環境當中,經常能發現一些有趣的東西。

據 Kernighan 講,當時他們還搬來了 10kg 的巧克力,人們用刀切一兩塊帶走,搞得滿地都是渣渣,估計負責清潔的人都要炸了。有時候你走進 Unix 房間,走到旁邊的屋子里面,聽到人們會討論 Unix 多么強大或者給別人介紹我們做的其他東西,有時候還會有一些名人到訪。整個氛圍輕松愉快。Ritchie 經常會把他姐姐送給他的英國諷刺刊物《私家偵探》放在桌子上,一般就在巧克力旁邊,我有時候也會翻一下看看里面有趣的卡通畫,不過有些東西真的是英式幽默,沒有在英國生活過可能無法理解。

給 CIA 演示

Unix 的強大引來參觀者無數,70年代中后期,Kernighan 他們就要給許多名人展示 Unix 系統, 陪同人員還都是貝爾實驗室的高層。不過最有意思的還是中情局局長,William Colby。

展示的內容主要基于 Unix 的組合思想,比如管道,多個程序組合就能比寫一個專用程序容易得多。常見的展示就是拼寫檢查,可以把文檔分割成單詞,然后都變成小寫,獲得一片叫好。不過,由于當時的機器比較慢,知道 Colby 要來的時候,提前運行了管道,然后把結果存在文件里面當天直接打印,畢竟不能讓大人物等三四十秒。這就是一個經典的“演示工程”。不過比今天很多"PPT 項目”已經好很多了。

如果對于程序誰有新的想法,也可以寫一個新版本來改進,不過這里有個特別的規則,最后修改這擁有程序的所有權,Kernighan 后來成為了 ed 文本編輯器的所有者。這時候,其實計算機也是一個社區,只是你們看不到誰在線而已。那么還有個命令就是 who,不僅能看到誰在線,還能知道他最后做了什么。這種方式方便了信息共享和共同交流。

編程很難,如何變得簡單?

我們今天用的一切,比如分享代碼樹、審查 PR 等等,其機制在四五十年前就出現了。后來 Unix 傳到了貝爾實驗室之外,包括源碼,人們開始給 Unix 貢獻代碼,雖然這不是開源,但是和開源非常相似。

在 Kernighan 看來,今天的代碼編寫太難了,比起某個不知道多少層代碼的文檔中去找需要的函數,自己寫程序邏輯這種創作的行為更加容易。Ken 的電子游戲或者類旅行商問題哪個更重要其實說不好,那么如何打造一個提升程序員工作效率的環境?如何讓編程變得更加容易呢?如果做出了一些能對自己有幫助的事情,對他人的工作可能也會有所改善,何樂而不為呢?

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲第一色视频 | 亚洲天堂视频在线观看 | 色播导航| 果冻传媒天美传媒网址入口 | 91久久线看在观草草青青 | 猛男深夜狂cao小男生 | 99热在线国产 | 日本网络视频www色高清免费 | 国产精品免费看香蕉 | 欧美午夜寂寞影院安卓列表 | 好男人影视社区www在线观看 | lubuntu网页版在线 | 国产成人精品日本亚洲网站 | 日韩欧美国产在线 | 亚洲欧美综合在线观看 | 美艳教师刘艳第三部166 | 久久成人国产精品一区二区 | 国产精品一二三 | 干露露视频 性感写真 | 国产天天在线 | 34g污奶跳舞| 色综合视频一区二区观看 | 美女被草逼 | 欧美高清乌克兰精品另类 | 欧美同性videos | 色v在线| kk4444在线影视播放 | 天天操夜夜操狠狠操 | 91天堂素人97年清纯嫩模 | 91麻豆精品国产自产在线观看 | 天天色天天综合网 | 四虎在线网站 | 欧美亚洲国产一区二区三区 | 蜜柚精彩在线观看 | 91精品天美精东蜜桃传媒免费 | 欧美日韩综合一区 | 秋霞午夜伦午夜高清福利片 | 亚洲aⅴ男人的天堂在线观看 | 日韩一级精品视频在线观看 | 男人添女人 | 精品久久久久久国产91 |