博文

[转]影响中国软件开发的20人(2005-07-04 10:33:00)

摘要: 影响中国软件开发的20人来自:《程序员》杂志进入2004年,伴随着各种机遇和挑战,中国的软件开发仍然在摸索中前进,程序员也在不断的学习和工作中探寻自己的未来。在这个过程中,当然少不了各种技术和公司对他们施加的影响。跟随谁,选择什么路线永远是一种充满未知数的挑战。谈到影响,可能以微软为首的软件巨头更容易被提及,毕竟开发人员所直接应用的操作系统、语言、开发工具等各种技术都掌握在这些公司手中。然而,这并不能抹杀和妨碍提起国内一些企业和人士对中国软件开发各方面产生的影响。站在这个角度,本刊在国内的软件企业和个人中评选出了如下20位人士,他们对近期软件开发产生了一定程度的影响。选出这些人,也是为了抛砖引玉,让国内的开发者更了解自己正在经历的变化和面临的挑战。在这些人员中,有些属于早一代的程序员,他们创造的业绩激励了很多程序员进入软件开发。鲍岳桥就是一个,尽管现在他已经成为了联众的总裁,但之前从UCDOS步入辉煌,Windows时代一度面临困境,最终凭借网络游戏成功转型,这种以技术创业成功的例子对中国的程序员来说就是巨大的诱惑。与此同时,很多人从软件教育方向在逐渐改变整个软件行业的人才结构,这一说法毫不夸张。青鸟APTECH就是将印度软件教育模式带到中国来的典型,尤其是在中国软件人才结构并不合理的情况下,他们所做的工作也是有益的尝试。而且,面向未来的眼光也必不可少,很多人所做的工作带来的变化现在还不显著,但对未来可能会产生相当的影响。比如,中国软件人才的培养结构在逐渐向国际化靠拢,软件学院功不可没。更为超前的是,为了探索未来中国软件在底层技术上的引导性,有很多人在做努力,从Linux在中国的推广,到科泰世纪打造自己的操作系统和开发平台,尽管这些尝试可能会失败,但带给我们的是经验和深入的思考。现在,有人说程序员面对着太多的头绪,已经迷失了方向。的确,是有一些人迷失了方向,但这里的20位人士能够让我们以更清醒的眼光看待中国的软件开发,了解我们取得的成绩和面临的挑战。开国元勋严援朝所属公司:新浪网入选理由:开发第一个中文操作系统CCDOS,参与创办四通利方,掌控最大的中文网站新浪网技术总架构。“做软件就是在不断地明确目标,就是搞清楚你的GO 是什么,所有的软件都逃不出那三句话——IF、THEN、 ELSE。棒的程序员很快能够知道自己的GO是什么,没长进的程序员老也弄不清楚......

阅读全文(3871) | 评论:0

[转]软件工程师的务实职业生涯规划(2005-07-04 10:25:00)

摘要:软件工程师的务实职业生涯规划  [1]  好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!  [2]  可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!  [3]  不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!  [4]  多交社会三教九流的朋友!不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理,那么你整日面对的就是这些人。了解他们的经历,思维习惯,爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费,成功的概率大大降低!   [5]  知识涉猎不一定专,但一定要广!多看看其他方面的书,金融,财会,进出口,税务,法律等等,为以后做一些积累,以后的用处会更大!会少交许多学费!!    [6]  抓住时机向技术管理或市场销售方面的转变!要想有前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大,以前搞技术也没有白搞,以后还用得着。搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉!应该说这......

阅读全文(2941) | 评论:2

[转]学习C语言,不利于学习C++语言么(2005-09-14 11:37:00)

摘要:(乾坤一笑发表于2004-11-16 10:40:13)C++的定义已经作了许多修订,以保证任何同时在C和C++里合法的结构在两个语言中都具有同样的意义(除了少量例外)。C语言本身也在发展和演化,部分地是在C++开发地影响之下。ANSI C标准就包含了从“带类的C”借去的函数声明语法。借鉴是双向的,例如void*指针类型是为ANSI C发明的,但是却在C++里第一次实现。正如本书第一版所允诺的,C++的定义已经过修订,以去掉无缘无故的不兼容性。今天的C++比原来更加与C兼容了。这里的想法是让C++尽可能接近ANSI C——但又不过于接近。百分之百的兼容性从来就不是目标,因为这将危害类型安全性以及用户类型和内部类型的平滑集成。了解C并不是学习C++的先决条件。在C中编程序被鼓励使用的许多技术和诀窍由于C++语言的特征而变的多余了。例如,显性类型转换(casting)在C++里就没有在C里那么频繁。然而,好的C程序倾向于也是C++程序。例如,在Kernighan和Ritchie的《The C Programming Language》, 2nd Edition 里的每个程序都是C++程序。任何有关静态类型语言的经验对于学习C++也都能有所帮助。以上引自Bjarne Stroustrup的《The C++ Programming Language (Special Edition)》。偶从中悟到的是:如果你能把C程序写得在C++编译器中也正常通过(没有warning),那也不是坏事。^_^ 所以,偶现在也就安心的做编写C代码的工作,业余研究研究C++了,两者并不冲突。:)//////////////////////////////////////////////////////最新评论 [发表评论]  查看所有评论  推荐给好友  打印 嗯,C语言是基础呀! ( NQC 发表于 2005-4-28 9:56:00)如果没精通C,直接学C++的话,一定写不好程序,甚至不知道什么是好程序。 ( nbcool 发表于 2004-11-23 23:36:00)......

阅读全文(6089) | 评论:1

[转]学习C++必须“罢黜百家,独尊儒术”么(2005-07-03 13:11:00)

摘要:(乾坤一笑发表于2004-11-16 10:41:18)许多朋友都认为,学习C++要专一,了解过多的其它语言就把精力分散了,有百害而无一利。我不同意这种观点。我认为,程序语言的演化是相互学习、相互借鉴的,一个好的语言往往是吸纳了多种其它语言的优点、摒弃了它们的缺点才形成自己的风格的。所以,了解的知识面越宽,所能够横纵比较的范围才越大,才越能够明白C++为什么要设计成这个样子。闲言少叙,现看看Bjarne Stroustrup设计C++的灵感都源于何处,一下摘自《The C++ Programming Language (Special Edition)》:很清楚,C++大大地受惠于C。除封闭了其它类型系统中的少量严重漏洞之外,C++仍然保留C作为一个子集。我还保留了C在功能上的强项,能在足够低的层次上处理最苛刻的系统设计工作。C转而从其前驱BCPL受惠颇多;事实上,BCPL的//注释约定也被(重新)引进了C++。给C++以灵感的另一个主要来源是Simula67;类的概念(包括派生类和虚函数)都是从那里搬过来的。C++有关重载运算符和自由地将声明放置在可以出现语句的任何位置的功能,使人联想到Algol68。.......模板机制部分地受到Ada中类属(generic)的启发(包括其威力及其弱点),部分地受到Clu语言参数化模块地影响。与此类似,C++的异常处理机制部分地受到Ada、Clu 和ML的影响。其它方面的开发是在1985~1995的时间跨度中做出的,例如,多重继承、纯虚函数,以及名字空间,这些基本上是在C++使用经验推动下推广而来的,而不是由其它语言引进的。由此可见,C++语言的设计者Bajarne Stroustrup、STL的设计者Alex Stepanov绝非只懂一种语言,我推测他们每人至少懂个七、八、十来种,不然怎么取长补短的设计出如此优秀的C++语言呢?另外,C++重实用的语言,而不是那种盲目追求完美的语言。在《C Traps and Pitfalls》(中文版叫做《C陷阱与缺陷》)的中文版的附录上记录着这样一个典故:王曦和孟岩采访Andrew Koenig时,曾问:“有时,编写平台无关的C++程序比较困难,而且开发效率也不能满足需求。您是否认为把C++与其它的语言,尤其类似Python和TCL/TK那样的脚本语言合并使用是个好主意?” Koenig......

阅读全文(6885) | 评论:0

[转]Bjarne Stroustrup语录[C++经验](2005-06-30 13:41:00)

摘要:摘录自Bjarne Stroustrup 的《The C++ Programming Language》(Special Edition) 一、致读者1.  在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能地直接反映这些思想:   ★.如果你能把“它”看成一个独立的概念,就把它做成一个类。   ★.如果你能把“它”看成一个独立的实体,就把它做成某个类的一个对象。   ★.如果两个类有共同的界面,将此界面做成一个抽象类。   ★.如果两个类的实现有某些显著的共同东西,将这些共性做成一个基类。   ★.如果一个类是一种对象的容器,将它做成一个模板。   ★.如果一个函数实现对某容器的一个算法,将它做成为对一族容器可用的模板函数。   ★.如果一组类、模板等相互之间有逻辑联系,将它们放进一个名字空间里。2.  在你定义一个并不是实现某个像矩阵或复数这样的数学对象的类时,或者定义一个低层的类型如链接表的时候:   ★.不要使用全局数据(使用成员)。   ★.不要使用全局函数。   ★.不要使用公用数据成员。   ★.不要使用友元,除非为了避免a或c。   ★.不要在一个类里面放“类型域”(指那种为了说明一个类所存储数据的情况而放置的标志域) ;采用虚函数。   ★.不要使用在线函数(inline function),除非作为效果显著的优化。二、C++ 概览1.  不用害怕,一切都会随着时间的推移而逐渐明朗起来。2.  你并不需要在知道了C++的所有细节之后才能写出好的C++程序。3.  请特别关注程序设计技术,而不是各种语言特征。三、标准库概览1.  不要像重新发明车轮那样企图做每件事;去使用库。2.  不要相信......

阅读全文(4813) | 评论:3

[转]2004年世界八大趣闻(2005-06-28 14:08:00)

摘要:2004年世界八大趣闻一睹为快 转:金羊网-新快报     俄罗斯新闻网12月21日报道,法新社日前评出了2004年度世界八条最有趣的新闻,以便“让人们更好地了解人类的天性”。   1、父母发现13岁千金是男儿身  中国一对夫妇偶然发现:他们13岁大的千金竟然是男儿身。发现过程完全出于偶然。 起初,父母注意到他们的“女儿”身上一直没有出现明显的女性特征,对孩子非常关心的父母将“女儿”带到医院进行了检查。结果医生非常遗憾地通知他们:孩子是一个男孩。原来,这个小男孩先天有缺陷,他的性器官隐藏在身体内部。在经过了三个小时的手术治疗之后,这对夫妇“捡回了”自己的儿子。  2、想打裁判自己先摔倒  摩尔多维亚“罗卡”俱乐部的主席在自己球队的一场比赛中看到裁判要判给对手一个点球时怒火中烧,愤怒的他难以抑制自己心头的怒火,从贵宾席上直接冲到了球场,决定要给这个讨厌的裁判一点厉害瞧瞧。结果经过训练的裁判在这场百米追逐中获胜,他甚至冲出了球场边界。而怒气冲冲的主席不但没有追上裁判,还从台阶上摔了下来扭了脚。  3、上校要农民装死“博”升职  卡赫林是印度西北部一支炮兵部队的上校。为了获得一枚“勇敢”勋章,他向上级出示了自己击毙叛乱分子的照片。然而,授勋委员会对他的证据的真实性产生了怀疑,因为照片上的人他们实在是太熟悉了,授勋委员会的一名成员几天前还刚刚见过这个人。  经过调查发现,卡赫林上校伙同自己的属下收买了当地的两名农民,让他们装扮成死者拍照。  4、火车无人驾驶自开三小时  意大利的铁路工人曾花三个小时的时间去追一辆没有司机的火车头———因为司机从车头摔了出来。  这辆没人驾驶的火车头以100公里的时速行驶了整整三个小时,沿途的所有车站在接到警告后都立即对这辆无人驾驶机车大开绿灯,直到它最后因为燃料燃尽而停在一个小站上。  5、天价蘑菇变垃圾  英国伦敦的几位富翁决定送给自己一件特别的礼物,他们想看看谁能买到世界上最贵的蘑菇。结果他们中的一个人花了5.3万美元买到了一朵850克的巨型蘑菇。但最终他们谁也没有成为这场比赛的胜利者。因为这些蘑菇在冰箱里放了四天之后,全都发霉变烂了。  6、狗粮被误当佳肴  以色列政府曾没收80000罐狗粮,这些名为“小狗爱吃的小鸡”的狗罐头被骗子们重新贴上标签,结果被许多人当成了一种高级菜肴。以色列最后不得不......

阅读全文(3098) | 评论:0

编程到底要不要学好数学?(2005-09-14 11:39:00)

摘要:[本人加注]讨论“编程到底要不要学好数学”之类的帖子见的不少了,这其实是一大误区,相当于战士在质疑该不该用枪作战。[转载]:::数学在计算机图形学中的应用:::[原文]Mathematics for Computer GraphicsGreg Turk, August 1997"What math should I learn in order to study computer graphics?" This is perhaps the most common general question that students ask me about computer graphics. The answer depends on how deeply you wish to go into the field. If you wish to begin to use off-the-shelf graphics programs then the answer is that you probably do not need to know very much math at all. If you wish to take an introductory course in computer graphics, then you should read the first two sections below for my recommendations (algebra, trigonometry and linear algebra). If you want some day to be a researcher in graphics then I believe that you should consider your mathematics education to be an ongoing process throughout your career. If you do not particularly care for mathematics, is there still a chance of working in the field? Yes, a few areas within computer graphics are not ......

阅读全文(6112) | 评论:2

[转]如何涉足游戏业(2005-06-26 00:32:00)

摘要:游戏行业可能是现今这个世界上能够找到的为数不多的迷人工作之一。在高科技的外表掩护下,她让你充分享受创作和玩耍游戏的乐趣。最近一些成功的传奇故事更是把她捧上了天。id Software 已经成了成千上万想要成为游戏开发者的家伙们每天必做的美梦。   你也是这帮家伙中的一员?好,就让我们来谈谈怎样进入这个迷人的行业,或者说你怎样做一只游戏。这两者确实存在着某些微妙的差别,不过为了不打击你宝贵的积极性,本文准备避开此类令人讨厌的话题。 万事开头难   “我从那里下手?”   这是每个家伙在开始时都要问的一句话。古人云:“三思而后行”,在你行动以前,先订出一个计划,这无疑才是明智之举。否则你只会成为一个迷失在沙漠里的亡魂,永远也找不到你渴求的绿洲。   如果没有一个明确、合理、可行的计划,你将不可能得到你所想要的结果,唯一的结果就是你始终无法完工。一个可笑的例证是作者本人,三年前我一步步走上这条绝路,其最重要的一个原因就是没人写这篇文章给我看。   话说回来,要一个新手搞出一个明确、合理、可行的计划,跟派一个婴儿去争夺奥运会金牌没什么两样。我对此的建议是先从小一点的计划做起。 选定目标   “我想在电脑游戏行业里找到一个工作。”   对这个目标的标准答案通常会归结为“做一个游戏 DEMO”。这是否确切意味着什么呢?   它代表着你将写一些程序,或是做一段动画,再不就是一堆音乐和音效。不过这可不是随便做做就行的,这些东西必须适合于视频游戏,最好它们就是一个具备商业加专业水准的视频游戏的一个部分。   对程序员们来说,这会导致出一个拥有 2D 或是 3D 外观的复杂引擎,一大堆必备的游戏辅助开发工具,比方说地图编辑器什么的。你做的工作结果越接近实际的游戏产品,就越有可能给潜在的雇主或是投资者留以更深刻的印象。比方说你做了一个平台式的跳跃游戏,有各种关卡、得分、生命、宝物等等,你实际上已经实实在在地证明了你确实理解一个视频游戏的基本工作过程,你还证明了你有着为潜在的雇主或是投资者去完成一个制作项目的积极主动性,最后还证明了你有坚持直到成功的毅力。   你的游戏产品越出色,它就越可能帮......

阅读全文(3793) | 评论:2

[转]What Language Do I Use[我要使用哪种编程语言?](2005-06-26 00:23:00)

摘要:这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。目录:1、C语言2、C++3、C++与C的抉择4、汇编语言5、Pascal语言6、Visual Basic7、Java8、创作工具9、结论--------------------------------------------------------------------------------  原 文:What Language Do I Use  译 者:Sunlxy  版 本:the first edition(Ver 1.0)--------------------------------------------------------------------------------  这是每个游戏编程FAQ里都有的问题。这个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。1、C语言  如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。  C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了......

阅读全文(4312) | 评论:0

[转载]电脑为什么能战胜人脑(2005-06-23 17:06:00)

摘要:http://www.sina.com.cn 2004年06月17日 11:00 北京科技报 http://tech.sina.com.cn/other/2004-06-17/1100376807.shtml  作为人工智能的产物,电脑最终战胜人脑证明了人的厉害。电脑能胜人脑不只是技术问题。计算机专家吴文虎认为,关键是让电脑模仿人的思考,赋予机器思维。而将抽象的理念转化成具体的程序,正是体现了人的智慧。归根结底,只有人才能发现人的弱点,进而战胜人自己。  没有思维的电脑怎样像人一样下棋。/////////////////   北京时间12日晚,中国首次人机对弈有了结果。国际特级大师诸宸再次败给了笔记本电脑“紫光之星”,加上8日已经输给“紫光之星”一盘,在两局的人机较量中,诸宸完败。  赖俊是清华大学的学生,在和棋后诸宸的比赛中,他有幸一直坐在诸宸对面———他负责操作“紫光之星”。他清楚地记得,当诸宸大势已去,在43手走了一步臭棋后,电脑突然跳出一个对话框:“这是一步坏棋,是悔棋还是继续?”因为是代替诸宸走棋,赖俊选择“继续”。“给人感觉很无厘头。”赖俊说。即便是在取胜关头还不忘幽默一把似乎只有电脑才会干出来。因为通过复杂的计算,电脑看到了人的思维没有触及到的几十步甚至几百万步之后,在数百万种的选择中已经确定了胜势。而人却无法精确预料到那么远,即便是再强的大师也无能为力。  “‘紫光之星’之所以强大,有赖于它的软硬件的强力组合。”清华紫光的邱聚兴表示。  “紫光之星”采用了世界领先的64位核心处理器,软件则是国际上最好的国际象棋软件弗力茨。据说在短时间内能精确算出胜率极高的第13步布局运算,相当于国际等级分高达2600分,超过诸宸约100分。  “还有一点很重要,关键是让机器像人一样思考。”计算机专家、清华大学的吴文虎教授认为。  超级计算机下棋的原理有两种,先是根据自身存储的棋谱库进行搜索,找出最佳方案;但如果找不到,它就会根据棋类规则自己思考,而这个思考速度是人类大脑所无法比拟的。  比如“深蓝”,它下棋的原理是:把所有的可能性化成树形图,计算每种可能的走法,把分数付给树形图的每个端点,分数越高局面越好。然后把分类回送到起始局面。得分最高的树杈对应着计算机的走法,而得分最低的树杈则对应对手的走法,程序确定了一步“好”棋后,一旦算出其他招儿法会导致较差的局面,就终止......

阅读全文(3504) | 评论:0