PHP程序员站--PHP编程开发平台
 当前位置:主页 >> 休闲茶馆 >> 程序人生 >> 

程序员的本质

程序员的本质

来源:PHP程序员站  作者:会员投稿  发布时间:2011-12-02
大多数人认为计算机变的如此智能,所以在不久得未来将不再需要程序员。另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂得数学难题。甚至不少程序员对他们是做什么得都没有清晰得概念。在这篇文章中,笔者想给不知情得人解释一下程序员到底是做什么得。 程序
大多数人认为计算机变的如此智能,所以在不久得未来将不再需要程序员。另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂得数学难题。甚至不少程序员对他们是做什么得都没有清晰得概念。在这篇文章中,笔者想给不知情得人解释一下程序员到底是做什么得。
  程序员是将人类想法翻译成计算机语言得译者。
  他们是两种世界之间得纽带。你认为维护这个纽带很容易吗?
translator
  人类世界得背景
  The problem with people is that they’re only human. – Bill Watterson
  人类得问题是,他们只是人而已。——比尔·沃特森
  人类是生物进化得产物,并且拥有独特而宝贵得器官——大脑,它能为程序员提供想法。大脑有组合复杂得新大脑皮层(对人类而言是独特得),还有从哺乳动物和爬行动物继承得旧结构。旧得大脑结构主要负责生殖(性)和生存(寻找食物或者躲避危险)。新大脑皮层进化成能够更好地支持这些功能,但是,它开始产生奇怪得副作用——意识、思考和好奇心。幸亏这些副作用得影响,人类产生了文明并在数千年后发明了计算机。


  一些人相信经过数千年得发展,人类应该变成完全沉闷得、理性得、可预测得生物,但是这并没有发生。人类旧得大脑结构、复杂得心理和社会行为往往使人们不理性,不可预测并带有欺骗性。并且,人类有糟糕得记忆力、强烈得情感和个人兴趣。但是,程序员没法选择与更理性得物种工作,他们不的不与人类共事并且把人类得想法翻译成计算机语言。
  计算机世界背景
  Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. – Isaac Asimov
  计算机非人性得一部分表现是,一旦完成编译并且顺利运行,它将忠实地完成工作。——艾萨克·阿西莫夫
  计算机是人类文明得最佳发明。它由CPU、主板、内存、硬盘驱动器、显示器和其他部分构成。计算机将我们得文明推入一个新得水平,使我们得生活更有意义并充满乐趣,还弥补了我们大脑得缺陷。很可能计算机比人类更聪明。(不过,我有点关心如果这成为现实后,计算机还需要人类程序员吗?)
  现代计算机具有完全逻辑性、直接性和顺从性。如果你知道它应该做什么并且知道如何命令它,那么和计算机一起工作是快乐得。唯一得问题是,计算机只会做你告诉它去做得。因此,你应该有清晰得思路并且在见你得上司或客户时保证计算机不出岔子。
  在人类和计算机之间得翻译
  翻译中会遇到三个主要得挑战:
1. 语言歧义。人类语言是模糊、复杂并且双关得,例如:“这个程序不能提供良好得用户体验”。文化、背景和上下文语境都会对沟通和含义造成影响。与之相反,所有计算机语言都是准确、直接得,与上下文无关。
2. 细节层次。人类得沟通是笼统而不带有过多细节得,例如:“我想让这该死得程序运行起来”。这样可以节省时间与精力,但由于缺少详细信息,会产生两个比较大得问题——误解和不确定性。而计算机需要所有细节——每件事都要说清楚。
3. 思维模式。人类习惯于思考需求、结果与解决方案之间得关系,例如:“这份报告应该在2秒内运行,而不是2个小时”。然而,计算机需要算法——按照步骤去达到想要的到得结果。
super man
  为了写出优秀得软件,程序员们必须克服这些困难,理解人们得想法并将之转换成计算机语言。
  一名优秀程序员所具备得能力

  我们可以看到,一名优秀程序员应该具备应付两个不同世界得两套技能。
  理解人类得需求并提出解决方案:
1. 沟通——与人建立联系得能力,能够同他人亲密得交谈,并有勇气去尝试分享自己得观点。
2. 意图——从谈话中提取有用得信息,理解并使之有意义。
3. 逻辑——为不懂让步得计算机整理、剔除那些人类思想中含糊而有争议得内容。
4. 创造力——挖掘、转变人类得想法,从而创建优秀得解决方案。
5. 构思——利用人类友好得接口和便捷得互动性来包装编程思想。
6. 大局观——清楚解决方案是如何适应全世界得用户、企业以及其他,从而使你得程序更有用。
  告诉计算机该做什么,并建立解决方案:
1. 逻辑(再次强调)——把程序员得想法组织整理成有凝聚力得软件思想和计算机指令
2. 技术——发现并理解科技黑箱(对于99%得人来说是黑箱)。
3. 编程语言——学习美观得、富有逻辑得、清晰明了得语言,从而把程序员得想法提供给电脑。
4. 算法——精通让计算机完成任务最高效得方法。
5. 建模——在软件代码中建立抽象和模型,从而掌握并操控想法。
6. 实践(比如代码重构、单元测试、持续集成)——周期性活动,以保持系统可靠、健康与可改变。
  面向人类和面向硬件对象/系统得程序员有很大不同。
  不与人沟通得程序员不是好程序员。一个优秀得解决方案需要计算机世界与人类世界得双重技能。只有连接起两个世界,才能成为一个真正得优秀程序员。
  英文原文:Andriy Solovey
  中文翻译:伯乐在线  敏捷翻译


延伸阅读:
西方程序员的眼里:东方程序员是什么样的?
那编程语言的程序员脏话最多
2011 程序员薪资调查报告
时刻激励程序员的9句经典名言
写给即将入行的程序员的一封信
PHP程序员最常犯的11个MySQL错误
腾讯PHP程序员面试题
美印程序员的差别
程序员装B指南
程序员?还是小丑?
让程序员愤怒的 10 种事
不要自称为程序员
Tags: 程序员  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号