Discussion:
請問該怎麼讀懂source code ?
(时间太久无法回复)
零下13度....Orz
2006-12-08 14:07:45 UTC
Permalink
source code真是龐大的東西

搞不清處那一塊是那一塊

請問有一些輔助工具嗎?

還是該怎麼讀呢?


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 128.104.183.4
※ 編輯: ikjhyu 來自: 128.104.183.4 (12/09 06:07)
ing
2006-12-09 00:02:19 UTC
Permalink
※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: 標題: 請問該怎麼讀懂source code ?
: 時間: Sat Dec 9 06:07:19 2006
: 推 PsMonkey:用眼睛讀 61.228.196.30 12/09 11:12
: 推 ikjhyu:樓上看過source code 嗎? 24.158.15.116 12/09 13:11
: 推 ikjhyu:整個codec 而且缺document 24.158.15.116 12/09 13:16
: → ikjhyu:你的背景是? 大學還沒畢業?研究所?社會人? 24.158.15.116 12/09 13:17
: → ikjhyu:問問有無輔助工具總行吧?回這種廢話有用嗎? 24.158.15.116 12/09 13:20
缺 doc 的 source code ?

碰到有註解的 code 應該要謝天謝地囉

一堆 code 變數名亂取,function名亂取,運作邏輯像外星人的code 到處都是啊


怎麼讀?

當人體編譯器啊 一邊讀一邊自己排版自己敲註解進去啊

這行在做什麼事 下一行在做什麼事 這個function在做什麼事 下個function在做什麼事

不然呢?期待有個工具幫你吞程式碼進去然後生使用說明出來給你嗎?

(不過好像是有類似的東西啦...)


trace啊 trace就是讓你找一個進入點 然後跟著裡面的指示一行一行追下去啊

----
一開口就問背景 真是個奇怪的思考方式....

--
And they... Will dance if they want to dance Please brother take a chance
  You know they're gonna go  Which way they wanna go
 All we know is that we don't know
  What is gonna be Please brother let it be
  Life on the other hand won't let you understand
   Why we're all part of the masterplan _

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.244.196
antitheist
2006-12-09 00:36:55 UTC
Permalink
如果是OOP的程式,有一種工具可以
自動把code畫成UML類別圖

不過好像有的有綁IDE、有的沒有...




※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: source code真是龐大的東西
: 搞不清處那一塊是那一塊
: 請問有一些輔助工具嗎?
: 還是該怎麼讀呢?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.169.90
Victor
2006-12-09 02:54:59 UTC
Permalink
※ 引述《costbook (antitheist)》之銘言:
: 如果是OOP的程式,有一種工具可以
: 自動把code畫成UML類別圖
: 不過好像有的有綁IDE、有的沒有...
: ※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: : source code真是龐大的東西
: : 搞不清處那一塊是那一塊
: : 請問有一些輔助工具嗎?
: : 還是該怎麼讀呢?
Doxygen
生成文件,印出來看
應該會比直接用IDE或記事本之類的讀好

--
VICTOR工作室 | PTT遊戲設計版隆重開幕!
| 不管是新手老手,程式美工音樂企劃....
URL : http://www.kinmen.info/vic/ | 都歡迎來遊戲設計版參與討論 XD
| 戰略高手>
C/C++ | GameTopics>
Visual Basic 6.0 | GameDesign

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.134.242.60
愛鼻的鼻啾啾
2006-12-09 08:22:09 UTC
Permalink
※ 引述《StubbornLin (Victor)》之銘言:
: ※ 引述《costbook (antitheist)》之銘言:
: : 如果是OOP的程式,有一種工具可以
: : 自動把code畫成UML類別圖
: : 不過好像有的有綁IDE、有的沒有...
: Doxygen
: 生成文件,印出來看
: 應該會比直接用IDE或記事本之類的讀好

1.把int main()之前宣告的都抄起來 ex:變數,struct

然後跟程式本體對著看,然後照前面建議的自己加註解。

2.把程式印出來,然後剪貼成流程圖(如果迴圈太多不好看的話)


= =" 我知道方法很爛,不過我都這麼搞

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.127.81.110
ephesians
2006-12-09 11:23:24 UTC
Permalink
※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: source code真是龐大的東西
: 搞不清處那一塊是那一塊
: 請問有一些輔助工具嗎?
: 還是該怎麼讀呢?

有一種圖型化助讀工具,叫做understand,
其中一項是understand for C++,
可試試,
但非免費軟體.


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.16.53
2006-12-09 22:43:57 UTC
Permalink
Post by Victor
※ 引述《costbook (antitheist)》之銘言:
: 如果是OOP的程式,有一種工具可以
: 自動把code畫成UML類別圖
: 不過好像有的有綁IDE、有的沒有...
Doxygen
生成文件,印出來看
應該會比直接用IDE或記事本之類的讀好
用 doxygen 的話,
其實還是得看 code 本身是什麼年代的東西,
早期為了讓 prototype 相容於新舊版 C compiler,
會搞出一堆 P1 P2 P3 P4 的 macros 在 function prototype 上,
看起來像是 void foo P2(int, x, int, y) 這樣的東西,
doxygen 會有誤判的情形。
把這個 function 當成叫做 P2 的 function,
然後要是一個檔案裡面全部都是兩個參數的 functions,
那掃出來就會發現 doxygen 只抓到一個叫做 P2 的 function,
其它的 functions 全部遺漏掉了。

doxygen 對 #ifdef 這類的東西判定能力也很弱,
不少程式是用 configure script 掃出一個 config.h 檔來,
然後做條件編譯,
但是 doxygen 沒辦法分辨出這種東西來,
永遠都是先 parse 最早看到的那一塊。

我是知道 doxygen 的設定檔裡有一堆選項疑似可以解決這些問題,
不過我測到今年三四月的版本為止都沒發現有啥效果,
用了好幾年下來 doxygen 一直都沒改善這些問題。

--
Name: Tseng, Ling-hua E-mail Address: ***@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝  ╰  * From:61-230-220-9.dynamic.hinet.net 
 ─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎ 
邪樹豬鹿
2006-12-09 18:32:45 UTC
Permalink
※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: source code真是龐大的東西
: 搞不清處那一塊是那一塊
: 請問有一些輔助工具嗎?
: 還是該怎麼讀呢?
之前有人天馬行空的要求說要以"不trace 但要把整個程式的架構都弄通"
我要讀一個有設計文件十幾萬行的程式碼,那程式已經開發了十幾年了
由於沒有文件或者文件沒有時常更新,所以這程式碼已經有二、三年沒人作的下去了。
不過我花了兩個月的努力只讀懂了五萬行

純屬個人的心得就是

1. 可以看到不同年代的coding style 還有各式各樣的命名規則。

2. 通常是否能快速看懂的部份,是因為剛好本身有它那方面的概念然後又被你猜中了。

3. 如果它的命名不是太隨性,你可以考慮由它的命名規則去追出這class
大概是那個部份的人在作的(Google就是有好處),大致有了解再鑽進去才不會白鑽。

4. 整個開發過程中的設計文件真的很重要

5. Doxygen建立的文件有很強的關聯性,當你要特別去了解這大程式裡某個特定的東西時
可以省掉花時間去對每個文件一一search的時間。
譬如像我曾經想對 HP的STL 跟SGI的STL裡的map的ALLOCATOR作比較,超連結的方便性
就省去了我在東翻西翻的時間了。

6. 會吸取到一些 設計的pattern,然後再去看看GoF的書時,會比較有感覺


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.150.67
會走路的冰塊
2006-12-09 20:04:35 UTC
Permalink
�� �ޭz�mStubbornLin (Victor)�n���ʨ��G
: �� �ޭz�mcostbook (antitheist)�n���ʨ��G
: : �p�G�OOOP���{���A���@�ؤu���i�H
: : �۰ʧ�code�e��UML���O��
: : ���L�n���������jIDE�B�����S��...
: Doxygen
: �ͦ������A�L�X�Ӭ�
: ��ӷ|�񪽱���IDE�ΰO�ƥ�������Ū�n

�ܤ[�H�e�ιL�@�ӵ{���s Source-Navigator

�b� Debian or Ubuntu �� apt �˪��ɭԭn�� sourcenav (�n���令�o�W�r�H)

�b�����W�������Цp�U�G

What is Source-Navigator?

Source-Navigator is a source code analysis tool. With it, you can
edit your source code, display relationships between classes and functions
and members, and display call trees.


�H�e�Ϊ��ɭԡA�n�����o�{�@�Ǥp bug...

���L�̷s�� release �O�b June 27, 2003 ........ʨrz

http://sourcenav.sourceforge.net/


--


�ڷQ�A�|�I���o�˳��O�ڮ`��
---- Tizzy Mac

���i��������H�o�O��(�D�ġD?)

--
�� �o�H��: ���������~�{(ptt.cc)
�� From: 59.104.230.210
�� �s��: WalkingIce �Ӧ�: 59.104.230.210 (12/10 12:04)
Victor
2006-12-09 20:47:52 UTC
Permalink
很抱歉,我想介入一下 = ="

※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: : source code真是龐大的東西
: : 搞不清處那一塊是那一塊
: : 請問有一些輔助工具嗎?
: : 還是該怎麼讀呢?
: : 推 PsMonkey:用眼睛讀 61.228.196.30 12/09 11:12
: : 推 ikjhyu:樓上看過source code 嗎? 24.158.15.116 12/09 13:11
: : 推 ikjhyu:整個codec 而且缺document 24.158.15.116 12/09 13:16
: : → ikjhyu:你的背景是? 大學還沒畢業?研究所?社會人? 24.158.15.116 12/09 13:17
: : → ikjhyu:問問有無輔助工具總行吧?回這種廢話有用嗎? 24.158.15.116 12/09 13:20
: 你問該怎麼讀,有人(CSSE 版吧)回你多用點腦袋
: 我覺得我回的比較中肯,用眼睛讀
基本上,我個人認為這樣的推文沒有一點中肯,講難聽一點是廢言
雖然說Cross Post有錯在先,但是如果你行使你的執權砍文之類的那就算了
但是撇開CP不看,這樣的文章雖然說沒有說出哪一種語言
不過我認為這文章意思很清楚,可是你卻一直要去故意曲解他的意思
其他人大部份都把自己知道的講出來,就算不認同這種問法就算了
但也也沒到爛問題需要一直酸的地步

: : source code真是龐大的東西
這裡說明要讀的source code不少

: : 搞不清處那一塊是那一塊
這裡說明遇到的問題

: : 請問有一些輔助工具嗎?
這裡提出問題,有沒有什麼工具可以幫助了解

: : 還是該怎麼讀呢?
或是讀source code的技巧之類的經驗分享

: 一個 hello world 的 source code,前後不會超過 10 行,哪裡龐大了?
: 讀組合語言跟讀純 C 或是讀 Java
: trace 起來的感覺都差很多(雖然要做的功夫差不多)
: 簡單地說,你問了一個很基礎,基礎到不知道該怎麼回答的問題
這很基礎嗎? 很多東西,都是要經歷過才知道
有什麼工具可以用,沒用過,沒聽過,不知道就是不知道
互相交流經驗才對不是嗎?

接著,該怎麼讀,用眼睛讀是廢話,就像該怎麼做筆記,用筆做也一樣是廢話
或許以你的智慧會覺得理所當然,但是並不是每個人都是你
光是做筆記每個人都有不同的方式,不同的技巧,多到可以出一本書
讀source code也一樣,每個人方法都可以有很大的差別,不管是工具
技巧、經驗等等

: 可以是好問題,但是你卻問爛了,而且還 CP 了三個版
: 我是沒什麼背景啦... 也許我應該動用惡勢力,以 CP 為名賞你幾個劣文
: C & C++(似乎是你要看的 source code 的語言)
..
: 其他像是 class hierarchy、或是用 plug-in show 出 UML 圖
: 我比較沒接觸到,不過有這些工具就是了
: =====
: 很多人遇到廢話會生氣
: 卻壓根沒想過自己說了多少廢話
: 我上頭寫了一對廢話
: 所以以後我不能對廢話生氣 T__T
他的文章並沒有廢言,只是講得不夠清楚,反觀你的推文才是
如果是我遇到這種也可能會生氣

--
VICTOR工作室 | PTT遊戲設計版隆重開幕!
| 不管是新手老手,程式美工音樂企劃....
URL : http://www.kinmen.info/vic/ | 都歡迎來遊戲設計版參與討論 XD
| 戰略高手>
C/C++ | GameTopics>
Visual Basic 6.0 | GameDesign

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.134.242.60
小敗踢
2006-12-09 20:53:50 UTC
Permalink
※ 引述《StubbornLin (Victor)》之銘言:
: : 很多人遇到廢話會生氣
: : 卻壓根沒想過自己說了多少廢話
: : 我上頭寫了一對廢話
: : 所以以後我不能對廢話生氣 T__T
: 他的文章並沒有廢言,只是講得不夠清楚,反觀你的推文才是
: 如果是我遇到這種也可能會生氣

不用生氣啦, 不要回就好了 (茶)
最近忙到翻掉, 只挑賞心悅目的文章來回

比如說 Python 版 #141 ... 多賞心悅目啊! 看了就會想回啊! XD

java #4282 也算是個不錯的發問範例, 不過這篇我就回得比較沒有誠意了 (汗顏)
幸好後面有不少高手回文補齊相關資料

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.126.44.151
※ 編輯: Tiberius 來自: 59.126.44.151 (12/10 12:53)
零下13度....Orz
2006-12-09 21:58:21 UTC
Permalink
本來很忙想就此打住 不過還是回了一下

恩 我有興趣知道你的背景是
因為你的回答太淺了
我問該怎麼讀呢? 你回用眼睛讀 , 這不是一句廢話?
難道還有別的器官可以讀?

因為答案實在太簡單了 甚至有時候會覺得帶有貶意
認為這種問題就是這樣 有什麼好問的
所以這時我會想問問對方的背景 甚至最重要的他有過些什麼經驗
作為答案的參考價值有多大

也許我可以寫清楚一點更好
不過還是有許多願意分享經驗的網友
如: costbook StubbornLin starReeves
ephesians tinlans milochen WalkingIce...等等 (不知有沒有漏掉,請包涵)

不管是用什麼方法 寫出來的這些經驗都很寶貴
不好一一回應 在此一並表示感謝


※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《TonyQ (骨頭)》之銘言:
: : source code不能是十行之類的程式,那你問問題有定義source code嗎?
: 我想了很久,不知道怎麼定義 source code 這種東西 XD
: 基本上,source code 跟 code... 恩... 在程式設計當中好像是等號...
: : 所以還是要推一下psMonkey的答案,用眼睛看。
: 咪的,連高級控制碼都出現了...
: : 推 ikjhyu:不想繼續吵這個問題 128.104.183.4 12/10 06:41
: : → ikjhyu:不過我記得我文章裡有寫龐大兩個字吧? 128.104.183.4 12/10 06:41
: : 推 ikjhyu:這樣還會認為是只有10幾行的小程式 128.104.183.4 12/10 06:51
: : 推 ikjhyu:可見有多少人沒看清楚就在reply 128.104.183.4 12/10 06:55
: : 推 ikjhyu:加入戰局 128.104.183.4 12/10 07:03
: : 推 ikjhyu:就此打住 , 也許P只是開個玩笑 我認真了 128.104.183.4 12/10 07:06
: 我並沒有開玩笑
: 如果我現實生活中的心情很好,有心情處理版務站規的鳥事情
: 所有在 CompScience cross-post 三篇發問文的人
: 全部介入版務 d 劣文
: 十行的程式碼就不是 source code....
: 那你告訴我 source code 的定義好了
: 「souce code 真是個龐大的東西」
: 你覺得寫的很清楚明暸,別人都是沒收工在罵髒話
: 那是你的問題,而不是看的人的問題
: (當然,會看 CompScience 各版問的文章,而不是純粹上來發問的人
: 我想,每個人都知道你真正要問啥...)
: 在你那簡短到不行的文章當中
: 我看不到清楚的問題描述、看不到你真正要問的東西(要問輔助工具)
: 當然,更遑論看到發問者的誠意
: 反倒是在辯解自己沒錯、都是別人的錯的推文章當中
: 字數多、語意明確而且還有攻有守這樣
: 與其這樣,為甚麼不把你那問爛的問題好好清楚的重新問一遍
: 講清楚
: 你用的是哪一種語言
: 讀哪一種類型的 project
: (萬一他是 sourceforge 登記有案的還可以報名字)
: project 的規模多大
: 目前使用什麼工具 trace code,有什麼不便之處
: 你需要什麼功能(或是需要知道從哪裡開始看比較重要)
: 這樣子的發問文章比較有意義
: 如果這樣子問了,有人還回你「用眼睛看」
: 你要問他祖宗十八代的身家背景程式資歷
: 我想大家都不會說話
: 當然,也許你這就已經得到你需要的答案
: 然後證明自己的清白比較重要,那麼,也請你不用在辯駁了
: 政治人物們有沒有 A 錢,我們只能等人爆料法官查證
: 你的事蹟都直接攤在網路上,個人自有公道
: =====
: 我會喜歡念 Computer Science 的原因
: 除了工作跟娛樂都是同一個姿勢,騙人很方便外
: 就是電腦那種不容許模糊不清的性質
: 不用像人與人相處一樣,要「言外有人、人外有世」地猜測每句話的原意
: 但是常常看到這類型的發問文章(或是作業報告)
: 語意混亂、不知所云,作者卻還覺得講的很清楚
: 就覺得很糟糕...
: 這種表達能力(還有背後的思考清晰度)
: 我想,應該比會了多少技術演算法、寫了多少程式,還要重要的多吧

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.158.15.116
ephesians
2006-12-09 22:41:41 UTC
Permalink
※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: 本來很忙想就此打住 不過還是回了一下
: 恩 我有興趣知道你的背景是
: 因為你的回答太淺了
: 我問該怎麼讀呢? 你回用眼睛讀 , 這不是一句廢話?
: 難道還有別的器官可以讀?
: 因為答案實在太簡單了 甚至有時候會覺得帶有貶意

關於"用眼睛讀"這話,發表一點淺見.
對於你的感受,的確能感同身受,彷彿被貶低了.
另外,對於P猴大的發言動機,也感覺得到並不是帶著惡意的.

個人經驗,曾經列印過一本某程式原始碼,厚度跟C++規格書印出來一樣厚. (4cm)
(我印過C++規格書,是在網站上花18塊美金買的電子檔,全印下來.)
那麼厚的原始碼,註解卻少之又少.
因此,的確有需要去尋找不用眼睛讀程式碼的方案,
為了節省閱讀程式及模式重構的時間.

現今寫程式多走視覺化的路線,
讀程式為什麼不能也走視覺化呢?


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.128.24
銀色
2006-12-10 00:21:18 UTC
Permalink
※ 引述《StubbornLin (Victor)》之銘言:
: 基本上,我個人認為這樣的推文沒有一點中肯,講難聽一點是廢言
: 雖然說Cross Post有錯在先,但是如果你行使你的執權砍文之類的那就算了
: 但是撇開CP不看,這樣的文章雖然說沒有說出哪一種語言
: 不過我認為這文章意思很清楚,可是你卻一直要去故意曲解他的意思
: 其他人大部份都把自己知道的講出來,就算不認同這種問法就算了
: 但也也沒到爛問題需要一直酸的地步
: 這裡說明要讀的source code不少
: 這裡說明遇到的問題
: 這裡提出問題,有沒有什麼工具可以幫助了解
: 或是讀source code的技巧之類的經驗分享

這裡小弟也稍微提一些想法。
其實我覺得回答的答案跟答問者本身的使用習慣也有關係。

老實說我覺得 PS 大回答的很中肯,
因為小弟自己第一眼看到問題時,心裡面所想的也是『用眼睛看』啊~o_Oa"

小弟資歷不深,前前後後程式只寫了五六年,當然沒有遇過什麼太大的專案,
遇到程式岩石也都是盡量從脈絡去找出關係然後試圖解開。

老實說小弟沒有在用過所謂的讀 source code 的工具(也用不順),
所以當遇到這種題問時會覺得很基本。

(因為小弟的腦袋裡還沒有讀 source code 工具的概念,
或著也可以說小弟覺得即使再有什麼工具,
也比不上紮實下去解會更能解的徹底。)

就像學生問老師,老師,我要怎麼把 bibi 念好,
老師會回答他,多讀、多看、多學是一樣的道理。

但是如果在補習班,補習班老師可能會教你一種全然不同的技巧,
譬如說特殊背誦的法,特殊的歸類法,
甚至是專門用來解一些專門題的獨門技巧。

但是在這種情況下,能夠說本來的老師回答有錯嗎?
學生上過補習班後,回去問老師,老師,為什麼這些你都不教。

老師無言。
(心裡 OS:我要會這種方式的學習法,現在還會在這裡領這喵的死薪水嗎,
早就去賺你們這些死小孩的補習費了。)

但是補習班教的不一定是合適每個學生的。

而且老師所說的『多讀、多看、多學』可以適用在任何的讀書上,
補習班的獨門解卻只能專解一些類型的學習方式。

這樣講感覺好像是在說 PS 大技術不夠(跪…小弟不是這個意思)
只是對於像小弟這種暴力讀 code 的人來說,
的確用眼睛讀是最中肯也最基礎的方式(而且絕不是開玩笑)


PS 大和 S 大都是小弟很敬佩的人,小弟只是略微表達自己的些微想法,
還請不要鞭我。(伏地)



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.230.195
愚人
2006-12-10 00:50:13 UTC
Permalink
※ 引述《***@bbs.sayya.org (foolish)》之銘言:
: 分享一下八方齋前輩的文章
: 源碼閱讀經驗談:
: http://godspeedlee.myweb.hinet.net/trace_code.htm

少貼了另一個

http://local.joelonsoftware.com/mediawiki/index.php/
%E8%AE%80%E7%A8%8B%E5%BC%8F%E7%A2%BC%E5%B0%B1%E5%83
%8F%E8%AE%80%E7%8C%B6%E5%A4%AA%E6%B3%95%E5%85%B8

http://tinyurl.com/yf4x4x

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.94.161
2006-12-10 09:20:19 UTC
Permalink
唔,讀 source code 其實光用眼睛讀是不行的,
就個人讀過 GCC 4.x 70 幾萬行 source code 的經驗,
你沒有紙筆是不可能 trace 的,
所以除了用眼睛看還要動手,
而且不光只是用手敲鍵盤而已。

前面 modern c++ design 讀書會的討論其實我也說過類似的話,
現在電腦的輸入設備要直接體現人類的思緒還有段距離,
沒有紙筆在那邊畫的話腦袋很容易停下來或打結,
也就是說就算有 sourcenav、doxygen、understand 之類的工具輔助,
紙筆還是免不了的,
當你發覺自己盯著螢幕手完全不動在發呆時,
你就應該記得要動手在紙上把你看到的描繪出來,
不然時間累積下來你的速度會慢人家好幾倍。

至於該在紙上寫些什麼就因人而異了,
每個人都有適合自己的思路描繪方式,
講出來該寫些什麼反而會影響到思考自主性,
所以就自己摸索吧。

--
Name: Tseng, Ling-hua E-mail Address: ***@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝  ╰  * From:61-230-220-9.dynamic.hinet.net 
 ─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎ 
$$$$$$$$$$$$$$$$$$$$$$$
2006-12-10 06:42:00 UTC
Permalink
※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: source code真是龐大的東西
: 搞不清處那一塊是那一塊
: 請問有一些輔助工具嗎?
: 還是該怎麼讀呢?

在一堆戰文中 我來給點建議吧 我自己算是剛進入職場的菜鳥

進了公司以後發現不少同事有用 source insight這套軟體

他可以追蹤各個function 點兩下就跳過去 trace到底以後

要回來也有箭頭可以回來 變數以及結構的管理 都很清楚 我自己感覺相當好用

你可以試試看 當然也有可能大家早就知道了 因為畢竟自己只是個小菜鳥

有需要就參考看看吧 Good Lock~!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.67.195.227
g***@ptt.cc
2006-12-10 07:35:55 UTC
Permalink
※ 引述《iFEELing (ing)》之銘言:
: ※ 引述《gz ()》之銘言:
: : 承認"用眼睛看"是廢推文並不難, 硬凹反而難看
: : 時間會證明一切? 等你先道歉再說吧
: 問題是"用眼睛看"並不是廢文
常看板的就知道p某平常就愛找新手開刀了,
只是這次看不慣他口氣 要他改改罷了
: 在原po只給了一堆含糊描述的狀況下,它是合邏輯的答案。
: 沒講要trace什麼語言 什麼用途的程式 大概多少份量的code
我常用的兩套Code Comprehension Tools幾乎能通吃所有主流語言,
SilckEdit, Source Insight
語言不是問題.

什麼用途的程式?通吃多少份量的Code? 這會是問題嗎? 嗯嗯...
你找的理由很牽強
: 誰曉得他到底想幹什麼?
多試試這兩套工具, 增廣見聞吧
: ----
: 你硬凹 你要道歉 你說廢話 你做的很難看
: 這他X的政客語言不要拿出來講,否則見笑的是你自己。
口氣真差, p某回的文也越來越難看, 如何自圓其說?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.152.208
ing
2006-12-10 08:30:48 UTC
Permalink
�� �ޭz�mgz ()�n���ʨ��G
: �� �ޭz�miFEELing (ing)�n���ʨ��G
: : ���D�O"�β�����"�ä��O�o��
: �`�ݪO���N���Dp�Y���`�N�R���s���}�M�F,
: �u�O�o���ݤ��D�L�f�� �n�L�����}�F
: : �b��po�u���F�@���t�k�y�z�����p�U�A���O�X�޿誺���סC
: : �S��ntrace�����y�� �����γ~���{�� �j���h�֥��q��code
: ��source code���M���u��, �s Code Comprehension Tool
: �ڱ`�Ϊ�Source Insight, SlickEdit�X�G���q�Y�Ҧ��D�y�y��,
: �y�����O���D.
: �����γ~���{��?�h�֥��q��Code? �o�|�O���D��? ����...
: �A�䪺�z�ѫܲo�j
���ڦӨ�

�@��d���H�����{�� �j�����O�� vim/joe �������}�Ӭ�

�A�j�~�|�Ҽ{�� Ultraedit �Ψ��L���n��

�ҥH�{���X�����q�|�v�T�ڪ�����

�ܩ󤰻��γ~���{��...

�p�G�I�쪺�O���I�~�N���t�� �i���̭��Ϊ��y���N�����o�O�{�b���D�y�y��

�άO�l�D�į� �ҥH�Ϊ��y�������C�� �o�� �کҪ��D���u���N�����o�i�H���T�PŪ

�ҥH����ij���e�A�����o�����T�V�h�A�N�V�e��X���n���P�_

�Ӥ��O�����@�ӪF�� �o�F���i�H�q�Y�j���� �A�B���n�N�� �B�𤣦n�N������ �o��


: : �־��o�L�쩳�Q�F����?
: �h�ոճo���M�u��, �W�s���D�a
: : ----
: : �A�w�W �A�n�D�p �A���o�� �A����������
: : �o�LX���F�Ȼy�����n���X����A�_�h�������O�A�ۤv�C
: �f���u�t, p�Y�^�����]�V�ӶV����, �p���۶��仡?
----
�����ڤ]��ı�o�A���f���h�n

"�A����" "�۶��仡" "�f���u�t"

�ڤ��۫H�o�ث��d�����y���i�H�n�@�Ӧ��ۥѷN�Ӫ��H"��"


--
 �H�۷����y�L �|�} ���g���~�ֻ��g ���A  �z�{
���Ǻƨg�����몺�b���� �z�{  ���b�@�i�i�ۤ��W �|�]���b�ߤ�
�L�N�����_ �]�u�İ_�L�����L�� �|�} �O�� �A���O�q�e���A �ڤ]���O�q�e���ڤF
�|�} �ڭ̳Q�~�b�����ҧ��� ���� �Q��i�o�ӥ@��  �z�{ �|�}
�������A�������{ �̥O�ڷP�ʪ�  �z�{ �|�}
 �i amiangel �|�} �z�{  �O�A�����`�B �ڭ̴����L���u�����P

--
�� �o�H��: ���������~�{(ptt.cc)
�� From: 220.134.244.196
g***@ptt.cc
2006-12-10 14:30:14 UTC
Permalink
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《gz ()》之銘言:
: : 常看板的就知道p某平常就愛找新手開刀了,
: : 只是這次看不慣他口氣 要他改改罷了
: 如果只是看不慣我的口氣,那麻煩可以停了
: 反正這種事情,全憑個人主觀判斷
: 只不過,不巧的是,這次有人覺得我是廢文,有人覺得不是
可惜事情沒有你想像的那麼簡單.
這類工具不但有需求, 有市場, 還有數套產品在競爭.
開發商可不是笨蛋, 開發出"用眼睛看"就可以取代的商品
在知道有這類軟體後 還有人認為"用眼睛看"的推文不廢嗎?
: 但是,再扯下去,我(還有 gz)的語氣應該也不會有多大的改變
: 請回到 source code trace 上頭...
: 要詰譙我 or 討論「語氣問題」的,請到 CompScience 考古版
: 沒有人身攻擊的話,文章至少短時間都不會砍
在你地盤開的擂台, 抱歉沒興趣奉陪.
尤其從你上面的推文就可以發現你的行為已經開始不太正常了,
質疑別人用免洗id, 東扯西扯的, 教幫你說項的如何下的了台?
: 最後,與其純粹咬著我的語氣不放
: 倒不如一開始就跳出來幫忙回答問題
: 就這樣
這就好笑了, 這麼快就露出馬腳.
不如一開始就回答問題? 你一開始別推這種廢文不就得了

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.229.147.193
kid...
2006-12-11 00:02:52 UTC
Permalink
※ 引述《PsMonkey (痞子軍團團長)》之銘言:
: ※ 引述《gz ()》之銘言:
: : 常看板的就知道p某平常就愛找新手開刀了,
: : 只是這次看不慣他口氣 要他改改罷了
: 如果只是看不慣我的口氣,那麻煩可以停了
: 反正這種事情,全憑個人主觀判斷
: 只不過,不巧的是,這次有人覺得我是廢文,有人覺得不是
: 但是,再扯下去,我(還有 gz)的語氣應該也不會有多大的改變
: 請回到 source code trace 上頭...
: 要詰譙我 or 討論「語氣問題」的,請到 CompScience 考古版
: 沒有人身攻擊的話,文章至少短時間都不會砍
: 最後,與其純粹咬著我的語氣不放
: 倒不如一開始就跳出來幫忙回答問題
: 就這樣

看看自己回文一整個攻擊+挑釁

"賞劣文" "砍文" 若你真的覺得不妥你就砍阿

有必要用來說嘴嗎 怕別人不知道你組務的身分嗎??

最後再來回一篇 看似為以大局為重 要大家別再戰的文章

孰不知這是因誰而起.

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.119.112.156
g***@ptt.cc
2006-12-11 01:17:11 UTC
Permalink
※ 引述《TonyQ (骨頭)》之銘言:
: 有需要開這麼多篇嗎?
: 1.語氣很重要嗎?
: 忍不起就不要這樣問啊,
: 直接在文章中註明非強者勿回不就好了。囧
: 2.就閱讀"龐大"(數量未明"的程式碼而言,
: 用眼睛看這答案的合理度有多高?
: 老實說,說用眼睛看是廢文的,真的也罵到不少人。XD
: 3.原PO能不能出來說一下本來的龐大到底是多大?
: 講這麼多就只是想知道你的問題到底是怎樣咩,囧。
: 對我來講兩千行算龐大了,我得看上兩個禮拜。XD
: (早在文章說新手勿試不就得了。XD)
: 4.私人恩怨請場外解決唄,
: 一邊是講免洗ID,一邊是講早就看不順眼。
: 吵給其他版眾聽幹麻-_____-
原意被你曲解的太厲害, 不得不跳出來說明
p某愛找新手麻煩這個很平常, 新手自己沒遵守規定被罵被砍是活該倒楣
但這次不一樣. 原po已經把問題說出來了, p某這次用廢推文奚落了一番
這樣就算了, 但是罵完了不懂得嘴巴擦乾淨, 牽拖了一大堆,
這下當然就踢到鐵板了.
跟你說的早就看不順眼意義差太多, 請勿曲解原意, 謝謝.
至於他指我是免洗id這和本討論串無關, 純粹是他個人道德問題

: ────────────────────────────────
: 討論是有『討』有『論』,
: 這個討是討教,也是一種最基本的要求,
: 有了這個基本的要求和前提才有論戰。
: 現在連討都沒有,就開始論起來了,於是整個四不象。
: 反正這是個自助式的網路,東西拿了人就走了,
: 只要有人回答,其他的人都不重要了。
: 說實在話這還蠻像在殺雞取卵的,多一事不如少一事,
: 用一個荒謬比喻法,每個人都花個幾十秒在想『龐大』的定義,
: 十幾個人起來也是好幾分鐘,再加上論戰的內容,這簡直是犯罪呀!
: 不過紛爭本身倒也不是甚麼好事,
: 快把本來的問題找出來吧,這串吵了這麼多篇,
: 至少來個人把有用的資料整理整理,也比看這些篇幅洗版來得好。

我再整理一下, 把重點表列出來, 免得有人討論失焦了

gz source code comprehension tool 市面上要錢的免錢的加一加也有十幾套
要錢的也賣到幾百塊美金, 顯然不是"用眼睛看"就可以取代的工具.
是學生沒用過不打緊, 前面幾篇文也有提到在公司用的大有人在.

p* 你"疑似"免洗ID(???)

如何? 再清楚不過了吧?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.150.5
零下13度....Orz
2006-12-11 01:42:41 UTC
Permalink
有點像要戰...也許是看錯...
還是reply一下... 沒有要戰 別誤會...

※ 引述《TonyQ (骨頭)》之銘言:
: 有需要開這麼多篇嗎?
: 1.語氣很重要嗎?
: 忍不起就不要這樣問啊,
: 直接在文章中註明非強者勿回不就好了。囧


語氣重要 因為容易起戰雲

另外為何要這樣限定? 我並沒有做這樣的限定阿
除了一些腦筋急轉彎式的無聊回應
各方版友提供的經驗都是寶貴的

也許我寫清楚一點會更好
不過還是有不少熱心的版友 給予寶貴的經驗
包括後來的幾位 還有CSSE版的版友 或是純用推文的
這些方法都沒有好不好的問題
這裡再表示感謝

: 2.就閱讀"龐大"(數量未明"的程式碼而言,
: 用眼睛看這答案的合理度有多高?
: 老實說,說用眼睛看是廢文的,真的也罵到不少人。XD
:
不要斷章取義只取用眼睛讀,還有前文是如何
本想就此打住 , 當P兄只是開開玩笑
無奈還是~

3.原PO能不能出來說一下本來的龐大到底是多大?
: 講這麼多就只是想知道你的問題到底是怎樣咩,囧。
: 對我來講兩千行算龐大了,我得看上兩個禮拜。XD
: (早在文章說新手勿試不就得了。XD)


為何要限定呢? 同(1)

程式是mpeg4的source code 是幾個人聯合寫的東西.
encoder的部分,c檔案約有四十幾個, h檔案也有四十幾個
這部分可能約數萬行,主要是裡面還加了很多
#ifndef , #ifdef 之類的敘述
看起來有時會讓人感到眼花撩亂

另外還有decoder的部分 , 外加一些疑似共同使用的程式
不過我今天有找到好像是document之類的東西
相信應該對解讀有幫助
也許有人有興趣
可以私下來討論也說不定

: 4.私人恩怨請場外解決唄,
: 一邊是講免洗ID,一邊是講早就看不順眼。
: 吵給其他版眾聽幹麻-_____-

也許這位版主有得罪一些人

: ────────────────────────────────
: 討論是有『討』有『論』,
: 這個討是討教,也是一種最基本的要求,
: 有了這個基本的要求和前提才有論戰。
: 現在連討都沒有,就開始論起來了,於是整個四不象。
: 反正這是個自助式的網路,東西拿了人就走了,
: 只要有人回答,其他的人都不重要了。
: 說實在話這還蠻像在殺雞取卵的,多一事不如少一事,
: 用一個荒謬比喻法,每個人都花個幾十秒在想『龐大』的定義,
: 十幾個人起來也是好幾分鐘,再加上論戰的內容,這簡直是犯罪呀!
: 不過紛爭本身倒也不是甚麼好事,
: 快把本來的問題找出來吧,這串吵了這麼多篇,
: 至少來個人把有用的資料整理整理,也比看這些篇幅洗版來得好。


恩 , 就寫到這裡好了~~
至於感想 試完之後再來發表好一點~~

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.158.15.116
ephesians
2006-12-11 02:19:20 UTC
Permalink
※ 引述《ikjhyu (零下13度....Orz)》之銘言:
: 程式是mpeg4的source code 是幾個人聯合寫的東西.
: encoder的部分,c檔案約有四十幾個, h檔案也有四十幾個
: 這部分可能約數萬行,主要是裡面還加了很多
: #ifndef , #ifdef 之類的敘述
: 看起來有時會讓人感到眼花撩亂

這樣的程式份量,
可以麻煩那位講 "用眼睛看" 的人
用眼睛好好幫你看一看.

打給貢厚嗯厚阿?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.160.214.7
2006-12-11 12:00:49 UTC
Permalink
對我而言
一兩千行以內的程式 大概都是用 vim/joe 直接打開來看
再大才會考慮用 Ultraedit 或其他的軟體
所以程式碼的份量會影響我的選擇
至於什麼用途的程式...
如果碰到的是有點年代的系統 可能裡面用的語言就不見得是現在的主流語言
或是追求效能 所以用的語言比較低階 這些 我所知道的工具就不見得可以正確判讀
所以給建議之前,能獲得的資訊越多,就越容易做出更好的判斷
而不是說丟一個東西 這東西可以通吃大部分 你運氣好就中 運氣不好就不能用 這樣
其實還有一種方法就是用 debugger 去追,
接近百萬行的程式除了拿靜態的工具去追,
也需要動態觀察的工具。

對有興趣又可能跑到的 function 下 breakpoint,
然後看看 backtrace 的內容,
通常可以得到一些啟示。

--
Name: Tseng, Ling-hua E-mail Address: ***@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝  ╰  * From:61-230-220-9.dynamic.hinet.net 
 ─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎ 
躂躂..
2006-12-11 05:35:55 UTC
Permalink
雖然我在 CSSE 已經回了, 不過還是另外補些其他東西..

要用來讀程式碼的工具,
我想至少應該要能做到上尋definitions,
下查references, 這樣才能把整個程式流程串起來..
(只單查 symbol 或 文字搜尋並不夠)
雖然很多工具可以直接作出關係圖,
但用手繪印象比較深刻, 效果會比較好

其實很多 IDE 都已經有這個加能了,
像 Visual Studio(VC6不知道有沒有..) 和 Eclipse 都有這個工能..
這樣大略就夠了..

個人比較常用 kscope (http://kscope.sourceforge.net/)
他是 cscope 和 ctags 的前端,
不過好像蠻少人用的 .___."

另外有幾個網站已經很多著名的專案原碼建檔..
可以直接在web上搜, 效果還可以||

http://csourcesearch.net/
http://www.koders.com/
http://www.google.com/codesearch

第一個站只支援 C/C++, 不過個人比較推這個啦..


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.137.168
※ 編輯: cole945 來自: 220.139.137.168 (12/11 21:37)
Loading...