《軟體框架設計的藝術》試讀 1 2 軟體的演變過程

2022-02-12 06:41:17 字數 1226 閱讀 6359

圖1-1 我要編寫html頁面謀生

看來,在今天的軟體工程世界中,理性主義已無存身之地。特別是現代的程式設計師,幾乎沒有幾個推崇理性主義了。圖1-1表明,我們已經完全喪失了秉持理性主義的程式設計師了。這並不新鮮,dijkstra就曾經說過:「大部分程式設計師都沒有能力編寫出好的**。」真理啊!現代社會不斷地對軟體業提出新的要求,但我們又可以做些什麼呢?

對我們常人來說,基於理性主義還是經驗主義去理解這個世界,其實無關緊要,最好的建議莫過於無知一點兒,同樣,編寫程式也是如此。這個世界,或者說我們現在所處的這個社會並不需要每個人都成為哲學家。這個社會給我們這些懂得少些也即更無緒的人留有空間,而一切也能正常。同樣,軟體工程也不要求所有的程式設計師都是受過高等教育的科學家。如果想開發軟體,就需要乙個系統,程式設計師可以無緒也能產生可靠的軟體系統。

事實上,上文一直在說的無緒並不是說完全不懂程式設計。很明顯,僅僅在鍵盤上隨機地輸入字元是不太可能產生乙個可編譯的程式的。所以對於程式設計師,知道如何編寫**是乙個先決條件(就像人類社會中,人們必須具有觀察、理解、討論電視廣告等能力一樣)。在軟體工程中所指的無緒是指程式設計師在不需要深入了解很多內容的情況下,就可以寫出好的**。這裡不能簡單地說哪些知識是必需的,而哪些則不是。我們的目標是找到一種編碼實踐方法,讓開發人員不用深入了解所有事情,即選擇他們所需的知識。我把這稱為針對性無緒⑥。

① 早期計算機的軟硬體並不像今天區分得這麼清楚,很多任務程師都是軟硬通吃的人物,而且那個時候電子管計算機經常出故障,需要進行維修,像bug一詞就來自於乙個硬體故障。——譯者注

② cobol是common business oriented langauge的縮寫,是最早的高階程式語言之一,是世界上第乙個商用語言。

——譯者注

③ 演算(lambda calculus)是一套用於研究函式定義、函式應用和遞迴的形式系統。它由阿朗佐•丘奇(alonzo church)和他的學生史蒂芬•科爾•克利尼(stephen cole kleene)在20世紀30年代引入。——譯者注

④ lisp是由約翰•麥卡錫在2023年左右創造的一種基於演算的函式式程式語言,它是第乙個函式型程式語言,主要應用在人工智慧(ai)上,包含多字元擷取函式,供作自然語言的分析之用。——譯者注

⑤ edsger dijkstra, selected writings on computing: a personal perspective (new york: springer-verlag, 1982)。

⑥ 原文為selective cluelessness,直譯為選擇性無緒,這裡翻譯成針對性無緒。——譯者注

軟體架構, 軟體框架,設計模式的區別

軟體的架構是系統的乙個草圖 闡述了各個元件之間的通訊 劃分層次 一旦系統開始詳細設計 架構藍圖就很難甚至無法更改 是由軟體架構師從無到有設計出來的。比如說,多台機器負載均衡,使用者訪問多個不同業務的前端專案,前端專案通過http介面訪問伺服器前端專案,伺服器前端專案通過介面訪問伺服器後端專案,伺服器...

防毒軟體框架設計

這個軟體,既可以對資料夾防毒,也可以對某個指定的檔案進行防毒。可以根據不同檔案的特點,為不同的檔案提供不同的防毒方式。檔案和文字檔案的防毒方式是有差異的。資料夾中包含檔案和資料夾,在資料夾中可以包含檔案也可以包含資料夾。我們將資料夾成為容器,不同型別的各種檔案是容器的成員,也成為葉子,乙個資料夾也可...

軟體框架設計試水

首先我們是gco團隊,由7人組成。而我和我的搭檔是做框架設計。我和我搭檔擅長圖的設計和繪製,因此由我們來擔任這個任務。我們希望能夠統籌大局,讓每個地方都做到更好。我們遵循敏捷開發,在我看來敏捷開發就是遵從團隊領導者的分配,接到任務後和自己的搭檔配合設計開發程式,隨時應對可能發生的需求改變。通過小組的...