欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

工程師思維有什么特點?

洪振霞2年前14瀏覽0評論

謝邀!

之前讀到《計算機思維》一書,其中就提到工程師思維。恰好剛讀到萬維鋼中對此書的解讀,談得非常好,昨天用其中部分內容還回應了《工程師思維和科學家思維有什么區別?(https://wukong.toutiao.com/answer/7051938532134568199/)》,那就接著再借用其中部分內容回應此問題吧。

要把寫程序上升到工程的高度,跟以前那種興趣愛好式的編程可就完全不同了。更進一步,軟件工程和傳統的工程也不一樣。

比如你要修個橋,工程過程中哪里犯個小錯誤,通常也就是小錯誤——最多也就是讓大橋的質量降級。這座大橋總共有15個橋墩,其中第五個橋墩有個地方沒建好,這座橋大致上還能用。但軟件就不一樣了,程序中的一個小錯誤很可能就會導致整個系統的崩潰。

這是為啥呢?因為軟件不但各處的關聯非常密集,而且是個“活”的東西。比如發射火箭,軟件是要控制火箭做動作的!哪個動作不對,火箭立即失控。

所以軟件不但是個工程,而且比傳統工程難得多。那怎么應對這種復雜呢?

2、小思維

早期的軟件開發者想出了很多工程化的辦法,起到了一定的效果。比如以前都是用匯編語言,后來發明了高級編程語言,程序員就不容易出錯……當然,這時候也不需要程序員個個都有修士的氣質了。

最重要的一個方法,是把常用、好用的代碼*封裝*起來,重復使用。如果這段代碼總是被用到,已經被大家測試過很多次了,證明沒有毛病,那就不要再改來改去搞定制了,我們應該把它封裝成一個“庫函數”。庫函數具有標準化的輸入和輸出,程序員下次再用的時候只需要照顧好輸入輸出,而不必關心函數內部是什么情形——這就能大大降低出錯的概率和提高編程的效率。

封裝這個思想可以用在軟件的各個方面。數據結構、面向對象的編程、文件系統,這些都是封裝和分層。這一層的編程不用考慮底下一層的邏輯。

操作系統的內核也是一個類似的智慧。操作系統把最常用的操作計算機的動作,都事先在內核中預備好,而內核經過千錘百煉,不容易出錯。等到別人寫應用軟件的時候,用到相關的動作,就只要調用內核就行,而不必自己直接操作計算機。這就相當于把專業的事兒交給專業的人,也就不那么容易出錯了。

所有這些思想都要求對軟件開發有個宏觀的設計,而不只是吭哧吭哧寫代碼。然后你還得考慮多個人一起開發一個軟件的情形,比如最起碼得有個版本控制之類。

到這一步,軟件業才算正式成了一個行業。在上世紀五十年代,就已經有公司專門開發軟件賣錢。

……可惜這些還遠遠不夠。

軟件業從一開始就不是一個做事漂亮的行業。項目總是再延期。好不容易交付了,軟件賣出去之后又總是被人發現各種毛病和錯誤。客戶不滿意,可是如果真要搞什么售后服務,到現場去給人解決問題,那幾乎就是不可完成的任務……而且還有黑客攻擊、還有計算機病毒!

我很早以前聽過一個笑話,說一個軟件工程師嘲笑一個汽車工程師,說“如果汽車行業像計算機行業一樣發展,現在汽車應該一毛錢一輛?!钡瞧嚬こ處煵灰詾槿唬f“可是誰會要一輛動不動就拋錨的汽車呢?”

而早期的軟件公司,對此只有兩個不是辦法的辦法。一個辦法是盡量去找那些經驗豐富、頭腦聰明的高水平程序員……一個辦法是銷售軟件的時候干脆附帶一個免責聲明:如果因為這個軟件的毛病給您造成了損失,我們概不負責。

社會對計算機的美好幻想被打破了,軟件行業陷入了危機。

3、大思維

軟件工程的問題不是你每年能培養多少高水平程序員的問題,而是復雜性問題。

小軟件和大軟件的根本區別在于尺度。以前一個小軟件只有幾千行代碼,現在一個大軟件要有幾百萬行代碼。以前的軟件是給一個人用,現在是多個用戶共同使用一個軟件。更重要的一點是,以前的軟件是一個人或者幾個人開發的,現在則是大型團隊一起開發。

將在回復《為什么現在的工程師,越來越不喜歡做管理?》中接著談。

最后,再順便打個小廣告,“陳思進財經漫畫”系列第二部《漫畫生活中的金融》新鮮出爐、我的財經圖書“收官之作”《投資的方法》即將出版,謝謝關注!

你對這個問題有什么更好的意見嗎?歡迎在下方留言討論!