第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字符)要分成多行書寫,長表達式要在低優先級操作符處划分新行,操作符放在新行之首,划分出的新行要進行適當的縮進,使排版整齊,語句可讀。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM