早上讀了一封某國立大學資訊系教授的信,百感交集。也不想評論些什麼…
就說說自已的想法罷了
我個人覺得,一個活在 AC 2008 Embedded GNU/Linux Software Developer 要會以下一些東西。
我認為…這只是基礎。這些會了,再來談創意…
光是空想,手上沒有工具,或是有工具不會用…只是白搭。
技術方面
* C programming
-- study forever...
-- Learning how to tracing code - Learning from the master
* Shell programming
-- Bash & awk & sed & grep & diff & patch
-- Python | Perl | Ruby
* Software testing
-- smoke test
-- boundary test
-- stress test
...
* cross toolchain.
-- Static link & Share Library
-- ABI
-- Dependency tree
-- How kernel execute programs & ELF study
* SCM
-- git
-- svn
-- cvs
-- patch
---- quilt
* Distribution structure
-- How system boots
-- Build a distribution from scratch
* Misc tools
-- gdb
-- valgrind
-- gprof
-- gcov
-- doxygen
-- autotools
文化方面
* Mailing List
* Bugzilla
* Hacker ethics
* IRC
* English
* Eat your dog food
* Coding style
* Knowledge management skill - search & skip
很明顯以上不是一門課就可以上完的,不過可以分散在幾門課之中。
0. 計概
1. OS
2. C programming
3. System programming
4. XXX 專題
作為:
. 老師自已開始始用 GNU/Linux or any Unix like system 把自已丟進 FOSS 的世界…會更有 fu
. 鼓勵學生在大一時,就學習用 GNU/Linux,以及使用公開格式文件。
學校為什麼要為 MS 做免費的廣告呢?
要求學生使用不是每個人都買得起的東西,使用不公開格式的文件…
這是不道德也不經濟的。
學生也可以真正的體會 FOSS 的文化,有興趣的人還可以真正深入了解系統的運作。
. 要求學生使用 gpg keys 以及使用 ssh key
. 作業用 git+ssh 繳交…
. 教導學生使用 Unix 下的一些超級工具
-- 一旦學會了…一輩子受益。可惜…很多老師自已不會,學一下吧。 ~>_<~
. 要求學生加入有名的 open source 的專案,成為期中作業。(以 commit log 為準)
. OS 課程之中,指派學生 Trace Linux kernel code ,對照 textbook 內容,且 present 給大家,作為作業。
. Algorithm 課程中,指派學生 Trace glibc | stdc | stdc++ | java library code ,使用,且學習用它們的 API 自已 cleanroom 一個出來,用 test framwork 來測。
. C programming 中,學生的每個程式作業,都要擺出 autotools 的架式,以及使用 doxygen 產生文件 (或不同工具)
. RTFM, 選一些重要的 manual 叫學生讀,學會讀文件和學會讀 code 是一樣重要的。
. 出幾題如 pythonchallenge 之類的上機作業給學生…
. 要求程式作業要先交 .h 檔,先上 git
. 鼓勵學生訂 mailing list, 為課程開 mailing list,在上面討論課程和作業
. 老師也要學習新把戲 ;-) 如果您在教 GNU/Linux development 而上面的任何 Item 不清楚的話,或不了解怎麼做的話…也許要再 update 一下您的 knowledge 了。
基礎很重要。手中有工具,才能玩遊戲。
小弟其實懂得不多,每天也還忙著學新東西,不過看完了某教授的信後,心裏是這麼想的。