教你如何读懂IES文件

时间:2024.5.4

教你如何读懂IES文件!

IES文件是什么文件?其实,IES文件就是光源(灯具)配光曲线文件的电子格式,因为它的扩展名为“*.ies”平时就直接称它为IES文件了。

IES如果你用缩略图来看的话,你看到的是它的子午面配光曲线图,也就是极坐标曲线图,结合你以前对它的了解它并不算是非常难的事情,但是,如果把它用ASCII文本文件(就是平时用的记事本,扩展名为“*.txt”的个你未必就能再识得它了,这就是它神秘的一面。

下面让我们来用宏源0612B灯具的IES文件为例,用记事本打开它是什么样子的,并对其中的意思进行逐条的IESNA:LM-63-1995

[TEST] 080325

[TESTLAB] EVERFINE

[TESTDATE] 2008-3-25

[ISSUEDATE] XX-XXX-1995

[LAMPPOSITION]

[OTHER] EVERFINE

[MANUFAC] 上海宏源电器照明有限公司

[LUMINAIRE] LVD-DVD -1100

[LAMP] LVD200W

TILT=NONE

1 16000.0 1.000 181 25 1 2 0.000 0.000 0.000

1.000 1 208.3

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5

5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5

10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5

15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5

20.0 20.5 21.0 21.5 22.0 22.5 23.0 23.5 24.0 24.5

25.0 25.5 26.0 26.5 27.0 27.5 28.0 28.5 29.0 29.5

30.0 30.5 31.0 31.5 32.0 32.5 33.0 33.5 34.0 34.5

35.0 35.5 36.0 36.5 37.0 37.5 38.0 38.5 39.0 39.5

40.0 40.5 41.0 41.5 42.0 42.5 43.0 43.5 44.0 44.5

45.0 45.5 46.0 46.5 47.0 47.5 48.0 48.5 49.0 49.5

50.0 50.5 51.0 51.5 52.0 52.5 53.0 53.5 54.0 54.5

55.0 55.5 56.0 56.5 57.0 57.5 58.0 58.5 59.0 59.5

60.0 60.5 61.0 61.5 62.0 62.5 63.0 63.5 64.0 64.5

65.0 65.5 66.0 66.5 67.0 67.5 68.0 68.5 69.0 69.5

70.0 70.5 71.0 71.5 72.0 72.5 73.0 73.5 74.0 74.5

75.0 75.5 76.0 76.5 77.0 77.5 78.0 78.5 79.0 79.5

80.0 80.5 81.0 81.5 82.0 82.5 83.0 83.5 84.0 84.5

85.0 85.5 86.0 86.5 87.0 87.5 88.0 88.5 89.0 89.5

90.0

0.0 15.0 30.0 45.0 60.0 75.0 90.0 105.0 120.0 135.0

150.0 165.0 180.0 195.0 210.0 225.0 240.0 255.0 270.0 285.0

300.0 315.0 330.0 345.0 360.0

3112.15 3109.71 3103.95 3112.15 3127.44 3149.82 3171.53 3200.78 3202.11 3203.883207.21 3192.80 3201.22 3218.29 3210.97 3199.01 3190.59 3183.05 3175.08 3156.24(限于篇幅,省略中间数据。) 3143.83 3132.31 3123.67 3111.70 3099.52 3098.19 3092.65 3090.88 3094.20 3098.41

1244.55 1208.94 1179.27 1148.78 1116.03 1082.64 1049.78 1017.80 984.79 949.78 912.13 872.31 833.00 794.89 757.35 720.64 684.61 649.26 614.59 580.00 545.78 511.68 479.75 449.95 423.11 396.88 370.71 344.41 318.84 293.09 282.16

现在来对上面的内容做一一的讲解:

IESNA:LM-63-1995

采用的是北美照明工程师社区IESNA(Illumination Engineering Society of North America)出版的为灯电子版信息制作的工业标准,这是19xx年的修定版本,这一版澄清了当时一些模棱两可的条款,而且其标题料及相关信息电子版转换的IES标准文件格式”,同时,所有修定的版本都能和以前的旧版本相兼容。

[TEST] 080325

这是检测报告的编号,它是用时间来做为编号的,即20xx年3月25日。

[TESTLAB] EVERFINE

这是实验室的名称,也就是杭州远方光电信息有限公司。

[TESTDATE] 2008-3-25

这是检测的时间,即20xx年3月25日做的检测。

[ISSUEDATE] XX-XXX-1995

18-FEB-2001,这个意思就是灯具制造商在20xx年2月18日发行的IES文件。

[LAMPPOSITION]

它指的是虚拟点光源的坐标位置,基本上会以0,0坐为坐标圆点。

[OTHER] EVERFINE

[MANUFAC] 上海宏源电器照明有限公司

这就是灯具制造厂商了,上海宏源照明电器有限公司。 这是灯具制造商发行IES文件的日期,这里没有注明,它写的是19xx年XXX月XX日,举个例子,如:[IS这是有关其它信息,至于其它的更多信息,你可能要与实验室去联系了,所以他放了一个实验室的名称在上面。

[LUMINAIRE] LVD-DVD -1100

LVD-DVD -1100。

[LAMP] LVD200W

这是光源了,它在这里说明了它的功率,那就是200W。

TILT=NONE

它指的是光源倾斜产生的光输出变化,它还有另外的两种表示方法,如下:

TILT=<filename> or INCLUDE or NONE

生的光输出变化=“光输出无变化”。

1 16000.0 1.000 181 25 1 2 0.000 0.000 0.000

1.000 1 208.3 这是灯具的名称,每个公司的每款灯具都有自己的编号,这样才能更方便有效的描述和使用,这款灯具在宏源公它等于“反应光输出变化的文件名”或者是“包括下面光输出变化参数”或是“光输出无变化。”这里则表示此款灯具

这一组数据里有几个数据是非常重要的,其中的16000,它指的是光通量,即16000lm,,还有就是0.000 208.3W。

0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5

5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5

10.0 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5

15.0 15.5 16.0 16.5 17.0 17.5 18.0 18.5 19.0 19.5

20.0 20.5 21.0 21.5 22.0 22.5 23.0 23.5 24.0 24.5

25.0 25.5 26.0 26.5 27.0 27.5 28.0 28.5 29.0 29.5

30.0 30.5 31.0 31.5 32.0 32.5 33.0 33.5 34.0 34.5

35.0 35.5 36.0 36.5 37.0 37.5 38.0 38.5 39.0 39.5

40.0 40.5 41.0 41.5 42.0 42.5 43.0 43.5 44.0 44.5

45.0 45.5 46.0 46.5 47.0 47.5 48.0 48.5 49.0 49.5

50.0 50.5 51.0 51.5 52.0 52.5 53.0 53.5 54.0 54.5

55.0 55.5 56.0 56.5 57.0 57.5 58.0 58.5 59.0 59.5

60.0 60.5 61.0 61.5 62.0 62.5 63.0 63.5 64.0 64.5

65.0 65.5 66.0 66.5 67.0 67.5 68.0 68.5 69.0 69.5

70.0 70.5 71.0 71.5 72.0 72.5 73.0 73.5 74.0 74.5

75.0 75.5 76.0 76.5 77.0 77.5 78.0 78.5 79.0 79.5

80.0 80.5 81.0 81.5 82.0 82.5 83.0 83.5 84.0 84.5

85.0 85.5 86.0 86.5 87.0 87.5 88.0 88.5 89.0 89.5

90.0

样的,数字的范围是从0.0—90.0,那它表示什么意思呢?它在极轴坐标中表示C0—C90度。 它表示虚拟点光源在导入软件中的坐标位置,即X=0.000,Y=0.000,Z=0.000,另外就是208.3,这是它这一组数据是做什么用的呢,一看这些数字,可能就眼晕了,其实你细看就会发现有规律,是从小到大渐增的,

0.0 15.0 30.0 45.0 60.0 75.0 90.0 105.0 120.0 135.0

150.0 165.0 180.0 195.0 210.0 225.0 240.0 255.0 270.0 285.0

300.0 315.0 330.0 345.0 360.0

这一组数据则与上一组有相似的意思,它在极轴坐标中表示垂直角度。

3112.15 3109.71 3103.95 3112.15 3127.44 3149.82 3171.53 3200.78 3202.11 3203.883207.21 3192.80 3201.22 3218.29 3210.97 3199.01 3190.59 3183.05 3175.08 3156.24。。。。。。 3143.83 3132.31 3123.67 3111.70 3099.52 3098.19 3092.65 3090.88 3094.20 3098.41

1244.55 1208.94 1179.27 1148.78 1116.03 1082.64 1049.78 1017.80 984.79 949.78 912.13 872.31 833.00 794.89 757.35 720.64 684.61 649.26 614.59 580.00 545.78 511.68 479.75 449.95 423.11 396.88 370.71 344.41 318.84 293.09 282.16

好,上面的那些数据的大意我们明白了,那还有更多的数据在后面的呢,虽然多,意思并不多,它们其实是与那的数据对应的光强值,虽然看上去是杂乱无章的,就单个数据可能无法找到任何规律,但事实上它们也是有一定它们的变化与配光曲线的走向是对应的,配光曲线也正是因为这些数据才绘制出来的,只是它们的呈现方式不一数据的形式呈现,另一种则是以图形的形式呈现。

通过这篇文章,我想你应该不会再觉得IES文件有多么的高深了吧,如果你足够的了解它,你甚至还可以修改想要的IES文件


第二篇:教你如何读懂源代码


分析源代码方法

如何看懂源代码--(分析源代码方法)

我们在写程序时,有不少时间都是在看别人的代码。

例如看小组的代码,看小组整合的守则,若一开始没规划怎么看,

就会“噜看噜苦(台语) ”

不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。

网路上有一篇关于分析看代码的方法,做为程序设计师的您,不妨参考看看,

换个角度来分析。 也能更有效率的解读你想要的程序码片段。

六个章节:

( 1 )读懂程序码,使心法皆为我所用。

( 2 )摸清架构,便可轻松掌握全貌。

( 3 )优质工具在手,读懂程序非难事。

( 4 )望文生义,进而推敲组件的作用。

( 5 )找到程序入口,再由上而下抽丝剥茧。 ( 6 )阅读的乐趣,透过程序码认识作者。

阅读他人的程序码( 1 ) ---读懂程序码,使心法皆为我所用

程序码是别人写的,只有原作者才真的了解程序码的用途及涵义。许多程序人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程序码。但是,与其抗拒接收别人的程序码,不如彻底了解相关的语言和惯例,当成是培养自我实力的基石。 对大多数的程序人来说,撰写程序码或许是令人开心的一件事情,但我相信,有更多人视阅读他人所写成的程序码为畏途。许多人宁可自己重新写过一遍程序码,也不愿意接收别人的程序码,进而修正错误,维护它们,甚至加强功能。

这其中的关键究竟在何处呢?若是一语道破,其实也很简单,程序码是别人写的,只有原作者才真的了解程序码的用途及涵义。许多程序人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程序码。这是来自于人类内心深处对于陌生事物的

原始恐惧。

读懂别人写的程序码,让你收获满满

不过,基于许多现实的原因,程序人时常受迫要去接收别人的程序码。例如,同事离职了,必须接手他遗留下来的工作,也有可能你是刚进部门的菜鸟,而同事经验值够了,升级了,风水轮流转,一代菜鸟换菜鸟。甚至,你的公司所承接的专案,必须接手或是整合客户前一个厂商所遗留下来的系

统,你们手上只有那套系统的原始码(运气好时,还有数量不等的文件) 。

诸如此类的故事,其实时常在程序人身边或身上持续上演着。许多程序人都将接手他人的程序码,当做一件悲惨的事情。每个人都不想接手别人所撰写的程序码,因为不想花时间去探索,宁可将生产力花在产生新的程序码,而不是耗费在了解这些程序码上。

很遗憾的是,上述的情况对程序人来说很难避免。我们总是必须碰触到其他人所写成的程序码,甚至必须了解它,加以修改。对于这项需求,在现今开

放原始码的风气如此盛行的今日,正如之前的“程序设计2.0 ”文中所提到的,你可以透过开放原始码学习到新的技术,学习到高手的架构设计,大幅提高学习的效率及效果。你甚至可以直接自开放原始码专案中抽取,提炼出自己所需的程序码,站在巨人的肩膀上,直接由彼端获得所需的生产力。从这个观点来看,读懂别人所写的程序码,就不再只是从负面观点的“被迫接收” ,而是极具正面价值的“汲取养份。 ”

先了解系统架构与行为模式,再细读

倘若撰写程序码是程序人的重要技艺之一,那么读懂别人的程序码,接着加以修改,也势必是另一个重要的技艺。

如果你不能熟悉这项工作,不仅在遭逢你所不愿面对的局面时,无法解决眼前接手他人程序码的难题,更重要的是,当你看着眼前现成的程序码,却不知如何从中撷取自己所需,导致最后只能入宝山空手回,望之兴叹。

接触他人的程序码,大致上可以分为三种程度:一,

了解,二,修改,扩充,三,抽取,提炼。了解别人的程序码是最基础的工作,倘若不能了解自己要处理的程序码,就甭论修改或扩充,更不可能去芜存菁,从中萃取出自己所需,回收再利用别人所撰写的程序码。虽说是“阅读” ,但程序码并不像文章或小说一样,透过这种做法,便能够获得一定程度的了解。阅读文章或小说时,几乎都是循序地阅读,你只消翻开第一页,一行行阅读下去即可。但是,有许多程序人在试着阅读其他人的程序码时,却往往有不知如何读起的困难。

或许找到系统的第一页(也就是程序码执行的启始点)并不难,但是复杂度高的系统,有时十分庞大,有时千头万绪。

从程序码的启始点开始读起,一来要循序读完所有的程序码旷日费时,二来透过这种方式来了解系统,很难在脑中构建出系统的面貌,进而了解到系统真正的行为。所以,阅读程序码的重点,不在于读完每一行程序码,而是在于有效率地透过探索及阅读,从而了解系统的架构及行为模式。以便在你需要了解任何片段的细节实作时,能够很快在脑上

对映到具体的程序码位置,直到那一刻,才是细读的时机。

熟悉沟通语言与惯例用语

不论如何,有些基本的准备,是阅读他人程序码时必须要有的。

首先,你最好得了解程序码写成的程序语言。想要读懂法文写成的小说,总不能连法文都不懂吧。有些情况则很特殊。我们虽然不懂该程序码撰写所用的语言,但是因为现代语言的高阶化,而且流行的程序语言多半都是血统相近,所以即使不那么熟悉,有时也可勉力为之。

除了认识所用语言之外,再来就是要先确认程序码所用的命名惯例(命名惯例) 。了解命名惯例很重要,不同的程序人或开发团队,差异可能很大。

这命名惯例涵盖的范围通常包括了变数的名称,函式的名称,类别(如果是物件导向的话)的名称,原始码档案,甚至是专案建构目录的名称。倘若使用了像设计模式之类的方法,这些名称更有一些具

体的表述方式。

命名惯例有点像是程序人在程序语言之上,另行建构的一组沟通行话。程序人会透过共通约束,遵守的命名惯例,来表达一些较高阶的概念。例如,有名的匈牙利式命名法,便将变数名称以属性,型别,说明合并在一起描述。对程序人来说,这种方式能够提供更丰富的资讯,以了解该变数的作用及性质。

对程序码阅读来说,熟悉这个做法之所以重要,是因为当你了解整个系统所采用的惯例时,你便能试着以他们所共同操用的语汇来进行理解。倘若,不能了解其所用的惯例,那么这些额外提供的资讯,就无法为你所用。像以设计模式写成的程序码,同样处处充满着模式的名称,诸如:工厂,门面,代理等等。以这些名称指涉的类别,也直接透过名称,表达了它们自身的作用。对于懂得这命名惯例的读者来说,不需要深入探索,也能很快捕捉到这些类别的意义。

当你拿到一套必须阅读的程序码时,最好先取得命

名惯例的说明文件。然而,并不是每套程序码都附有此类的说明文件。另一个方式,就是自己到程序码中,大略浏览一遍,有经验的程序人可以轻易发掘出该系统所用的命名惯例。

常见的命名方式不脱那几类,这时候经验就很重要,倘若你知道的惯例越多,就越能轻易识别他人所用的惯例。如果运气很糟,程序码所用的惯例是前所未见的,那么你也得花点时间归纳,凭自己的力量找出这程序码命名上的规则。

掌握程序码撰写者的心态与习惯

大多数的程序码,基本上都依循一致的命名惯例。不过运气更差的时候,一套系统中可能会充斥着多套命名惯例。这有可能是因为开发团队由多组人马所构成,每组人马都有不同的文化,而在专案开发管理又没有管控得宜所造成。最糟的情况,程序码完全没有明显的惯例可言,这时候阅读的难度就更高了。

想要阅读程序码,得先试着体会程序码作者的“心” 。想要这么做,就得多了解对方所使用的语言,

以及惯常运用的语汇。在下一回中,我们将继续探讨阅读程序码的相关议题。

阅读他人的程序码( 2 ) -摸清架构,便可轻松掌握全貌

在本文中,我们的重点放在:要了解一个系统,最好是采取由上至下的方式。先试着捕捉系统架构性的观念,不要过早钻进细节,因为那通常对于你了解全貌,没有多大的帮助。阅读程序码不需要从第一行读起,我们的目的并不是在于读遍每一段程序码。

基于许多原因,程序人需要阅读其他人所写成的程序码。而对程序设计2.0时代的程序人来说,最正面的价值在于,能读懂别人程序的人,才有能力从中萃取自己所需的程序,借以提高生产力。

阅读程序码的目的,在于了解全貌而非细节

想要读懂别人程序码的根本基础,便是了解对方所用的程序语言及命名惯例。有了这个基础之后,才算是具备了基本的阅读能力。正如我之前提到的─ ─想要读懂法文写成的小说,总不能连法文都不懂吧。阅读程序码和阅读文学作品,都需要了解撰写

所用的语言及作者习用的语汇。

但我们在阅读文学作品通常是采循序的方式,也就是从第一页开始,一行一行地读下去,依循作者为你铺陈的步调,逐渐进到他为你准备好的世界里。阅读程序码却大大不同。我们很少从第一行开始读起,因为除非它是很简单的单执行绪程序,否则很少这么做。因为要是这么做,就很难了解整个系统的全貌。是的,我们这边提到了一个重点,阅读程序码的目的在于了解系统的全貌,而不是在于只是为了地毯式的读遍每一段程序码。

就拿物件导向程序语言所写成的系统来说,整个系统被拆解,分析成为一个个独立的类别。阅读个别类别的程序码,或许可以明白每项类别物件个别的行为。但对于各类别物件之间如何交互影响,如何协同工作,又很容易陷入盲人摸象的困境。这是因为各类别的程序码,只描述个别物件的行为,而片段的阅读就只能造就片面的认识。

由上而下厘清架构后,便可轻易理解组成关系

如果你想要跳脱困境,不想浪费大量时间阅读程序

码,却始终只能捕捉到对系统片段认识,就必须转换到另一种观点来看待系统。从个别的类别行为着手,是由下至上(自下而上)的方法;在阅读程序码时,却应该先采由上至下(自上而下)的方式。对程序码的阅读来说,由上至下意谓着,你得先了解整个系统架构。

系统的架构是整个系统的骨干,支柱。它表现出系统最突出的特征。知道系统架构究竟属于那一种类型,通常大大有益于了解系统的个别组成之间的静态及动态关系。有些系统因为所用的技术或框架的关系,决定了最上层的架构。例如,采用的Java Servlet的/ JSP的技术的应用系统,最外层的架构便是以J2EE的(或起码的J2EE中的Web容器)为根本。

使用的Java Servlet的/ JSP的技术时,决定了某些组成之间的关系。例如, Web容器依据web.xml中的内容载入所有的Servlets ,听众,以及过滤器。每当语境发生事件(例如初始化)时,它便会通知监听类别。每当它收到来自客户端的请求时,便会依循设定的所有过滤器链,让每个过滤器

都有机会检查并处理此一请求,最后再将请求导至用来处理该请求的Servlet的。

当我们明白某个系统采用这样的架构时,便可以很容易地知道各个组成之间的关系。即使我们还不知道究竟有多少Servlets ,但我们会知道,每当收到一个请求时,总是会有个相对应的服务器来处理它。当想要关注某个请求如何处理时,我应该去找出这个请求对应的服务器。

了解架构,必须要加上层次感

同样的,以爪哇写成的网页应用程序中,也许会应用诸如Struts的之类的的MVC框架,以及像Hibernate的这样的资料存取框架。它们都可以视为最主要的架构下的较次级架构。而各个应用系统,甚至有可能在Struts的及休眠之下,建立自有的更次级的架构。

也就是说,当我们谈到“架构”这样的观念时,必须要有层次感。而不论是那一层级的架构,都会定义出各自的角色,以及角色间的关系。对阅读者来说,相较于直接切入最细微的单一角色行为,不如了解

某个特定的架构中,究竟存在多少角色,以及这些角色之间的互动模式,比较能够帮助我们了解整个系统的运作方式。

这是一个很重要的关键,当你试着进到最细节处之前,应该先试着找出参与的角色,及他们之间的关系。例如,对事件驱动式的架构而言,有3个很重要的角色。一个是事件处理的分派器(事件调度) ,一个是事件产生者(事件发生器) ,另一个则是事件处理器(事件处理程序) 。

事件产生器产生事件,并送至事件分派器,而事件分派器负责找出各事件相对应的事件处理器,并且转交该事件,并命令事件处理器加以处理。像的图形用户界面的Windows应用程序,便是采用事件驱动式的架构。

当你知道此类的应用程序皆为事件驱动式的架构时,你便可以进一步得知,在这样的架构下会有3种主要的角色。虽然也许还不清楚整个系统中,究竟会需要处理多少事件的类型,但对你而言,已经建立了对系统全貌最概观的认识。

虽然你还不清楚所有的细节,但诸如确切会有那些事件类型之类的资讯,在此刻还不重要─ ─不要忘了,我们采取的是由上而下的方式,要先摸清楚主建筑结构,至于壁纸的花色怎么处理,那是到了尾声时才会做的事。

探索架构的第一件事:找出系统如何初始化

有经验的程序人,对于时常被运用的架构都很熟悉。常常只需要瞧上几眼,就能明白一个系统所用的架构,自然就能够直接联想到其中会存在的角色,以及角色间的关系。然而,并不是每个系统所用的架构,都是大众所熟悉,或是一眼能够望穿的。这时候,你需要探索。目标同样要放在界定其中的角色,以及角色间的静态,动态关系。

不论某个系统所采用的架构是否为大部分人所熟知的,在试着探索一个系统的长相时,我们应该找出来几个答案,了解在它所用的架构下,下列这件事是如何被完成的:一,系统如何初始化,二,与这个系统相接的其他系统(或使用者)有那些,而相接的介面又是什么;三,系统如何反应各种事件,

四,系统如何处理各种异常及错误。

系统如何初始化是很重要的一件事,因为初始化是为了接下来的所有事物而做的准备。从初始化的方式,内容,能知道系统做了什么准备,对于系统会有什么行为展现,也就能得窥一二了。之所以要了解与系统相接的其他系统(或使用者) ,为的是要界定出系统的边界。其他的系统可能会提供输入给我们所探索的系统,也可能接收来自这系统的输出,了解这边界所在,才能确定系统的外观。

而系统所反应的事件类型,以及如何反应,基本上就代表着系统本身的主要行为模式。最后,我们必须了解系统处理异常及错误的方式,这同样也是系统的重要行为,但容易被忽略。之前,我们提到必须先具备一个系统的语言基础,才能够进一步加以阅读,而在本文中,我们的重点放在:要了解一个系统,最好是采取由上至下的方式。先试着捕捉系统架构性的观念,不要过早钻进细节,因为那通常对于你了解全貌,没有多大的帮助。

阅读他人的程序码( 3 ) -优质工具在手,读懂程序非难事

系统的复杂度往往超过人脑的负荷。阅读程序码的时候,你会需要更多工具提供协助。使用好的整合式开发环境( IDE )的或文字编辑器,就能提供最基本的帮助。

阅读程序码的动作,可以是很原始的,利用最简单的文字编辑器,逐一开启原始码,然后凭借着一己的组织能力,在不同的程序码间跳跃,拼凑出脑中想要构建的图像。

不过,系统的复杂度往往超过人脑的负荷。阅读程序码的时候,你会需要更多工具提供协助。使用好的整合式开发环境( IDE )的或文字编辑器,就能提供最基本的帮助。

善用文字编辑器或IDE中,加速解读程序码

许多文字编辑器提供了常见程序语言的语法及关键字标示功能。这对于阅读来说,绝对能够起很大的作用。有些文字编辑器(例如我常用的编辑器及偶而使用的记事本+ + ) ,甚至能够自动列出某

个原始档中所有定义的函式清单,更允许你直接从清单中选择函式,直接跳跃到该函式的定义位置。这对于阅读程序码的人来说,就提供了极佳的便利性。

因为在阅读程序码时,最常做的事,就是随着程序中的某个控制流,将阅读的重心,从某个函式移至它所呼叫的另一个函式。所以对程序人来说,阅读程序码时最常做的事之一就是:找出某个函式位在那一个原始档里,接着找到该函式所在的位置。

好的的IDE能够提供的协助就更多了。有些能够自动呈现一些额外的资讯,最有用的莫过于函式的原型宣告了。例如,有些的IDE支援当游标停留在某函式名称上一段时间后,它会以提示的方式显示该函式的原型宣告。

对阅读程序码的人来说,在看到程序码中呼叫到某个函式时,可以直接利用这样的支援,立即取得和这个函式有关的原型资讯,马上就能知道呼叫该函式所传入的各个引数的意义,而不必等到将该函式的定义位置找出后,才能明白这件事。

grep按(读者:推荐来源透视)是一个基本而极为有用的工具

除了选用好的文字编辑器或的IDE之外,还有一个基本,但却极为有用的工具,它就是grep按。熟悉的Unix作业系统的程序人,对grep按这个公用程序多半都不陌生。 grep按最大的用途,在于它允许我们搜寻某个目录(包括递回进入所有子目录)中所有指定档案,是否有符合指定条件(常数字串或正规表示式)档案。

倘若有的话,则能帮你指出所在的位置。这在阅读程序码时的作用极大。当我们随着阅读的脚步,遇上了任何一个不认识,但自认为重要的类别,函式,资料结构定义或变数,我们就得找出它究竟位在这茫茫程序码海中的何处,才能将这个图块从未知变为已知。

grep按之所以好用,就是在于当我们发现某个未知的事物时,可以轻易地利用它找出这个未知的事物究竟位在何方。此外,虽说grep按是Unix系统的标准公用程序之一,但是像视窗这样子的平台,也有各种类型的grep按程序。对于在视窗环境工作

的程序人来说,可以自行选用觉得称手的工具。

gtags可建立索引,让搜寻更有效率

grep按虽然好用,但是仍然有一些不足之处。第一个缺点在于它并不会为所搜寻的原始码档案索引。每当你搜寻时,它都会逐一地找出所有的档案,并且读取其中的所有内容,过滤出满足指定条件的档案。当专案的原始码数量太大时,就会产生搜寻效率不高的问题。

第二个缺点是它只是一个单纯的文字档搜寻工具,本身并不会剖析原始码所对应的语言语法。当我们只想针对“函式”名称进行搜寻时,它有可能将注解中含有该名称的原始码,也一并找了出来。

针对grep按的缺点,打算阅读他人程序码的程序人,可以考虑使用像是gtags这样子的工具。 gtags是源代码的GNU全局标记系统,它不只搜寻文字层次,而且因为具备了各种语言的语法剖析器,所以在搜寻时,可以只针对和语言有关的元素,例如类别名称,函式名称等。

而且,它能针对原始码的内容进行索引,这意谓一旦建好索引之后,每次搜寻的动作,都毋需重新读取所有原始码的内容并逐一搜寻。只需要以现成的索引结构为基础,即可有效率的寻找关键段落。

gtags提供了基于命令列的程序,让你指定原始码所在的目录执行建立索引的动作。它同时也提供程序让你得如同操作grep按一般,针对索引结构进行搜寻及检索。它提供了许多有用的检索方式,例如找出专案中定义某个资料结构的档案及定义所在的行号,或者是找出专案中所有引用某资料结构的档案,以及引用处的行号。

这么一来,你就可以轻易地针对阅读程序码时的需求予以检索。相较于grep按所能提供的支援, gtags这样的工具,简直是强大许多。

再搭配htags制作的HTML文件,更是如虎添翼 还有一个绝对需要一提的工具。这个叫做htags的工具,能够帮你将已制作完成的索引结构,制作成为一组相互参考的的HTML文件。基本上,利用这样的的HTML文件阅读程序码,比起单纯地直接阅

读原始码,来得更有结构。原因是阅读程序码时,这样的的HTML文件,已经为你建立起在各个原始码档案片段间跳跃的链结。例如,图一是针对一个有名的开放原始码专案ffmpeg ,由gtags所产生出来的的HTML文件首页的一部分。

教你如何读懂源代码

htags工具首先为你找出所有定义的Main ( )函式的档案,并且列出所在的函式。找出的Main ( )函式,时常是阅读程序码的第一步,因为主要( )函式是程序的主要入口点,所有的动作皆由此启动,它是一切事物的源头。

凭借htags制作的的HTML文件,你可以轻易地点击超连结,直接进到的Main ( )函式所在的程序码片段,如图二。

教你如何读懂源代码

当我们检视上述原始码时,发现av_register_all ( )是个陌生,无法了解的事物,而想要搞懂它究竟是什么,可以再继续点击这个函式,如图三。这真是太方便了!阅读至此,你会猛然发现, gtags仿佛就是为了阅读程序码而专门量身打造的利器。

教你如何读懂源代码

更多相关推荐:
教师读书征文

读书思考成长——读李镇西《做最好的老师》有感内容摘要:我最喜欢的书是著名教育家李镇西老师的《做最好的老师》。它是李老师xx年教育教学思想和智慧的精华集粹,全方位地阐述了李老师的教育思想、教学艺术和具体的操作方法…

教师读书征文:陶湖中心学校:我被学生感动的故事

我被学生感动的故事长丰县陶湖中心学校:崔淼暑假阅读了杨卫平老师《被学生感动的56个故事》,触发了自己的心弦。让我想起了感动过我的学生们。故事一:1元钱的肉烧饼那是一个冬天的早晨,我起的偏晚来不及早饭,快到学校时…

教师读书随笔征文大赛

读苏霍姆林斯基有感在没拜读的苏霍姆林斯基全集一书前我自翊自己是一位优秀的中学教育工作者坦白地说从教多年来我一直对工作兢兢业业对学生视如己出所在班级多次被评为优秀班集体学生成绩始终居镇名列前茅读了苏霍姆林斯基一书...

教师读书征文用服务的态度做教师

莱西市教体局读教育名著做智慧教师读书活动我们为教师的阅读和成长打开了一扇大门在此期间我认真阅读了推荐书目用服务的态度做教师使我受益良多捷克大教育家夸美纽斯曾说教师是太阳底下最光辉的职业美国教育心理学家古特诺博士...

我爱读书 教师演讲稿

成长自已做人民满意的教师沈闸小学冯小娟尊敬的各位领导老师亲爱的同学们大家下午好今天能站到这儿我有两点感触这第一点感触是感谢领导能给我创造这次展示自我锻炼能力的机会这第二点感触是我的内心十分迫切地想倾诉当教师以来...

教师读书征文

黯淡了的一生读欧也妮葛朗台有感羊亭学校刘阳曾经不止一次的看到欧也妮葛朗台这个名字也不止一次的听人们谈论起吝啬鬼这个名词我总是浅尝辄止的认为这或许又是某个人物的传记或是外国某一时期人们街谈巷议的话题被作者改写后的...

教师读书征文

读书乐趣让我们共享大柳行中学姜彩霞我爱学生我爱读书我爱和学生一起读书早晨当晨曦的第一缕阳光洒向大地孩子们已坐在教室里打开书本伴着清晨清脆的鸟鸣校园里响起学生琅琅的读书声一天之计在于晨早晨记忆的花朵迫切绽放早晨思...

《教师的智慧》读书心得体会

教师的智慧读书心得体会罗维沂教师的智慧这本书已经不知道被我看了几遍了可是就死被书中的一个个教育案例和故事吸引书的作者焦晓骏中国教育学会外语教学专业委员会会员江苏省教育学会新教育研究会常务理事苏州工业园区第十中学...

关于公布教师读书征文评比结果的通知

浙江电子工程学校文件浙电工校20xx19号关于公布教师读书征文评比结果的通知为推动学校型校园建设根据上半年学校关于开展创建学习型校园系列活动的通知文件精神今年暑假学校开展了教师读书征文活动其中四十周岁以下教师必...

王教师读书伴我成长演讲稿

读书伴我成长演讲稿户家初中曹林雅各位评委各位老师大家好我今天演讲的题目是读书伴我成长如果人生的丰富可以用色彩来比喻书就是透射五光十色的水滴如果世界的广阔可以用无垠来形容书就是普照大地万物的阳光教育就是一本书它用...

教师读书伴我成长演讲稿

教师读书伴我成长演讲稿尊敬的各位领导老师大家好我今天演讲的题目是读书伴我成长如果人生的丰富可以用色彩来比喻书就是透射五光十色的水滴如果世界的广阔可以用无垠来形容书就是普照大地万物的阳光作为一名小学教师我喜欢与书...

第六届教师读书征文活动公告

教育信息报教师周刊第六届教师读书征文活动公告由教育信息报教师周刊编辑部举办浙江教育出版社协办的教师读书征文活动于每年的4月23日开始征稿今年是第六届1征文内容所选书目可与教育教学有关也可以是非教育类图书如文学艺...

教师读书征文(52篇)