在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux背后的思想

5RJg_mcuworld ? 來源:嵌入式資訊精選 ? 2019-11-27 15:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

01 Linus Torvalds

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

02 關于開源

Linus Torvald 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;

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 互聯網
    +關注

    關注

    55

    文章

    11244

    瀏覽量

    106263
  • Linux
    +關注

    關注

    87

    文章

    11508

    瀏覽量

    213540
  • 編程
    +關注

    關注

    88

    文章

    3689

    瀏覽量

    95146

原文標題:Linux 背后的思想(內含 Linus 在 TED 采訪視頻)

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Linux權限管理基礎入門

    Linux的廣闊天空中,權限管理猶如一只翱翔的雄鷹,掌控著系統的安全與秩序。掌握Linux權限,不僅能讓你的系統管理更加得心應手,還能有效防止未授權訪問和數據泄露。本文將帶你深入探索Linux權限的奧秘,助你成為權限管理的高手
    的頭像 發表于 05-06 13:44 ?233次閱讀
    <b class='flag-5'>Linux</b>權限管理基礎入門

    Linux主要的性能有哪些?

    ? 什么是Linux? ? Linux是一套自由傳播的類Unix操作系統,是一個基于posix和unix的多用戶、多任務、支持多線程和多cpu的操作系統。它的基本思想有兩點,一切都是文件和每個軟件
    的頭像 發表于 04-30 18:09 ?227次閱讀
    <b class='flag-5'>Linux</b>主要的性能有哪些?

    完整版—單片機編程思想(推薦下載!)

    單片機的編程思想,希望能幫助大家寫出簡明的代碼 內容簡介 以單片機裸環境為基礎,為編程者定義了一個微操作系統(MOS)的編程環境,并面向應用中不斷提高的需求對編程策略進行了深度剖析與研究,從而分離
    發表于 04-16 15:06

    Linux網絡設置與基礎服務

    Linux網絡設置與基礎服務
    的頭像 發表于 04-09 11:51 ?2558次閱讀
    <b class='flag-5'>Linux</b>網絡設置與基礎服務

    干貨來嘍!實用樹莓派Linux編譯指南

    通常情況下,模組對接的Linux協議是USB協議,模組通過USB插入Linux設備后可直接使用,系統會檢測出設備的標識:PID VID。 然而實際運用中,時有新手朋友問: Linux對新手用戶實在
    的頭像 發表于 12-18 16:31 ?533次閱讀
    干貨來嘍!實用樹莓派<b class='flag-5'>Linux</b>編譯指南

    揭秘國外IP代理背后的技術原理與運作機制

    國外IP代理背后的技術原理與運作機制主要基于代理服務器和IP地址的轉發機制。
    的頭像 發表于 11-23 17:32 ?630次閱讀

    Linux用戶管理詳解

    用戶分為普通用戶和超級用戶,超級用戶在Windows系統中為Administrator在Linux系統中為root。登陸Linux系統需要提供用戶名與密碼,登陸后通過一定的方法管理該系統。
    的頭像 發表于 11-01 09:48 ?533次閱讀

    Linux應用編程的基本概念

    Linux應用編程涉及到在Linux環境下開發和運行應用程序的一系列概念。以下是一些涵蓋Linux應用編程的基本概念。
    的頭像 發表于 10-24 17:19 ?633次閱讀

    Linux實用命令大全

    Linux實用命令大全
    的頭像 發表于 10-23 13:50 ?624次閱讀
    <b class='flag-5'>Linux</b>實用命令大全

    Linux根文件系統的掛載過程

    Linux根文件系統(rootfs)是Linux系統中所有其他文件系統和目錄的起點,它是內核啟動時掛載的第一個文件系統。
    的頭像 發表于 10-05 16:50 ?949次閱讀

    如何構建Linux根文件系統

    構建Linux根文件系統是一個涉及多個步驟和概念的過程,它對于Linux系統的啟動和運行至關重要。
    的頭像 發表于 10-05 16:47 ?674次閱讀

    linux驅動程序如何加載進內核

    Linux系統中,驅動程序是內核與硬件設備之間的橋梁。它們允許內核與硬件設備進行通信,從而實現對硬件設備的控制和管理。 驅動程序的編寫 驅動程序的編寫是Linux驅動開發的基礎。在編寫驅動程序之前
    的頭像 發表于 08-30 15:02 ?1074次閱讀

    小白也會的,在linux上跑android應用的方案

    介紹一個可以在linux上跑安卓應用的linux桌面——OpenFDE
    的頭像 發表于 08-23 11:14 ?1216次閱讀
    小白也會的,在<b class='flag-5'>linux</b>上跑android應用的方案

    Linux內核測試技術

    Linux 內核是Linux操作系統的核心部分,負責管理硬件資源和提供系統調用接口。隨著 Linux 內核的不斷發展和更新,其復雜性和代碼規模也在不斷增加。因此,確保內核的穩定性和可靠性變得尤為重要
    的頭像 發表于 08-13 13:42 ?1167次閱讀
    <b class='flag-5'>Linux</b>內核測試技術

    freebsd和linux哪個好用

    操作系統歷史和起源: FreeBSD和Linux都是基于UNIX的操作系統。FreeBSD起源于加州大學伯克利分校的BSD項目,而Linux則是由Linus Torvalds在1991年創建
    的頭像 發表于 08-08 10:29 ?1000次閱讀
    主站蜘蛛池模板: 天天操综 | xxx色xxx性| 亚洲w码欧洲s码免费 | 在线观看高清视频 | 欧美污网站 | 理论片久久 | 国产免费高清视频在线观看不卡 | 天天综合网天天做天天受 | 伊人一区二区三区 | 男人的天堂久久精品激情 | 美女被羞羞产奶视频网站 | 99热色 | 天天天天天天操 | 永久免费在线观看 | 欧美综合色| 亚洲午夜网未来影院 | 狠狠夜夜| 四虎影院最新 | 最好看免费中文字幕2018视频 | 91三级在线 | 成人免费一区二区三区 | 亚洲精品久久久久午夜 | 狠狠色噜噜狠狠狠狠91 | 夜夜澡人人爽人人喊_欧美 夜夜综合网 | 日本aaaaa毛片在线视频 | 日本免费黄色大片 | 成人亚洲综合 | 在线亚洲一区二区 | 不卡一区 | 青娱乐啪啪 | 在线天堂中文在线资源网 | 亚洲精品久久久久久久蜜桃 | 秋霞麻豆| 亚洲 成人 欧美 自拍 | 狠狠色噜噜狠狠色综合久 | 久久艹综合 | 人人免费人人专区 | 天天插天天搞 | 亚洲 欧美 自拍 另类 | vip影视免费观看 | 色视频久久 |