导航:首页 > 源码编译 > 编译错误搞笑图

编译错误搞笑图

发布时间:2025-04-12 21:15:31

① NLP第九篇-句法分析

句法分析的基本任务是确定句子的 语法结构 或句子中 词汇之间的依存关系 。句法分析不是一个自然语言处理任务的最终目标,但它往往是实现最终目标的关键环节。

句法分析分为 句法结构分析 和 依存关系分析 两种。以获取整个句子的句法结构为目的的称为 完全句法分析 ,而以获得局部成分为目的的语法分析称为 局部分析 ,依存关系分析简称 依存分析 。

一般而言,句法分析的任务有三个:

判断输出的字符串是否属于某种语言

消除输入句子中词法和结构等方面的歧义

分析输入句子的内部结构,如成分构成、上下文关系等。

第二三个任务一般是句法分析的主要任务。

一般来说,构造一个句法分析器需要考虑两部分工作:一部分是语法的形式化表示和词条信息描述问题,形式化的语法规则构成了规则库,词条信息等由词典或同义词表等提供,规则库与词典或同义词表构成了句法分析的知识库;另一部分就是基于知识库的解析算法了。

语法形式化属于句法理论研究的范畴,目前在自然语言处理中广泛使用的是上下文无关文法(CFG)和基于约束的文法,后者又称合一文法。

简单的讲,句法结构分析方法可以分为基于规则的分析方法和基于统计的分析方法两大类。

基于规则的句法结构分析方法的基本思路是,由人工组织语法规则,建立语法知识库,通过条件约束和检查来实现句法结构歧义的消除。

根据句法分析树形成方向的区别,人们通常将这些方法划分为三种类型:自顶向下的分析方法,自底向上的分析方法和两者相结合的分析方法。自顶向下分析算法实现的是规则推导的过程,分析树从根结点开始不断生长,最后形成分析句子的叶结点。而自底向上分析算法的实现过程恰好想法,它是从句子符号串开始,执行不断规约的过程,最后形成根节点。

基于规则的语法结构分析可以利用手工编写的规则分析出输入句子所有可能的句法结构;对于特定领域和目的,利用有针对性的规则能够较好的处理句子中的部分歧义和一些超语法(extra-grammatical)现象。

但对于一个中等长度的输入句子来说,要利用大覆盖度的语法规则分析出所有可能的句子结构是非常困难的,而且就算分析出来了,也难以实现有效的消歧,并选择出最有可能的分析结果;手工编写的规则带有一定的主观性,还需要考虑到泛化,在面对复杂语境时正确率难以保证;手工编写规则本身就是一件大工作量的复杂劳动,而且编写的规则领域有密切的相关性,不利于句法分析系统向其他领域移植。

基于规则的句法分析算法能够成功的处理程序设计语言的编译,而对于自然语言的处理却始终难以摆脱困境,是因为程序设计语言中使用的知识严格限制的上下文无关文法的子类,但自然语言处理系统中所使用的形式化描述方法远远超过了上下文无关文法的表达能力;而且人们在使用程序设计语言的时候,一切表达方式都必须服从机器的要求,是一个人服从机器的过程,这个过程是从语言的无限集到有限集的映射过程,而在自然语言处理中则恰恰相反,自然语言处理实现的是机器追踪和服从人的语言,从语言的有限集到无限集推演的过程。

完全语法分析

基于PCFG的基本分析方法

基于概率上下文无关文法的短语结构分析方法,可以说是目前最成功的语法驱动的统计句法分析方法,可以认为是规则方法与统计方法的结合。

PCFG是CFG的扩展,举个例子:

PCFG

当然,同一个符号不同生成式的概率之和为1。NP是名词短语、VP是动词短语、PP是介词短语。

基于PCFG的句法分析模型,满足以下三个条件:

位置不变性:子树的概率不依赖于该子树所管辖的单词在句子中的位置

上下文无关性:子树的概率不依赖于子树控制范围以外的单词

祖先无关性:子树的概率不依赖于推导出子树的祖先节点

根据上述文法,‘He met Jenny with flowers’有两种可能的语法结构:

而且我们可以通过将树中的所有概率相乘,得到两棵子树的整体概率,从中选择概率更大的子树作为最佳结构。

与HMM类似,PCFG也有三个基本问题:

给定一个句子W=w1w2…wn和文法G,如何快速计算概率P(W|G)

给定一个句子W=w1w2…wn和文法G,如何选择该句子的最佳结构?即选择句法结构树t使其具有最大概率

给定PCFG G和句子W=w1w2…wn,如何调节G的概率参数,使句子的概率最大

首先是第一个问题,HMM中我们用的是前向算法和后向算法来计算观察序列O概率,相似的,这里我们用的是内向算法和外向算法来计算P(W|G) 。

首先我们定义内向变量αij(A),与前向变量相似但又有不同,αij(A)即非终结符A推导出W中字串wiw(i+1)…wj的概率。那P(W|G)自然就等于α1n(S)了,S是起始符号,计算的就是由起始符号S推导出整个句子W=w1w2…wn的概率。

所以只要有αij(A)的递归公式就能计算出P(W|G),递归公式如下:

根据定义,αii(A)自然就等同于符号A输出wi的概率;而αij(A)的计算思路是,这个子串wiw(i+1)…wj可以被切成两部分处理,前一部分wiw(i+1)…wk由非终结符号B生成,后一部分wkw(k+1)…wj由非终结符号C生成,而BC由A生成。这样将概率依次相乘,即可将一个大问题划分为两个小问题处理,两个小问题又可以进一步划分直到不能划分为止,然后递归回来得到结果。

这里给一张内向变量计算方法示意图:

这个问题也可以用外向算法来解决。

首先定义外向变量,βij(A)是,初始符号S在推导出语句W=w1w2…wn的过程中,产生符号串w1w2…w(i-1)Aw(j+1)…wn的概率(隐含着A会生成wiw(i+1)…wj)。也就是说βij(A)是S推导出除了以A节点为根节点的子树以外的其他部分的概率。

《统计自然语言处理(第二版)》这本书里讲错了,这里我给出我自己的理解,书里给的算法步骤如下:

很明显的错误,初始化都把结果初始化了,那这个算法还算什么,直接等于1就完了呗。

这是作者对外向变量定义理解模糊的问题,上面给了外向变量的定义,里面有一句话‘隐含着A会生成wiw(i+1)…wj’,那问题在于,A会生成wiw(i+1)…wj,这到底算是条件还是推论。

看这个算法的初始化的意思,说β1n(A),在A=S的时候,为1,不等于S为0,意思是什么?意思就是‘隐含着A会生成wiw(i+1)…wj’这句话是条件,β1n(S)已经隐含了S生成W=w1w2…wn了,所谓的w1w2…w(i-1)Aw(j+1)…wn也就不存在了,只剩下一个S->S了,所以概率自然为1。

但是在第三步这个地方,作者理解成什么意思了呢?作者又把‘隐含着A会生成wiw(i+1)…wj’这句话当成推论了,认为在β1n(S),里S会生成W=w1w2…wn是推论,那真是就正好了,要求的结果就是S生成W=w1w2…wn,这不就结束了吗,结果就导致了这个算法第一步初始化都把结果初始化了。

那我的理解是什么呢,通过这个公式计算出来的β1n(S),确实是正确的,意义实际上也是包含了‘隐含着A会生成wiw(i+1)…wj’这句话是推论,但是右侧式子里由于不断递归而产生的β1n(S),是把‘隐含着A会生成wiw(i+1)…wj’这句话当条件的,所以计算上没有问题。

我倾向于为第三步中的β1n(S)加一个星号,以表明意义的不同。

书中还给了个外向变量的计算方法示意图,我觉得也是莫名其妙:

他说βij(A)是这两种情况的概率和,这我们知道j比i大,那这图里这个k既比i小又比j大,这不是搞笑吗。只能说图上这俩C就不是一个C,k也不是一个k。

那我为什么会理解成一个呢,除了字母相同,他前面还这么讲‘必定运用了形如B->AC或者B->CA的规则’、‘运用B->AC或者B->CA两种规则的情况’,这明显就是给人以顺序交换的误解。

另外,还在内向变量的使用上前后不一,可以说这本书里对外向算法的讲解是非常失败的。而且对外向算法的计算仍然需要用到内向算法的递归,那真的直接用内向算法就好了,外向算法还要多定义变量。

然后是第二个问题,选择句子的最佳结构,也即给定一个句子W=w1w2…wn和文法G,

选定拥有最大概率的语法结构树。这一问题与HMM中类似,仍然采用动态规划的思想去解决。最后利用CYK算法去生成拥有最大概率的语法结构树。

第三个问题是给定PCFG G和句子W=w1w2…wn,如何调节G的概率参数,使句子的概率最大,与HMM相对的,PCFG这里采用的算法名叫内外向算法。与前后向算法相同,也属于一种EM算法,其基本思想是,首先给G的产生式随机地赋予一个概率值(满足归一化条件),得到文法G0,然后根据G0和训练数据,可以计算出每条规则使用次数的期望值,用期望值进行最大似然估计,得到语法G的新参数值,新的语法记作G1,然后循环执行该过程,G的参数概率将收敛于最大似然估计值。

PCFG只是一种特殊的上下文无关文法模型,根据PCFG的模型和句子,具体去对句子做语法分析,生成语法结构树,靠的是还是CYK算法。CYK算法是一个用来判定任意给定的字符串W是否属于一个上下文无关文法的算法。

基于PCFG的句法分析模型存在有许多问题,比如因为PCFG没有对词汇进行建模,所以存在对词汇信息不敏感的问题。因此人们提出了词汇化的短语结构分析器,有效的提升了基于PCFG的句法分析器的能力。

而且,我们上面也提到了PCFG的三个独立性假设,这也导致了规则之间缺乏结构依赖关系(就像HMM的三个假设也不完全合理一样),而在自然语言中,生成每个非终结符的概率往往是与其上下文结构有关系的,所以有人提出了一种细化非终结符的方法,为每个非终结符标注上其父节点的句法标记信息。

D. Klein提出了带有隐含标记的上下文无关文法(PCFG with latent annotations,PCFG-LA),使得非终结符的细化过程可以自动进行,并且在使用EM算法优化时,为避免到达局部最优,对其进行了改进,提出了一种层次化的‘分裂-合并’策略,以期获取一个准确并且紧凑的PCFG-LA模型。基于PCFG-LA的Berkeley Parser作为非词汇化句法分析器的代表,无论是性能表现还是运行速度,都是目前开源的短语结构分析器中最好的。其语法树如下图:

普通句法树与PCFG-LA句法树对照实例

这个x就是隐含标记,xi的取值范围一般是人为设定的,一般取1~16之间的整数。而且PCFG-LA也类似于HMM模型,原始非终结符对应HMM模型中的观察输出,而隐含标记对应HMM模型中的隐含状态。

浅层语法分析(局部语法分析)

由于完全语法分析要确定句子所包含的全部句法信息,并确定句子中各成分之间的关系,这是一项十分苦难的任务。到目前为止,句法分析器的各方面都难以达到令人满意的程度,为了降低问题的复杂度,同时获得一定的句法结构信息,浅层句法分析应运而生。

浅层语法分析只要求识别句子中的某些结构相对简单的独立成为,例如非递归的名词短语、动词短语等,这些被识别出来的结构通常称为语块(chunk)。

浅层句法分析将句法分析分解为两个主要子任务,一个是语块的识别和分析,另一个是语块之间的依附关系分析。其中,语块的识别和分析是主要任务。在某种程度上说,浅层句法分析使句法分析的任务得到了简化,同时也有利于句法分析系统在大规模真实文本处理系统中迅速得到应用。

基本名词短语(base NP)是语块中的一个重要类别,它指的是简单的、非嵌套的名词短语,不含有其他子项短语,并且base NP之间结构上是独立的。示例如下:

base NP识别就是从句子中识别出所有的base NP,根据这种理解,一个句子中的成分和简单的分为baseNP和非base NP两类,那么base NP识别就成了一个分类问题。

base NP的表示方法有两种,一种是括号分隔法,一种是IOB标注法。括号分隔法就是将base NP用方括号界定边界,内部的是base NP,外部的不属于base NP。IOB标注法中,字母B表示base NP的开端,I表示当前词语在base NP内,O表示词语位于base NP之外。

基于SVM的base NP识别方法

由于base NP识别是多值分类问题,而基础SVM算法解决的是二值分类问题,所以一般可以采用配对策略(pairwise method)和一比其余策略(one vs. other method)。

SVM一般要从上下文的词、词性、base NP标志中提取特征来完成判断。一般使用的词语窗口的长度为5(当前词及其前后各两个词)时识别的效果最好。

基于WINNOW的base NP识别方法

WINNOW是解决二分问题的错误驱动的机器学习方法,该方法能从大量不相关的特征中快速学习。

WINNOW的稀疏网络(SNoW)学习结构是一种多类分类器,专门用于处理特征识别领域的大规模学习任务。WINNOW算法具有处理高维度独立特征空间的能力,而在自然语言处理中的特征向量恰好具有这种特点,因此WINNOW算法也常用于词性标注、拼写错误检查和文本分类等等。

简单WINNOW的基本思想是,已知特征向量和参数向量和实数阈值θ,先将参数向量均初始化为1,将训练样本代入,求特征向量和参数向量的内积,将其与θ比较,如果大于θ,则判定为正例,小于θ则判定为反例,将结果与正确答案作比较,依据结果来改变权值。

如果将正例估计成了反例,那么对于原来值为1的x,把它的权值扩大。如果将反例估计成了正例,那么对于原来值为1的x,把它的权值缩小。然后重新估计重新更改权重,直到训练完成。

这其实让我想到了LR算法,因为LR算法也是特征向量与参数向量的内积,最后将其送到Sigmoid函数中去拿到判定结果,然后大于0.5的为正例,小于0.5的为反例,实际上只要反过来,Sigmod函数输出0.5时候的输入就是WINNOW算法里的那个实数阈值θ。但是区别在于WINNOW算法只判定大小,不判定概率,而LR利用Sigmoid函数给出了概率。LR利用这给出的概率,通过使训练集的生成概率最大化来调整参数,而WINNOW则是直接朴素的错误情况来增大或缩小相关参数。目测LR因为使用了梯度下降,它的收敛速度要快于WINNOW,而WINNOW的优势则在于可以处理大量特征。

基于CRF的base NP识别方法

基于CRF的base NP识别方法拥有与SVM方法几乎一样的效果,优于基于WINNOW的识别方法、基于MEMM的识别方法和感知机方法,而且基于CRF的base NP识别方法在运行速度上较其他方法具有明显优势。

依存语法理论

在自然语言处理中,我们有时不需要或者不仅仅需要整个句子的短语结构树,而且要知道句子中 词与词之间的依存关系 。用词与词之间的依存关系来描述语言结构的框架成为依存语法,又称从属关系语法。利用依存语法进行句法分析也是自然语言理解的重要手段之一。

有人认为,一切结构语法现象可以概括为关联、组合和转位这三大核心。句法关联建立起词与词之间的从属关系,这种从属关系由 支配词 和 从属词 联结而成, 谓语中的动词是句子的中心并支配别的成分,它本身不受其他任何成分支配 。

依存语法的本质是一种结构语法,它主要研究以谓词为中心而构句时由深层语义结构映现为表层语法结构的状况及条件,谓词与体词之间的同现关系,并据此划分谓词的词类。

常用的依存于法结构图示有三种:

计算机语言学家J. Robinson提出了依存语法的四条公理:

一个句子只有一个独立的成分

句子的其他成分都从属于某一成分

任何一个成分都不能依存于两个或两个以上的成分

如果成分A直接从属于成分B,而成分C在句子中位于A和B之间,那么,成分C或者属于成分A,或者从属于B,或者从属于A和B之间的某一成分。

这四条公理相当于对依存图和依存树的形式约束:单一父节点、连通、无环和可投射,由此来保证句子的依存分析结果是一棵有根的树结构。

这里提一下可投射,如果单词之间的依存弧画出来没有任何的交叉,就是可投射的(参考上面的两个有向图)。

为了便于理解,我国学者提出了依存结构树应满足的5个条件:

单纯结点条件:只有终结点,没有非终结点

单一父结点条件:除根节点没有父结点外,所有的结点都只有一个父结点

独根结点条件:一个依存树只能有一个根结点,它支配其他结点

非交条件:依存树的树枝不能彼此相交

互斥条件:从上到下的支配关系和从左到右的前于关系之间是相互排斥的,如果两个结点之间存在着支配关系,它们就不能存在于前于关系

这五个条件是有交集的,但它们完全从依存表达的空间结构出发,比四条公理更直观更实用。

Gaifman 1965年给出了依存语法的形式化表示,证明了依存语法与上下文无关文法没有什么不同..

类似于上下文无关文法的语言形式对被分析的语言的投射性进行了限制,很难直接处理包含非投射现象的自由语序的语言。20世纪90年代发展起来了约束语法和相应的基于约束满足的依存分析方法,可以处理此类非投射性语言问题。

基于约束满足的分析方法建立在约束依存语法之上,将依存句法分析看做可以用约束满足问题来描述的有限构造问题。

约束依存语法用一系列形式化、描述性的约束将不符合约束的依存分析去掉,直到留下一棵合法的依存树。

生成式依存分析方法、判别式依存分析方法和确定性依存分析方法是数据驱动的统计依存分析中具有代表性的三种方法。

生成性依存分析方法

生成式依存分析方法采用联合概率模型生成一系列依存语法树并赋予其概率分值,然后采用相关算法找到概率打分最高的分析结果作为最后输出。

生成式依存分析模型使用起来比较方便,它的参数训练时只在训练集中寻找相关成分的计数,计算出先验概率。但是,生成式方法采用联合概率模型,再进行概率乘积分解时做了近似性假设和估计,而且,由于采用全局搜索,算法的复杂度较高,因此效率较低,但此类算法在准确率上有一定优势。但是类似于CYK算法的推理方法使得此类模型不易处理非投射性问题。

判别式依存分析方法

判别式依存分析方法采用条件概率模型,避开了联合概率模型所要求的独立性假设(考虑判别模型CRF舍弃了生成模型HMM的独立性假设),训练过程即寻找使目标函数(训练样本生成概率)最大的参数θ(类似Logistic回归和CRF)。

判别式方法不仅在推理时进行穷尽搜索,而且在训练算法上也具有全局最优性,需要在训练实例上重复句法分析过程来迭代参数,训练过程也是推理过程,训练和分析的时间复杂度一致。

确定性依存方法

确定性依存分析方法以特定的方向逐次取一个待分析的词,为每次输入的词产生一个单一的分析结果,直至序列的最后一个词。

这类算法在每一步的分析中都要根据当前分析状态做出决策(如判断其是否与前一个词发生依存关系),因此,这种方法又称决策式分析方法。

通过一个确定的分析动作序列来得到一个唯一的句法表达,即依存图(有时可能会有回溯和修补),这是确定性句法分析方法的基本思想。

短语结构与依存结构之间的关系

短语结构树可以被一一对应地转换成依存关系树,反之则不然。因为一棵依存关系树可能会对应多棵短语结构树。

② c语言里:sizeof怎样用法

1、首先打开VS,新建一个 使用sizeof求出数组的大小 project。

程序员的搞笑表白情书

在电脑的世界里, 0与1是相当奇妙的东西。

没想到在爱情的世界里, 0与1也是同样的道理。

自从见到了你, 我的爱情旗标立刻变成了 1。

虽然只是短短的一聚, 心中的振荡器却再也无法平息。

每节上课, 我就变成一台多工的机器。

因为想你, 使得 CpU load 总无法降低。

每次考试, 我就变成一条不稳定的 Memory。

因为念你, 使得 parity Check 总无法 Error Free。

想对你说的话, 即使是 Giga 级的哈滴也不够记。

只好期盼, 我会拥有一台可读写的光盘机。

多么希望我们之间, 只有磁头和磁盘的距离。

也希望你是我生命中的 Cache, 不要再让我苦苦寻觅。

每次想打电话给你, 我总是在矛盾中犹疑。

我在你心中的 priority, 到底是怎么样的等级想对你表明心意, 却又害怕遭遇 Deadlock 的打击。

你我之间, 是否有 Algorithm 可来处理这种微妙的关系爱情是场如真似幻的梦境, 没有一定的轨迹。

思想中的逻辑与定理, 在爱情中也无用武之地。

原来, 这就是为什么世间的男女总在互猜心意。

告诉我, 我们之间的爱情到底是 0 或是 1

你对我说, 我们之间的一切没有离散数学中的交集。

我回答说, 你没用过线性代数中的对角矩阵, 又怎知数年后的推移但毕竟这一切已成定局, 终究造成了我们的别离。

在逐渐模糊的身影后, 我忍不住流下了泪。

经营一段爱情, 并不像安装 Linux 那么容易。

纵有 patch 程式, 又如何修补那段支离破碎的记忆。

指向地久天长的指标, 到最后总有一场 Null 的游戏。

可叹红尘痴情众生, 又有多少能够比翼

资料结构中的 AVL Tree, 据说在搜寻方面非常够力。

但即使能在 log n 的时间内找到你, 也不再具有任何意义。

只好将这段情, 深深的埋藏在心底。

静待多年之后, 再细细的回忆。。。

软件程序员的情书


茫茫内存里,你我不曾相见;

寥寥代码中,命运注定良缘.

当编译开始,我们齐手共建

--中国软件的春天!

虽然我们是不同的对象,都有隐私的一面,

但我相信你会找到我的接口,把我的最真给你看!

因为我是你的指针,在茫茫内存的堆栈中,

永远指向你那片天空,不孜不倦!

我愿做你的内联,供你无限次的调用,直到海枯石烂!

我愿做你的引用,和你同进退共生死,一起经受考验!

只是我不愿苦苦地调试你的心情,最终沦为你的友元!

而我更不愿始乱终弃,删不清借你用的空间,

最后一拍两散,搞得内存混乱...

如今我们已被MFC封装--事事变迁!

如今我们已向COM走去--可想当年!

程序员励志语录


作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。下面是关于程序员励志语录的内容,欢迎阅读!

1、永不放弃,永不放弃又有两个原则,第一个原则是永不放弃,第二个原则就是:当你想放弃时回头看第一个原则。

2、非优秀的程序员常常把空间和时间消耗殆尽,优秀的程序员则总是有足够的空间和时间去完成编程任务,而且配合近乎完美。

3、这句话不是很文雅,彻底鄙视那些害怕别人超越自己而拒绝回答别人问题的程序员。

4、你比他好一点,他不会承认你,反而会嫉妒你,只有你比他好很多,他才会承认你,然后还会很崇拜你,所以要做,就一定要比别人做得好很多。

5、每一个问题都是一把锁,你要相信世界上一定有一把钥匙能打开这把锁,你也能找到这把钥匙。

6、内存无论在怎么发展,它都会有一个容量的限制。因此你应该堤防着它。你的程序如果导致内存泄漏,是程序员很可耻的事情。

7、当你想在你的代码中找到一个错误时,这很难;当你认为你的代码是不会有错误时,这就更难了。

8、用代码行数来测评软件开发进度,就相对于用重量来计算飞机建造进度。

9、初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。

10、当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。

11、真正的程序员的程序不会在第一次就正确运行,但是他们愿意守着机器进行若干个30小时的调试改错。

12、一匹真正的好马,即使在鞭子的影子下,也能飞奔。

13、一个人静静坐在电脑面前写代码的感觉,那是什么感觉?那是武林高手闭关修炼的感觉。

14、人呐,眼光放得长远一些,看到的东西也会多一些,生活也就会过得更有意义一点。

15、真正的程序员不画流程图,原始人和文盲才会干这事儿。

16、看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。

17、优秀的判断力来自经验,但经验来自于错误的判断。

18、程序中蕴含着很多的道理,唯有大彻大悟者方能体会其中的奥妙。

19、如果建筑工人盖房子的方式跟程序员写程序一样,那第一只飞来的啄木鸟就将毁掉人类文明。

20、真正的程序员不看参考手册,新手和胆小鬼才会看。

21、程序是我的生命,但我相信爱她甚过爱我的生命。

22、别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的。

23、知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。

24、看得懂的书,请仔细看;看不懂的书,请硬着头皮看。

25、我们应该重视团队的精神,一个人作用再大,也不过是一碗水中比较大的一粒水珠而已。

26、程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。

27、真正的程序员不写文档也不需要文档,只有看不懂程序的笨蛋才用文档。

28、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。

29、真正的程序员不接受团队开发的理念,除非他自己是头头。

30、真正的程序员没有进度表,只要讨好领导的马屁精才有进度表,真正的程序员会让领导提心吊胆。

31、编程中我们会遇到多少挫折?表放弃,沙漠尽头必是绿洲。

32、不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。

33、把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中。

34、我们这个世界的一个问题是,蠢人信誓旦旦,智人满腹狐疑。

35、无私奉献不是天方夜谭,有时候,我们也可以做到。

36、如果你喜欢底层开发,千万不要勉强自己去搞VC,找到你最真实的想法,程序员最不能忍受的就是万精油。

37、调试完一个动态连接函数,固然值得兴奋,但真正的成功远还在无数个函数之后。

38、设计是一个发现问题、而不是发现解决方案的过程。

39、就算我们站在群山之颠,也别忘记雄鹰依旧能从我们头顶飞过。骄傲是比用Java进行底层开发更可笑的东西。

40、一本好书,就像高级武功秘籍一样,哪怕只是从里面领悟到个一招半势,功力提升起来都是惊人的。

41、不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。

42、真正的程序员几乎不写代码的注释,如果注释很难写,它理所当然也很难读。

43、任何傻瓜都能写出计算机可以理解的代码。好的程序员能写出人能读懂的代码。

44、做技术一定要一颗恒心,这样才不会半途而废。

45、如果调试一个程序让你很苦恼,千万不要放弃,成功永远在拐角之后,除非你走到拐角,否则你永远不知道你离他多远,所以,请记住,坚持不懈,直到成功。

46、你的一个程序有时正常有时不正常,而你已经完全遵循编程的规则,为什么?事实上我认为相信只要遵循别人所说就能得到想当然的结果的人其实是个傻瓜。

47、对于问题的理解,一定要透彻。这样你才能实质的解决问题。

48、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。

49、对程序员来说大部分的快乐是从解决问题,特别是独立解决问题中获得,而不是从这个CASE有多大,奖金有多少中获得。

50、有两种方法能写出没有错误的程序;但只有第三种好用。

51、其实你找不到错误不代表错误不存在,同样你看不到技术比你牛的人并不代表世界上没有技术比你牛的人。

52、你要么要软件质量,要么要指针算法;两者不可兼得。

53、一个人静静坐在电脑面前写代码的感觉,那是什么感觉?是武林高手闭关修炼的感觉。

54、理想如果不向现实做一点点屈服,那么理想也将归于尘土。

55、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。

56、如果你没有把握做到,最好就不要承诺,你什么也不承诺,至少别人不会看不起你。

57、‘理论’是你知道是这样,但它却不好用。‘实践’是它很好用,但你不知道是为什么。程序员将理论和实践结合到一起:既不好用,也不知道是为什么。

58、请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件。

59、程序员是值得尊敬的,程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件。

60、把时髦的技术挂在嘴边,还不如把过时的技术记在心里。

给程序员在程序员节时发送的祝福语文案


1.在那办公室里电脑面前有一群程序员,他们沉默又腼腆,他们聪明但没钱。他们一天到晚辛辛苦苦拼命写软件,如果累了就咬倒在沙发上睡!哦苦命的程序员,哦苦命的程序员,只要老板不满意他们就要重新搞一遍,但是期限只剩下最后的一天。

2.在你的数据库里添些快乐的元素,给你的符号栏里加些如意字符,为你的人生下载好运软件,在你的心间上传幸福无限,程序员节,愿你笑口常开,日子甜甜。

3.一个键盘一根网线你便能打下一片天下,几个字母一些数字你便能创造辉煌人生,一个指令一次回车你便能成就世界,程序员节到了,复制一份快乐给你,粘贴一堆幸福送你,保存一世如意给你,愿你开心永在。

4.一台电脑,一个键盘,尽情挥洒智慧的人生;几行数字,几个字母,认真编写生活的美好;一个灵感,一段程序,推动科技进步,促进社会发展。程序员节,用心编写程序,用智慧照亮人生!

5.“咳嗽、贫穷和爱”,无法编程,不能隐瞒,你想隐瞒,却欲盖弥彰;“身体、金钱和爱”,无法编程,不能挥霍,你想挥霍,却得不偿失;“生命、时间和爱”,无法编程,不能挽留,你想挽留,却渐行渐远;程序员节,愿你把“珍惜、呵护和爱”编入人生程序,幸福快乐就会永远把你伴随!

6.点击开快乐的界面,编写下幸福的程序,好运就在你运算的脑海里,成功就在你敲击的双手中。程序员节,我把祝福编辑,愿你把吉祥安康永远保存!

7.冷静的思维,点亮智慧的殿堂;抽象的理念,交汇灵感的火花;平凡的字符,串起别样的精彩;细腻的语言,盘活冰冷的.程序;非凡的才华,开启幸福的天地。程序员节,愿你开怀,收获精彩!

8.在你的程序里,快乐无需编译,幸福自会运行;美丽没有指令,人生也会计算;心情不必升级,自由自会扩展。程序员节,你的幸福数据在加载!

9.你很少用鼠标,你都是直接输入指令。你很少用五笔,你从来都是字母加数字。你敲键盘就像弹钢琴,行云流水一般,最后的回车将美好的创意上传。你不需要世人理解,你庞大的程序,在凡夫俗子看来只是鼠标一点。你享受寂寞,欣赏繁琐,专门纠错,只为了大家简单快乐的生活。你辛苦了,程序员节快乐!

10.请用真情研制一个爱心程序,让世界温暖长存;请用智慧设计一个和平程序,让人间充满安宁;请用勤劳开发一个医学程序,让人们无病缠身;程序员日,愿所有程序员们工作顺心,快乐开心!

11.一条网线连接四面八方,敲打键盘帅气的模样,“蜗居”生活胸怀天下,编一套快乐的程序,让世界欢畅,程序员日愿程序员朋友好好休息,身体健康,“不着病毒”,祝福你们明天再次创造辉煌。

12.你从不玩游戏,你只编写游戏程序。你很少用QQ,你可以在网络的任一角落留言,只要你愿意。你很枯燥,但从不无聊。你娱乐很少,但却常常微笑。你醉心于脑力的激荡,你是网络的源代码,你是人类创意的奇葩。程序员节,祝你健康并快乐着!

④ 提倡中文编程为什么会总遭到程序员的嘲讽

原因

1,用英文是历史原因;

2,编程环境生产使用的都是英文的,包括运行系统。

3,程序生态是英文的。

4,程序上语言只是符号,因此,不论你用什么自然语言来表达,只要编译器能转换,都是可以的。

7,看尽千帆过,跳出此山中。不用太纠结于表面形式,寻找更深本质,或许会更好。

⑤ 想知道文件后缀如何正确使用

后缀名我不太懂呀。。
给你个东西。。你自己去看看吧````````````
欢迎光临 C++ Builder 研究! 本站主要面向 Borland 开发者(C++Builder / Delphi)以及C/C++编程爱好者。发布资料请致信给

Friday 2006-10-20 来访IP: 222.49.65.28 页面访问量:5556247
返回首页 常规代码 编程文档 三方组件 其他信息 工具资料 电子书籍 网友作品 程序论坛 关于我们

常见专用格式文件
关键字:文件格式,后缀 其他信息 (327)
News(业界新闻) (4)
Web(Web编程) (22)
Network(网络知识) (139)
OS(操作系统) (41)
Software(软件工程) (11)
Joke(搞笑网文) (69)
Misc(其他/杂项) (32)
Hardware(硬件相关) (9)

特别推荐

本站首页 www.ccrun.com --> 其他信息 --> Misc(其他/杂项) 高级搜索

[新浪ViVi] [Poco网摘] [365KEY] [博采] [亿友响享] [你摘] [YouNote] [天极网摘] [和讯网摘]

文档标题:常见专用格式文件
原作者:佚名
更新日期:2005-11-06
浏览次数:5296
关键字:文件格式,后缀
A部分
AAM Authorware shocked文件
AAS Authorware shocked包
ABF Adobe二进制屏幕字体
ABK CorelDRAW自动备份文件
ABS 该类文件有时用于指示一个摘要(就像在一篇有关科学方面的文章的一个摘要或概要,取自abstract)
ACE Ace压缩档案格式
ACL CorelDRAW 6键盘快捷键文件
ACM 视筐t统目录文件
ACP Microsoft office助手预酉湮募?
BPL Borlard Delph 4打包库
BQY BrioQuery文件
BRX 用于查看多媒体对像目录的文件
BSC MS Developer Studio浏蛹�募?
CCB Visual Basic动态按钮配置文件
CCF 多媒体查看器配置文件,用于OS/2
CCH Corel图表文件
CCM Lotus cc:邮箱(例如“INBOX.CCM”)
CCO CyberChat数据文件
CCT Macromedia Director Shockwave投影
CDA CD音频轨道
CDF Microsoft频道定义格式文件
CDI Philip的高密盘交互格式
CDM Visual dBASE自定义数据模块文件
CDR CorelDRAW绘图文件;原始音频CD数据文件
CDT CorelDRAW模板
CDX CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件
CEL CIMFast事件语言文件
CER 证书文件(MIME x-x509-ca-cert)
CFB Compton的多媒文件
CFG 配置文件
CFM CotdFusion模板文件;Visual dBASE 视等峇嵷w制表单
CGI 公共网关接口脚本文件
CGM 计算机图形元文件
CH OS/2配置文件
CHK 由视绚牮L碎片整理器或磁盘扫瞄保存的文件碎片
CHM 编译过的HTML文件
CHR 字符集(字体文件)
CHP Ventura Publisher章节文件
CHT ChartViem文件;Harvard Graphics矢量文件
CIF Adaptec CD 创建器 CD映像文件
CIL Clip Gallery下载包
CIM SimCity 2000文件
CIN OS/2改变控制文件用于跟踪INI文件中的变化
CK1 iD/Apogee Commander Keen 1数据文件
CK2 iD/Apogee Commander Keen 2数据文件
CK3 iD/Apogee Commander Keen 3数据文件
CK4 iD /Apogee Commander Keen 4数据文件
CK5 iD /Apogee Commander Keen 5数据文件
CK6 iD /Apogee Commander Keen 6数据文件
CLASS Java类文件
CLL Crick Software Clicker文件
CLP 视?剪贴板文件
CLS Visual Basic类文件
CMD 视?NT,OS/2的命令文件;DOS CD/M命令文件;dBASEⅡ程序文件
CMF Corel元文件
CMG Chessmaster保存的文件,用于帮助索引或其他目的内容文件
COB TrueSpace 2对像文件
COD Microsoft C编译器产生的可显示机器码/汇编代码文件,其云�雪瘠代码作为注释
COM 命令文件(程序)
CPD Corel Print Office文件(图形)
CPD,CPE 传真覆盖文档
CPI Microsoft MS-DOS代码页信息文件
CPL 控制面板扩展名,Corel颜色板
CPO Corel打印存储文件
CPP C++代码文件
CPR Corel提供说明书文件
CPT Corel 照片-绘画图像
CPX Corel Presentation Exchange压缩图形文件
CRD 视?Cardfile文件
CRP Corel 提供的咝袝r介绍文件;Visual dBASE自定义报表文件
CRT 认证文件
CSC Corel脚本文件
CSP PC Emcee On_Screen图像
CSS 瀑布式表格文件
CST Macromedia Director Cast文件
CSV 逗号分隔的值文件
CT Scitex CT位图文件;Paint Shop Pro Grapic编辑器文件
CTL 通常用于表示一个包含控件信息的文件;FaxWork用它来保持有关每个传真收到或发出的信息
CUE Microsoft提示牌数据文件
CUR 视等�苳憟?CUT Dr Halo位图文件
CV Corel版本的档案文件;Microsoft CodeView信息屏幕文件
CWK ClarisWorks数据文件.
CWS ClarisWorks模块
CXT Macromedia Director受保护的(不可编辑的)投影文件
CXX C++源代码文件

D部分
DAT 数据文件;WrodPerfect合并数据文件;用于一些MPEG格式的文件
DB Borland的Paradox 7表
DBC Microsoft Visual FoxPro数据库容器文件
DBF dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件
DBX 邮件资料夹
DCM DCM模块格式文件
DCR 冲击波文件
DCS 桌面颜色分隔文件
DCT Microsoft Visual FoxPro数据库容器
DCU Delphi编译单元文件
DCX Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏
DC5 DataCAD绘图文件
DDF Btrieve呼 love this forum !!!trieve数据定义文件,它包含用于描述Btrieve呼 love this forum !!!trieve文件的元数据
DDIF Digital Equipment或 Compaq格式,用于保存他们图像与字处理文档
DEF SmartWareⅡ数据文件;C++模块定义文件
DEFI Oracle 7 卸载脚本文件
DEM 用于表示数字高度模型的USGS基准的文件
DER 认证文件
DEWF Macintosh Sound Cap/Sound Edit录音设备格式
DGN Macintosh 95 CAD绘图文件
DIB 设备无关位图
DIC 目录
DIF 可进行数据互换的电子表格
DIG DigiLink格式;Sound DesignerⅠ音频文件
DIR MacromediaDirector文件
DIZ 描述文件
DLG C++对话框脚本文件
DLL 动态链接库
DLS 可下载声音文件
DMD Visual dBASE数据模块文件
DMF X-Trakker音乐模块(MOD)文件
DOC FrameMaker或FrameBuilder文档;Word Star文档、Word Perfect文档、Microsoft Word文档;DisplayWrite文档
DOT Microsoft Word文档模板
DPL Borland Delph3压缩库
DPR Borland Delphi工程头文件
DRAW Acorn的基于对象的矢量图像文件
DRV 驱动程序
DRW Micrografx Designer/Draw;Pro/E绘画文件 cordrew文件
DSF Micrografx Designer VFX文件
DSG DOOM保存的文件
DSM Dynamic Studio音乐模块(MOD)文件
DSP Microsoft Developer Studio工程文件
DSQ Corel QUERY(查询)文件
DST 刺绣机图形文件
DSW Microsoft Developer Studio工作区文件
DTA Word Bank(世界银行)的STARS数据文件
DTD SGML文档类型定义(DTD)文件
DTED 地面高度数字数据(图形的数据格式)文件
DTF Symantec Q&A相关的数据库数据文件
DTM DigiTrakker模块文件
DUN Microsoft拔号网络导出文件
DV 数字视频文件(MIME)
DWD DiamondWare数字化文件
DWG AutoCAD工程图文件;AutoCAD或Generic CADD老版本的绘图格式
DXF 可进行互交换的绘图文件格式,二进制的DWG格式的文本表示;数据交换文件
DXR Macromedia Director受保护(不可编辑)电影文件
D64 Commodore的64位模拟磁盘图像文件

E部分
EDA Ensoniq ASR磁盘映像
EDD 元素定义文档(FrameMaker+SGML文档)
EDE Ensoniq EPS磁盘映像
EDK Ensoniq KT磁盘映像
EDQ Ensoniq SQ1/SQ2/Ks32磁盘映像
EDS Ensoniq SQ80磁盘映像
EDV Ensoniq VFX-SD磁盘映像
EFA Ensoniq ASR文件
EFE Ensoniq EPS文件
EFK Ensoniq KT文件
EFQ Ensoniq SQ1/SQ2/Ks32文件
EFS Ensoniq SQ80文件
EFV Ensoniq VFX-SD文件
EMD ABT扩展模块
EMF 视绦W强元文件
EML Microsoft Outlook Express邮件消息(MIME RTC822)文件
ENC 重演文件
ENFF 中性文件格式扩展名
EPHTML Perl解释增强HTML文件
EPS 压缩的PostScript图像
EPSF 压缩的PostScript文件
ERI ERWin文件
ERR 当RobooHELP帮助编译器企图编译一个帮助系统源文件时用来存储错误消息的文件
EPX ERWin文件
ESPS ESPS音频文件
EUI Ensoniq ESP家族的压缩磁盘映像
EVY 特使文档
EWL Microsoft Encarta文档
EXC Microsoft Word禁止字字典
EXE 可执行文件(程序)

F部分
F FORTRAN文件
F2R Farandoyle线性模块格式
F3R Farandoyle分块线性模块格式
F77 FORTRAN文件
F90 FORTRAN文件
FAR Fradole Composer音乐模块(MOD)文件
FAV Microsoft Outlook导航条
FAX 传真类型图像
FBK Navison 金融备份
FCD 虚拟CD-ROM
FDB Navison 金融数据库
FDF Adobe Acrobat表单文档文件
FEM CADRE有限元素网络文件
FFA,FFL,FFO,FFK Microsoft快速查找文件
FFF GUS PnP银行文件格式
FFT 最终格式文本(IBM的DCA一部分)
FH3 Als Freehand 3绘图文件
FIF Fractal图像文件
FIG REND386/AVRIL使用的文件格式
FITS CCD照相机图像;灵活图像传输系统
FLA Macromedia Flash电影
FLC Autodesk FLIC动画文件
FLF Corel Paradox产生的格式:Navison Financials许可文件;OS/2驱动程序文件
PLI Autodesk FLIC动画
FLT StarTrekker音乐模块(MOD)文件;MultiGen Inc的Open Flight使用的文件格式;Corel过滤器文件
FM Adobe FrameMaker文档
FMB Oracle4.0版或以后版本表单的二进制源代码文件
FML 文件镜象列表(GetRight)
FMT Oracle 4.0版或以后版本表单的文本格式;Microsoft Schele+ 打印文件
FMX Oracle 4.0版或以后版本可执行表单
FND Microsoft Explorer保存的搜索文件(Find applet)
FNG 字体组文件(字体导航器,Font Navigator)
FNK Funk Tracker模块格式
FOG Fontographer模块字体
FON 系统字体
FOR FORTRAN文件
FOT 字体相关文件
FP FileMaker Pro文件
FP1 Flying Pigs for 视绦?琱憟?FP3 FileMaker Pro文件
FPT FileMaker Pro文件;Microsoft Fox Pro备注字体文件
FPX FlashPix位图
FRM 表单;Frame Maker或Frame Builder文档;Oracle可执行表(3.0版或早期版本);Visual Basic表单;WordPerfect Merge表单;DataCAD标志报表文件
FRT Microsoft FoxPro报表文件
FRX Visual Basic表单文本;Microsoft FoxPro报表文件
FSF fPrint Audit Tool文件格式
FSL Borland的Paradox 7表单;Corel Paradox保存的表单
FSM Parandoyle示例格式
FT Lotus Notes全文本索引
FTG 全文本搜索组文件,由视耋饥U系统查找时产生——可以删除,并在需要时重建起来
FTS 全文本搜索引文件,由视耋饥U系统查找时产生
FW2 Framework Ⅱ文件
FW3 Framework Ⅲ文件
FW4 Framework Ⅳ文件
FXP 经Microsoft FoxPro编译的源文件
FZB Casio FZ-1银行转储
FZF Casio FZ-1完全转储
FZV Casio FZ-1声音转储

G部分
G721 Raw CCITT G.721 $bit ADPCM格式数据
G723 Raw CCITT G.723 3或5bit ADPCM格式数据
GAL Corel多媒体管理器相集
GCD Generic CADD绘画文件(后续版本)
GCP Ground Control Point(地面控制点)文件,用于远景数据形成图像过程,经常用于生成图工程—CHIPS(copenhagen image processing system)使用这些文件
GDB InterBase数据库文件
GDM 铃声、口哨声和声音板模块格式
GED GEDCOM 系谱数据文件,用于记录和交换系谱数据的流行格式;图形环境文档绘画
GEM GEM元文件
GEN Ventura产生的文本文件
GetRight GetRight未完成的下载文件
GFC Patton&Patton FlowCharting 4 flowchart文件
GFI,GFX Genigraphics图形链接表示文件
GHO Norton 克隆磁盘映像
GID 视?95全局索引文件(包括帮助状态)
GIF CompuServe位图文件 动画图档
GIM,GIX Genigraphics图形链接介绍文件
GKH Ensoniq EPS家簇磁盘映像文件
GKS Gravis Grip Key文档
GL 动画格式
GNA Genigraphics图形链接介绍文件
GNT 生成代码,Micro Focus属性格式里的可执行代码
GNX Genigraphics图形链接介绍文件
GRA Microsoft Graph文件
GRD 用于远程视景数据产生地图过程的格式文件,通常应用于形成地图工程—CHIPS(copenhagen image processing system)使用这些文件
GRF Grapher(Golden Software公司)图形文件
GRP 程序管理组
GSM Raw GSM 6.10音频流;Raw“byte aligned(比特对齐的)” GSM 6.10音频流;US Robotics语音调制解调器
GTK Graoumftracker(老)音乐模块(MOD)文件
GT2 Graoumftracker(新)音乐模块(MOD)文件
GWX,GWZ Cenigraphis图形链接介绍文件
GZ UNIX gzip压缩文件

H部分
H C程序头文件
HCM IBM HCM配置文件
HCOM 声音工具HCOM格式
HCR IBM HCD/HCM产品配置文件
HDF 高级计算机应用程序本地中心(NCSA) geospatial Hierarchial数据格式文件
HED HighEdit文档
HEL Microsoft Hellbender格式保存的呒�O视器配置文件
MAK Visual Basil或Microsoft Visual C++工程文件
MAM Microsoft Access宏
MAN UNIX手册页输出
MAP 映射文件;Duke Nukem 3D WAD呦涓袷?
MBX Microsoft Outlook保存email格式;Eudora邮箱
MCC Dailerl0呼叫卡
MCP Metrowerks CodeWarrior工程文件
MCR DataCAD键盘宏文件
MCW Microsoft Word的Macintosh文档
MDA Microsoft Access内抽入器;Microsoft Access 2.0版及其后续版本的工作组事件
MDB Microsoft Access数据库
MDE Microsoft Access MDE文件
MDL 数字跟踪器音乐模块(MOD)文件;Quake模 块文件
MDN Microsoft Access空数据库模板
MDW Microsoft Access工作组文件
MDZ Microsoft Access向导模板文件
MED 音乐编辑器,OctaMED音乐模块(MOD)文件
MER 电子表格/数据库数据交换格式;FileMaker、Excel及其他软件能识别
MET 表示管理器元文件
MFG Pro/ENGINEER制造文件
MGF 在材料与几何学里的文件格式
MHTM,MHTML MHTML文档(MIME)
MI 杂项
MIC Microsoft Image Composer文件
MID MIDI音乐
MIF Adobe FramMaker交换格式
MIFF 与机器无关格式文件
MIM,MIME,MME Internet邮件扩展格式的多用途文件,经常作为发送e-mail时在AOL里附件而创建的文件;在一个多区MIM文件里的文件能用WinZip或其他类似程序打开
MLI 3D Studio的材料库格式文件
MMF Meal Master格式;一个处方类格式;Microsoft邮件文件
MMG 超过20/20表或集会数据文件
MMM Microsoft多媒体电影
MMP Mindmapor Mind Manager文件
MN2 Descent2任务文件
MND,MNI Mandelbort for 视?MNG 多映像网络图形
MNT,MNX Microsoft FoxPro菜单文件
MNU Visual dBASE菜单文件;Intertel Systems Interact菜单文件
MOD Fast Tracker、Star Trekker、Noise Tracker(等等)音乐模块文件;Microsoft多计划电子表格;Amiga/PC磁道文件
MOV QuickTime for 视给q影
MP2 第二层MPEG音频文件
MP3 第三层MPEG音频文件
MPA MPEG相关文件,MIME“mpeg类型”
MPE,MPEG,MPG MPEG动画文件
MPP Microsoft工程文件;CAD绘图文件格式
MPR Microsoft FoxPro菜单(已编译)
MRI MRI扫瞄文件
MSA 魔术阴影档案
MSDL Manchester的场景描述语言
MSG Microsoft邮件消息
MSI 视?安装器包
MSN Microsoft网络文档;Descent Mission文件
MSP Microsoft Paint(画图)位图文件;视?Installer路径文件
MST 视?安装器传输文件
MTM Multi 跟踪器音乐模块(MOD)文件
MUL Ultima在线
MUS 音乐
MUS10 Mus10声音
MVB Microsoft多媒体查看器文件
MWP Lotus WordPro 97 Smart Master文件

N部分
NAN Nanoscope文件(Raw Grayscale)
NAP NAP元文件
NCB Microsoft Developer Studio文件
NCD Norton改变目录
NCF NetWare命令文件;Lotus Notes内部剪切板
NDO 3D 低多边形建模器,Nendo
netCDF 网络公用数据表单
NFF 中性文件格式
NFT NetObject Fusion模板文件
NIL Norton光标库文件(EasyIcons-兼容)
NIST NIST Sphere声音
NLB Oracle 7数据
NLM NetWare可装载模块
NLS 用于本地化的国家语言支持文件(例如,Uniscape)
NLU Norton Live Update e-mail 触发器文件
NOD NetObject Fusion文件
NSF Lotus Notes数据库
NSO NetObject Fusion文档文件
NST Noise Tracker音乐模块(MOD)文件
NS2 Lotus Notes数据库(第二版)
NTF Lotus Notes数据库模板
NTX CA-Clipper索引文件
NWC Noteworthy Composer歌曲文件
NWS Microsoft Outlook Express新闻消息(MIME RFC822)

O部分
O01 台风声音文件
OBD Microsoft Office活页夹
OBJ 对像文件
OBZ Microsoft Office活页夹向导
OCX Microsoft对像链接与嵌入定制控件
ODS Microsoft Outlook Express邮箱文件
OFF 3D 网状物对像文件格式
OFN Microsoft Office FileNew文件
OFT Microsoft Outlook模板
OKT Oktalyzer音乐模块(MOD)文件
OLB OLE对像库
OLE OLE对像
OOGL 面向对像图形库
OPL 组织者编程语言源文件——Psion/Symbian
OPO OPL输出可执行文件
OPT Microsoft Developer Studio文件
OPX OPL扩展DLL(动态链接库)
ORA Oracle 7 配置文件
ORC Oracle 7脚本文件
ORG Lotus Organizer 文件
OR2 Lotus Organizer 2 文件
OR3 Lotus Organizer 97 文件
OSS Microsoft Office查找文件
OST Microsoft Exchange / Outlook 离线文件
OTL Super NoteTab 模板文件
OUT C语言输出文件

P部分
P3 Primavera Project Planner(工程设计器)文件
P10 Tektronix Plot 10 绘图文件
P65 PageMaker 6.5文件
P7C Digital ID 文件(MIME)
PAB Microsoft个人地址簿
PAC SB Studio Ⅱ 包
PAK Quake WAD文件
PAL 压缩文件
PART Go!Zilla部分下载文件
PAS Pascal源代码
PAT DataCAD Hatch模式文件;CorelDRAW模式;高级Gravis Ultrasound / Forte 技术;碎片文件
PBD PowerBuilder动态库,作为本地DLL的一个替代物
PBF Turtle Beach的Pinnacle 银行文件
PBK Microsoft PhoneBook(电话簿)
PBL 用于在PowerBuilder开发环境中的PowerBuilder动态库
PBM 可导出位图
PBR PowerBuilder资源
PCD Kodak Photo-CD映像;P-Code编译器测试脚本,由Microsoft测试与Microsoft Visual测试
PCE Maps Eudora邮箱名字的DOS文件名
PCL Hewlett-Packard 打印机控制语言文件(打印机备用位图)
PCM 声音文件格式;OKI MSM6376 合成芯片 PCM格式
PCP Symantec Live Update Pro文件
PCS PICS动画文件
PCT Macintosh PICT绘画文件
PCX Zsoft PC画笔位图
PDB 3Com PalmPilot数据库文件
PDD 可以用Paint Shop Pro或其他图像处理软件打开的图形图像
PDF Adobe Acrobat 可导出文档格式文件(可用Web浏蛹�Y源文件
RA RealAudio声音文件
RAM RealAudio元文件
RAR RAR压缩档案(Eugene Roshall格式)
RAS Sun光栅图像位图
RAW RAW文件格式(位图);Raw标识的PCM数据
RBH 由RoboHELP维持的RBH文件,它加入到一个帮助工程文件的信息中
RDF 资源描述框架文件(涉儿 love this forum !!!ML和元数据)
RDL Descent注册水平文件
REC 录音机宏;RapidComm声音文件
REG 注册表文件
REP Visual dBASE报表文件
RES Microsoft Visual C++资源文件
RFT 可修订的表单文本(IBM的DCA一部分或文档内容框架结构一部分)
RGB,SGI Silicon图形RGB文件
RLE Run-Length编码的位图
RL2 Descent2注册水平文件
RM RealAudio视频文件
RMD Microsoft RegMaid文档
RMF Rich Map格式(3D呦鋬热荼?
TOL Kodak照片增强器
TOS Atari 16/32和32/32计算机操作系统文件
TPL CakeWalk声音模板文件;DataCAD模板文件
TPP Teleport Pro工程
TRK Kermit脚本文件
TRM 终端文件
TRN MKS源完整性工程用法日志文件
TTF TrueType字体文件
TTK Corel Catalyst Translaton Tool Kit
TWF TabWorks文件
TWW Tagwrite模板
TX8 MS-DOS文本
TXB Descent/D2编码概要文件
TXT ASCⅡ文本格式的声音数据
TXW Yamaha TX16W波形文件
TZ 老的压缩格式文件
T2T Sonate CAD建模软件文件

U部分
UB 原始未符号化的字节(8位)数据
UDF 视?NT/2000唯一性数据库文件
UDW 原始未符号化的双字(32位)数据
ULAW 美国电话格式(CCITT G.711)声音
ULT Ultra Tracker音乐模块(MOD)文件
UNI MikMod UniMod格式化文件
URL Internet快捷方式文件
USE MKS源完整性文件
UU,UUE UU编码文件
UW 原始未符号化字(16位)数据
UWF UltraTracker波形文件

V部分
V8 Covox 8位声音文件
VAP 加注讲演文件
VBA VBase文件
// 本文转自 C++Builder 研究 - http://www.ccrun.com/article.asp?i=959&d=uq7b2d
VBP Microsoft Visual Basic工程文件
VBW Microsoft Visual Basic工作区文件
VBX Microsoft Visual Basic用户定制控件
VCE Natural MicroSystems(NMS)未格式化声音文件(由Cool Edit使用)
VCF 虚拟卡文件(Netscape);Veri配置文件;为与Sense8的WordToolkit一起使用而定义对像
VCT,VCX Microsoft FoxPro类库
VDA Targa位图
VI National Instruments LABView产品的虚拟设备文件
VIFF Khoros Visualisation格式
VIR Norton Anti-Virus或其他杀毒产品用于标识被病毒感染的文件
VIV VivoActive Player流视频文件
VIZ Division的dVS/dVISE文件
VLB CorelVentura库
VMF FaxWorks声竣憟?VOC Creative Labs的Sound Blaster声音文件
VOX 用ADPCM编码的对话声音文件;Natural MicroSystems(NMS)格式化声音文件,Talking Technology声音文件
VP Ventura Publisher出版物
VQE,VQL Yamaha Sound-VQ定位器文件
VQF Yamaha Sound-VQ文件(可能出现标准)
VRF Oracle 7配置文件
VRML 虚拟现实建模语言文件
VSD Visio绘画文件(流程图或图解)
VSL 下载列表文件(GetRight)
VSN 视?9x/NT Virusafe版文件,用于保持有关目录中所有信息,当一个文件被访问,其中信息与VSN信息进行比较,以确保它们保持一致
VSS Visio模板文件
VST Targa位图
VSW Visio工作区文件
VXD Microsoft 视紫筼应]备驱动程序

W部分
W3L W3Launch文件
WAB Microsoft Outlook文件
WAD 包含有视频、玩家水平和其他信息的DOOM呋蚱渌�┫低秤糜诎镏�饕�蚱渌�康哪谌菸募?
COB TrueSpace 2对像文件
COD Microsoft C编译器产生的可显示机器码/汇编代码文件,其云�雪瘠代码作为注释
COM 命令文件(程序)
CPD Corel Print Office文件(图形)
CPD,CPE 传真覆盖文文件
CPI Microsoft MS-DOS代码页信息文件
CPL 控制面板扩展名,Corel颜色板
CPO Corel打印存储文件
CPP C++代码文件
CPR Corel提供说明书文件
CPT Corel 照片-绘画图像
CPX Corel Presentation Exchange压缩图形文件
CRD 视?Cardfile文件
CRP Corel 提供的运行时介绍文件;Visual dBASE自定义报表文件
CRT 认证文件
CSC Corel脚本文件
CSP PC Emcee On_Screen图像
CSS 瀑布式表格文件
CST Macromedia Director Cast文件
CSV 逗号分隔的值文件
CT Scitex CT位图文件;Paint Shop Pro Grapic编辑器文件
CTL 通常用于表示一个包含控件信息的文件;FaxWork用它来保持有关每个传真收到或发出的信息
CUE Microsoft提示牌数据文件
CUR 视等�?#123;憟?CUT Dr Halo位图文件
CV Corel版本的档案文件;Microsoft CodeView信息屏幕文件
CWK ClarisWorks数据文件.
CWS ClarisWorks模块
CXT Macromedia Director受保护的(不可编辑的)投影文件
CXX C++源代码文件

D部分
DAT 数据文件;WrodPerfect合并数据文件;用于一些MPEG格式的文件
DB Borland的Paradox 7表
DBC Microsoft Visual FoxPro数据库容器文件
DBF dBASE文件,一种由Ashton-Tate创建的格式,可以被ACT!、Lipper、FoxPro、Arago、Wordtech、Xbase和类似数据库或与数据库有关产品识别;可用数据文件(能被Excel 97打开);Oracle 8.1.x表格空间文件
DBX 邮件资料夹
DCM DCM模块格式文件
DCR 冲击波文件
DCS 桌面颜色分隔文件
DCT Microsoft Visual FoxPro数据库容器
DCU Delphi编译单元文件
DCX Microsoft Visual FoxPro数据库容器;基于PCX的传真图像;宏
DC5 DataCAD绘图文件
DDF Btrieve呼 love this forum

⑥ 编程5分钟,命名2小时!大神程序员都在用这套命名方法

在 软件中随处可见命名:要给变量、函数、参数、类和封包命名,还要给源代码及源代码所在目录命名,甚至还有jar文件、war文件和ear文件命名。

但是,看似简单的命名,也是让不少程序员头疼的问题。 有一些小伙伴,在进行变量命名的时候,对于自己熟悉的英文,可能还会用英文命名一下,如果需要命名的部分不会用英文表达,或许就直接用拼音了。

有的童鞋一下想不起来怎么命名,直接用拼音直接用aa,bb等这样没有任何代表意义的字母来命名,可读性非常差,可能自己今天写的,一个星期后回来再看,也忘记其具体代表的含义了。

因此,许多人在写代码之前,总会在想啊想啊,用什么命名法好呢?对于经常在C++、Java、Python等主流语言上切换的强迫症来说,换个语言换种命名风格简直不要太混乱。


既然有这么多命名要做,不妨做好它。本期内容中,异步君为大家带来了起个好名字应遵从的几条简单规则,一起来看看吧

— 01 —

名副其实

名副其实说起来简单。我们想要强调,这事很严肃。选个好名字要花时间,但省下来的时间比花掉的多。注意命名,而且一旦发现有更好的名称,就换掉旧的。这么做,读你代码的人(包括你自己)都会更开心。


变量、函数或类的名称应该已经答复了所有的大问题。它该告诉你,它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实。


名称d什么也没说明。它没有引起读者对时间消逝的感觉,更别说以日计了。我们应该选择指明了计量对象和计量单位的名称:


选择体现本意的名称能让人更容易理解和修改代码。下列代码的目的何在?


为什么难以说明上述代码要做什么事?里面并没有复杂的表达式,空格和缩进中规中矩,只用到三个变量和两个常量,甚至没有涉及任何其他类或多态方法,只是(或者看起来是)一个数组的列表而已。


问题不在于代码的简洁度,而在于代码的模糊度:即上下文在代码中未被明确体现的程度。上述代码要求我们了解类似以下问题的答案:

(1)theList中是什么类型的东西?

(2)theList零下标条目的意义是什么?

(3)值4的意义是什么?

(4)我怎么使用返回的列表?


问题的答案没体现在代码段中,可代码段就是它们该在的地方。比方说,我们在开发一种扫雷 游戏 ,我们发现,盘面是名为theList的单元格列表,那就将其名称改为gameBoard。


盘面上每个单元格都用一个简单数组表示。我们还发现,零下标条目是一种状态值,而该种状态值为4表示“已标记”。只要改为有意义的名称,代码就会得敏液到相当程度的改进:


注意,代码的简洁性并未被触及。运算符和常量的数量全然保持不变,嵌套数量也全然保持不变,但代码变得明确多了。


还可以更进一步,不用int数组表示单元格,而是另写一个类。该类包括一个名副其实的函数(称为isFlagged),从而掩盖住那个魔术数[1]。于是得到函数的新版本:


只要简单改一下名称,就能轻易知道发生了什么。这就是选液含用好名称的力量。


— 02 —

避免误导


程序员必须避免留下掩藏代码本意的错误线索。应当避免使用与本意相悖的词,例如,hp、aix和sco都不该用作变量名,因为它们都是Unix平台或类Unix平台的专有名称。即便你是在编写三角计算程闹拿笑序,hp看起来是一个不错的缩写[2],但那也可能会提供错误信息。


别用accountList来指称一组账号,除非它真的是List类型。List一词对程序员有特殊意义。如果包纳账号的容器并非真是一个List,就会引起错误的判断。


所以,用accountGroup或bunchOfAccounts,甚至直接用accounts都会好一些。


提防使用外形相似度较高的名称。例如,想区分模块中某处的XYZControllerFor-EfficientHandlingOfStrings和另一处的-OfStrings,会花多长时间呢?这两个词的外形实在太相似了。


以同样的方式拼写出同样的概念才是信息。拼写前后不一致就是误导。我们很享受现代Java编程环境的自动代码完成特性。键入某个名称的前几个字母,按一下某个热键组合(如果有的话),就能得到一列该名称的可能形式。


假如相似的名称依字母顺序放在一起,且差异很明显,那就会相当有助益,因为程序员多半会压根不看你的详细注释,甚至不看该类的方法列表就直接看名字挑一个对象。


误导性名称真正可怕的例子,是用小写字母l和大写字母O作为变量名,尤其是在组合使用的时候。当然,问题在于它们看起来完全像是常量“壹”和“零”。


读者可能会认为这纯属虚构,但我们确曾见过充斥这类名称的代码。有一次,代码作者建议用不同字体写变量名,好显得更清楚些,但前提是这种方案得要通过口头和书面传递给未来所有的开发者才行。后来,只是做了简单的重命名操作,就解决了问题,而且也没引起别的问题。

— 03 —

做有意义的区分

如果程序员只是为满足编译器或解释器的需要而写代码,就会制造麻烦。例如,因为同一作用范围内两样不同的东西不能重名,你可能会随手改掉其中一个的名称,有时干脆以错误的拼写充数,结果就会出现在更正拼写错误后导致编译器出错的情况。


光是添加数字系列或是废话远远不够,即便这足以让编译器满意。如果名称必须相异,那么其意思也应该不同才对。


以数字系列命名(a1、a2…aN)是依义命名的对立面。这样的名称纯属误导——完全没有提供正确信息,没有提供导向作者意图的线索。试看:


如果参数名改为source和destination,这个函数就会像样许多。


废话是另一种没意义的区分。假设你有一个Proct类,如果还有一个名为ProctInfo或ProctData的类,那它们的名称虽然不同,意思却无区别。Info和Data就像a、an和the一样,是意义含混的废话。


注意,只要体现出有意义的区分,使用a和the这样的前缀就没错。例如,你可能把a用在域内变量,而把the用于函数参数[5]。但如果你已经有一个名为zork的变量,又想调用一个名为theZork的变量,麻烦就来了。


废话都是冗余。variable一词永远不应当出现在变量名中。table一词永远不应当出现在表名中。NameString会比Name好吗?难道Name会是一个浮点数?如果是这样,就违反了关于误导的规则。

设想有一个名为Customer的类,还有一个名为CustomerObject的类,它们的区别何在呢?哪一个是表示客户 历史 支付情况的最佳方式?


有一个应用反映了这种状况。为当事者讳,我们改了一下,不过犯错的代码的确就是这个样子:


程序员怎么知道该调用哪个函数呢?


如果缺少明确约定,那么变量moneyAmount与money就没区别,customerInfo与customer没区别,accountData与account没区别,theMessage也与message没区别。要区分名称,就要以读者能鉴别不同之处的方式来区分。

— 04 —

使用读得出来的名称

人类长于记忆和使用单词。大脑的相当一部分就是用来容纳和处理单词的。单词能读得出来。人类的大脑中有那么大的一块地方用来处理言语,若不善加利用,实在是种耻辱。


如果名称读不出来,讨论的时候就会像个傻鸟。“哎,这儿,鼻涕阿三喜摁踢(bee cee arr three cee enn tee)[6]上头,有个皮挨死极翘(pee ess zee kyew)[7]整数,看见没?”这不是小事,因为编程本就是一种 社会 活动。


有一家公司,程序里面写了一个genymdhms(生成日期,年、月、日、时、分、秒),他们一般读作“gen why emm dee aich emm ess”[8]。我有见字照拼读的恶习,于是开口就念“gen-yah-mudda-hims”。


后来好些设计师和分析师都有样学样,听起来傻乎乎的。我们知道典故,所以会觉得很 搞笑 。 搞笑 归 搞笑 ,实际是在强忍糟糕的命名。在给新开发者解释变量名的意义时,他们总是读出傻乎乎的自造词,而非恰当的英语词。比较


现在读起来就像人话了:“喂,Mikey,看看这条记录!生成时间戳(generation timestamp)[9]被设置为明天了!不能这样吧?”

— 05 —

使用可搜索的名称

对于单字母名称和数字常量,有一个问题,就是很难在一大篇文字中找出来。


找MAX_CLASSES_PER_STUDENT很容易,但想找数字7就麻烦了,它可能是某些文件名或其他常量定义的一部分,出现在因不同意图而采用的各种表达式中。如果该常量是个长数字,又被人错改过,就会逃过搜索,从而造成错误。


同样,e也不是一个便于搜索的好变量名,它是英文中最常用的字母,在每个程序、每段代码中都有可能出现。由此而见,长名称胜于短名称,搜得到的名称胜于用自造编码代写就的名称。


窃以为单字母名称仅用于短方法中的本地变量。名称长短应与其作用域大小相对应 [N5]。若变量或常量可能在代码中多处使用,则应赋予其便于搜索的名称。再比较:


注意,上面代码中的sum并非特别有用的名称,不过至少搜得到它。采用能表达意图的名称,貌似拉长了函数代码,但要想想看,WORK_DAYS_PER_WEEK比数字5好找得多,而列表中也只剩下了体现作者意图的名称。

— 06 —

避免使用编码

编码已经太多,无谓再自找麻烦。把类型或作用域编进名称里面,徒然增加了解码的负担。没理由要求每位新人都在弄清要应付的代码之外(那算是正常的),还要再搞懂另一种编码“语言”。这对解决问题而言,纯属多余的负担。带编码的名称通常也不便发音,容易打错。


匈牙利语标记法


在往昔名称长短很重要的时代,我们毫无必要地破坏了不编码的规矩,如今后悔不迭。Fortran语言要求首字母体现出类型,导致了编码的产生。BASIC语言的早期版本只允许使用一个字母再加上一位数字。匈牙利语标记法[10](Hungarian Notation,HN)将这种态势愈演愈烈。


在Windows的C语言API的时代,HN相当重要,那时所有名称要么是一个整数句柄,要么是一个长指针或者void指针,要不然就是string的几种实现(有不同的用途和属性)之一。那时候编译器并不做类型检查,程序员需要匈牙利语标记法来帮助自己记住类型。


现代编程语言具有更丰富的类型系统,编译器也记得并强制使用类型。而且,程序员趋向于使用更小的类、更短的方法,好让每个变量的定义都在视野范围之内。


Java程序员不需要类型编码,因为对象是强类型的,代码编辑环境已经先进到在编译开始前就能监测到类型错误的程度!所以,如今HN和其他的类型编码形式都纯属多余。它们增加了修改变量、函数或类的名称或类型的难度,它们增加了阅读代码的难度,它们制造了让编码系统误导读者的可能性。


成员前缀


也不必用m_前缀来标明成员变量。应当把类和函数做得足够小,以消除对成员前缀的需要。你应当使用某种可以高亮或用颜色标出成员的编辑环境。


此外,人们会很快学会无视前缀(或后缀),而只看到名称中有意义的部分。代码读得越多,眼中就越没有前缀。最终,前缀变作了不入法眼的废料,变作了旧代码的标志物。


接口和实现


有时也会出现采用编码的特殊情形。比如,你在做一个创建形状用的抽象工厂(Abstract Factory),该工厂是一个接口,要用具体类来实现。你怎么来命名工厂和具体类呢?IShapeFactory和ShapeFactory吗?我喜欢不加修饰的接口。前导字母I被滥用到了说好听点儿是干扰,说难听点儿根本就是废话的程度。


我不想让用户知道我给他们的是接口,而就想让他们知道那是一个ShapeFactory。如果在接口和实现中必须选其一来编码的话,我宁肯选择实现。ShapeFactoryImp,甚至是丑陋的CShapeFactory,都比对接口名称编码好。


-END-


代码整洁之道

作者: [美] 罗伯特·C. 马丁(Robert C. Martin)

译者: 韩磊


内容简介:

软件质量,不但依赖架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。


本书提出一种观点:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。


本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

阅读全文

与编译错误搞笑图相关的资料

热点内容
md5如何对文件加密 浏览:865
android开机启动过程 浏览:105
ic加密卡去掉密码可以正常用吗 浏览:1
一个网站如何共用多台服务器 浏览:447
如何访问学校服务器文件 浏览:36
如何检查打印服务器 浏览:297
oppo手机如何特殊加密 浏览:329
北漂程序员的爱情 浏览:467
iPhone钱包app怎么打开银联二维码 浏览:763
mac运行linux程序 浏览:309
phpmysqli选择数据库 浏览:131
美萍客户管理软件加密 浏览:215
linux环境下c编程指南第2版 浏览:221
爱番番是个什么app 浏览:340
警察服从命令制度 浏览:634
中文代码汉语编程教学设计 浏览:337
福昕高级编辑器压缩pdf文件 浏览:851
linuxhash算法 浏览:55
命令全集 浏览:456
济南android招聘 浏览:420