第2次作業—— 談談鴻蒙操作系統
一、概述鴻蒙操作系統
- 開發背景:打破操作系統被谷歌、蘋果壟斷的現象,華為決定自主研發操作系統以防患于未然。
- 需求:為不同設備的智能化、互聯與協同提供了統一的語言。鴻蒙是一個全場景,面向未來的操作系統。鴻蒙并不是一個單純的手機操作系統,而是手機 + 智能設備的總稱,可以安裝在包括手機、手表、無人機等很多設備上。
- 開發歷史:
| 2012年 | 華為自有操作系統開始進行 |
| 2017年5月 | 分布式操作系統1.0版本研發完成 |
| 2019年5月14日 | “華為鴻蒙”商標注冊公告 |
| 2019年5月17日 | 華為正式發布自主知識產權操作系統--鴻蒙,隨后在華為智慧屏上投入使用 |
| 2020年9月10日 | 鴻蒙系統升級至2.0版本,向電視、手表和車內等內存128KB~128MB設備開源 |
| 2020年12月 | 華為發布基于鴻蒙OS的手機開發者Beta功能 |
| 2021年4月 | 鴻蒙OS2.0向內存128MB~4GB設備開源 |
| 2021年5月9日 | 鴻蒙OS2.0開始第二輪公測,新增多款Nova機 |
| 2021年10月 |
鴻蒙OS計劃向4GB內存以上設備開源應用場景及發展趨勢 |
- 應用場景
1.統一OS,彈性部署:一套操作系統,滿足大大小小所有設備的需求,小到耳機,大到車機,智慧屏,手機等,讓不同設備使用同一語言無縫溝
2.硬件互助,資源共享:搭載HarmonyOS 的每個設備都不是孤立的,在系統層讓多終端融為一體,成為“超級終端”,終端之間能力互助共享,帶來無 縫協同體驗。
3.一次開發,多端部署:開發者基于分布式應用框架,寫一次邏輯代碼,就可以部署在多種終端上。協同體驗。
4.應用自由跨端:HarmonyOS 原子化服務是輕量化服務的新物種,它提供了全新的服務和交互方式,可分可合,可流轉,支持免安裝等特性,能夠讓應用化繁為簡,讓服務觸手可及。
5.用“簡單”激活你的設備智能:HarmonyOS 是新一代智能終端操作系統。為不同設備的智能化、互聯與協同提供了統一的語言。設備可實現一碰入網,無屏變有屏,操作可視化,一鍵直達原廠服務等全新功能。通過簡單而智能的服務,實現設備智能化產業升級。
- 趨勢:同時隨著物聯網整體行業的高速增長,鴻蒙系統可發展的空間逐步擴大。隨著各行各業加入,鴻蒙生態能力與體驗將會呈幾何級數爆發。從客廳到廚房,從住房到行車,從休閑到日常工作,人們生活中的方方面面都或將被HarmonyOS Connect智能設備‘包圍’。物聯網的飛速發展將帶來下一個產業變革的歷史性機遇,華為攜手各類開發者共建的鴻蒙生態,在擁抱萬物互聯新時代的機遇下,前景不可小覷。我們不妨多一點耐心與等候,靜待鴻蒙佳音!
二、關于鴻蒙是否套殼的爭議
- 什么是創新
按照一貫的定義來講,創新是指以現有的思維模式提出有別于常規或常人思路的見解為導向,利用現有的知識和物質,在特定的環境中,本著理想化需要或為滿足社會需求,而改進或創造新的事物、方法、元素、路徑、環境,并能獲得一定有益效果的行為。鴻蒙搭載了智慧屏,智能家電等,在萬物互聯的大背景下,鴻蒙擁有更強的兼容性,它能夠將生活場景中的各類終端進行能力整合,形成一個超級虛擬終端,可以實現不同的終端設備之間的快速連接、能力互助、資源共享,匹配合適的設備、提供流暢的全場景體驗。如果只比較在手機,那鴻蒙OS或許并無優勢,但是當鴻蒙OS連接更多各種各樣的設備時,鴻蒙OS的優勢大大體現,而這是iOS和安卓無法比擬的,這也正是鴻蒙的創新所在,它擁有自己的概念與思想,并非所謂的“換皮抄襲”!
- 代碼復用與創新的關系
鴻蒙OS的部分代碼基于ASOP,因為ASOP是由谷歌聯合34家手機終端和運營商企業共同發起的項目,全稱是安卓開源項目,而華為正是其中之一,ASOP代碼并非谷歌的專利,華為也做出了重要貢獻,因此華為有權使用ASOP代碼,且完全不與“套殼”掛鉤!選擇代碼服用是“明智的”,安卓與IOS擁有全世界最多的使用者,為了保證用戶量與用戶體驗,鴻蒙要做到兼容安卓系統,循序漸進,當它蓄到足夠的能量時,便可徹底“甩手”ASOP。鴻蒙OS是面向萬物互聯的全場景操作系統,是安卓與蘋果系統前所未有的創新,而手機也只是鴻蒙OS眾多載體之一。
三、代碼風格分析
- 好的代碼風格1 :
…
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
typedef struct
{ int len;
int len1;
char data[0];
}SS1;
…
分析:包含了使用字符串函數的所需的原型和聲明,便于程序執行錯誤檢查 ,可讀性較強
2.好的代碼風格
…
@Test public void test()
{ long start = System.currentTimeMillis();
int aa = 0;
for (int i=0;i<1000000000;i++)
{ aa<<=1;
aa>>=1;
}
long useTime = System.currentTimeMillis()-start;
System.out.println("useTime:"+useTime);
}
…
分析:使用位運算代替部分算術運算,提高系統的運行速度,優化整數的乘除運算
3.不好的代碼風格
…
printf("--------------------------2------------------------------\n");
typedef struct
{ int len;
int data[0];
}SS;
SS sa;//結構體相關的局部變量初始化,不初始化后面的數據是一個隨機值
//SS sa={0};
memset(&sa,0,sizeof(SS));//清空以上結構體中的隨機值
printf("sizeof(SS)=%d\n",sizeof(SS));
printf("len=%d\n",sa.len);
printf("data=%d\n",sa.data[0]);
sa.len = 10;
sa.data[0] = 80;
sa.data[10] = 80;
sa.data[20] = 80;
sa.data[50] = 80;
sa.data[60] = 80;
sa.data[65] = 80;
sa.data[66] = 80;//到了67就不行了
printf("len = %d\n",sa.len);
printf("data0 = %d\n",sa.data[0]);
printf("data10 = %d\n",sa.data[10]);
printf("data20 = %d\n",sa.data[20]);
printf("data50 = %d\n",sa.data[50]);
printf("data60 = %d\n",sa.data[60]);
printf("data60 = %d\n",sa.data[65]);
printf("data60 = %d\n",sa.data[66]);
printf("sizeof(SS) = %d\n",sizeof(SS));
printf("sizeof(sa) = %d\n",sizeof(sa));
//SS1 sa1={0};
printf("sizeof(SS1)=%d\n",sizeof(SS1));
printf("sizeof(SS2)=%d\n",sizeof(SS2));
printf("sizeof(SS3)=%d\n",sizeof(SS3));
…
分析:代碼書寫有冗余,繁瑣復雜,定義變量允許的范圍太小
4.不好的代碼風格
…
printf("--------------------------22------------------------------\n");
int kk[1000] = {0};
int *mk = (int*)malloc(sizeof(int)*1000);//注意強制類型轉換
if (mk == NULL)
{
printf("動態內存申請失敗\n");
}
…
分析:編譯時申請內存,過大實際存儲少,浪費,容易溢出。
浙公網安備 33010602011771號