第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 Z3Exception(solver.reason_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(可变长度参数列表)或者**bar (任意关键字参数), 应该详细列出*foo和**bar。   Returns:(或者 Yields: 用于生成器)描述返回值的类型和语义。 如果函数返回None, 这一部分可以省略。   Raises:列出与接口有关的所有异常。

 

好的代码风格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字符)要分成多行书写,长表达式要在低优先级操作符处划分新行,操作符放在新行之首,划分出的新行要进行适当的缩进,使排版整齐,语句可读。

 

 

 

posted @ 2021-09-08 20:37  大数据192韩民瑶  阅读(406)  评论(1编辑  收藏  举报