天天看點

軟體工程2021:第2次作業—— 談談鴻蒙作業系統

(一)背景

自技術戰爆發之後,華為在晶片與作業系統受限的背景下推出了主打物聯網時代的“鴻蒙系統”。在手機晶片受到限制之後,華為手機業務受到了巨大的沖擊。手機每年能為華為提供不少的現金流,華為勢必需要尋找新的突破點。

(二)需求和對于國内外的意義

打破國外對手機系統的封鎖,國内的手機廠商長期以來都沒有自己的系統,而華為的鴻蒙系統就是真正自主研發的。

鴻蒙系統讓國内的手機市場流動起來,讓國内手機市場真正重視研發,現在的國産廠商在手機的元件方面經驗十足了,因而價格也逐漸下壓,但手機最核心晶片與系統仍需依賴國外。

從全球作業系統來說,美國的安卓和蘋果的iOS已經掌控了這一領域,華為鴻蒙系統有望成為全球第三大作業系統。從美國科技目前禁令的角度看,晶片與系統是所有國産企業最薄弱的一節,外海使用者離不開GMS套件,被谷歌禁用後,鴻蒙系統2.0版本仍繼續完善外國APP适配,目前有超出6萬應用軟體加入鴻蒙移動作業系統。

(三)應用場景

這方面已經有大量的公開資訊了,鴻蒙采用微核心、分布式架構,成為跨終端的全場景OS,可以說是為loT而生,讓采用鴻蒙OS的車機、智慧屏、手機、家電、耳機、手表、空調、洗衣機、電鍋、空氣淨化器等,可以無縫多屏操作、同步等,讓開發者一次開發,實作多個硬體終端部署。

對于廣大手機使用者而言,據說使用鴻蒙OS可以享受比安卓更加流暢的、不卡頓的體驗,占用更少的記憶體資源,消耗更低的電量。按照華為的介紹,鴻蒙PC使用者對攝像頭不滿意,就可以用手機當成攝像頭拍攝,畫面直接在PC上顯示;在廚房做飯的媽媽,可以在煙機,在冰箱上,看到卧室攝像頭拍攝的孩子畫面;讓烤箱等無屏變有屏,可直接通過手機功能界面實作裝置狀态的實時監控,包括運作狀态、耗材提醒等...

(四)發展趨勢

從現實來說,鴻蒙作業系統的出現,由于時機特殊,也被許多人賦予了完全不同的色彩,給予了極高的期待,在華為的官方推介宣傳中,鴻蒙作業系統也被定為是真正面向IOT時代的作業系統,是比iOS系統快60%,比安卓系統更為優秀的存在。可以說,官方推介的種種特性加上特殊的時間節點原因,使得鴻蒙作業系統有種出道即巅峰的感覺,被我們賦予了"科技自強"等太多的期待。

但一款作業系統優秀與否,終究是由普通使用者的實際體驗來決定的,而不是宣傳或是其他因素,是以當鴻蒙作業系統正式推送給數億使用者時,使用者們的實際體驗将驗證華為宣傳中的種種特性,究竟能達到幾分,同時也将決定這款系統是繼續保持巅峰狀态還是從雲端跌落凡塵。在我看來,在鴻蒙系統正式推送後,華為官方宣傳的特性至少要有所展現,要真的能夠給使用者帶來不同于iOS和安卓的體驗,才能算得上這款系統初步成功。

(一)鴻蒙的創新

關于什麼是創新,引用一下任總2012年的講話:

“關于自主創新的問題,自主創新就陷入嫡死裡面,這是一個封閉系統。我們為什麼要排外?我們能什麼都做得比别人好嗎?為什麼一定要自主,自主就是封建的閉關自守,我們反對自主。第二,我們在創新的過程中強調隻做我們有優勢的部分,别的部分我們應該更多的加強開放與合作,隻有這樣我們才可能建構真正的戰略力量。我們非常支援異軍突起的,但要在公司的主航道上才好。我們一定要避免建立封閉系統。我們一定要建立一個開放的體系,特别是硬體體系更要開放。我們不開放就是死亡,如果我們不向美國人民學習他們的偉大,我們就永遠戰勝不了美國。”

對于鴻蒙和安卓其實兩者有多方面的差別,比如:

1、安卓與鴻蒙手機作業系統基本都是基于Linux開發的,但兩者的構架是不同的:

安卓系統是基于linux的宏核心設計:宏核心包含了作業系統絕大多數的功能和子產品,而且這些功能和子產品都具有最高的權限,隻要一個子產品出錯,整個系統就會崩潰,這也是安卓系統容易崩潰的原因。好處就是系統開發難度低。(而現在,華為新研發的方舟編譯器就是為了解決這個問題的,任何由編譯器編譯的android軟體都可以直接與系統底層進行通信,鴻蒙系統加編譯器将取代虛拟機。)Android是用Java語言編寫的,很容易學習。但它有一個缺點:不能與系統底層直接進行通信活動,必須通過虛拟機來運作。說直接點就是虛拟機相當于傳遞者:首先Android應用程式安裝在虛拟機上,然後從虛拟機傳輸到機器的底部,如果虛拟機出了問題話的那系統就是卡住。而且鴻蒙系統中的方舟編譯器就是為了解決這個問題的,任何由編譯器編譯的android軟體都可以直接與系統底層進行通信,鴻蒙系統加編譯器将取代虛拟機。

 鴻蒙作業系統是微核心設計:微核心僅包括了作業系統必要的功能子產品(任務管理、記憶體配置設定等)處在核心地位具有最高權限,其他子產品不具有最高權限,也就是說其他子產品出現問題,對于整個系統的運作是沒有阻礙的。微核心的開發難度很大,但是系統的穩定性很高。根據目前華為公布的一些資料資訊,我們可以推斷出鴻蒙系統是用C、C++語言編寫即直接使用機器語言編寫app,取消安卓系統的ART虛拟機,直接編譯為二進制機器碼,這樣做的好處就是不需要中轉,執行速度快;但這樣的操作也有一些缺點就是必須要有大量的靜态方案且記憶體空間要求更高。

2、鴻蒙系統與安卓系統的使用範圍不同:

安卓系統适用于手機,而鴻蒙系統對裝置相容性更強,同時支援智能手機、智能穿戴裝置、電腦、電視等智能家居裝置,形成一個無縫的、統一的作業系統,并且相容所有的安卓應用,适應當下的5G和物聯網時代。

3、安卓系統經過多年發展,軟體生态非常完善,鴻蒙系統目前來說還談不上生态。華為推出鴻蒙作業系統并不困難,相對于推出作業系統而言,更難的是如何聚攏開發者為這款作業系統持續開發各類優質應用,讓這款作業系統得以具備真正價值,繼而發展壯大,在系統開發商、硬體廠商、開發者與使用者之間形成良性正循環。要讓開發者為鴻蒙作業系統開發應用,需要的是實實在在的政策激勵,利益引導,依靠情懷等是無法解決也是不可持續的,這就是華為推出鴻蒙系統之後需要解決的一大難題!

(二)下面再來談談代碼複用與創新的關系

什麼是代碼複用?

在日常的編碼過程中為了提高編碼效率,和重複編碼代碼的低效,我們通常會選擇将重複的代碼提煉成可複用的代碼。代碼複用的形式可以是一個方法,可以是一套模闆也可以是一個架構。我們聯系一下華為的鴻蒙作業系統。

雖然目前華為鴻蒙OS系統開始開發者Bate版本,但依舊無法避免和谷歌的Android系統進行對比,從目前華為鴻蒙OS系統UI界面設計、操作使用方式、系統功能等方面,都和華為EMUl11(基于Android系統)沒有什麼差別,尤其是在應用生态方面,更是可以相容安卓APK應用,幾乎和和之前的安卓EMUI11系統沒有任何差別,唯一差別或許就是在手機設定界面中,将EMUI換成了HamonyOS。

通俗點講,就是華為鴻蒙OS系統之是以會和EMUlI11系統界面一模一樣,也是因為華為EMUl11系統作為系統上層架構,原本就屬于華為研發,而如今華為也隻是将這個上層架構遷移到鴻蒙OS系統之中,等于就是将原來安卓底層+EMUI11系統上層架構的系統組合,變更為鴻蒙HarmonyOS+EMUl11系統上層架構的系統組合。

當然華為鴻蒙OS系統最大的亮點,就是它是一款全場景分布式作業系統,可以實作萬物互聯,讓電視、手機、電腦、平闆、電磁爐、冰箱、洗衣機等等,都可以輕松搭載鴻蒙OS系統,實作人機互聯、萬物互聯,是以華為高管也明确表示,華為鴻蒙OS系統推出意義,并不是為了簡單替代安卓,而是為了超越安卓系統,因為華為鴻蒙OS系統是一款全場景分布式作業系統,目前谷歌、蘋果都還無法實作。

我們就非常公正客觀地說兩句:什麼叫做新系統?作為一個全新的系統,你起碼要讓使用者能感受到與别的系統之間的差別吧?就像10S和安卓,windows與mac0S以及Linux,大家隻要一用,就能感受到它們之間的差別,甚至己經沒人用的塞班和wP,都是有自己不同的操作邏輯和應用,這才叫不同的系統!你要是說搞了個全新的系統,操作邏輯跟現有的系統一模一樣,應用還能裝一樣的,還美其名曰說為了讓使用者無縫相容,你這樣怎麼能讓人心服口服?本來就想體驗你新系統的新鮮感,和與衆不同的地方,結果一上手發現跟老安卓一模一樣,說實話怎能讓人不失望?

《代碼整潔之道》一書的作者羅伯特曾經說過

“幹淨的代碼既簡單又直接。幹淨的代碼讀起來像寫得很好的散文。簡潔的代碼永遠不會掩蓋設計者的意圖,而是充滿清晰的抽象和直接的控制線。” -羅伯特·馬丁(Robert C. Martin)

1.

分析:很多程式員在實作功能的時候會配置設定一個沒有明确意義的數字,用于特定的目的,寫完這個數字後沒有即使去做注釋,然後過兩天當程式出現問題時,翻看代碼碰到這個數字,連自己都忘了它的意義。當程式需要固定的數值參與時,給予特定的名稱。

2.

分析:有些程式需要使用到無數次的嵌套循環,看着看着就暈了,這時可以将所有循環提取到單獨的函數中。

假設有一個包含兩層嵌套的數組,想要拿到最後一個數組的值?一般情況下開發者都會使用嵌套循環,但不是最佳的辦法。可以嘗試使用函數的反複調用來完成操作執行相同操作的,這樣一來代碼重複性更小,更易于閱讀、重用性高。

3.

分析:當一個函數或一個類需要實作的功能太多時,建議将其分成多個小的函數。

假設我們需要加減兩個數字。我們可以用一個功能做到這一點。但是好的做法是将它們分為兩部分。如果有單獨的功能,則可以在整個應用程式中重複使用。

從長遠來看,養成一種好的代碼風格,對開發者的自身發展來說是百利而無一害的。每個項目的生命周期都很長,在很長的周期中誰也無法确定會用到之前的哪段代碼,哪個功能。是以對現在的每一段代碼負責,就是對以後的自己負責。

繼續閱讀