第2次作业--谈谈鸿蒙操作系统
⼀.概括介绍鸿蒙操作系统
1.开发背景:总体来说有五个:①数字化的时代背景:数字化新时代的到来需要新的操作系统。②lot与5G:5G物联⽹时代的到来对操作系统提出了新的要求。③中国⾯临“卡脖
⼦”的挑战:独⽴⾃主的研发操作系统是迫切的需求。④⼈⼯智能的兴起:AloT场景天然要求多设备智能协同,需要⼀个适⽤于各类机器的操作系统。⑤⼤数据与云计算:TB,PB
级的⼤数据需要⼀个能够提供多机互联的操作系统。
2.需求:通过打造鸿蒙操作系统,华为要进⼀步巩固和扩⼤其智能⼿机的市场份额,要建⽴围绕智能⼿机的⼀个封闭⽣态系统,各个设备可以做到极简,顺滑的互通互联体验,
这样,能够和华为⼿机相连接的产品就会很好卖。于是,消费者除了会买华为⼿机,还会买华为的路由表,⼿表,⼿环或者运⾏着海思芯⽚的其他周边产品。这是华为的商业⽬
标。为了达到这个商业⽬标,华为需要⼀个新的操作系统,⼀个超越安卓的操作系统,于是鸿蒙出世。
3.开发历史:2012年,开始策划。2019年申请商标。2020年鸿蒙2.0版本现世。2021年鸿蒙正式上线。
4.应⽤场景:⽤于智慧屏、可穿戴设备等产品的鸿蒙操作系统将在更多产品类上使⽤。
5.发展趋势:鸿蒙OS不⾄于应⽤于PC系统,因为PC类型的系统的应⽤软件,与⼿机,智能汽车等还不太⼀样,适应⽅式不同,如果开发,难度相当于重新开发⼀个系统。除了
⼿机之外,重点突破与智能汽车上。
⼆.关于鸿蒙操作套壳的争议
1.什么是创新?
创新的概念是⼈的创造性实践⾏为,这种实践可以实现利益总量的增加,需要对事物和原来的认识的利⽤再创造来实现,以形成新的物质形态。鸿蒙打破设备之间的藩篱,是消费者所期
待的,能带来更⾼的效率,更好的体验。⽽多设备交互,是HarmonyOS的⼀⼤创新。有了它,内容流转更便捷,⽤户可以轻松操控多个设备,就如同操作⼀台设备⼀样简单。
HarmonyOS全新的多设备控制中⼼,带来了简约直观的连接⽅式,⼿机、平板、电脑、⾳箱、⽿机等⼀拉即合,⽅便⽤户控制多设备。全新的HarmonyOS,有很多创新。我们
知道,⼿机⽤户都⼀个烦恼——我们的桌⾯APP太多,导致应⽤⿇烦,桌⾯凌乱。⼀些不常见的APP,甚⾄不知道放在什么位置。HarmonyOS让桌⾯简洁有序,⽤户通过上
滑APP,即可⽣成万能卡⽚,呈现更丰富的信息。⽽且,卡⽚内容是实时更新的,扫⼀眼即可获取所需信息。
2.代码复⽤与创新关系:
美国实验室研究后表⽰,鸿蒙系统与安卓系统是两个完全独⽴的系统,鸿蒙系统也并不是拷贝的安卓系统,它采⽤的是⼀种新的系统流程,所以使⽤性能⽅⾯远远优于苹果的ios
系统和安卓系统。⽽且鸿蒙系统是⼀款可以实现物联的智能操作系统,未来它的使⽤范围并不会局限于⼿机上,⽽是会放在更多的电⼦设备之上,不论是格⼒的空调还是⼩⽶的
电视,或者是其他电⼦设备,都可以在匹配鸿蒙系统之后,带给⽤户更为⽅便快捷的智能操作体验,步⼊真正的万物互联时代。
三.代码风格分析
好的代码风格1:
1 def ceil32(x):
2    return x if x % 32 == 0 else x + 32 - (x % 32)
3
4 def isSymbolic(value):
5    return not isinstance(value, six.integer_types)
6
7 def isReal(value):
8    return isinstance(value, six.integer_types)
9
10 def isAllReal(*args):
11    for element in args:
12        if isSymbolic(element):
13            return False
14    return True
15
16 def to_symbolic(number):
17    if isReal(number):
18        return BitVecVal(number, 256)
19    return number
20
21 def to_unsigned(number):
22    if number < 0:
23        return number + 2**256
24    return number
25
26 def to_signed(number):
27    if number > 2**(256 - 1):
28        return (2**(256) - number) * (-1)
29    else:
30        return number
31
32 def check_sat(solver, pop_if_exception=True):
33    try:
34        ret = solver.check()
35        if ret == unknown:
36            raise ason_unknown())
37    except Exception as e:
38        if pop_if_exception:
39            solver.pop()
40        raise e
41    return ret
分析:使⽤了驼峰命名法(Camel-Case),即第⼀个单词以⼩写字母开始;第⼆个单词的⾸字母⼤写或每⼀个单词的⾸字母都采⽤⼤写字母;且使⽤了易于理解的命名,让⼈见其形⽽知其意。
好的代码风格2:
1 def fetch_bigtable_rows(big_table, keys, other_silly_variable=None):
2    """Fetches rows from a Bigtable.
3
4    Retrieves rows pertaining to the given keys from the Table instance
5    represented by big_table.  Silly things may happen if
6    other_silly_variable is not None.
7
8    Args:
9        big_table: An open Bigtable Table instance.
10        keys: A sequence of strings representing the key of each table row
11            to fetch.
12        other_silly_variable: Another optional variable, that has a much
13            longer name than the other args, and which does nothing.
14
15    Returns:
16        A dict mapping keys to the corresponding table row data
17        fetched. Each row is represented as a tuple of strings. For
18        example:
19
20        {'Serak': ('Rigel VII', 'Preparer'),
21          'Zim': ('Irk', 'Invader'),
更新鸿蒙系统22          'Lrrr': ('Omicron Persei 8', 'Emperor')}
23
24        If a key from the keys argument is missing from the dictionary,
25        then that row was not found in the table.
26
27    Raises:
28        IOError: An error occurred accessing the bigtable.Table object.
29    """
30    pass
分析:Args:列出每个参数的名字,并在名字后使⽤⼀个冒号和⼀个空格,分隔对该参数的描述.如果描述太长超过了单⾏80字符,⽤2或者4个空格的悬挂缩进(与⽂件其他部分保持⼀致)。描述应该包括所需的类型和含义,如果⼀个函数接受*foo(可
好的代码风格3:
perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN
+ STAT_SIZE_PER_FRAM* sizeof( _UL );
act_task_table[frame_id * STAT_TASK_CHECK_NUMBER +index].occupied
= stat_poi[index].occupied;
分析:较长的语句(>80字符)要分成多⾏书写,长表达式要在低优先级操作符处划分新⾏,操作符放在新⾏之⾸,划分出的新⾏要进⾏适当的缩进,使排版整齐,语句可读。