软件工程2021:第2次作业—— 谈谈鸿蒙操作系统
一、概述鸿蒙操作系统
- 开发背景:
我国对独立自主的研发操作系统的迫切需求,研发面向万物互联网时代的全新的,独立的智能终端操作系统;美国制裁打压华为,谷歌可断供华为使用其GMS,之后禁止华为使用安卓11更新,华为早有准备,顺势推出自己的HMS和鸿蒙系统。
- 需求:
数字化新时代的到来需要新的操作系统;5G物联网时代的到来对操作系统提出了新的要求;AIoT场景天然要求多设备智能协同,需要一个适用于各类型机器的操作系统;TB、PB级的大数据需要一个能够提供多机互联的操作系统;网络安全威胁呈现多元化、复杂化、频发高发趋势,需要一个足够安全的系统进行保障。
- 开发历史:
2012年,华为开始规划自有操作系统“鸿蒙”。
2019年5月24日,国家知识产权局商标局网站显示,华为已申请“华为鸿蒙”商标,申请日期是2018年8月24日,注册公告日期是2019年5月14日,专用权限期是从2019年5月14日到2029年5月13日。
2019年5月17日,由任教授领导的华为操作系统团队开发了自主产权操作系统——鸿蒙。
2019年8月9日,华为正式发布鸿蒙系统。同时余承东也表示,鸿蒙OS实行开源。
2020年9月10日,华为鸿蒙系统升级至华为鸿蒙系统2.0版本,即HarmonyOS 2.0。余承东表示,2020年12月份将面向开发者提供鸿蒙2.0的beta(公测)版本。
2021年6月2日晚间,华为在线上举办HarmonyOS 2及华为全场景新品发布会,会上,华为正式发布HarmonyOS 2及多款搭载HarmonyOS 2的新产品,新产品包括HUAWEI Mate 40系列新版本、Mate X2新版本、HUAWEI WATCH 3系列、HUAWEI MatePad Pro等手机、智能手表、平板产品。
- 应该场景+发展趋势:
鸿蒙OS将作为华为迎接全场景体验时代到来的产物,率先应用在智能手表、智慧屏、车载设备、智能音箱等智能终端上,着力构建一个跨终端的融合共享生态,重塑安全可靠的运行环境,为消费者打造全场景智慧生活新体验。
物联网的飞速发展将带来下一个产业变革的历史性机遇,万物互联网新时代的机遇下,华为携手各类开发者共建鸿蒙生态,覆盖智能家居,智慧办公,运动健康,教育关怀等全场景多品类。
二、关于鸿蒙是否套壳的争议
- 什么是创新:(联系鸿蒙系统分析)
鸿蒙操作系统相比传统其他操作系统不同的地方:全场景、分布式、微内核、跨终端。鸿蒙系统是管理计算机软硬件资源的“大脑”,是实现硬件资源分配、实现应用软件功能的重要载体。通过各种智能终端设备(如手机、电脑、平板、手表等)的互联互通,突破了先前不同属性终端设备的“兼容性”难题。一方面,鸿蒙系统能在保障连接质量的情况下,跨设备的进行资源调用;另一方面,开发者无需过度关注物联网连接所带来的复杂调试过程,只需关注功能的逻辑和界面逻辑即可。
- 代码复用与创新的关系:
软件开发行业是具有集体智慧的,在使用开源代码过程中可能会发现问题,对性能进行优化,提供新的改进思路。开源代码是通用的,鸿蒙操作系统没必要再去研发一个类似的出来,鸿蒙操作系统有自己独特的代码,可以将所有设备串联在一起。
三、代码风格分析
1.好的代码风格1 :
- 代码:
"...
int v[MAXN_N],primes[MAXN_N];//primes用来存储素数
int main()
{
int n,m=0;//m 是素数的数目
cout << "输入 n 的值:" << endl;
scanf("%d",&n);
memset(v,0,sizeof(v));
for(int i=2;i<=n;i++)
{
if(v[i]==0)//i是素数
{
v[i]=i;
primes[++m]=i;
}
for(int j=1;j<=m;j++)
{
if(primes[j]>v[i]||primes[j]>n/i)break;//i有比primes[j]更小的质因子,或者超出范围
v[i*primes[j]]=primes[j];//primes[j]是合数i*primes[j]的最小质因子
}
}
for(int i=1;i<=m;i++) cout<<primes[i]<<" ";
return 0;
}
..."
- 分析:
可读性好,易理解,考虑到多种情况,执行效率高。
2.好的代码风格2 :
- 代码:
"...
public class Test {
public static void main(String args[]) {
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
}
}
..."
- 分析:
结构清晰,简单易懂,可读性强。
3.好的代码风格3:
- 代码:
"...
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(12);
numbers.add(8);
numbers.add(2);
numbers.add(23);
Iterator<Integer> it = numbers.iterator();
while(it.hasNext()) {
Integer i = it.next();
if(i < 10) {
it.remove(); // 删除小于 10 的元素
}
}
System.out.println(numbers);
}
- ..."
- 分析:
能快速访问集合,执行效率高。
4.不好的代码风格1:
- 代码:
"...
int main()
{
//外层循环控制行、换行
//内层循环控制列、列的图形
//中分的三角菱形
//定义半菱形高度,即定义了菱形的大小
int n ;
cout<<"请输入半菱形高度"<<endl;
cin >> n;
//上半部分居中正三角n行
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - i -1; j++)
{
cout<<" ";
}
for (int j = 0; j <= 2 * i; j++)
{
//每行第一个和最后一个外打印星号,其余打印空格,做成空心效果,下半部分相同
if (j == 0 or j == 2 * i)
cout<<"*";
else
cout<<" ";
}
cout<<endl;
}
//下半部分居中倒三角n-1行
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j <= i; j++)
{
cout<<" ";
}
for (int j = 0; j <= 2 * ( n - i - 2 ); j++)
{
if (j == 0 or j == 2 * ( n - i - 2 ))
cout<<"*";
else
cout<<" ";
}
cout<<endl;
}
return 0;
}
..."
- 分析:
常规思路,没有简化方法,代码冗余,执行效率低。