是不是看不懂鴻蒙代碼?有人給你寫好中文注釋你看不看?

2021-02-15 紅薯胡說

每個碼農,職業生涯,都應精讀一遍內核源碼. 鴻蒙內核源碼就是很好的精讀項目.一旦熟悉內核代碼的實現,將迅速拔高對計算機整體理解,從此高屋建瓴看問題.

為何想給鴻蒙源碼加上中文注釋

源於注者大學時閱讀linux 2.6 內核痛苦經歷,一直有個心願,想讓更多計算機尤其是內核感興趣的減少閱讀時間,加速對計算機系統級的理解,不至於過早的放棄.但因過程種種,一直沒有成行,基本要放棄這件事了. 但9月10日鴻蒙正式開源,重新激活了注者多年的心願,就有那麼點一發不可收拾了 :|P

致敬鴻蒙內核開發者

感謝開放原子開源基金會,鴻蒙內核開發者提供了如此優秀的源碼,了了多年的夙願,津津樂道於此.越深入精讀內核源碼,越能感受到設計者的精巧用心,創新突破. 向開發者致敬. 可以毫不誇張的說 OpenHarmony/kernel_liteos_a 可作為大學C語言,數據結構,作業系統,彙編語言 四門課程的教學項目.如此寶庫,不深入研究實在是太可惜了.

理解內核的三個層級

筆者認為理解內核需分三個層級:

第一: 普通概念映射級 這一級不涉及專業知識,用大眾所熟知的公共認知就能聽明白是個什麼概念,也就是說用一個普通人都懂的概念去詮釋或者映射一個他們從沒聽過的概念.說別人能聽得懂的話這很重要!!! 一個沒學過計算機知識的賣菜大媽就不可能知道內核的基本運作了嗎? NO!,筆者在系列篇中試圖用 鴻蒙源碼分析系列篇|張大爺系列故事【 CSDN | OSCHINA】 去構建這一層級的認知,希望能捲入更多的人來關注基礎軟體,尤其是那些有錢的投資人加大對國家基礎軟體的投入.

第二: 專業概念抽象級 這一級是抽象出一個專業的邏輯概念,讓學過點計算機知識的人能聽得懂,可以不用去了解具體的細節點, 比如虛擬內存,老百姓是聽不懂的,學過計算機的人都懂,具體怎麼實現的很多人又都不懂了,但這並不妨礙成為一個優秀的上層應用程式員,筆者試圖用 鴻蒙源碼分析系列篇 【 CSDN | OSCHINA】 去構建這一層級的認知,希望能捲入更多對內核感興趣的應用軟體人才流入基礎軟體生態, 應用軟體咱們是無敵宇宙,但基礎軟體卻很薄弱.

第三: 具體微觀代碼級 這一級是具體到每一行代碼的實現,到了用代碼指令級的地步, 鴻蒙內核源碼注釋中文版 kernel_liteos_a_note 試圖解構這一層級的認知,英文是天生適合設計成程式語言的人類語言,計算機的01碼映射到人類世界的26個字母,誕生了太多的偉大奇蹟.但我們的母語註定了很大部分人存在著語言層級的映射,希望注釋中文版能讓更多愛好者參與進來一起研究,拔高咱基礎軟體的地位.

鴻蒙是面向未來設計的系統,高瞻遠矚,格局遠大,設計精良, 知識點巨多, 把研究過程心得寫成鴻蒙源碼分析系列篇,如此 源碼中文注釋+系列篇文章 將加速理解鴻蒙內核實現過程.

系列篇文章 進入 >> 鴻蒙系統源碼分析(總目錄) 【CSDN | OSCHINA】查看,兩大站點持續更新....感謝CSDN和OSCHINA對博客的推薦支持.

注釋中文版 進入>> 鴻蒙內核源碼注釋中文版 【 CSDN倉 | Gitee倉 | Github倉 | Coding倉】閱讀,四大倉庫每日同步更新....

加注釋方式是怎樣的?

因鴻蒙內核6W+代碼量,本身只有很少的注釋, 中文註解以不對原有代碼侵入為前提,源碼所有英文部分都是原有鴻蒙注釋,所有中文部分都是筆者的注釋,儘量不去增加代碼的行數,不破壞文件的結構,注釋多類似以下的方式,如圖:

另外用字符畫了一些圖方便理解,直接嵌入到頭文件中,比如虛擬內存的全景圖,因沒有這些圖是很難理解內存是如何管理的,後續還會陸續加入更多的圖方便理解.

仰望星空還是埋頭走路

精讀內核源碼當然是件很困難的事,時間上要以月為單位,但正因為很難才值得去做! 內心不渴望的永遠不可能靠近自己.筆者一直堅信興趣是最好的老師,加注也是在做自己感興趣的事.如果能讓更多人參與到內核的研究,減少學習的成本,哪怕就節省一天的時間,這麼多人能節省多少時間, 這是件多好玩,多有意義的事情啊. 時代需要仰望星空的人,但也需要埋頭走路的人, 從鴻蒙一行行的代碼中筆者能深深體會到各中艱辛和堅持,及時鴻蒙對未來的價值,只因心中有目標,就不怕道阻且長.

新增的zzz目錄是幹什麼的?

中文加注版比官方版只多了一個zzz的目錄,裡面放了一些筆者使用的文件,它與內核代碼無關,大家可以忽略它,取名zzz是為了排在最後,減少對原有代碼目錄級的侵入,zzz的想法源於微信中名稱為AAA的那批牛人,你的微信裡應該也有他們熟悉的身影 :|P

相關焦點

  • 39 個奇葩代碼注釋,看完笑哭了.
    導讀:作為程式設計師,有沒有讓你感到既無語又崩潰的代碼注釋?StackOverflow 上有一個類似的問題,問大家見過哪些超秀的注釋,不少程式設計師紛紛吐槽自己見過的那些逆天注釋,我們一起來圍觀一下。1.//就不給你們寫注釋//這代碼寫得這麼費勁//所以你們讀著也得費勁
  • 代碼中的漢字能阻擋CIA黑客?別陶醉了!他們在招中文黑客
    但事實上,這僅僅是CIA黑客看不懂中文導致的,若要實現 信息安全,僅僅依靠原始碼中的中文或中文注釋是遠遠不夠的,而且這也非長遠之計。由於絕大多數程序代碼都是用通用程式語言寫成,這些英文字母組成的代碼,全球程式設計師都認識,但認識代碼歸認識,能不能徹底解讀就是另一回事了——原始碼一般都是比較晦澀的,沒有注釋的代碼換了開發這個程序的工程師之外的人來讀其實是很難讀懂的。
  • 鴻蒙OS開原始碼精要解讀之——init
    另外,APL(About Programming Language)眼下看將是老夫的長遠目標。上次想在神農班裡找有緣人接棒,可惜緣分不夠。最近幾篇公眾號預計會和鴻蒙開源部分的代碼解讀有關。有很多開發者願意為鴻蒙搖旗吶喊,未來可期!
  • 手把手教你用JS開發鴻蒙智能表應用
    到了 9 月下旬,公司收到了華為寄過來的搭載鴻蒙系統的智能手錶,因為某種原因,智能表開發的任務落到了我頭上。我是前端開發,說實話,當時接到這個任務時候,其實沒多少底,畢竟不懂 APP 開發的流程,雖說鴻蒙支持 JS 開發,但其實心裡也清楚,裡面應該還是有很多坑要踩的,事實證明,坑是真的多。哈哈哈。今天為什麼有時間寫這篇文章呢?
  • 程式設計師又背鍋了 | 蝦米音樂代碼注釋驚現「窮逼vip」
    實際上,在寫代碼的時候,為了讓同事看懂這串代碼的作用,程式設計師會對這行代碼進行注釋。這位程式設計師小哥居然給這些短期 VIP 用戶起了一個名字,叫做「窮逼vip」。有意思的是,該程式設計師可能怕自己忘記,特意寫明了這類 vip 的使用對象:活動送的那種.
  • 在線寫代碼,彈幕操控遊戲……沒點智商都看不了直播了!
    當然,能看這種直播的人,也都會有幾把刷子,「觀眾都是很友好的,他們會和你一起閱讀代碼,有時還會幫助你一起修改。和觀眾一起互動是很有趣並且很有吸引力的。」 不過因為寫代碼的直播內容實在太小眾了,一年過去,Rafael的關注量只有一千多人,好在粘性比較大。 在國內,也同樣有啃代碼直播這塊硬骨頭的人,鬥魚曾經有過一位專門寫代碼的萌妹主播,典型的能靠臉吃飯卻偏偏要靠才華。
  • 你們歪果仁是不是對中文有什麼誤解……反正我已經看不懂漢字了
    雖然單獨看還看不出啥,但如果多個連用,就可以模擬動作、光波、水柱等特效。說真的,學中文的一大難點在於人家壓根兒不是基於字母表而是象形字……這和西方語言差別太大了。如果你本身說英語,你肯定覺得法語、拉丁語啥的相對容易學。就好比你已經有一所房子,只需在上面加蓋一個房間就好了,根本不用操心地基、管道、電線啥的。但學中文就不一樣了,這就像重新建一所房子,這完全就兩碼事兒啊。
  • 明明她寫的都是中文,怎麼我一個字兒也看不懂?
    每個字都認識,就是看不懂?可能李誕的解釋比較形象:「你只要使用網際網路,你就能時不時地看見她出現在熱搜上。而且她那些熱搜都很奇怪,就是你點進去看半天,你也看不懂。你不光看不懂那件事,你有時候都不知道她在說什麼,很奇怪的語言風格。」
  • 在鴻蒙2.0beta手機版發布的第二天,我寫了一個鴻蒙的物聯網應用手機APP
    當然了,第一件事並不是寫代碼,而是去弄一個運行鴻蒙系統的虛擬機(其實流程和Android Studio是一樣的),這樣我寫的代碼才有地方跑(不是系統卡,而是遠程桌面網不好的話有延時)好了,既然虛擬機跑起來了,就直接執行項目代碼吧,然後一個hello world出來了,說明運行成功。
  • 直播界的一股清流,為啥我要看程序媛直播寫代碼
    ▲專注寫代碼的妹子果然是一股清流2013年直播網站Twitch.tv火爆了起來。有技術的遊戲大神被足不出戶的遊戲宅們圍觀,大家各取所需好不和諧。同時遊戲開發的程序媛們將自己代碼遊戲的過程直播給遊戲玩家。
  • 鴻蒙內核源碼分析(自旋鎖篇) | 彙編到令人心碎的自旋鎖 | 中文註解HarmonyOS源碼 | v26.01
    但C語言代碼中找不到變量的變化過程,而是通過一段彙編代碼來實現.看完本篇會明白也只能通過彙編代碼來實現自旋鎖.幾個關鍵函數自旋鎖模塊由內聯函數實現,見於los_spinlock.h 代碼不多,主要是三個函數.
  • 原來鴻蒙手錶可以這麼玩
    到了 9 月下旬,公司收到了華為寄過來的搭載鴻蒙系統的智能手錶,因為某種原因,智能表開發的任務落到了我頭上。我是前端開發,說實話,當時接到這個任務時候,其實沒多少底,畢竟不懂 APP 開發的流程,雖說鴻蒙支持 JS 開發,但其實心裡也清楚,裡面應該還是有很多坑要踩的,事實證明,坑是真的多。哈哈哈。今天為什麼有時間寫這篇文章呢?
  • 2020徵文-TV10分鐘鴻蒙應用實戰開發:鴻蒙手繪板 (含原始碼)
    這裡我們使用鴻蒙觸摸組件來實現。在代碼中去實現Component.TouchEventListener方法:所以,在onTouchEvent事件函數中,我們的代碼這樣寫:switch (touchEvent.getAction()) {  case TouchEvent.PRIMARY_POINT_DOWN
  • 免費送我會員還被標註為窮逼 VIP,蝦米音樂 App 代碼注釋曝光
    11 月 19 日,在 V2EX 社區的技術版一名網友發布了一篇名為《蝦米 mac 客戶端發現個好玩的注釋》的帖子,文中貼出了阿里巴巴旗下蝦米音樂 Mac 版客戶端的代碼,其中負責該項目的程式設計師為了讓同事看懂這串代碼,由此對該段的代碼進行了注釋,結果出現了如下的截圖——「窮逼VIP(活動送的那種) 」,帖子一出引發了眾多網友的爭議。
  • 3D遊戲編程:遊戲代碼的整體結構是什麼樣子的?
    也就是說,你能把前面17節的內容完全掌握了,你的3D遊戲編程基礎就有了,接下來再講解代碼,你就很容易明白了。從這一節開始,我們將要把整個3D遊戲示例程序的代碼講解一遍。由於有Direct3D的幫忙,我的程序代碼只有1000來行,所以,即便你是初學者,也是可以學明白這些代碼的。
  • 鴻蒙套安卓?偏信偏聽前,先看下任正非《新聞聯播》48秒、230字
    當時就有人提出種種質疑,我也單獨寫了一篇文章去寫這件事。 想著現在華為屬實不易,無論它賺了自己多少錢,可都是在辦正事,於是最近就多寫了幾篇華為的事。 客觀不能算,但總算沒有太吹噓。 鴻蒙,是不是套殼?
  • 鴻蒙的由來,你知道得多少?為什麼華為以鴻蒙來定義系統的名字?
    自從盤古破鴻蒙,開闢從茲清濁辨。第一回的最後一句也又說到:宇宙天地萬物誕生於鴻蒙之中。眾所周知華為的晶片有「麒麟」,」鯤鵬」,而這兩個的名稱都是來自山海經的異獸,中國也向來都有將古神話中的關鍵詞來命名大型活動或者是我國的科技展示,比如航天方面有「玉兔」,「嫦娥」,「天宮」等等,這樣看來是不是有點明白的意思了。
  • 鴻蒙系統初探-之從舊版鴻蒙彈窗說起
    用jadx打開entry_signed_entry.apk看一下,裡邊只有ShellMyApplication和MainAbilityShellActivity,我在鴻蒙代碼裡還有一個MainAbility並沒有出現在.apk
  • 鴻蒙和安卓,到底有什麼區別?
    在開發者大會上宣布將 HarmonyOS原始碼捐贈給中國開放原子開源基金會,並在大會上公布了鴻蒙系統的開源路線。https://openharmony.gitee.com/openharmony鴻蒙使用基於 Intellij IDEA 深度定製研發的 DevEco Studio 作為其開發工具。
  • 為什麼你寫了一篇好文章,發在平臺上,卻沒有人看?
    畢竟還是時尚、娛樂、八卦、生活、飲食更加吃香,而我們覺得這個世界上還是應該有人堅持學習,堅持閱讀的,對不對?我們又選擇了一條比較難走的路。那麼,問題又來了。有小夥伴就會問:那麼我要問一問大家:有句話講得好:不是我一個人做成了這麼多新媒體,而是一群人。