第2次作业—— 谈谈鸿蒙操作系统

谈谈鸿蒙操作系统

2020年12月16日,华为举行HarmonyOS 2.0手机开发者Beta活动,正式发布了HarmonyOS 2.0手机开发者Beta版本,并同时在线上开启公测招募。2021年6月2日,华为举行新品发布会,正式发布HarmonyOS操作系统。同日,华为宣布,将陆续向华为手机、平板、智慧屏等智能终端设备推送升级HarmonyOS 2。HarmonyOS 2.0给应用带来更多流量入口,给设备带来更好的互联体验。该系统实现硬件互助、资源共享;同时该系统也能够实现一次开发,多端部署以及统一OS,弹性部署,并且该系统在安全和隐私方面也有较大的提升。

一、概括介绍鸿蒙操作系统。

从宏观上讲,鸿蒙系统的开发背景有以下几点:一、数字化新时代的到来需要新的操作系统;二、5G物联网时代的到来对操作系统提出了新的要求;三、独立自主的研发操作系统是迫切的需求;四、AIoT场景天然要求多设备智能协同,需要一个适用于各类型机器的操作系统;五、TB,BP级的大数据需要一个能够提供多机互联的操作系统;六、网络安全威胁呈现多元化、复杂化、频发高发趋势,需要一个足够安全的系统进行保障。从微观上讲,美国政府禁止美国对华出口,这切断了华为与大多数芯片和软件供应商的接触。同时华为公司已然具备研发新的操作系统的技术和资金资源储备。

随着物联网时代的到来,无论是设备还是应用场景都对操作系统产生了新的需求。同时中国人研发新型独立操作系统的热情愈发俞涨。

鸿蒙OS是一款“面向未来”的操作系统,一款基于微内核的面向全场景的分布式操作系统,它将适配手机、平板、电视、智能汽车、可穿戴设备等多终端设备。

Harmony OS 2正式登场,未来可能重点围绕运动健康、智慧办公、影音、智能家居和智慧出行五大场景打造“全场景智慧生活”。鸿蒙OS是一个面向物联网时代的操作系统,超级终端是鸿蒙OS中的重要概念。鸿蒙OS未来可能能够实现万物的智能互联功能,它通过将任意个孤立设备连接成“超级终端”,提供了流畅、安全的无缝衔接跨平台能力,实现了“超级终端”内硬件设备之间的信息共享与服务共享,让用户能够像使用一台设备一样任意调用超级终端内的设备与服务。

二、关于鸿蒙操作套壳的争议,谈谈你的观点。

什么是创新?顾名思义,创新就是创造新的东西。对于鸿蒙操作套壳的争议,我认识这也是一种创新,是站在巨人肩膀上的创新。

代码复用算不算创新?我认为如果是单纯的粘贴复制那就是算作抄袭,但是如果在开源代码上加入新的技术这可称为“二次创新”。同时一、华为有权使用ASOP代码,ASOP是由谷歌联合34家手机终端和运营商企业共同发起的项目,全称是安卓开源项目。在ASOP这个项目里,任何机构和企业都有义务为开源社区贡献代码,也能够使用和下载开源代码,并基于开源项目做二次开发。所以ASOP的代码并不全是谷歌写的,华为也是ASOP的重要贡献者。

鸿蒙OS使用ASOP的代码是基于现状的理智选择。使用ASOP的代码、兼容安卓应用是为了保证用户体验。安卓系统已经开发了10几年,消费者已经用习惯了安卓系统,如今贸然更换一个不兼容安卓或者操作逻辑迥异的系统,会造成用户的大量流失。当鸿蒙OS积蓄足够的实力时,就能完全抛开谷歌和ASOP了。

三、代码风格分析

···

/* True if the timer is enabled */

static int enableTimer = 0;

 

/* Return the current wall-clock time */

static sqlite3_int64 timeOfDay(void){

  static sqlite3_vfs *clockVfs = 0;

  sqlite3_int64 t;

  if( clockVfs==0 ) clockVfs = sqlite3_vfs_find(0);

  if( clockVfs->iVersion>=2 && clockVfs->xCurrentTimeInt64!=){

    clockVfs->xCurrentTimeInt64(clockVfs, &t);

  }else{

    double r;

    clockVfs->xCurrentTime(clockVfs, &r);

    t = (sqlite3_int64)(r*86400000.0);

  }

  return t;

}

···

分析:此代码使用了C语言,整体风格清爽统一,代码元素的命名体现了元素的差异性,且都符合本语言特性;缩进、空格与空行造就了代码的层次性和规律性,有助于直观、快速、准确地理解业务逻辑,可读性高。且含有注释,较好的反映设计思想和代码逻辑,可读性高。

 

···

import("//build/ohos.gni")

import("//build/ohos/ace/ace.gni")

 

base_output_path = get_label_info(":js_convertxml", "target_out_dir")

js_xml_obj_path = base_output_path + "/convertxml.o"

gen_js_obj("js_convertxml") {

  input = "//base/compileruntime/js_api_module/convertxml/js_convertxml.js"

  output = js_xml_obj_path

}

 

ohos_shared_library("convertxml") {

  include_dirs = [

    "//third_party/icu/icu4c/source/common",

    "//third_party/node/src",

    "//third_party/libxml2/include",

    "//foundation/ace/napi/interfaces/kits",

    "//base/compileruntime/js_api_module/convertxml",

  ]

 

  sources = [

    "js_convertxml.cpp",

    "native_module_convertxml.cpp",

  ]

···

分析:此代码整体风格清爽统一,代码元素的命名体现了元素的差异性,且都符合本语言特性;缩进、空格与空行造就了代码的层次性和规律性,有助于直观、快速、准确地理解业务逻辑。但唯一的不足就是没有注释,好的注释能够起到指路明灯、拨云见日的作用,能够准确反映设计思想和代码逻辑,显然此代码缺少这一点,可读性一般

···

static void output_quoted_string(FILE *out, const char *z){

  int i;

  char c;

  setBinaryMode(out, 1);

  for(i=0; (c = z[i])!=0 && c!='\''; i++){}

  if( c==0 ){

    utf8_printf(out,"'%s'",z);

  }else{

    raw_printf(out, "'");

    while( *z ){

      for(i=0; (c = z[i])!=0 && c!='\''; i++){}

      if( c=='\'' ) i++;

      if( i ){

        utf8_printf(out, "%.*s", i, z);

        z += i;

      }

      if( c=='\'' ){

        raw_printf(out, "'");

        continue;

      }

      if( c==0 ){

        break;

      }

      z++;

    }

    raw_printf(out, "'");

  }

  setTextMode(out, 1);

}

···

分析:代码使用C++语言编写,整体风格代码略拥挤,部分代码缺少缩进、空格,同时缺少注释,可读性差。

posted @ 2021-09-17 23:08  赵静怡  阅读(575)  评论(0编辑  收藏  举报