天天看點

【作業】2020年高等軟體工程系統設計階段思考

首先,按照國際慣例,好久不見。咋說呢,這波我自己感覺仿佛過了一年,但是翻回去一看日期才大半個月。為啥呢,這陣子太忙了,事情一個接一個,而且大都還是自己完全不擅長卻又不得不做還得做的像樣點的那種。不說别的,代碼都基本上沒時間肝,隻能向後一靠眼皮一合呼噜一響的時候寫點,還真有點尴尬。不過放心,之前挖的部落格坑,總會填上的。而且不久的未來,筆者也将會有新的開源項目正式上線,各位大可放心,筆者不會鴿的😄。

然後接下來,進入正題,現在軟工系統設計環節也已經算是告一段落了。對筆者自己而言,實際上還是早已熟悉的内容居多,是以筆者在本文中,還是主要着重說下對設計的一些粗略之見。

其實呢,說到這個,對于筆者本人而言,不算是啥陌生玩意。不是因為别的,而是因為幹的太多了,啥玩意好使啥玩意外強中幹啥玩意根本胡扯,早就爛熟于心,當然相對應的,也沒少踩過坑,甚至付出過慘痛的代價。不僅如此,在我們大學的OO課裡頭,也沒少接觸過這類内容,具體可以參考下筆者寫于2018年的一些文章,在本文中不做展開。在本文中,筆者将着重對“設計的路子”這個詞進行解析,談一談個人的了解與看法。

看了下其他同學寫的這次作業,有說注意架構規範的,也有說注意留好項目文檔之類的。不過個人了解,總而言之一句話——規範性,用一個更加文藝且浪漫主義的詞,叫做按圖索骥。

咱們也都是計算機專業的學生,小到數分高代離散,大到計算機組成原理、作業系統、編譯原理,應該人人都爛熟于心。在這裡頭,如果你學習之餘喜歡和我一樣瞎琢磨的話,肯定也會産生不少的疑問,例如:

CPU的設計,為啥需要四級流水線?二級三級不行麼?串行不行麼?ALU那種簡單玩意幹啥單獨拎出來?裝置控制直接門電路玩起來好不好為啥一定得走DM?

作業系統的程序,為啥需要拆成時間片?為啥得按照四種基本狀态來排程?我直接排着隊來不行麼?還有為啥要分核心态和使用者态?直接平推到底不行麼?

設計一門新的程式設計語言的時候,為啥一定非得去幹淨文法中的左遞歸?咱别遞歸下降好不?暴力大循環大遞歸不香嗎?就算實在不行,咱不從左邊遞歸下降,從右邊咋的就不行了呢?

即便在OO課,也有一堆同學有着五花八門的質疑:OO是啥玩意?OO能幹啥?這程式不用OO不能寫了是咋的?總而言之一句話:OO有啥用。

如果你想過這些問題的話,那恭喜你,你發現了問題的所在。在咱們的考試中,顯然但凡不按照這些來,那就是錯的,就會少不少分,這個人還會被貼上“學渣”、“學藝不精”等精緻的标簽。但是從實際意義上來說,這些真的就不對了麼?并非如此!實際上,能解決問題的一切辦法,都是好的,甭管黑貓白貓抓着耗子就是好貓,這一點毫無疑問。

不過既然如此,那麼設計的路子,重要性何在呢?問得好,我自己也想過很久,也順帶思考過更深層次上的相關問題。以下是我個人的一點了解:

設計的路子是一種可以以可控的成本,尋找出一種較優設計的方法

劃一下重點:

尋找設計的方法

成本可控

首先,設計的路子,指的是尋找設計的方法,而不是設計本身。這一點算是基本中的基本,這個概念有些類似于元(meta)的概念,換個更通俗的解釋,那就是,設計的路子,是“漁術“,而非一筐或幾簍子蹦跶着的魚。在計算機行業,有不少類似的例子,例如計算機組成原理中用到的卡諾圖,提供了一種尋找符合對應真值結果的邏輯結構的方法;在編譯原理中,我們有一整套的理論,來基于一個文法規則,構造出一個用于舒舒服服解構源代碼的有限狀态自動機,實際上我們北航這的編譯課上,一大半内容都在圍繞這個。這些内容有個共同的特點,那就是用構造用于構造的方法。而設計的路子,本質上也隻是這一思路在軟體工程設計中的展現。

而之後,也是最為關鍵的一點,就是成本可控。這意味着,我們隻需要按照路子來走,就不再需要通過一系列踩坑來提高設計品質。結合現實開發環境來說,雖然學校裡頭,你可以學習試錯,但是在生産環境下,可沒那麼多時間給你走彎路。你的甲方等着要demo,你的投資人等着一個實底,你的上頭等着成果,你的下面等着吃口熱乎的,緊俏得很。而尋找較優設計這件事,要是不能在可控的人力物力時間成本内完成,那麼設計将真正的成為玄學,變得不可捉摸且難以大規模投入産業。實際上,成本可控,個人了解,這某種意義上,也是一切理論所存在的意義。比如,我們想研究一件事情,在現在看來,似乎沒那麼困難,但是實際上,我們早就踩在了前人的肩膀上,他們為我們提供了一套經過歲月不斷完善的理論體系。試想,如果你研究一個東西的實體化學性質,而你沒有任何理論,需要從底層一步步開始,從敲石頭,到基本世界觀,到力學三定律,到電子交換規則,再到相對論,再到測不準理論,一步步來,其規模可想而知,基本上規模以幾何級數增長。而這一關鍵問題不能得以解決的話,那麼人類的技術、生産力、社會的發展,遲早将面臨全面瓶頸。而設計的路子,乃至于其他的一切路子,則是發展的基本保證。

好了,又到了一文一度的傳統藝能時間了,這次說點啥好呢,emmm。

(負能量預警,望讀者們選擇性閱讀,必要時可以跳過,感謝❤️)

首先,還是得總結下這門課程迄今為止的一切吧。總體來說還行,但是依然離配得上優秀二字,相差甚遠。首先呢,我覺得自己的隊友們都相當不錯,有一定的能力,且基本上還算是靠得住,最起碼在幾度磨合後,變得靠得住了。單純從事情的角度來看,每次都還算是平穩的度過了,而且根據老師的點評來看,似乎問題不算多,當然了,也可能是因為本就貧乏的内容确實沒啥好說。可是,了解筆者我的人,都知道,筆者一直希望能幹票大的,往小了說不滿足于完成課程的那點要求,往大了說希望能遇到有共同信仰的人。但是,事實證明筆者的能力還是欠佳,單獨做一件事還行,但是事情一多,那怕真正比較棘手的隻有一件,也會很容易陣腳大亂,戰鬥力跳水式滑坡。而我們這學期的努力,雖然從課程角度來說或許還行,但是也就僅此而已了,終究還是沒能跳出這樣的小格局。而這件事情,我認為怪不得别人,隻能怪自己能力太差,各方面都不咋地,顧頭不顧腚。這事真怨不得别人,而且正好相反,自己的這般狼狽恰恰是對組員一次一次努力的最大亵渎。我一直認為,将軍者,帶來勝利才是一切,可事實是證明,我恰恰還不具備擁有這一切的能力。而且事到如今,木已成舟,怨念也沒啥用,能做的隻有好好反思,以後别記吃不記打了。

說完課程這邊,該說說自己了。想起來半年前自己的所想,以及現在的狼狽相,真的覺得有些糟糕。不,不是有些糟糕,而是糟透了。不說别的,我記得我在大學入學的時候,寫過一張卡片,上面寫着對自己四年的期許,這個應該我們系的人都有寫過。然後四年過去,到了2020年,我再次翻出這張卡片,感覺還行,甚至某些地方還算是超額完成了任務,更有一系列的意外收獲。可是現在呢,回想起半年前給自己的期望,自己基本沒完成啥,把半年時間全都用來顧頭不顧腚,用來瞎忙活白忙活,用來丢人現眼了。人的一生超級短,一共也沒幾個半年,可是自己成年前浪費了那麼一大堆時間不說,現在依然繼續霍霍,我真的不明白自己到底何以至此。我記得,我和老師,在半年前還定過讀研一年的整體計劃,但是現在呢,完全沒有像是完成了一半的樣子。不僅如此,自己還并沒有閑着,一天到晚團團轉。或許有些人會覺得盡力而為如何如何,但是我隻覺得,這除了充分說明了自己的弱小和愚蠢外,啥也不能說明,私以為,這些“優良品質”,恰恰是一個人的原罪,畢竟,弱小和愚蠢遠比邪惡更能害人害己,更加流毒無窮。

好了好了,繼續吐槽也沒啥用,止增笑耳。真要是想要挽回的話,那就得拿出點行動來改變,種一棵樹,最好的時機是昨天,其次今天,大概就是這樣吧。

如果您一直讀到了這裡,那請允許我深深的表示感謝,真的,感謝您能聽我說完這些話,并且我誠摯地希望,能與君共勉。

好的,我得溜了,總得做點啥挽回下不是麼。До скорого~~~