❶ 编程经典语录
篇一:程序员9条经典的编程语录
2013年伊始,告别短暂的小长假,我们又回到了紧张的工作氛围中,在这篇文章中,我收集了几条非常有趣的且广受欢迎的编程术语,为广发编程爱好者加波助澜,就像Linus Torvalds说的那样,我们因为兴趣而编程。 2013年伊始,告别短暂的小长假,我们又回到了紧张的工作氛围中,在这篇文章中,我收集了几条非常有趣的且广受欢迎的编程术语,为广发编程爱好者加波助澜,就像Linus Torvalds说的那样,我们因为兴趣而编程。
1. 在水里行走和以一个需求规格进行软件开发类似,即如果水或需求都被冻结住,那么行走和软件开发都会变得很容易。-——Edward V Berard
2. 不要担心程序异常,如果它总是正确的话你早就失业了。——软件工程Mosher定律
3. 设计的附加价值高于它所增加的花费。——Thomas C. Gale
4. 没有好的团队就开发不出好的软件,但绝大多数的软件开发团队看起来就像不健全的家庭一样。——Jim McCarthy
5. 我才不关心我的代码是否能在你的机器上工作!我们不会给你提供机器。——Vidiu Platon
6. “靠代码行数来衡量开发进程就好比用重量来衡量飞机制造的进度。”——Bill Gates
7. “程序员的问题是,不到太晚,你永远不会知道他在做着些什么。”——Seymour Cray
8. “大部分好的程序员编程并不是为了钱或名望,而只是因为纯粹的乐趣。”——Linus Torvalds
9. “有两种生成一个软件设计方案的途径。一个是把它做得如此简单,以致于明显不会有漏洞存在;另一个是把它做的如此复杂,以致于不会有明显的漏洞存在。”——C.A.R. Hoare
篇二:程序员经典语录
1. 选择当前科技领域的一个小子集,亲近它、拥抱它,并且尝试推进这个小领域的发展。
2. 理解不同数据结构和算法的优缺点,不单是内存中,还有磁盘上的表现。
3. 首先深刻理解你所在的领域,然后抛开计算机,像普通用户那样观察和体会。
4. 时刻准备好(包括能力和心理上)向深层探索,不仅仅是一两层,而是好几层。要知道,是否能在编程时势如破竹,与你所能达到的技术深度关联紧密。
5. 运用你的想象力,总是问这样的问题“还有更好的办法吗?”跳出固有的思维模式,最好的实现方式也许还没有人尝试过。
6. 永远不要过早退出,不要两次编写同一段代码,不要将一个变量命名为另一个变量的子集。如果不理解这些规则,也许你会争辩,不过一旦你这么做了,它们就能帮助你写出更好的代码,否则你将永远停留在初级程序员的水平。
7. 学习如何进行基准测试,学会的那一天,你会发现世界将变得不同。
8. 学会如何分辨琐事和细节,只将精力集中于细节。
9. 不要总是向你的用户和管理者妥协,有时应该让他们知道,他们自以为的并不是那么重要。
10. 写一个框架,无论你是否计划使用它。这个过程会让你学到靠其他方式无法学到的东西。
11. 把学到的东西教给别人,无论是口口相授还是文以载道,你都会发现自己也能从这个过程中收获良多。
12. 找到旁人写的这样一些代码——它们实现了重要的功能,但写得并不够聪明。重写它们,然后告诉自己永远不要犯相同的错误。
13. 在人生的某个时候,运营你自己的事业(服务或产品)。你能从中学到当职员时无法领悟的编程技巧 你认为最具争议的编程观点是什么?
C#专家Jon Skeet曾在StackOverflow上提出这个问题。这里列举最热门的前10条讨论。
1. 业余时间不以编程为乐者,永远赶不上那些以此为乐的同行
即使最聪明、最有才华的人,若只是将编程作为工作,就永远成不了真正优秀的程序员。以编程为乐的人会在业余时搞些小项目,或者摆弄各种编程语言和编程思想。
2. 唯一能放之四海而皆准的最佳实践,是“用脑子思考”
太多人喜欢追逐众多时髦技术,想方设法把各种方法、模式、框架用到不适合的地方。新技术和名人大牛的观点并不等于适用于实际情况。
3. 依赖Google没什么错
这种言论肯定会让那些学富五车的饱学之士恼火。但重要的是能真正理解,并给出成功的编程解决方案,让客户和老板满意。
4. 大多数注释是代码的糟糕重复
我们大部分时间是在维护其他人(或我们自己)所写的代码,而糟糕、错误、过时和误导性的注释也是代码中最令人纠结的因素之一。
5. XML被大大高估了
许多随波逐流的人没动过脑子就跳上了XML这条黑船。XML用于Web应用不错,因为它本来就是干这个的。此外的问题定义、设计思路应该尽量不用XML。
6. 程序员生而不平等
经理往往认为“程序员A=程序员B”,因为他们工作的年头差不多。但实际上,他们的效率可能相差十倍甚至百倍。
7. 将java作为最适合大学教学的第一门语言令人费解
第一门编程语言应该重在学习控制流和变量,而不是对象和语法。此外没有调试C/C++内存泄漏经验的人,根本无法完全理解Java的初衷。
8. 若你只会一门语言,无论多么精通,仍然不够优秀
任何人如果只局限于一门语言,都无法充分发挥自己的潜力。而且缺乏求知欲和探索意愿,都不符合优秀程序员的特质。
9. 性能真的很重要
尽管可以通过购买更强劲的CPU、硬盘和内存提升性能,但若这样想的人少一些,我们也许能在1GHz的CPU上运行更多程序。
10. Print语句是有效的调试方式
用System.out.println之类的输出语句调试代码的方式挺好。这经常比正式的调试要快,而且可以比较不同运行的输出结果
篇三:101条经典计算机语录
1、计算机没什么用.他们只会告诉你答案.(巴勃罗毕加索,画家)
2、计算机就跟比基尼一样,省去了人们许多的胡思乱想.(萨姆尤因,作家)
3、他们拥有计算机,他们也还可能拥有其他的大规模杀伤性武器.(珍内特雷诺,美国前女司法部长)
4、跟计算机工作酷就酷在这里,它们不会生气,能记住所有东西,还有,它们不会喝光你的啤酒.(保罗利里,吉他手)
5、如果汽车能赶上计算机的发展周期的话,一辆今天的劳斯莱斯仅值100美元,每加仑要跑100万英里,每年还得爆炸一次,把里面的人杀个精光.(Robert X. Cringely,技术作家)
6、计算机总是越来越智能的.科学家告诉我们说不久它们就能跟我们对话了.(这里的它们,我指的是计算机.我怀疑科学家永远都不能跟我们对话.) (Dave Barry,幽默作家)
7、我最近注意到,在共同文化中,那种对计算机变得智能化并最终掌控世界的妄想恐惧症几乎彻底消失了.据我所知,这跟MS-DOS的发布基本是同步的.(Larry DeLuca)
8、计算机会不会思考这个问题就像问潜水艇会不会游泳一样.(Edsger W. Dijkstra,图灵奖获得者)
9、活了一百年却只能记住30M字节是荒谬的.你知道,这比一张压缩盘还要少.人类境况正在变得日趋退化.(Marvin Minsky,人工智能研究的奠基人) 信任
10、这座城市的中央计算机告诉你的?R2D2,你不该相信一台陌生的计算机!(C3PO,星球大战中的翻译机器人)
11、永远不要相信一台不能扔掉一扇窗户*的计算机(斯蒂夫沃兹尼亚克,苹果联合创始人)
12、硬件:计算机系统中可被踢的部分.(Jeff Pesis)
13、今天大部分的软件都很像上百万块砖堆叠在一起组成的埃及金字塔,缺乏结构完整性,只能靠强力和成千上万的奴隶完成.(阿伦凯,图灵奖获得者,面向对象创始人)
14、我终于明白'向上兼容性'是怎么回事了.这是指我们得保留所有原有错误.(Dennie van Tassel)
15、有两样重要产品出自伯克利:LSD和BSD*.我们不相信这是个巧合.(Jeremy S. Anderson)
16、2038年1月19日,凌晨3点14分07秒(UNIX中的世界末日*1970年1月1号之后的2^32秒)
17、每个操作系统都差不多 我们都一样的烂.(微软的高级副总裁布莱恩瓦伦蒂尼这样描述操作系统的安全状况,2003)
18、微软有出了个新版本,Windows XP,据大家说是'有史以来最稳定的Windows', 对我而言, 这就好像是在说芦笋是'有史以来发音最清脆的蔬菜一样' (Dave Barry)
19、互联网?那个东西还在吗?(Homer Simpson)
20、网络就像是个母夜叉.我每转到一处都会看见小个的按钮命令我提交*.(Nytwind)
21、想想看吧,已经有一百万只猴子坐在一百万台打字机旁,可Usenet就是比不上莎士比亚.(Blair Houghton)
22、计算机软件产业最为惊人的成就,是其持续不断地放弃硬件产业的惊人成果和稳定性.(Henry Petroski)
23、真正的创新经常来自于那些贴近市场、但无力拥有市场的的小型初创公司.(Timm Martin)
24、人们常说,伟大的科学学科就像是站在其它巨人肩膀上的巨人.人们也说过,软件产业正如站在其他侏儒脚上的侏儒.(Alan Cooper,交互设计之父)
25、这无关比特、字节和协议,而关乎利润和损益.(郭士纳,IBM前CEO)
26、我们是微软.反抗是徒劳的.你会被同化的.(保险杠贴纸)
27、不管演示在彩排的时候有多好,一旦在观众面前展示时,演示不出错的几率与观众人数成反比,与投入的金钱总额成正比.(Mark Gibbs)
28、专利大多数都是垃圾.浪费时间去阅读这些专利是愚蠢的.只有专利持有人才会这么干,还得强迫自己才会看.(Linus Torvalds,LINUX创始人)
29、控制复杂性是计算机编程的本质.(Brian Kernigan)
30、复杂性杀死一切.它把程序员的生活给搞砸了,它令产品难以规划、创建和测试,带来了安全挑战,并导致最终用户和管理员沮丧不已.(Ray Ozzie)
31、进行软件设计有两种方式.一种是让它尽量简单,让人看不出明显的不足.另一种是弄得尽量复杂,让人看不出明显的缺陷.(C.A.R. Hoare)
32、好的软件的作用是让复杂的东西看起来简单.(Grady Booch,UML创始人之一) 易用性
33、不管那些计算机书籍如何宣称,只需记住,你并非'傀儡'.真正的傀儡是那些无法设计出易于使用的硬件和软件的那些人,尽管他们是技术专家,因为这是普通消费者赖以生活的东西.(Walter Mossberg,科技专栏记者)
34、软件供应商在努力尝试让他们的软件更'易于操作' 迄今为止,他们最好的办法就是翻出所有的老手册,然后在封面盖上'易于操作'这几个字.(比尔盖茨)
35、有个老套的故事说有人希望他的计算机能像他的电话机一样好用.他的愿望实现了,因为我已经不知道该如何使用自己的电话了.(BjarneStroustrup,C++之父)
36、任何一个傻瓜都会用电脑.很多都会.(Ted Nelson)
37、只有两个行业把客户称为'用户'*.(Edward Tufte,信息设计大师)
38、程序员在跟宇宙赛跑,他们在努力开发出更大更好的傻瓜程序,而宇宙则努力培养出更大更好的白痴.到目前为止,宇宙领先.(Rich Cook)
39、你们当中很多人都知道程序员的美德.当然啦,有三种:那就是懒惰、急躁以及傲慢.(Larry Wall,Perl发明者)
40、程序员的问题是你无法预料他在做什么,直到为时已晚.(Seymour Cray,超级计算机之父)
41、那就是这些自认为痛恨计算机的人的真实面目.他们实际上真正痛恨的是糟糕的程序员.(拉瑞尼文,科幻作家)
42、很长时间以来我一直困惑不已,为什么一些又贵又先进的东西会一点用都没有.直到我突然想起,计算机不就是一台愚蠢之至却拥有难以置信的做聪明事能力 的机器嘛,而程序员不就是聪明绝顶却拥有难以置信的.干蠢事的能力的人嘛.一句话,他们简直就是天生绝配.(比尔布莱森,旅游文学作家)
43、不像学学涂涂画画也能让某人成为专家级画家,计算机科学教育不会让任何人成为一名编程大师.(埃里克雷蒙,开源运动领袖)
44、一个程序员是经历以下事情后仍能证明自己是严格的专家的人:他可以历经数不清的捶打,可取材于无关紧要的文档,用上面的争议数据作出模糊假设,并以 此计算出测微精度的无数片面理解的答案,并由一个不可靠、脑袋充满质疑、公
开宣称要让一个倒霉透顶、没有指望、毫无防备,要求第一时间获得信息的部门狼狈 不堪、令人生厌的人使用一台准确度有问题的仪器去实施.(IEEE网格新闻杂志)
45、运气好的黑客能用几个月的时间 - 生产出一个小规模的开发团体(比如说,7-8人)历尽艰辛一起工作了一年多才能做出来的东西.IBM经常报告说某些程序员的生产力要比其它工人高百倍,甚至更多.(Peter Seebach,黑客)
46、最好的程序员跟好的程序员相比可不止好那么一点点.这种好不是一个数量级的,取决于标准怎么定:概念创造性、速度、设计的独创性或者解决问题的能力.(兰德尔E斯特劳斯,科技作家)
47、伟大的车工值得给他几倍于普通车工的薪水,但一个伟大的软件代码作家,其价值则要等同于一个普通的软件写手的价格的1万倍.(比尔盖茨)
48、就算它工作不正常也别担心.如果一切正常,你早该失业了.(Mosher的软件工程定律)
49、靠代码行数来衡量开发进程就好比用重量来衡量飞机制造的进度.(比尔盖茨)
50、写代码的社会地位比盗墓的高,比管理的低.(杰拉尔德温伯格,软件与系统思想家)
51、首先学习计算机科学及理论.接着形成自己编程的风格.然后把这一切都忘掉,尽管改程序就是了.(George Carrette,杰出软件工程师,开源推广者)
52、先解决问题再写代码.(John Johnson)
53、乐观主义是编程行业的职业病;用户反馈则是治疗方法.(Kent Beck)
54、迭代者为人,递归者为神.(L. Peter Deutsch)
55、布尔值最好的一点是,就算你错了,也顶多错了一位而已.(无名氏)
56、数组的下标是从0开始好还是从1开始好呢?我的0.5的折衷方案,以我之见,没有经过适当考虑就被否决掉了.(Stan Kelly-Bootle)
57、只有两种编程语言:一种是天天挨骂的,另一种是没人用的.(BjarneStroustrup,C++之父)
❷ 编程序常用英语单词是什么
编程序常用英语单词部分:
1、Compile:编绎
2、Run:运行
3、Class:类
4、Object:对象
5、System:系统
6、out:输出
7、print:打印
8、line:行
9、variable:变量
10、type:类型
11、static:静态的
12、array:数组
13、parameter:参数
14、method:方法
15、function:函数
16、public:公有的
17、default:默认
18、get:得到
19、private:私有的
20、import:导入
21、set:设置
22、package:包
23、access:访问
24、protected:受保护的
25、void:无(返回类型)
26、operation:操作运算
27、member-variable:成员变量
28、member-function:成员函数
29、extends:继承 base class:基类 parent class:父类
30、interface:接口 child class:子类 super class:超类
31、overload:重载 abstract:抽象 exception:异常
32、implements:实现 Runtime:运行时
33、derived class:派生类
34、override:重写覆盖
35、final:最终的不能改变的
(2)最全程序员常用术语扩展阅读
一、编程:设计具备逻辑流动作用的一种“可控体系”【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程。】
二、编程是编写程序的中文简称,就是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
三、为了使计算机能够理解人的意图,人类就必须将需解决的问题的思路、方法和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算体系之间交流的过程就是编程。
❸ 程序员需要知道的缩写和专业名词
程序员的世界里,缩写和专业名词是必不可少的工具。以下是一些关键术语的简要解释:
- **API**:应用程序接口,是软件组件间交互的桥梁,通过合理设计能提升系统的可维护性和扩展性。
- **ACID**:数据库事务的四大特性,保证数据一致性、隔离性和持久性。
- **AJAX**:一种用于网页开发的技术,实现异步数据交互,提高用户体验。
- **JPA**:Java持久层API,用于数据库对象与Java对象之间的映射。
- **JSON**:轻量级的数据交换格式,易于阅读和解析,广泛用于数据传输。
- **POJO**:简单的Java对象,没有复杂的业务逻辑,常用于数据传输。
- **DSL**:领域专用语言,针对特定问题设计,简化编程复杂性。
- **GC**:垃圾回收,自动管理内存,降低开发者负担。
- **DML**:数据操纵语言,包括INSERT、UPDATE、DELETE等操作,用于数据库操作。
- **DDL**:数据定义语言,用于创建、修改和删除数据库结构。
- **DI**:依赖注入,控制反转的一种,简化对象间依赖关系。
- **DNS**:域名系统,将域名与IP地址映射,方便互联网访问。
- **GUI**:图形用户界面,直观易用的用户界面设计。
- **HTTP**:超文本传输协议,互联网数据交换的基础。
- **IoC**:控制反转,通过外部系统管理对象依赖,降低耦合。
- **JWT**:JSON Web Token,用于安全地传递信息,常用于SSO。
- **LDAP**:轻型目录访问协议,用于访问和管理目录信息。
- **MVC**,**MVP**,**MVVM**:不同的软件架构模式,分别关注分离关注点和视图与业务逻辑的解耦。
- **OLAP**:在线分析处理,用于大规模数据分析和决策支持。
- **SQL**:结构化查询语言,用于数据库管理和数据操作。
- **SPA**:单页应用,动态更新页面以提供无缝用户体验。
- **SOA**:面向服务架构,通过网络服务组件化开发应用。
- **SOAP**:简单对象访问协议,用于Web服务之间的数据交换。
- **NoSQL**:非关系型数据库,提供不同的数据存储方式。
- **XML**:可扩展标记语言,用于标记和交换数据。
- **前端后端**:分别指网页的视觉呈现和服务器端处理逻辑。
- **乐观锁**:并发控制策略,假设事务之间不会冲突,读取数据后检查更新。
- **悲观锁**:更保守的并发控制策略,先获取锁再进行操作。
- **自旋锁**:同步机制,线程忙等待获取锁。
- **递归**:函数调用自身的技术,常见于算法和数据结构中。
- **主键**:数据表中唯一标识记录的字段。
- **外键**:关联两个表的数据字段,用于建立关系。
- **B/S结构**:浏览器/服务器架构,简化客户端,对服务器性能要求高。
- **C/S结构**:客户端/服务器架构,客户端与服务器功能分离。
- **Web服务**:网络上的软件系统,通过API提供远程服务。
这些术语是程序员日常工作中不可或缺的术语,理解它们能帮助你更好地理解和构建复杂系统。
❹ 从事IT行业,或者简单的说是编程,常用的术语有哪些呢
常用的术语其实很多
术语 解释
问题解决problem-solving 表述问题,找到解决方案并表述方案过程
高级语言high-levellanguage 便于人类读写而设计的编程语言
低级语言low-levellanguage 便于机器执行而设计的语言:机器语言、汇编语言
可移植性portability 程序可以在不同计算机操作系统上运行的属性
形式语言formallanguage 人类设计用于特殊目的的语言:表达思想的计算机程序。
自然语言naturallanguage 人类所说的,经过自然演化的各种语言
解释interpret 逐句翻译高级语言编写的源程序,边翻译边执行
编译compile 一次性把高级语言翻译成二进制指令序列,形成目标代码
源代码sourcecode 用高级语言编写的,未经过编译的字符流
目标代码objectcode 源代码经过编译器编译得到的输出结果
可执行程序executable 可以直接在计算机执行的二进制01序列
算法algorithm 解决同类型问题的一般过程
bug 程序中发生的错误
语法syntax 程序的结构
语义semantics 程序的语义
解析parse 检查一个程序,并分析其语法结构
语法错误syntaxerror 程序中无法完成语法解析的错误
运行时错误run-timeerror 在程序执行过程中导致程序终止失败的错误
逻辑错误logicalerror 程序中发生导致程序偏离编程本意的错误
调试debugging 发现并解释三种错误的过程
变量 有名字的值存储区
指针指向内存的映射
值 字母或数字或者其他可存储在变量里的东西
类型 值的集合:int、char
关键字 保留的单词,编译器用以解析程序的:void、int、endl
语句 一行用于表达一个命令或动作的代码
变量声明 用于创建新变量并且标识变量类型的语句
变量赋值 将值赋给变量的语句
表达式 变量、运算符和值的联合体、代表单个结果值,表达式也有类型,这个类型由运算符和操作数决定
运算符 特殊符号,代表一个简单的数学运算,比如:加法或乘法
操作数 运算符作用的值
优先级 运算发生的先后顺序
组合 为了简洁地表达复杂计算而将简单表达式和语句结合成复合语句和表达式
浮点数floating-point 一种既包含小数又包含整数的变量类型
初始化initialization 声明变量并且同时给变量赋值的语句
函数function 一些列命名并且完成某种功能的语句
形参parameter 调用函数时所需要的信息
实参argument 当调用函数时所必须提供的数值,这个值必须与函数中对应的形参具有相同的类型
调用call 使函数运行
模运算符% 作用于整数的运算符,其结果等于一个整数除以另一个整数的余数
条件语句 语句块,它的执行与否取决于某些条件
链接link 一种把几种条件语句连接成一个序列的方式
递归Recursion 正在执行的函数调用它自己的过程
无限递归 函数递归调用自己,无法到达递归基,最终无限递归会导致运行时错误
返回类型returntype 函数返回结果的类型
返回值returnvalue 函数执行需要输出的值
无效代码deadcode 程序中从未执行过的代码,大部分原因是因为他们出现return语句之后
支架代码scaffolding 在开发过程中使用的代码,它不属于最终版本
空类型void 一种特殊的返回类型,表示空函数,也就是没有返回值的函数
重载overloading 多个函数具有相同的函数名和不同的参数,在C++中,通过提供的参数判断需要调用哪一个函数
布尔类型bool 一种只有true和false两种值的变量或值
标记flag 变量用于记录条件或者状态信息
比较操作符comparisonoperator 用于比较两个变量并产生一个bool值的操作符,表示两个操作数之间的关系
逻辑操作符logicaloperator 用于结合bool值测试复合条件的操作符
循环语句loopcode 当条件为真,或满足某系条件时,将会反复执行的语句
无限循环 其中包含了永远为真的条件的循环
循环体 包含在循环中的语句
迭代 循环体的一次执行过程,包括对条件的判断
制表符 特殊字符,在C/C++中写作 ,这个字符会使得光标移动到当前行的下一个制表位
封装 将一个复杂的程序分解成独立的组建(例如:函数),并保证组建之间相互独立,例如可以使用局部变量来达到
局部变量 在函数内部声明的变量,他只在这个函数内部适用
广义化 适用适度广义的元素(例如:变量和参数)替换掉不再需要的特殊元素(比如:常量)。广义化可以使得代码更加通用,更容易复用,有时甚至更容易编写
开发计划 程序开发的流程
对象object 相关的数据和对数据操作的一系列函数组成的集合
索引index 用于选择一个有序集合中成员的变量或者变量值。比如:在字符串中查找字母所用的变量
遍历traverse 迭代对集合中的所有元素进行类似的操作
计数器counter 用于计数变量,一般初始化为0,并在操作时递增
递增increment 每次对变量加一
递减decrement 每次对变量减一
拼接concatenate 将两个操作数首相接
结构体 由数据组成的集合,通常当作单个对象对待
实例变量 一块有名字的数据,是结构体的组成部分
引用 一个志向或引用变量或结构体的值,在状态图中,用箭头表示引用
按值传递 一种传递形参的方法,这种方法将实参复制到对应的形参中,形参和实参存储在不同的位置上
按引用传递 一种传递形参的方法,在这种方法中,形参是一个实参变量的引用,形参的修改同时会影响到实参变量
实例instance 某目录中的一个例子。猫是猫科动物的一个实例,任何一个对象都是某种类型的一个实例
实例变量instancevariable 组成结构体的一个命名的数据项,每个结构体独有该类型实例变量的一个副本
微服务对服务进行了拆分进行了细粒度的部署
容器拥有运行应用的一切环境的可移植可隔离的快速部署的单元
❺ 软件编程常用术语
1. XML 首先,你要了解XML。我不是说仅仅是XML规格本身,还包括一系列相关的基于XML的语言:最重要的是XHTML、XSLT、XSL、DTDs、XML Schema (XSD)、XPath、XQuery和SOAP。那些在过去5年内从未碰过键盘的人,可能不知道XML为何物。XML是一种文本文件,使用与HTML类似的标记。XML能定义一个树状结构,并能描述所含的数据。 XML最好的一点是既能存结构化数据也能存非结构化数据。它既能存贮和描述“规格的”(regular)表格数据,也能容纳和描述“粗糙的”(ragged)文件数据。 XHTML是现今写HTML的首选方法。因为它是形式完好(well formed)的XML,比起古老的、通常是畸形(malformed)的HTML文件,XHTML格式的文件更容易处理。 XSLT和XSL是用于把XML文件转成其它格式的语言。可转换的格式包括:文本文件、PDF文件、HTML、以逗号为分隔符的文件,或其它XML文件。 DTD和XML Schema描述XML文件所能包含的内容的类型,并让你“验证”XML文件内容的合理性,而不用写特殊代码以确保内容符合规则要求。 XPath和XQuery是用于从XML文件中抽取单个项目或一组项目的查询语言。XQuery扩展了XPath,因而更重要。XQuery与XML的关系正像SQL与关系数据库的关系。 SOAP是Web服务之间的一个标准通讯协议。尽管你不需要对SOAP标准一清二楚,你应该熟悉一般的schema和它的工作原理,以便能应用这门技术。 2. Web服务 Web服务是XML流行后的一个直接产物。因为你能用XML描述数据和物件,因为你能用schema确保XML文件内容的合理性,因为XML是基于文本的规范,XML为跨平台通讯标准提供了一个极其方便的基本格式。如果你还从来没碰到Web服务,你可能很快就会碰到,在未来5年内,你几乎肯定会碰到。熟悉Web服务十分重要,因为它是目前所有跨不同机器、不同语言、不同平台和不同地点的通讯协议中最简单的一个。不管你需要与否,Web服务是迈向互用性的重要一步。 XML工作组主席John Bosak曾说XML“给Java一些事做”。实际上,Web服务让所有语言都有了一些事做。Web服务让在大型机上运行的COBOL应用软件能调用在手持设备上运行的Java应用程序、能让Java applet与.NET服务器交谈、能让微机软件与Web服务器无缝连接,并提供了一个相对容易的方法,让企业不光能向外界提供数据,还能提供功能,而且是一种与语言、平台和位置都独立的方法。 3. 面向对象的编程 很多程序员仍认为OOP是象牙塔里的技术。但如果你想一下是什么语言在过去的10年里占主导地位,你就会理解OOP不是象牙塔里的技术。OOP从Smalltalk开始,传到C++和Pascal (Delphi)。Java使OOP大踏步地迈向主流,几年后的VB.NET和C#则完全确立了OOP的优势地位。尽管这些语言中的多数并不要求你必须会OOP,但我觉得如果你不了解OOP的基本概念也不知道如何应用这些概念,你能找到的编程工作将越来越少。 4. Java、C++、C#和VB.NET 我把这些语言列在一起,并不是建议你成为每一种语言的专家。我的理由是:学习编程最有效的方法之一是看代码,而你能看到的大量的代码很可能不是用你所喜爱的语言编写的。 在过去几年,各语言的能力越来越接近。现在,你可以用VB.NET写Windows服务、Web应用程序或命令行程序。即使你只使用一种语言,你也应该学一些其它语言,以便能看懂那些样例,并将其翻译到你所用的语言。这4种语言是基本核心,还有其它一些满足不同需要、颇具用途的语言,如FORTRAN、COBOL、APL、ADA、Perl和Lisp。 5. javascript 尽管名字有些相像,但Java与javascript并无关联。为什么一个脚本语言会如此重要呢?因为所有主流浏览器都用javascript。如果你需要写Web应用程序,你就有足够的理由学javascript。javascript可以用作ASP或ASP.NET的服务器语言,也可以当做用于扩展XSLT的功能语言(functional language)。javascript是Mozilla/Netscape中用于激活基于XUL的程序接口的首选语言。javascript的一个变种ActionScript是Flash MX的编程语言。将来,javascript很可能成为新设备的编程语言,以及大型应用软件中的宏语言。 与javascript相对照的是VBScript。尽管Microsoft的软件对VBScript有良好的支持,但VBScript在未来的开发工作中很可能是一个糟糕的选择。就是Microsoft也倾向于用javascript(或Microsoft自己的变种:JScript)写客户端程序。在选择脚本语言时,请选择javascript。 6. 正则表达式(Regular Expressions) 查寻关系数据库可以用SQL,查询XML可以用XPath和XQuery,查询纯文本文件则可以用正则表达式。例如,你可以用一个命令从一个HTML文件中查找并删除所有的注释。各种开发语言内置的一些简单的文本查询功能,如"IndexOf"函数或VB中经典的"InStr"函数或"Like"操作符,根本不能与正则表达式相提并论。现在,各种主要的开发语言都提供使用正则表达式的途径。尽管正则表达式本身既难懂更难读(是回到早期计算机时代的一种倒退),但它却是一个功能强大而且未被充分利用的工具。 7. 设计模式 正像OOP通过把对象分类以简化编程一样,设计模式对一些普遍的对象之间的交互进行分类,并赋予一个恰当的名称。OOP用得越多,设计模式就越有用。一些最常用的模式的名称已经变成了软件开发领域共同使用的术语,所以要跟上信息的主流,你就要对设计模式有相当的理解。 8. Flash MX 如果你需要在客户端得到比HTML和CSS更多的图形和更强的编程功能,Flash是你的答案。用Flash编程比开发Java applets或写.NET代码要快得多,也容易得多。 在最新版本 (MX) 中,Flash不仅仅是画图和制造动画的工具,它已经成为一个编程功能强大的开发环境:能调用SOAP Web服务,也能调用远端服务器上的ColdFusion、Java或.NET程序。Flash无处不在。它的引擎存在于世界上大多数客户端计算机,包括手持设备、置顶盒、甚至是新的书写板电脑。所以使用Flash能大大扩展你的程序的应用范围。 9. Linux/Windows 熟悉Linux。在一台旧机器或新机器上安装Linux。下载图形用户界面,在其基础上写一些程序。安装Apache,写一个Web应用程序。这个世界不再仅仅是属于Windows,这种趋势可能还会持续下去。如果你是一名中坚的Linux开发人员,那就抛弃你对Windows的憎恶,看看你能否做一些Windows编程。Windows能继续在台式电脑上称王是有其原因的,这不仅仅是因为Microsoft控制了这个市场。 没人知道你们公司会在什么时候决定从Linux转向Windows(或从Windows转向Linux),或者你想跳到一家用另一种平台的公司,或者你想出了开发一个杀手软件的好主意,所以你要争取拥有在不同操作系统上的编程经验。 10. SQL 尽管SQL不像本文讨论的其它技术那样新,而且SQL的重要性在未来10年内很可能降低,但它仍然是一项基本技能。很多开发人员还没有掌握这门技术,或掌握得不够,不足以有效率地使用它。不要依赖具有图形用户界面的SQL生成器替你做事情,你要自己手工地写查询命令,直到你熟悉基本的SQL语法为止。了解SQL不仅能帮助你日后学习XQuery,你还有可能马上发现能简化或改进目前项目的方法。 培养好奇心 最后,(对,我意识到这是第11门技术),好奇心是你最重要的技能。要去尝试各种东西。新语言或新技术对你当前或将来的工作可能有用,也可能没用,但并不是你所学的每一件事都是为了工作。不要害怕失败,万事开头难,学新技术也是如此。大多数失败是因为人们希望太快地学到太多的东西。要对每一点进步感到满意,不要让时间(或缺乏时间)妨碍你。相反,你要安排时间留心、研究、试验新的开发技术和工具。 你可能永远也没有必要成为这些技术的专家,而且我的选择可能根本不适合你的特殊情况,但通过培养好奇心,你将会发现你应该了解的东西。