软件工程2021:第2次作业—— 谈谈鸿蒙操作系统

一、概述鸿蒙操作系统

  • 开发背景

  鸿蒙OS发布于2019年,但是最早可以追溯到2012年,彼时任正非与华为2012实验室的专家座谈时提出,华为要自研操作系统做备份,哪怕几十年都用不上也一定要做。否则一旦操作系统“断粮”对华为就是数千亿美元的损失。

  • 需求

  鸿蒙系统是面向未来的系统,物联网时代的系统,覆盖的领域非常多。工业的发展趋势很容易判断,但是人的需求却不像工业一样是循序渐进的变化,而是需要天才的眼光和判断力去寻找挖掘,是一种质的突变。网络系统的未来要求是“超高速、低时延”,这是个技术要求问题,华为在这个领域是专家,但是当网络技术进入“无人区”之后,创始人任正非也开始迷茫。同理,当鸿蒙系统从一个工业技术系统迈向手机操作系统时,它服务的对象不再是千千万万个有统一标准的连网设备,而是千千万万有不同想法的人,之间的区别绝非仅仅是技术的迁移过渡,而是对手机的体验需求,对未来网络的需求,对人类自身情感的更深刻理解的综合判断。

  • 开发历史
  2012年,华为开始规划自有操作系统“鸿蒙“。
  2019年5月17日,由任正非领导的华为操作系统团队开发自主产权操作系统——鸿蒙。
  2019年5月24日,国家知识产权局商标局网站显示,华为已申请“华为鸿蒙”商标,申请日期是2018年8月24日,注册公告日期是2019年5月14日,专用权限期是从2019年5月14日到2029年5月13日。
  2019年8月9日,华为正式发布鸿蒙系统。同时余承东也表示,鸿蒙OS实行开源。
  2020年8月,在中国信息化百人会2020年峰会上,华为消费者业务CEO余承东表示,鸿蒙截至2020年8月已经应用到华为智慧屏、华为手表上,未来有信心应用到1+8+N全场景终端设备上。
  2020年9月10日,华为鸿蒙系统升级至华为鸿蒙系统2.0版本,即HarmonyOS 2.0,并面向128KB-128MB终端设备开源。余承东表示,2020年12月份将面向开发者提供鸿蒙2.0的beta版本。
  2020年12月16日,华为正式发布HarmonyOS 2.0手机开发者Beta版本。华为消费者业务软件部总裁王成录表示,2020年已有美的、九阳、老板电器、海雀科技搭载鸿蒙 OS,2021年的目标是覆盖40+主流品牌1亿台以上设备。
  2021年2月22日晚,华为正式宣布HarmonyOS将于4月上线,华为Mate X2将首批升级。
  2021年3月,华为消费者业务软件部总裁、鸿蒙操作系统负责人王成录表示,2021年搭载鸿蒙操作系统的物联网设备(手机、Pad、手表、智慧屏、音箱等智慧物联产品)有望达到3亿台,其中手机将超过2亿台,将力争让鸿蒙生态的市场份额达到16%。
  2021年4月22日,华为 HarmonyOS 应用开发在线体验网站现已上线。
  2021年5月18日,华为宣布华为HiLink将与Harmony OS统一为Harmony OS Connect。
  2021年5月25日,华为技术有限公司对外公布,计划在6月2日正式举办鸿蒙产品发布会, 预计此前只用于智慧屏、可穿戴设备等产品的鸿蒙操作系统将在更多产品品类上使用。
  2021年6月2日晚,华为正式发布HarmonyOS 2及多款搭载HarmonyOS 2的新产品。这也意味着“搭载HarmonyOS(鸿蒙)的手机”已经变成面向市场的正式产品 。6月9日,“HarmonyOS Sans”公开上线,可以免费商用
  2021年6月3日,我爱我家宣布,在业内率先实现基于鸿蒙系统的APP应用支持。
  2021年7月29日晚,华为举办新品发布会表示,从6月2日开启升级后,到目前为止,鸿蒙系统升级用户已突破4000万。
  • 应该场景

  鸿蒙系统是基于微内核的全场景分布式OS,可以连接到大屏、手机、PC、音响等。鸿蒙OS的出发点和Android、iOS都不一样,是一款全新的基于微内核的面向全场景的分布式操作系统,也就是说,目前的鸿蒙系统确实还是基于互联网打造的OS,而不是直接作为手机OS来使用。当然,鸿蒙系统将在安卓版设备上投入商用,用于支付、人脸识别、指纹这种高安全级别场景,未来华为整个操作系统都将使用鸿蒙!

二、关于鸿蒙是否套壳的争议

  • 什么是创新

  操作系统开发思维的创新:鸿蒙不止关注的是手机端的使用而是与新时代技术的接轨包括:硬件互助,资源共享。一次开发,多端部署。统一OS,弹性部署。

  • 代码复用与创新的关系

  创新未必要从代码创新入手,合理的代码复用是必要的。经典的代码就像公式一样,你不可能为了创新而强行另起炉灶,反而不现实。更多地,我们要学会站在伟人的肩膀上,创造更多新的实用的特性,这才是最重要的。

三、代码风格分析

  1. 好的代码风格1:

    • 代码:
      import java.io.FileReader;
      import java.util.HashMap;
      import java.util.Iterator;
      import java.util.Map;
      
      public class BD_hw_1 {
          public static void main(String[] args) throws Exception {
              // 数据目录
              String sourse = "C:\\Users\\26592\\Desktop\\data.txt";
              // 读取数据
              FileReader fileReader = new FileReader(sourse);
              char[] buffer = new char[1];
              HashMap<String, Integer> map = new HashMap<>();
              int len;
              while ((len = fileReader.read(buffer)) != -1) {
                  String s = new String(buffer, 0, len);
                  // 过滤逗号、回车、换行
                  if (",".equals(s) || "\r".equals(s) || "\n".equals(s))
                      continue;
                  Integer value = map.get(s);
                  if (value == null) {
                      map.put(s, 1);
                  } else {
                      map.put(s, ++value);
                  }
              }
              // 迭代器遍历
              Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
              while (iterator.hasNext()) {
                  Map.Entry<String, Integer> current = iterator.next();
                  System.out.println("<" + current.getKey() + "," + current.getValue() + ">");
              }
              fileReader.close();
          }
      }
    • 分析:驼峰法命名长变量,变量名做到见名知意,添加适当注释

  2. 好的代码风格2:

    • 代码:
      import requests
      import re
      
      url = 'https://movie.douban.com/top250'
      header = {
          'user-agent':
              'Mozilla/5.0 '
              '(Windows NT 10.0; Win64; x64) '
              'AppleWebKit/537.36 (KHTML, like Gecko) '
              'Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.47'
              }
      data = requests.get(url, headers=header).text
      pattern = re.compile(r'<span class="title">(?!&nbsp)(.*?)</span>')
      name = re.findall(pattern, data)
      
      print(name)
    • 分析:变量命名见名知意。适当分行,不要在一行中写太多代码。

 

  3. 不好的代码风格1:

    • 代码:
      int func(){
      ...
      }
      
      int Func()
      {
      ...
      }
    • 分析:风格上下不一致,函数名定义随意,难以理解作用。

  4. 不好的代码风格2:

    • 代码:
      public class Test1{
      public static void main(String[]args) {
      float a=333.5f;int b=992;int c=1231;int d=2;float sum=a*(b+c/d);
      System.out.println("计算333.5 * (992 + 1231 / 2)");System.out.println(sum);System.out.println(a*(b+c/d));
      }
      }
    • 分析:缺少换行,各种元素全都挤在一起,看起来非常糟糕。

 

posted on 2021-09-16 21:04  毛皮兽  阅读(208)  评论(0编辑  收藏  举报