[結論2]不能賣os,也要學寫os:從程式實作教軟工
從程式實例教軟體工程
是否需以 OS 為例, 有無其他可能是 "純軟體" 的實作例 ?
1.多數看重 OS
2.很多人也強調 軟工實作 不必是OS , 可考慮如課程成績系統
===================================================================
※ 引述《ggg12345 (ggg)》之銘言:
: 可是, 為甚麼是以 OS 為例 ? 可以做為上面這種實例練習的也很多,
: 如 Compiler , 資料庫, 多線程的Web server(不是網頁) 也是有模組.
: 還有, 動到 OS kernel, 常涉及使用的 Language Compiler 版本與
: Library 的支援, 不僅機器相當於重灌 kernel , 使用的程式語言還
: 會更動到 include 底下的 .h 檔與 lib 檔, 會讓原來其他的 AP 或
: 程式因此受波及變得編譯時不正常. 使得機器必須特別安排工作目錄
: 與工作區, 讓每位學生專用一個大大的獨立工作區, 甚至是配屬一台
: 專門練習的機器. (當然, 這是很好的系統支援與管理實例)
: 挑 OS 這個課做實例, 就會有配備與帳號管理的問題. 雖然 Nachos
: 使用工作站會很方便, 而且是使用模擬程式代替實質系統, 但要提供
: 這種環境的人力與配備, 支援上還是會讓這個 OS 課變得 "特權".
: : 沒有模組,無法再度被使用,老是在抱怨bug太多做不完。
: : 真的!!做越多的規劃,越能夠避免掉房子蓋了又拆再重蓋,直接在紙上走這條路
: : 就會讓我們在軟體系統的設計上順暢許多,bug也能夠在控制的範圍內
: OS 這個軟體可能是模組數量與複雜度最高者之一, 要讓學生練習換模組,
: 總要先知道模組大概彼此相關的部份, 教師或助教的熟練是避不了的, 靠
: 教學相長故然是個辦法, 但學生若耗太多時間在此課, 別的老師也會受波
: 及而哇哇叫 !
: 此外, 這個課可以發表研究論文的地方較不容易, 老師要被數論文批, 教
: 這種課又要知道很多, 還要能對付實例疑難雜症, 不是很容易生存.
: 為甚麼從實例教軟體工程, 卻是要挑明以 OS 為例 ?
: 有教軟體工程的教師就強調現在要發展的軟工是要為軟體的發展而服務的,
: 而 OS 先天就是為硬體而服務的軟體(這句話是有問題的, OS 也支援所有
: 的軟體. 但這表明了部份研究軟工者的情結).
===================================================================
※ 引述《clliu168 (風)》之銘言:
: 要學 OS 很多系統的東西都得要懂,所以如果以後做的是系統相關的工作
: OS 這門課的幫助就很大
:
: 以目前的市場生態來說,你自己重寫一個 OS 也不可能打的贏 MS,要比
: Linux 受歡迎的難度也很高。但是對於瞭解系統來說,幫助卻是很大
: ( Compiler 也是一樣道理 )
:
========================================================================
※ 引述《ggg12345 (ggg)》之銘言:
: : 以目前的市場生態來說,你自己重寫一個 OS 也不可能打的贏 MS,要比
: : Linux 受歡迎的難度也很高。但是對於瞭解系統來說,幫助卻是很大
: : ( Compiler 也是一樣道理 )
: 是這樣沒錯 ! 不過就不能找那種 "能贏的" 又能學到 "軟體工程" 與 "純軟體
: 系統" .
========================================================================
※ 引述《nedbob (狗腿)》之銘言:
: 我倒是覺得
: 單以一個人能力來說 台灣人很強....
: 但是以分工合作來說 台灣人很弱....
: 一個 project 1個人來寫 很簡單
: 但是同樣分給5個人寫 那就非常困難了
: 所以台灣的教育再分工的這方面要在加強
:
: 拉回主題
: OS這課程為何會這麼重要
: 寫OS就是因為他不是"純軟體"
: 他必須去了解許多的知識(包含硬體軟體)
: 才有辦法寫的出OS或寫出好的OS
:
: 我們老師說過 去看看其他科系 應數 物理 電子 電機 資管 ......等等
: 他們一定也有人會寫程式 寫出來的光鮮亮麗 不會輸給資工本科系
: 那資工要怎麼混勒
: 資工要混就是會知道這個領域許多其他科系不知道的知識
:
: OS 為什麼要這樣設計
: Compiler 為什麼要這樣設計
: 各個 Program Language 各有什麼好壞 設計理念在哪
: .......一大堆知識 這些知識其他科系絕對不會教
:
: 但是這些知識能讓資工人寫的程式就是比其他科系出身的還要"好"
:
: 結論:
: 所以對一個只要求會寫程式的人 現在買本書給他 他就會寫了
: 但是要寫出資工系水準的程式 你就必須學一大堆有的沒的知識了
:
: 所以 OS ....等等的課程重不重要 當然重要了
: 推 abcdefghi:現在軟體開發工具做的太好了,只要有興趣
: → abcdefghi:隨便都可以寫出程式,不過這些半路出家的
: → abcdefghi:寫出來的code,很多都是一條龍,沒有layer
: → abcdefghi:,也沒有block,更不用講design pattern的
: → abcdefghi:東西,至於其他CS的基本功,就更不用講了,
: 推 FlyinDeath:上OS課寫OS很好啊..但是軟工課用OS當作
: → FlyinDeath:業就不太合適了...
: 推 abcdefghi:沒在業界team work過的教授教SE,就像沒
: → abcdefghi:寫過 C 的人,跑去教大一寫 C 一樣好笑.
===============================================================================
※ 引述《MasterChang (我愛ASM)》之銘言:
: : 有過經驗的應該可以分享一下看法.
: 那為什麼要trace code?就是要用吧?我也很討厭Trace code,當
: 然有文件更好。只是有文件的code通常很少。所以要trace code。
: 無助於取得技術?軟體技術開發能力提升有限?...分析OS 核心可
: 以印證教科書上的東西,讓理論貼近現實運作,瞭解實務上的衝突
: 與妥協。
:
: 雖然市面上講Linux Kernel分析的書不少,不過真的要瞭解核心的
: 運作大概需要牛人級的耐心去玩。
: 軟體工程,在我看來是廣義的系統工程開發,沒有妥善的設計規劃
: ,沒有完整的文件與分析。大概最後就是只是一陀大家都不想要,
: 也沒人要的shit。
===================================================================
※ 引述《ggg12345 (ggg)》之銘言:
Trace OS program 主要的一個原因可能是因為最早的 UNIX OS Source 可
以從 Bell Lab 取得, 這對學校的教學與教師都是一種方便. 如果沒有這種
Open Source , 又沒有參與開發大型軟體的經驗, 那對教師根本就不太可能
有軟體工程的經驗, trace code 試著修改模組可以有參與一個大團隊, 使用
團隊工具與感受內在規範的團隊紀律, 這可能是這個標題扯到 OS 的原因吧!
近來的軟工都強調與突出是為了要發展 "純軟體" 的軟體工程.
純軟體已經排除 OS , Compiler , 甚至 Network 軟體.
====================================================================
※ 引述《ggg12345 (ggg)》之銘言:
: ※ 引述《nedbob (狗腿)》之銘言:
: : 一個 project 1個人來寫 很簡單
: : 但是同樣分給5個人寫 那就非常困難了
:
: 人月神話的 外科手術式的團隊 建議就不是 "分" 給很多人寫 !
: 如果不該分的亂分一通, 單一個 coupling 造成的溝通就把程式
: 設計師搞得沒效率了. 分模組分工是要講究 "凝聚" "核心".
:
: 但是 OS 這種課的領域非常清楚, 就是 "制御硬體提供方便性與效率性的軟體"
: 是電子計算機這種硬體裝置的延伸功能, 是 EECS 含軟硬體的範籌 !
:
: 範例是不是因為 Open Source 在起主導作用 ?
:
=========================================================================
※ 引述《MasterChang (我愛ASM)》之銘言:
: ※ 引述《ggg12345 (ggg)》之銘言:
: : OS 是軟體, 而且跟硬體有關, 多數 compiler 也是. 如果動 OS 多數就是涉及
: : porting , 那更是會動到 compiler. 嵌入式系統就明顯是三者免不了.
: : 使用實例教軟體工程, 可不可以舉 "純軟體" 的實例, 或者是都不碰硬體的 ?
:
: 不能同意更多了。
:
: 說寫OS不用碰硬體,不用碰組譯器、編譯器、定位器?那是自欺欺人。
: 這種跟硬體關連性這樣大的東西跟「軟體春天」有個X關係?學校教OS
: 老師哪幾個做過Porting的工作?
:
: 既然要找軟體產業的春天,定位就要明確,投入資源要確定,每個區域
: 都分一點就是通通發展不起來。應用軟體這樣多,為什麼一定要拿OS做
: 例子?
:
: 推 nedbob:寫個課程成績系統如何....而且是全班一起寫
: → nedbob:我們大一有挑戰過....花了2/3學期
: → nedbob:當然最後得成品沒有很好.....
: → nedbob:不過模組化的概念倒是表達的很清楚
: 推 MasterChang:課程成績系統真要寫的好,考慮的東西
: → MasterChang:不少呢!!
※ 引述《ggg12345 (ggg)》之銘言:
原來的劉先生建議是 "學國外OS的 使用教學用作業系統 教學法"
假設那個範例就是 UCB 的 nachos ,
1.這個範例公開其 source program 可以透過閱讀程式學習.
2.使用 C++ 高階語言, 使用模擬器簡化硬體環境, 使用同一套之追蹤除錯工具.
3.使用 功能化模組, 設定單一架構, 使用同一套工具與規範.
4.在同一平台與環境但不同之機器上, 學生每個人都能獨立各做各的, 不互相干擾,
各替換模組也不相依, 不同學生做不同塊模組可以併成一個新系統.
5.強調測試與量測.
軟工可以自己找一套符合上面 5 點的 AP source program 來提供軟工教學 ! 課
程成績, 或選課系統 都有很高的契合度.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.1.146
※ 編輯: ggg12345 來自: 140.115.1.146 (07/03 19:05)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章