偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

聊一聊第三個系統(tǒng)

系統(tǒng)
最近,我剛好在和我的同事一起重寫 VSCode 的一部分小功能,重寫過程中有一些特定的感受。正好就著最近流行的操作系統(tǒng)話題,寫寫我的想法。因為某種協(xié)議的存在,不想為自己尋找麻煩,我這里就稱為第三個系統(tǒng)。

[[342160]]

 最近,我剛好在和我的同事一起重寫 VSCode 的一部分小功能,重寫過程中有一些特定的感受。正好就著最近流行的操作系統(tǒng)話題,寫寫我的想法。因為某種協(xié)議的存在,不想為自己尋找麻煩,我這里就稱為第三個系統(tǒng)。

系統(tǒng)是由一些相互聯(lián)系、相互制約的若干組成部分結(jié)合而成的、具有特定功能的一個有機整體(集合)。這些要素可能是一些個體、元件、零件,也可能其本身就是一個系統(tǒng)(或稱之為子系統(tǒng))。

所以,如果是一類操作系統(tǒng)的話,那么以系統(tǒng)來定義為更加合適。

三個系統(tǒng)

提及到第三個系統(tǒng)的時候,我想到的是一本很不錯的小冊子(書),其名為《Linux/Unix 設(shè)計思想》。這本書主要是在講 Linux/Unix 相關(guān)的哲學(xué)(實際上,我一直覺得這樣的書很容易寫,學(xué)好 Linux 和哲學(xué),然后將哲學(xué)套到 Linux/Unix 上即可。唯一的難點是:跨領(lǐng)域知識)。

先簡要地說說三個系統(tǒng)的定義:

  1. 在背水一戰(zhàn)的情況下,人類創(chuàng)建了『第一個系統(tǒng)』。PS:沒有足夠的時間將事情做好。
  2. 『專家』使用『第一個系統(tǒng)』驗證過的想法來創(chuàng)建『第三個系統(tǒng)』。PS:『第二個系統(tǒng)』由委員會設(shè)計,『第二個系統(tǒng)』臃腫而緩慢。
  3. 『第三個系統(tǒng)』由那些為『第二個系統(tǒng)』所累的人們創(chuàng)建。PS:『第三個系統(tǒng)』結(jié)合了『第一個系統(tǒng)』和『第二個系統(tǒng)』的最佳特征。『第三個系統(tǒng)』的設(shè)計者有充裕的時間將任務(wù)做好。

結(jié)合之下來看,我們就會發(fā)現(xiàn)一些非常有意思的事情:

  1. 充裕的時間,才能讓我們完成一個更好的系統(tǒng)。
  2. 『第二個系統(tǒng)』是擁有足夠的專家和時間來完成的。
  3. 『第三個系統(tǒng)』結(jié)合了『第一個系統(tǒng)』和『第二個系統(tǒng)』的最佳特征。

由上會產(chǎn)出一些有意思的推論:在有充足時間和資源的情況下,我們可能設(shè)計出的是 Windows Phone,巨硬(微軟)的專家太多了。

新的專家

專家不論在哪里都是一種稀缺的資源,要不這個世界怎么會有咨詢公司的存在呢。

開發(fā)一個操作系統(tǒng)并不困難。市面上已經(jīng)有了各種琳瑯滿目的書籍,從《操作系統(tǒng)導(dǎo)論》到《自己動手寫操作系統(tǒng)》、《30 天自制操作系統(tǒng)》,馬上培訓(xùn)班就會出出《7 天自制操作系統(tǒng)》。

今天,我們基本已經(jīng)達成了共識,開發(fā)一個系統(tǒng)的難點主要在于『生態(tài)』。為了生態(tài),它可能要兼容一個系統(tǒng)的 API,這會導(dǎo)致系統(tǒng)臃腫。為了生態(tài),它需要連帶上下游一起豐富起來。為了生態(tài),還需要開發(fā)各種各樣的工具……

舉個我們熟悉的 Android 系統(tǒng)為例,它的操作系統(tǒng)的源碼(包含上下游工具)大概 120 G,它的開發(fā)工具 IDE 大概 60 G……。這個過程中涉及到大量的計算機相關(guān)的核心技術(shù):編譯器、虛擬機、操作系統(tǒng)、編譯器優(yōu)化、構(gòu)建系統(tǒng)、圖形編程……。就這么來說吧,它幾乎快包含這一個領(lǐng)域需要的所有知識。而,你并沒有時間預(yù)先的進行研究。

就構(gòu)建來說,Android 系統(tǒng)因為大量的上下游,所以就需要:LLVM、Gradle、CMake、Bazel、GCC、Clang、Soong、Ninja……。而從編程語言上來看,所需要的語言知識有:Java、C++、C、Groovy、Kotlin。而除了這些,還有大量與硬件、芯片相關(guān)的知識。

因此,經(jīng)此一役,這一世界又多了一個能造操作系統(tǒng)的國家。

復(fù)刻更難

最近,我和我的同事一起在使用 Rust 重寫 VSCode 的詞法分析工具。起先,我以為這是一件容易的事情,都是 TypeScript 嘛。寫寫測試,直接翻譯就完了。然而,事實并非如此。

  • 需要深入理解原有邏輯。不斷地調(diào)試舊系統(tǒng)的邏輯,并重新梳理思路。
  • 業(yè)務(wù)未剝離,導(dǎo)致大量耦合。語言之間存在用法上的差異,需要追溯用法上的差異和類型上的差異。哪怕是原文上寫一個無用的 if-else,你都要糾結(jié)半天。更不用說,它可能有大量無用的代碼。因此,我們需要尋找一種有效的方式來搞定,比如 TDD。
  • 語言交互接口(FFI)。Oniguruma 是我們所使用的正則庫,而且還有指針的指針。

……

相似的,對于一個復(fù)雜的系統(tǒng)來說,各種子系統(tǒng)之間的耦合度更是難于剖析 —— 需要大量不同領(lǐng)域的知識。每個問題不單純只是某一語言、技術(shù)棧的問題,它往往是跨越了多個系統(tǒng)的問題。

結(jié)論

沒有銀彈。

本文轉(zhuǎn)載自微信公眾號「phoda」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系phoda公眾號。

 

責(zé)任編輯:武曉燕 來源: phodal
相關(guān)推薦

2022-09-19 16:24:33

數(shù)據(jù)可視化Matplotlib工具

2022-01-19 17:11:05

JavaScript數(shù)據(jù)工具

2009-10-21 21:10:08

IT運維管理BSM北塔軟件

2021-02-22 14:04:47

Vue框架項目

2020-01-17 09:07:14

分布式系統(tǒng)網(wǎng)絡(luò)

2009-09-16 11:44:26

IT運維

2020-05-22 08:16:07

PONGPONXG-PON

2021-01-28 22:31:33

分組密碼算法

2023-09-22 17:36:37

2018-06-07 13:17:12

契約測試單元測試API測試

2022-01-11 15:44:15

JavaScript圖表庫數(shù)據(jù)

2021-05-12 18:02:23

方法創(chuàng)建線程

2020-05-12 22:24:44

JVM系統(tǒng)加載器

2024-10-16 15:11:58

消息隊列系統(tǒng)設(shè)計

2022-09-26 08:03:25

VMware虛擬機

2022-01-28 08:47:25

軟件系統(tǒng)重構(gòu)

2019-02-13 14:15:59

Linux版本Fedora

2020-10-15 06:56:51

MySQL排序

2018-11-29 09:13:47

CPU中斷控制器

2022-11-01 08:46:20

責(zé)任鏈模式對象
點贊
收藏

51CTO技術(shù)棧公眾號