易码技术论坛

 找回密码
 加入易码
搜索
查看: 201808|回复: 0

[归档] [zz from 自己的blog]程序员都有啥?

[复制链接]
发表于 2006-7-30 13:33:45 | 显示全部楼层 |阅读模式
  作为一个程序员,我们手中都有些什么?一名程序员赖以糊口的技术有哪些?总结一下,不管是理清思路,或是寻找薄弱环节,或是寻找生长点,都是有好处的吧。当然这个是作为一个见习程序员的经验之谈,欢迎大家指正

首先,根据著名的公式 程序=算法+数据结构。这里看来,算法和数据结构必然是程序员不可或缺的一部分,人们比喻的内功云云也大多恰如其分。算法和数据结构永远是基础中的基础,是保证一个程序得以运作的关键。其实,根据我自己的经验,算法和数据结构现在的作用正在慢慢被别的东西挑战着,他们已经从全局的影响退居到核心影响力。一个软件中可能只有一个关键的核心算法,其他算法散布在各个构件中,起着像支撑点一样的作用。一个设计良好的系统,算法系统和软件架构完全可以分别设计。

其次,是一门熟练的程序设计语言。这是让自己内功得以显现的必要条件。熟练的使用程序设计语言,将思路能用语言的特性清晰的表达出来,这本身就是一项了不起的技术。它需要对这门语言的方方面面摸得十分透彻,方能用合适的方案来表达,否则就会写出四不象程序,不能发挥语言本身的优势。就像Java或者C#程序员来写C++程序,导致内存泄漏,过多依赖运行是这种问题恐怕都会发生。反过来,c++程序员最初接触Java会有种如释重负的感觉,但是很难利用上Java提供的比如匿名类,反射等等特性。

第三,是软件设计能力。我总觉得这个能力常常被忽视,或者被招人的单位忽视。或许一个程序员的任务就是依照设计好的借口写代码,设计的任务都交给pm之类的人去完成。但是,首先,程序员无疑是pm的最佳人选,一个有设计能力的程序员无疑是有竞争能力的。其次,即使只负责某一个模块,设计的重要性也是至关重要的。设计良好的代码可以相对轻松的迎接需求的变化,添加新的功能以及优秀的可复用性,这些在现代的软件公司中都是必要的。

第四,计算机基础知识。包括,操作系统——应该是最重要的了,体系结构——某些情况下可能有用,编译原理——怎么说呢,平时用不上,用到就是大事,汇编——没有把它作为程序语言的一种,这仅仅是一个基本技能。网络基础,数据库基础。这些知识都是对计算机的基本理解,在用语言设计应用程序的时候,其实就是在控制计算机运作,了解这些计算机的基本运作方式,对于代码的正确性和效率都是相当重要的,在一些关键部位,甚至可能要直接同这些底层的东西对话,那时候就有用了。

第五,数学。数学和算法数据结构紧密相关,但是却是是一个独立的部分,包括概率,离散,线性代数这些基础课程,都是在计算机算法中应用最为广泛的数学,掌握了他们,才能很好的理解很多算法,并且在算法的设计上能有所突破。要说算法是燃料的话,他们就是支撑燃料的化学定律。另外在很多算法的分析上,不管从效率,收敛性还是正确性等方面,他们都是必要的知识。当然未必什么时候都用得到,但是当你卡在某个关键算法上时,这些知识可以帮助你有目的的去寻找相关解决方案。

第六,新新技术。包括最近火爆的xml,ajax,前一阵的SOA,在前一阵的.net,com。这些东西都是随着时代的变化不断演进的,很难有技术能一直引领潮流。其实说白了,这些技术背后的思想和技巧都是相当的简单,所以没有必要专门为了一个新技术而投太多精力,追技术是最不明智的事情,要用的时候看看就够了。

写了这么多……想不起来了……
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-16 22:19 , Processed in 0.013726 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表