日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux背后的思想

發布時間:2023/12/20 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux背后的思想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01

Linus Torvalds

Linus Torvalds兩次改變了技術,第一次是Linux內核,它幫助互聯網的發展;第二次是Git,全球開發者使用的源代碼管理系統。在一次TED的采訪中,Torvalds以極其開放的態度討論了他獨特的工作方式和性格特點。Torvalds說:“我不是一個空想家,我是一名工程師,我非常樂意跟夢想家在一起,他們行走四方,仰望蒼穹,看著滿天星辰說,“我想到那兒去。”但我是低頭看路的那種人,我只想填好眼前這個坑,不讓自己掉進去,這就是我。”

02

關于開源

Linus Torvalds

Linux并不是一個合作的產物,它是我一系列項目中的一個,純粹出于自己當時的需要,部分原因是我需要得到結果,但更重要的原因是我享受編程。這段旅程的終點,在25年后的今天(2016),我們仍未達到。當年我只是想做一個完全屬于自己的項目,我壓根就沒想過開源這件事。但在那之后,隨著項目越來越大,?你會開始想讓別人知道。感覺就像“哇,快來看看我的成果!”

成千上萬的人想參與進來(Linux內核項目),但很多時候,我成為了那個斷點,我無法讓自己跨出那一步,同上千人合作。

因此Git是我的第二個大項目,它存在的意義就是維護我的第一個大項目。事實上這就是我的工作方式。我編程并不是為了… ,我編程是因為好玩,但我也想做一些有意義的事情,因此我設計每一個程序僅僅是因為我自己需要。

而我喜歡開源軟件的一點就是,它能讓形形色色的人在一起合作。我們不必相互喜歡,有時候我們甚至互相討厭。是真的,我們經常吵得不可開交。

科學界的開源顯然是一種回歸,科學最初是開源的。但之后變得越來越封閉,只存在那些昂貴的科學期刊上。開源讓科學回歸了,我們有了arXiv和開放期刊。

小編有話說

Linux并不是選擇了開源,只是因為開源恰好是Linux需要的。就如Linus Torvalds所說:“純粹出于自己當時的需要。”

Linus Torvalds是睿智的,做好自己能控制的。

開源不僅僅代表源代碼的開放,開源更是一種工作方式,一種教育方式。因為有了開源,我們多了一種更好的合作共贏的工作方式;因為有了開源,讓更多從業者和學生能夠學習到更好的技術。

03

代碼的品味

Linus Torvalds

有時候你可以換個角度看問題,重寫代碼,排除特例,完美覆蓋所有情況,這就是好的代碼。同時也很簡單,這是最基本的原則。細節非常重要。對我來說,我愿意與之共事的人,必須有好的品位。

采訪中Linus Torvalds對比了以下2個函數:

小編有話說

大牛們總是對自己嚴格要求,不僅僅是要實現功能,并且要優雅的實現。下面我們來看看采訪中Linus Torvalds對比的兩段代碼:

1. 不怎么漂亮的代碼

remove_list_entry(entry){ prev = NULL; walk = head;
// Walk the list
while (walk != entry) { prev = walk; walk = walk->next;????}???? // Remove the entry by updating the // head or the previous entry if(!prev) { head = entry->next; } else { prev->next = entry->next;????}?}

上面的代碼,需要區分要移除的成員是否為鏈表的頭一個成員。需要單獨處理特例情況(要移除的成員為鏈表的頭一個成員)。這個函數比較好理解,這里小編就不做更多的解釋了,如有疑問,請添加小編微信交流。

2.?好的代碼

remove_list_entry(entry){ // The "indirect" pointer points to the // *address* of the thing we'll update indirect = &head;
// Walk the list, looking for the thing that // points to the entry we want to remove while ((*indirect) != entry)) { indirect = &(*indirect)->next; }
// .. and just remove it *indirect = entry->next;}

這個代碼完全不需要單獨處理特例情況,程序整體更加整潔、優雅。其實現原理為:指針變量indirect保存的是鏈表成員結構體中的next成員的地址(head指針也可這樣看),如下圖所示:

所以變量*indirect就相當于是前一個鏈表成員的next成員(相對于要移除的成員來說)。當找到要移除的成員后,進行如下操作即可:

*indirect = entry->next;

—————END—————

掃碼或長按關注

回復「?加群?」進入技術群聊

總結

以上是生活随笔為你收集整理的Linux背后的思想的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。