您好,欢迎来到星星旅游。
搜索
您的当前位置:首页程序员的七种武器——程序员的武器大家谈

程序员的七种武器——程序员的武器大家谈

来源:星星旅游
维普资讯 http://www.cqvip.com

维普资讯 http://www.cqvip.com

维普资讯 http://www.cqvip.com

程序员的武器 ●■———■ 家谈 秀的程序员,其实并不在于技能的熟 练掌握,丽是需要有良好的素覆,有追求完美 的锖神o ‘I_ 雷军。金山公司总裁兼CE0,卓 越网创始人,曾任卓越网董事 长。是国内早期软件开发人员。 。 一| 爱谈 雷军:我l987年进入武汉大学计算 ◎记者/闰辉欧阳碌 《程序员》:您认为什么样的程序员才 《程序员》:哪些技能是一个程序员必 备的基本技能? 机系学习,在大一和大二期间,我一直在 老师的实验室中做项目。大三、大四的时 候在学校外面为一些公司开发相关的软 件产品。l992年1月加入金山,写程序一 直写到l997年。1997年以后我逐渐由一 算是优秀的程序员或是程序蔫手? 雷军:优秀的程序员,其实并不在于 雷军:从技术人员的角度来看,我觉 得最重要的是数据结构,它最能体现开 发人员的基本素质。 首先是标识名的命名习惯。标识名 命名习惯决定程序后期的可维护性。现 技能的熟练掌握,而是需要有良好的素 质,有追求完美的精神。真正的好程序 员不是为了完成任务,也不是为了交付 产品而工作。他们想要要发挥自己的极 限,尽自己的最大努力把程序做得更好。 很多人把写程序看成是一种生活技 能,而不是真心喜欢。这种后果会导致很 难坚持。一些开发人员在面临选择的时 候常常会选择眼前利益以及轻松的工作。 个程序员向一个管理者的角色过渡。 《程序员》;请给我们的读者几点具备 实践意叉的指导, 雷军:对于还在学校的计算机专业学 生,首先他应当问问自己是否喜欢这个 在我们看到很多参加奥林匹克竞赛的程 序员,常常能非常快速的写程序,但是做 出来的软件很难维护,这就无法应用到 实践的工程和项目当中。 第二是数据结构的定义和常量的定 义,这两者对于开发人员来说是良好的 编程习惯。数据结构的定义很大程度上 决定了程序的可维护性和可扩展性。 行业。因为写程序是一件非常辛苦的事 情,如果没有发自内心的热情,是很难坚 持下去的。 其次是多实践,多到老师的实验室 去做项目。你编写的程序越多,对提高你 自身能力的帮助越大。 对于那些已经进入到软件开发行业 但总体上来看,做一个程序员能吃苦是 必要条件之一。 今天程序员要像大长今那样,用纯 洁、认真的心去做好每一件事情。其实长 远来看,程序员写好代码,其他收获也会 纷至沓来。一些人很在意眼前的利益,但 对于做开发这件需要长期积累的事情来 说,看重眼前利益很容易影响其开发功 力的修为。这里用大长今来对比,其故事 讲的是:一个古代的科研工作者,为了研 究膳食和医道的极致而不断追求。这种 接下来第三点是算法的说明、描述 及测试子程序。 第四点,我们在强调BugFree,也就 是调试能力以及编写无错代码的能力, 一的人,则需要永不间断地学习新的技术。 这是软件开发行业的特点,快速的发展, 也需要你快速学习。 程序员 :开发桌面软件与开发互 网软件有何区融t 定要常常不忘做边界条件判断。 高级一点的开发人员,要注重第五 雷军:开发互联网软件相对于开发桌 面软件而言,技术复杂度有所增加。其实 点,程序框架设计的合理性。 第六点是程序的运行效率,这对于 一并不是技术的类别增加了,而是需要关 注的点越来越多。另外,开发互联网软件 精神应该是我们当代技术人员应该具备 的特点。 如今,金山有七八百人的研发队伍, 个开发人员来说,已经到达一定高度 了。更高的境界则是在开发程序的时候, 还需要具备产品规划的能力,换句话说, 的反应速度加快,一旦发现问题时,修正 问题速度也相应加快,这时要对各种版 在我们当中的佼佼者,基本上都具备上 述基本素质,这也是我为什么会谈到这 些条件的原因。 良好的编程习惯能帮助你走向成功。 《程序员》:清您简单回顾一T您的程 序交生涯, 本的软件加强管理,快速响应变化。 当然,写web程序并非难事,但是要 成为Web技术的高手,却并不容易。■ 加・蠢序员・ 维普资讯 http://www.cqvip.com

今天,单兵作战的传统软件开发方式已 经开始向团队合作方式转变o 戳 王志东。新浪啊创始人。原新浪 啊首席执行盲兼总裁.现任点击 科技总裁。 ◎记者/欧阳绿杨福川 《程序员》:您认为什么样的程序员才 《程序员》:哪些技能是一个程序员必 术的敏感。在互联网时代做软件创业,敏 算是优秀的程序员或是程序蔫手? 备的基本彼能?那些是最重要的? 感的技术领域嗅觉将会给创业者带来很 王志东:对于程序员这个行业来说, 王志东:其实,程序开发与具体行业 大的好处。其三,在从事软件产品化当中 十年前的情况和今天的现状是不能同日 应用是息息相关的。同样是程序员,他们 积累了团队经验。这为我后来创办新浪 而语的。十年前,主流的开发语言很少, 在工作领域和工作模式上存在着极大差 和点击科技带来了很大的帮助。另外,程 程序设计的方法也相对单一,开发人员 异。现在的程序员已经向着专业化的方 序员的出身也让我非常重视技术人员, 很容易就能够掌握这些语言的基本功能 向发展,不同的领域对每个程序员必备 从而打造了良好的研发管理体系。 和要点。现在随着程序语言不断发展和 的技能的定义和要求不一样。比如说编 《程序员》:您如何通过一个简单的问 变化,主流程序语言出现了多元化格局, 程语言,有的行业要求c++的基础很扎 题驯斌一介人是不是程序蔫手 各种开发框架和架构层出不穷。 实,有的行业则要求熟练掌握Java。对于 王志东:我会让他讲述值得回顾的工 个优秀的程序员,首先是应该具 一一个大的软件工程项目来说,其涉及面 作或项目经历。当然,应试者的回答可以 备非常强的学习能力。信息技术是在不 极广,在不同的开发阶段对程序员要求 反映出许多重要信息。比如,他是否会热 断发展的,而且发展速度也越来越快。作 很不一样,每个人都要发挥自己的特长。 情洋溢地讲述自己的开发经验。这样可 为一个程序员只有通过不断的学习,才 《程序员》:能否简单回忆一T您的程 以判断面试者投入的精力与热情。我们 能掌握最新的技术,才能准确把握行业 序员生涯,并结合基本彼能谈谈您自巴 需要热爱编程、热爱程序员职业的程序 的发展趋势以及对自己所在的行业保持 在这介行业的经验? 员。此外,我也非常希望点击科技的员工 一种强烈的敏感度。 王志东:我从大学开始编程,当时使 有更多编程以外的兴趣与爱好,让他们 其次,信息时代查找和使用工具的 用的编程语言以Basic和宏汇编为主,以 张扬个性,充分展现自己,让他们能够拥 能力。一名优秀的程序员平时可能会主 C ̄IIC++为辅。真正的职业化程序员生涯, 有更丰富的创造力。 动去收集和积累一些与之相关的资料, 则是从1 989年进入北大方正开始,到 《程序员》:请给我们的程序员读者几 当需要这些信息时,可以随时查阅,然后 1994年结束。当时的编程以单兵作战为 点实践指导。 将它用到实际的工作中去。 主,目标性也不强。直到在北大方正参与 王志东:我认为基本功非常重要。非 除此之外,合理利用外部资源的能 产品化工作。1994年后,我逐渐向职业 常熟练地掌握一种编程语言,比如说c++ 力也很重要。因为互联网上有各种各样 经理人的角色转变,确切地说,1997年 或者Java是基本功之一。此外,数据库的 的技术社区,我们可以在这些社区中去 我才结束职业程序员生涯,完成了我的 基本原理以及数据结构的基本思想都是 寻求那些能够给予我们帮助的人。 最后一行商业代码。当然,我在程序员中 非常重要的基础理论。 当然,非常重要的一点是团队合作 受益匪浅,有许多收获。 另一方面就是动手实践。要想成为 的能力。随着软件的产品化,程序员单兵 其一,养成了程序员的理性思维习 一名合格甚至优秀的程序员,仅仅只做 作战的方式开始向团队合作的方式转变。 惯。写程序和管理某些地方极为相似,比 书上的练习远远不够,必须亲自动手实 任何好的软件产品,都必须在一个团队 如合理利用有限资源达到预期目标。这 践。只有在实际动手过程中你才会遇到 中以共同协作的方式来实现,需要大家 个过程中养成的思维习惯给我带来了很 书本上都没有的问题,学到书本上学不 的共同努力和配合。 大帮助。其二,让我始终能保持一种对技 到的知识。■ 维普资讯 http://www.cqvip.com

写程寄就像练武功一样,内力越强.盛 就越大。 簿精。  周鸿幸备。3721网络创始人,曾担任雅 ◎记者/刘洪洁 程序员 :周总您好,矛厂口丁在您眼 里,什么样的人才是优秀的程序员? 虎中国区总裁,现任奇虎公司董事长, 天使投资人。 来反而无法适应新的技术发展。 大学里我的专业是计算机,我花了 很多功夫在基础课的学习上,也打下了 良好的基础。还做了很多实践,包括一些 课题和软件,对我影响最大的语言是 Borland公司的Turbo C和Turbo Pascal。研 ,口.丁什么,-口丁题? 周鸿榨.其实我比较反对这种所谓高 手的说法。所谓术业有专攻,即便一个人 在某个领域内有所专长,也很难冠以高 手的称号。只问一个问题就判断一个人 周鸿榨.我认为优秀程序员应具备的 素质主要有三点:第一,要有扎实的基本 功。现在出现了很多新技术、新工具、新 语言以及新平台,但是万变不离其宗,要 深入理解数据结构,操作系统、体系结构 这些基础知识。第二,要有比较开放的心 的真实水平,显然比较困难,但是如果只 允许问一个问题的话,我想我有两个选 究生期间我开始接触VC,我很仔细地阅 读了VC提供的源代码库。在研一的时候 与同学合作了一个反病毒硬件,确切地 说,是把软件固化在硬卡里,当时全部用 的是汇编语言,这也使我进一步了解了 IBM 386体系。我当时还傲了一件事,就 是把DOS系统反汇编,所以把DOS操作 择:如果考察基础,我会让他把C代码对 应成相应的汇编语言;如果考察经验,我 会让他讲一个曾经傲过的项目,看看他 态,不断学习,在坚实的基础之上融入新 的东西。第三,有韧性,要坚忍不拔,还 要耐得住寂寞。因为编程对于很多人来 是如何思考和解决问题的。 《程序员》:请您给想进入软件行业的 学生.以及g,/刚踏八这个行业的新人一 说都是件苦差事,如果过于浮躁,就很难 有所成就。 《程序员》:您认为程序员必备的基本 技能是 么 系统的源代码也通读了一遍。我的感触 就是,如果把底层深刻的东西弄清楚,即 些发展的建议。 周鸿栉:不要急于求成,先把基础打 好。写程序就像练武功一样,内力越强, 周鸿林:除了大学里所学的那些专业 课,掌握操作系统级别的知识也很重要。 可能现在的语言越来越先进,使得很多 使将来接触新的体系结构,包括新的操 作系统、新的语言,你都会发现这些东西 很容易掌握。 我研究生毕业后到了北大方正,在 大型主机傲Unix系统的开发,第一次接 成就越大。所以初学者应该先把基础知识 掌握好,以增强“内力”,越有“内力”, 就越能适应各种变化,将来用哪种编程语 人写程序的时候不去关注太多细节,实 际上如果你不了解每行代码如何起作用, 你也就很难真正灵活运用代码去控制机 器,所以说,对汇编语言和机器体系结构 言都只是“招数”而已。初学者要多花时 间去阅读已有的源代码,很多前人留下来 的代码都是值得借鉴和学习的例 还要 注重实践,如果没有编过1O万行或者2O 万行代码,就很难成为好的程序员。 现在有种这样的说法:程序员吃的 触这些内容,也没有感觉到特别大的障 碍,我想这与之前打下的良好基础是分 不开的。在北大方正,有个比较大的机会 就是,第一次接触了互联网,后来开始傲 互联网软件。当时很多人应用互联网,都 比较着迷表面上的东西,比如搭一个web 的了解也是非常重要的。 《程序员》:清您谈谈您s程序时期的 尼含重要历程。 周鸿榨.我接触计算机比较早,是从 中学开始的。我当时用的是苹果机,用 是青春饭,我认为这种言论是错误的。实 际上,有些程序员在编程的道路上不能 走得很远,主要是因为他们基础不好,不 能适应行业的变化,与年龄无关。我认识 一服务器,或者写一段网页,但是我把比较 底层的互联网源代码,基础的协议都研 究了一遍,对互联网有了更深入的理解, 为后来傲3721插件打下了很好的基础。 《程序员》;如果只允许您问一个问 Basic语言编程,现在看来,这种教育是 失败的,从结构化编程的角度来看,Basic 语言注重玩弄一些并不重要的技巧,包 括所谓的“一行程序”和“变量名越短越 些优秀的程序员,4O岁了还在写代码, 他们的黄金期很长,原因就是技术基础 好”,那一代有些优秀的Basic程序员,后 题,去判断一个程序员是不是高手,您会 比较好。■ 42・蠢序员・ 维普资讯 http://www.cqvip.com

大拳 《 吴文虎。清华大学计算机系教授. 博士生导师。主要研究方向为语 音识别及语言理解等。 ◎记者/欧阳碌 题抽象化、形式化,建立数学模型。这就 必须要求程序员懂数学。程序员也分层 次,比如高级程序员、高级构架师,无论 到哪个层次,都必须具备这种能力。所 以,基础很重要,特别是数学基础。而且 这个数学不是死记硬背、生搬硬套,而是 徐明星:我个人觉得,学习计算机技 术并从事相关领域的工作,是最有趣味 的——因为你总有新东西要去学习,需 要活到老学到老。因为计算机技术发展 非常迅速,你总是能够接触到新知识、技 术和应用,总会发现新的灵感。 吴文虎:另外,这个基础不是建筑学 意义上的基础,而是能够不断成长的“生 物学”意义上的基础。编程中的数学能力 要落实到解决实际问题上,纸上谈兵是 不行的。编程的创造力表现在观察能力, 思维能力和实践能力上。 徐明星:除了智商外,编程也需要情 商。现代软件、商业软件都不是一个人单 枪匹马能够完成的,通常需要多人合作, 所以协作能力非常重要。 《程序萄》:一个没有机会i大学的人 恋从事软件开发,补修 些课程比较重:要 徐明星。博士。清华大学计算机系 剐教授,参与了国家重点攻关项目 怎么把数学和实际问题结合起来。就像 徐明星讲的《信号处理原理》课,需要很 多的数学知识,还需要较强的编程技术。 和863青科技项目的研究。 《程序员》:吴教授,您认为一名优秀 的程序员需要具备什么知识,成力一名 徐明星:我们要求学生不要把数学知 识当作教条——这个公式解决这个问题, 那个公式完成那个任务。而是在学习并 掌握数学知识的过程中,培养自己的数 学思维。比如我们在程序设计中,经常需 要用到构造性的思维方法。这个方法,和 数学中的加辅助线、引入辅助函数等思 优秀的程序员要微哪些准备? 吴文虎:我认为基础很重要。编程是 一个复杂的、脑力劳动与体力劳动结合 的事情,它需要深厚的基础。这些基础不 仅包括文化素养,也包括数理化文史地 等各个方面。 徐明星:是的,其中包括文史地等社 维方式是相似的。我们的程序设计也需 要这样。所以,理解了这种构造性的数学 方法,对于我们编写高质量的程序,是特 别有意义的。一个高质量的程序,应该让 人赏心悦目,读程序源码就应像看一篇 好的小说,让人心情愉快。高质量的程 序,让你可以清晰地看出作者思路。 《程序员》;因为计算机技术的快速发 展,很多入说高校的计算机课程设置与 会科学的内容。从某种意义上说,程序设 计也是一种艺术,需要艺术创造力。 吴文虎:软件开发是具有创见的、复 徐明星:他可以直接通过实践来解决 发现的问题,因为这种人很多都没有大 量时间。 吴文虎:这是我们课程教学小组一直 关注的问题,我们叫它“任务驱动法”,通 杂的劳动。其中,数学基础非常重要。我 在和一些中职和高职老师的交谈中,常 常听老师谈道,学生一听数学就头大。我 说那怎么行?那怎么可能学好程序设计? 《程序员》:现在的程序员不像冯・诺 过一些生动的问题,帮助学生理解计算 机技术的核心思想。 徐明星:任务驱动方法有些像近几年 流行的英语学习“逆向法”。每解决一个 问题,水平就提高一点,水平的提高也可 实际应用脱节 您二位怎样看待? 伊曼时代 只有数学家可以编程.您如何 看待这博事’ 吴文虎:是有这样的现象,我们的课 程(指给大一学生开设的《程序设计基 础》课)也在不断调整。但是在学校里, 重要的是打基础。我们通过具体的课程 吴文虎:数学实际上是一种思维方 以切实感受到!这一点对自学者非常重 要。所以任务驱动法通过解决实际问题 来学习专业知识,这样更有兴趣,也更能 式。计算机先天与数学有关系。程序员是 用计算机这个人类发明的智力工具来解 决问题的,要解决问题,就必须善于把问 传授科学的世界观和方法论,也就是我 们要授人以渔,而不是授人以鱼。 持久,让程序员获得更多成就感。■ 维普资讯 http://www.cqvip.com

咽l 不要急功近利,其实有时慢就是快,快 反丽是慢o 大家谈 刘建国.搜索引擎Baidu的创始人之 一。曾担任百度公司CTO.是国内搜 索引擎技术的专家。 ◎记者/刘洪洁 《程序员》:刘老师您好 请问在您眼 里,什么样的人才是优秀的程序员? 刘建国:我的编程历程其实很平凡, 加入百度之前,都是自始至终按部就班 然的过渡。 程序员 :如栗只允许您闩一介问 刘建国:我认为,判断一个程序员是 地走过来的。在大学时期,主要是打基 础,我上大学的时候条件不好,动手机 会不多,尤其是大学的前两年。后来从 题,去判断一介程序员是不是蔫手,您会 ,刁什么,习题7 否优秀可以从两个方面来考察:软件能 力和硬件能力。当然,我这里的“软件” 刘建国:我觉得一个问题是远远不够 的,即便是一组问题,也很难问出来。我 和“硬件”并不是指计算机软硬件,而是 指人的素质。硬件方面的素质包含两个 方面:首先,扎实的基础,比如对于计算 机科学的基本知识,包括操作系统和体 大三开始有一些上机实践的机会,内容 主要是完成一些课程作业。直到现在我 还认为,课程作业是很重要的实践机会, 不容忽视。大学毕业后,考上了北大的 研究生,实践机会更多了。我的研究方 向是互联网,研究广义的网络,包括网 络协议的分析,网络服务器的实现,以 面试员工的时候,主要考察两个方面,就 是我刚刚提过的硬技能和软技能,在硬 技能相当的情况下,我更偏重软技能的 系结构的掌握;其次,较强的动手能力, 善于把想法付诸实践,并且保证作出高 质量的软件。软件素质同样包含两个方 考察。硬技能决定起步,但软技能决定 发展,如果一个人有较强的学习能力,善 于总结,敢于承担责任,他就会成长得 很快。 《程序员》:请您给想进八软件行业的 学|,以及刚刚踏入这个行业的新人一 面:第一,善于钻研和学习,喜欢技术, 只有自己真正感兴趣 才会融人其中。能 够自我激励和管理,自己给自己设定目 标,而不是等待别人去安排任务。第二, 要有较强的团队协作能力,现在的时代 已经不是单打独斗的时代,所以一个优 及网络应用方面的内容。之所以选择这 个方向,是因为我认为,这些内容是底 层的东西,相对比较基础,只有真正搞 技术的人才能做,而且当时网络的发展 处于方兴未艾的阶段,很有前景。这个 阶段,我在编程的时候,比较注重总结, 些发辰的建议。 刘建国:我认为最重要的就是注重基 础知识的学习,形成扎实的基本功,并 且在工作中不断培养自己的软技能。每 秀的程序员,必须善于与人合作,在团队 中起到促进的作用。 《程序员 :您认为程序员必备的基本 技能是什么? 我会把自己编程的一些优点和不足都记 录下来,从中提炼有价值的内容,这使 我的编程技能不断进步。 毕业之后留校,成为老师,经常有 机会带学生做项目。无形中就做了很多 个阶段都有最重要的事情,要尽力把手 中的每件事都做到最好,时刻激励自己, 不要急功近利,其实有时慢就是快,快 反而是慢。如果现在一步步稳扎稳打,以 刘建国:我认为,素质是最重要的, 没有必要具体到某种技能上面。编程语 管理的工作,包括项目管理,还有整个 系统的设计,这为以后在百度做管理的 工作也打下了基础。后来接触互联网比 较多了,感觉搜索引擎是个很好的工具, 后可以做得很快,反过来如果现在做得 过急,那以后反而会进步得很慢。如果 具体到搜索引擎领域,我认为进入这个 领域没有特别的门槛,只不过涉及的内 容比较广泛,包括分布式数据、人机交 互等比较难的问题,但是只要具备足够 言只要精通一种,就可以触类旁通,不一 定非要掌握某种语言。你可以精通面向 对象语言如C抖,也可以选择Java,只要 基础扎实,善于学习,就可以取得一定的 于是就慢慢转向了搜索引擎领域的研究。 然后就离开了北大,加入百度,带领开 发团队去写代码,搭建百度的搜索引擎 成就。 《程序员》:请您谈谈您s程序时期的 几个重要历程。 的软技能,无论你起点如何,你都能够 平台,从技术到管理,形成了一个很白 做好 一 44 程序员- 维普资讯 http://www.cqvip.com

大家谈 梁肇新.现任北京世纪豪杰计算机 技术有限CEO。是媒体播放软件 。超级解曩。的作者。 ◎记者/欧阳碌 《程序员》:我看过你那本书《编程高 认识,对于程序员开发能力的提高起 到的作用很小。 《程序受》:从第一个阶段.到第二个 阶段.您花7多长时间? 梁肇新:调试。我相信无论什么程序 都是调试出来的。我们这儿有个程序员, 一手箴言》.很有宕发.郅本书中提到的内 客现在依然有效吗?您认力什么样的人 是程序高手? 开始是系统管理员,后来因为碰到一 个问题,他花了很多时间来实践,最后 解决了,我认为这样的人可以做开发。当 然,在解决实践问题的过程当中,也需 要讲究方法,这也是我在前面提到面向 对象方法的原因。在学校里,我们都很 喜欢各种理论,各种新概念。但是出来 做事,能真正解决问题的才有意义。这 也是我认为调试在程序设计中最为重要 的原因。 梁肇新:不行,那本书太旧了。说起 来比较惭愧,已经很长时间没有更新那 本书的内容了。尤其是现在写程序的时 间也没有原来那么长,将更多的时间花 梁肇新:两个月。那时候在学校花 费了很大的精力来阅读源代码,当时 Unix下的一部分的源代码被我全部用 手抄写下来,记了足足三大本(梁先生 一在了管理上。 我认为真正的程序高手是能够解决 一边说一边比划出三个笔记本的厚 度)。当然,那个时代和现在已经不一 切问题的人。也就是说,任何技术难题 样了。 刚才说到从个人编程机能的角度。 在他们那里都能得到解决,当然,这种人 并不多见。 序员 :骨您谈谈自已在从事软件 另外从时代发展的角度来看,也分为 了不同的阶段。早期DOS流行的时候是 《程序员》:贵公司招聘时,您怎样甄 选人才? 开发中的见介阶段。 硬件时代,那个时候的计算机系统非 常简单,当然只是相对现在简单,琢磨 透了也就能够成为编程高手了,当然, 也需要懂一些汇编语言的基础。随后, Windows带来了软件时代。这个时候的 梁肇新:这种时候总是要因人而异 的。我们需要的是适合某个职位的人,如 果招聘员工做客户端程序开发,就要C/ c++比较好的人员;若是做网络平台开 粱肇新:从个人编程技能的提升角 度看,写程序主要分两个阶段:一个是 在学校的阶段(梁先生这个时候,做了 一个手势,指了指三寸厚的桌面),学校 发,则要了解.NET技术,因为我们公司 的产品是基于.NET的。 《程序员》:如果让您通过一个问题 的阶段相当于在桌面以下,另一个阶段 则是桌面以上,从桌面一直到想有多 程序员才开始大量生产程序,那个时 代的程序员一般都需要掌握Windows 高,就有多高(这时候,梁先生看了一 眼天花板)。 一的平台机制,同时掌握一种如c/c++之 类的编程语言,了解面向对象的方法。 这里指的是方法,而不是思想,解决问 来鍪蹦一个人是不是程序高手.您会问 什么? 般人很难在学校的那个阶段跨 梁肇新:病毒!是不是做过病毒? (笑)换句话说,是否自己写过杀毒软件。 越断层,这是需要用实践来积累的。写 程序没有太多窍门,必须要投入大量 题总是靠方法,而不是思想的,我更偏 向于实践。再接下来就是当今的网络 能做病毒的人,一般都是对计算机系统 比较了解的人。就像前段时间影响网络 的精力到实践当中,才能成为真正的 编程高手。一般很少有在校学生能够 突破这个断层,有的那个部分一般都 在学校上学阶段做了不少项目。而通 过读书的方式,只能加强理论方面的 时代,程序员必须懂得页面编程,就好 比我们刚刚发布的产品,也是需要基 的“熊猫烧香”病毒,那个作者应该还不 错。当然,那个程序本身写得并不太好, 从开发的方式可以看出来,他是用Delphi 于Web来完成的。 《程序员》:您认为一个程序高手最| 要的技能是什么 写的,有些重画写的不太好。■ 维普资讯 http://www.cqvip.com

一任伺一瑷专精的技术都可以在某个领域 发挥它的独特效果,任何广博的知识都有助  于开发人员找到更合理的解决方案o 太'誊 l谩 周爱民(aimingoo)有十余年的软件开 发.项目管理和团队建设的经验。现 ◎记者/欧阳碌 程序员 :昔璇璇您所定位的优秀程 序员应该有哪些技能 您是怎样理解程 序受t种武器的? 于盛大网络任平台架构师一职。 或者工具。例 ̄nSQL,几乎所有使用高级 语言(我当然不是说它比别的语言好而 造卫星也是在面向过程的时代上的天。 也就是说,面向过程也可以组织足够复 杂的程序。 显得“高级”,而只是存在着这么一个分 类)的开发人员都认为SQL是“一种相当 周爱民:一般来说,剑客用剑、刀客 用刀,所以所谓七种武器,用在手上的, 或许也就一件两件。但如果以技巧、技法 论,却不是一件两件兵器就可以胜出江 湖的。例如不懂刀的剑客,遇到用刀的人 时便不知道如何刺击了。因为要先知其 长短,才能避强而击弱。 不懂刀的剑客与不懂剑的刀客对打 然而,所有这些都并不能否认面向 对象的价值。面向对象是对事物的本体 简单的脚本”。但事实上,我的朋友中就 有能把SQL用到出神入化的,他能由SQL 特性与行为特性的高度抽象,它将数据 结构从“死的内存”变成了“活的物件”。 面向对象的思想使我们在增强对现实的 表达能力的同时,避免了复杂数据结构 的写法来推断数据库设计的失败,或者 反过来,为特定的数据库系统写出最优 化的SQL。重要的是,这个朋友会针对不 同的存取环境、网络结构而设计特定的 数据库和SQL,以达到最优。 优秀的程序员是对工具没有偏见的、 能适应场合活用语言的人;而程序高手 则基于这个前提,并专精其一,进而通一 晓十的人。 《程序员》:您认勾什么是程序员的基 本技能?哪些是最重要的? 带来的藕合。由面向对象、信息隐藏和接 口抽象三个相关联的概念,构成了整个 软件体系设计的理论基础。这三个概念 中,面向对象是与软件开发人员关系最 密切,最容易理解的,因此它是使你成为 真正的程序员,以及从程序员走向程序 设计师的最佳门径。 《程序受》:如果用一个问题来测试一 个人是不是程序高手,您会怎样同? 起来,大概会如同演舞一般,各练各的招式。 所以,优秀的程序员或程序高手并 不是通晓七种武器的全才,必然是精通 其一,且概知其它。与江湖不同的是,我 们事实上并不拿一种武器去与拿另一种 武器的人比斗。我们的对象是一个软件, 或者某个工程。我们要克“敌”制胜,而 敌是死物,不是活人。换言之,我们了解 周爱民:“七种武器”中,数据结构是 成为真正的程序员的基础,而面向对象 思想则是门径。 程序员能否在软件开发这条道路上 走下去,很大程度上取决于他对数据结 周爱民:我的问题是:你参与或组织 这些技术方法的目的,并不是要站到擂 台上去比较谁懂得多,或者谁精通什么。 我们只是要做一个软件或者具体的工程, 过怎样的开源项目,如何评价它? 在程序高手这个级别上,能脱颖而 出的是那种有合作能力的、思想开放的 优秀人才,而绝不是技术高下的简单辨 别。而观察他对开源项目的经验和兴趣, 是一种不错的方式。 这里说的不是“把源代码公开”就是 开源项目了。我说的是真正有组织的、持 续的、公开源码的项目运作。之所以做这 么多的限定条件,是因为现在很多人都 那么所谓技术方法,只要对这个软件或 工程有效即可。因此,用汇编写内核的人 不必看不上用c写协议层的人,用c++写 构的了解。任何一种新的语言,或者任何 一种新的体系结构的出现,都可以在数 据结构上找到相关的解释。 因此,程序员如果能精通数据结构, 那么相当于拥有了“以不变应万变”的资 平台应用的,也不必看不上用SQLL ̄脚本 的人。放在一个团队里,汇编、C、c++ 和SQL在一个项目里可能各有其用,非得 让这些人分个高下出来,最终是项目的 失败。 本。对此,《人月神话》中用一句话指出了 关键:“数据的表现形式是编程的根本”。 对象是数据结构抽象的一种,但并 不是唯一的一种。从这个角度上来说,对 象并不是唯一的编程之道。我曾经说,人 已经接受了“源码公开”的思想,但这仅 表明这个人有了分享的精神,并不表明 他有组织和管理项目的能力。开源项目 任何的一种工具都有使用它的境界。 很多人看不到这一点,而轻视其它语言 46-墨序员, 维普资讯 http://www.cqvip.com

团 的生命力是在项目管理者在长时间的维 一方面又说“千里马常有而伯乐不常 知识。但是同样的例子,如果你做游戏开 护过程中得以延续的,同样的,项目管理 有”。问题在于,马不能主动地找伯乐,人 发中的网络传输或者服务器端,就涉及 者也在这个过程中历练了自己的技能与 又为什么不能呢?马困干厩而显凡俗,人 不到人体工程学。所以这里要说的是,现 心性。而这些,正是高手在成长中不可或 立于世可显不群。有表现自己不凡的品 在游戏开发过程被分解得很细,不同的 缺的要素。 质的空间而不施展,根本上说还是能力问 技能在游戏开发领域中都可以找到位置, 《程序员》:您在成为一个优秀的开发 题。所以学会沟通、交往,而不是沉迷于 但不要指望能什么技能都精通,然后一 人员过程中,邢尼含阶段是最让您难忘的? 代码,可能是第三个阶段的重要瓶颈。 两个人就搞完整套游戏。 周爱民:我做程序之初,只是喜欢而 在第三个阶段,你可能面临非常多 大多数游戏开发能涉及到的领域, 已,其实真的是楞头青。这个阶段看来, 的选择。例如技术主管、项目经理或者设 在一般的软件开发中也同样会涉及到。 就是代码不规范、接口随意,并且经常会 计师、分析师之类。但你应该会发现,这 例如数据库,很多人认为数据库与做游 推翻重来。“代码不规范”是非专业人员 所有的选择都将使你被推到团队的前面, 戏风马牛不相及。但事实上,在游戏开发 的通病,我在很长一段时间里,都有“自 你必须面对整个团队,以及项目的干系 中,后台数据库的存取效能、分布特性等 己的风格”,所以还专为这个跟以前的部 人(例如客户)。而能否胜任这些,取决 是严重影响游戏体验的。所以你在传统 门经理争辩过:我同意格式化呀,但为什 于你的综合素质,而非单一的软件开发 软件开发中做得很好的技能,在游戏开 么要按你说的格式呢?“接口随意”是没 技能。 发中一样用得到。 有设计就开始写代码的表现,而“经常推 最后你得记住一件事,上面的这个 然而不同之处还是有的,其中突出 翻重来”则是其后果。非专业人员最初通 过程,不是一朝一夕,也不是一年两年, 的几点表现在视觉特效、交互特性和网 常就是一个人开始练手,自己给自己写 而是五年十年的时间。在这个过程中,所 络性能。 代码,接口怎么写自己都能理解,所以专 有成功者都必须具备的,是认真的态度 一般性的软件开发中,我们会遵从 门去设计反倒是麻烦。但到了团队里面, 和专业的精神。 操作系统的惯例为用户提供交互体验, 过于“独特的”程序接口则是灾难,因为 《程序员》:请勾开发人员提供几点实 但游戏正好是希望给用户独特的体验, 你得去给每个人解释这个接口的用法, 践性的指导 因此通常有不同的交互特性。这可能 说服他们使用这种接口。而这往往会遵 周爱民:把语言比作“称手的兵器”, 小到一个按钮的设计,大到整个操作 行强势原则:你要么屈从“更标准的接口 那么基本技能则相当于内家修为。练石 的流程。这种交互特性又与输入输出 设计”,要么团队就放弃你的这些代码。 锁也能练出个李元霸,这说明单单靠“不 设备的性质相关,例如手机的屏幕与 做程序再熟练,过不了上面这个阶 停地写程序”,也是能写出高手来的。但 键盘与PC就不一样。所以游戏对整个 段就谈不上合作,也谈不上设计。一个人 是,如果一上手就给个千百斤的大石锁, 系统输入输出的研究,与操作系统和 写程序,无需多少设计的功夫。但一个团 李元霸没练成便先牺牲了。所以凡事都 一般软件是不一样的,根源在于它要 队合作,没有设计就不行。因此我认为写 有个循序渐进,所循的这个“序”,并不 提供独特性。 程序的第二个阶段就是团队开发和专业 要求每个人都相同,别人的经验,大抵上 游戏对网络层的研究,也与传统软 设计。而这两点,正是从项目管理和技术 适合做个参考。而我也不能言讲什么指 件不一样,但这不是独特性导致的,而是 实现上来组织大规模开发的不二法门。 导性的东西,所以上面所谈,大家尽可以 用户量级的问题。大到银行、电信这样的 因此,我事实上在这里想说明的是:相对 当经验来看,当参考来用。是实践,却不 系统中,人们对数据传输的效能通常是 于个体开发,团队开发是更高阶的技术。 是什么指导。 由数据库系统和硬件系统来保证的,因 在你学会了团队开发,能够轻松地 程序员 :昔您谈谈微游戏开发与一 此你只需要研究数据和库的优化。但我 与人合作,或组织小型的开发团队时,要 般的软件开发,在技能上的要求有 ̄4-么 们总不能让用户花钱买完MS SQL、架完 想在这个行业中安身立命就并非难事了。 不同? 专线再来玩游戏,所以游戏开发中要在 至于用哪种语言,由于你是“优秀的程序 周爱民:游戏开发涉及的领域是比较 相当高的数量级上,自己来解决数据传 员”,因此语言的选择是应项目之所需 复杂的。例如对界面交互,一般软件开发 输和数据库使用中的问题。然而游戏是 的,所以不是接下来要谈的关键问题。 中有可用性测试,而游戏中叫可玩性测 多用户、强交互的系统,因此很快爆发出 第三个阶段是你能否在行业中脱颖 试。可用与可玩 就已经是两种不同的界 来的问题是分布问题、并行问题等等。这 而出的关键。但这个关键与技术无关,而 面交互设计理念了。一般软件开发很少 些原本在其它开发中交给某个专属领域 是一个人的秉性和个性的问题。我们一 在界面部分应用人体工程学的知识,而 去解决的问题在游戏中都需要用自己的 方面会很阿Q地说“酒香不怕巷子深”,另 游戏界面交互设计中却经常要用到这种 方法去解决。■ 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- stra.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务