Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
NTU NewsLab Group Meeting 1
Search
Sam Huang
August 31, 2020
Education
85
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
NTU NewsLab Group Meeting 1
Sam Huang
August 31, 2020
More Decks by Sam Huang
See All by Sam Huang
從開發走向管理及規劃 — 工程師的自我修養
sailplanetw
0
230
軟體的成本預估與時程規劃
sailplanetw
0
170
全方位技術整合:專業開發能力成就完善的智能平台
sailplanetw
0
260
從案例看製造業如何做數位轉型
sailplanetw
0
210
案例分享:台塑生醫實驗用藥追蹤系統
sailplanetw
0
200
[MOPCON 2022 Keynote] 從 IoT 到 Web2,從 Web2 到 Web3:那些開發路上的奇妙風景
sailplanetw
0
580
Offline x Online:HiPrint Smart Printing E-Commerce System
sailplanetw
0
250
從 APP 到雲端:物聯網產品的軟體設計該如何規劃
sailplanetw
0
410
感官文化印刷的全通路品牌營運策略
sailplanetw
0
330
Other Decks in Education
See All in Education
Tema 1. El relieve de España: Formación y características
juanmartin2026
0
17k
AI時代のセキュリティ監査
matshogo
PRO
0
120
データマネジメント試験対策教材1〜データマネジメント基礎〜
yoshimura_datam
1
750
Comentario del plano urbano de Madrid hasta 1860 (1ª parte )
juanmartin2026
1
82k
形骸化しない社内勉強会の取り組み - オーナーシップの作り方 / In-house study session
soudai
PRO
1
290
Visionary Initiative: Materials-Positive Society 「モノの進化をポジティブな社会の原動力に」|Science Tokyo(東京科学大学)
sciencetokyo
PRO
0
1.4k
Agent = Model + Harness
moon004
0
100
[2026前期火5] 論理学(京都大学文学部 前期 第10回)「論理学の哲学——意味とは何か(Tonkと推論主義)」
yatabe
0
310
Introduction to Accounting
bvr7352
0
160
人間のために、人間と共に働く時代の終わりの始まり
frievea
0
180
焦燥を平穏に変えるエンジニアのための哲学
ichimichi
7
6.9k
[2026前期火5] 論理学(京都大学文学部 前期 第11回)「ハーモニー:三層モデルと保存拡大」
yatabe
0
290
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
240
Optimising Largest Contentful Paint
csswizardry
37
4k
Practical Orchestrator
shlominoach
192
12k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
240
Statistics for Hackers
jakevdp
799
230k
Ethics towards AI in product and experience design
skipperchong
2
380
The Spectacular Lies of Maps
axbom
PRO
1
1k
Balancing Empowerment & Direction
lara
6
1.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
Designing for Timeless Needs
cassininazir
1
480
Transcript
Group Meeting - Some tracing tools Dept. Computer Science and
Information Engineering, NTU 20081125 Yi-Siang Huang
Outline Trace code … 讀書心得
• Trace code … • 讀書心得
Saying First • 我們身邊有總是滿坑滿谷的 code … • 為了人類的進步跟世界的和平 苦命工程師通常要 「懂」那些亂七八糟的
code 到底在幹麼 • 怎樣 trace code 比較有效率呢 ???
Saying First (cont.) • 其實有些吐喔可以給我們一隻手 ! • GUI ?? 非
GUI ?????
Vim + plugin • 大致有下面幾種 - Ctags, Cscope, taglist, …
• emacs 也有支援(非 vim-only) • ubuntu 都可以用 apt-get 取得
Vim + plugin (cont.) • 先來談談 vim … - ctrl+w
n … 分割視窗 - ctrl+w s (:sp) … 開啟同一檔案在新分割視窗(:e 可開別的檔案) - ctrl+w q (:q)… 關閉視窗 - ctrl+w [↑|↓] … 切換視窗 - ctrl+w [+|-] … 調整視窗大小 - [[ / ]] … 跳到前/後一個函數 - [I / ]I … 放在關鍵字上可跳到同檔案中上/下次出現的位置 - gf … 放在 include 的檔案名稱上時即可開啟該檔案 ( :set path+=/usr/include ) ctrl + O 回到原檔案 - [D … 承接上面的 gf, 可展示出 macro 的定義 - :set cursorline … 在 vim 中開啟基準線
Vim + plugin (cont.) • Ctags 1. 幫我們快速找到變數和函數宣告的地方 ! 2.
apt-get ctags 即可安裝 3. 產生檔案列表 :find . –name “*.c” –o –name “*.h” > ctags.files 產生 index : ctags –L ctags.files 4. 使用: Ctrl + ] … 跳到 function body(可跨檔案) Ctrl + t … 回到上一次 :help tags … 查看說明
Vim + plugin (cont.) • Cscope 1. 可以看成是 Ctags 的加強版
! 2. 下載 cscope_maps.vim 到 ~/.vim/plugin 即安裝完成 3. 產生檔案列表 :find . –name “*.c” –o –name “*.h” > ctags.files 產生 index : ctags –bq –i ctags.files 4. 使用: :cs find … 搜尋 functon (還有很多功能) Ctrl + O … 回到上一次 :help cscope … 查看說明
Vim + plugin (cont.) • taglist 1. 讓 vim 出現新分割視窗協助搜尋
(加強 ctags 功能 本質上仍是 ctags) 2. apt-get excberant-ctags 並下載 taglist.vim 到 ~/.vim/plugin 即安裝完成 3. 產生檔案列表以及產生 index 同 ctags 4. 會列出該檔案中所有變數以及函數名稱 5. 使用: :TlistToggle … 開啟輔助視窗 Ctrl + w + [←|→] … 切換視窗方式
Vim + plugin (cont.) • global 1. 可和 vim 結合
但比較特別的是可以產生網頁格式的樹狀結構網頁 ! 2. 支援多種語言 (php, perl, pyhton, …) 3. apt-get global 即安裝完成 4. 在要產生程式碼樹的地方下 gtags 即可產生索引檔 接著下 htags –Fnsa 產生程式碼樹 其後會看到 HTML 目錄
GUI tools • 大致有下面幾種 - Kscope, Anjuta, Kdevelop, … •
大致上差異不大 (都宣稱和 source insight 差不多強) • geany – 一個在程式語法上加強的編輯器
None
人月神話 : 軟體專案管理之道 1975 年初版 1995 年發行紀念版
我們常常碰到 … 容易 delay 而且有抓不完的 bug 老闆或組長要你畫押進度 但是你不敢 不斷不斷的加班 持續很長的一段時間
意志消沈 不幸的事情一再發生 浪費時間 一堆聰明人淨幹些蠢事 想逃但是逃不出來 …
把事情做好 「對航海的人來說 擱淺的船就是燈塔」 <荷蘭諺語> 但是 「你所得到的權力並不足以承擔你所扛下的責 任」 <管理學> 把事情做好 得到更大的權力
承擔更大的責任
焦油坑 …
有些糟糕的事情總會發生 … 一切都會進行的順利 ! 真的嗎 … 雖然畫押了 … 但我真的做的到嗎 ?
人月神話 !!! Delay 了 ! 快來人啊啊啊啊啊啊啊啊啊 !!!!
事實上 … Brooks 定律 「在一個已經 delay 的 project 中增加人手 只會讓他更落後
!」 「人月神話」的迷思 花費的時間 - 專案有多少連續性限制 投注的人力 - 可以被切分成多少獨立的子工作
優秀的團隊 … ? 程式設計師間的生產力差異極大 ! 經驗多寡 … 影響不如想像中大 兩難在於要兼顧工作效率跟概念整體性 Harlen
Mills 的架構 - 如外科手術團隊 - 短小精悍的團隊比較棒
所以要專制還是民主 ? 保持概念整體性最好的方式就是 其出自少數人的一致決定 架構是「做什麼」而實做是「如何做」 「第二系統」的出現 !
巴別塔為何失敗 ? 根據記載 巴別塔成功的條件 明確目標 有 人力 很多 材料 足夠
時間 沒有限制 技術 足夠 缺少的是溝通和組織 !
要是失敗了該怎辦 ? 不需要煩惱是否該先做一個試探性的系統 然後將之丟棄 目的只是吸收經驗 因為你一定會丟掉第一次做出來的東西 「把必然的一次失敗納入正式計畫之中」 放心 ! 現在在你面前的
spec 一定會改變 !
失敗失敗失敗 … 修好的 bug 很可能會導致其他 bug 出現 ! Pascal :
「任何事物總是在最一開始的時候最完美」
大災難啊 … 為什麼專案會落後一年 因為每次都落後一天 程式除了寫給電腦看之外 也是寫給人看的 請維持良好的寫作習慣 !
有沒有銀彈 !? 軟體開發的本質性和附屬性 因為本質性 大幅提昇開發速度有難度 軟體是人寫的 不是上帝 !
人月神話二十年 勿忘初衷 ! 架構設計師要綜觀全局而非細節 社會性問題通常超過技術性問題 一些反思 - 即使知道這些 開發真能變得更順利 ?
- 真的沒有銀彈 ??