未来还需要程序员嘛?

很多人认为计算机变得如此智能,所以在不久的未来将不再需要程序员。另外一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题。甚至不少程序员对他们是做什么的都没有清晰的概念。在这篇文章中,笔者想给不知情的人解释一下程序员到底是做什么的。

  程序员是将人类想法翻译成计算机语言的译者。

  他们是两种世界之间的纽带。你认为维护这个纽带很容易吗?

  人类世界的背景

  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个小时”。然而,计算机需要算法——按照步骤去达到想要得到的结果。

  为了写出优秀的软件,程序员们必须克服这些困难,理解人们的想法并将之转换成计算机语言。

  一名优秀程序员所具备的能力

  我们可以看到,一名优秀程序员应该具备应付两个不同世界的两套技能。

  理解人类的需求并提出解决方案:

  • 1. 沟通——与人建立联系的能力,能够同他人亲密的交谈,并有勇气去尝试分享自己的观点。
  • 2. 意图——从谈话中提取有用的信息,理解并使之有意义。
  • 3. 逻辑——为不懂让步的计算机整理、剔除那些人类思想中含糊而有争议的内容。
  • 4. 创造力——挖掘、转变人类的想法,从而创建优秀的解决方案。
  • 5. 构思——利用人类友好的接口和便捷的互动性来包装编程思想。
  • 6. 大局观——清楚解决方案是如何适应全世界的用户、企业以及其他,从而使你的程序更有用。

  告诉计算机该做什么,并建立解决方案:

  • 1. 逻辑(再次强调)——把程序员的想法组织整理成有凝聚力的软件思想和计算机指令
  • 2. 技术——发现并理解科技黑箱(对于99%的人来说是黑箱)。
  • 3. 编程语言——学习美观的、富有逻辑的、清晰明了的语言,从而把程序员的想法提供给电脑。
  • 4. 算法——精通让计算机完成任务最高效的方法。
  • 5. 建模——在软件代码中建立抽象和模型,从而掌握并操控想法。
  • 6. 实践(比如代码重构、单元测试、持续集成)——周期性活动,以保持系统可靠、健康与可改变。

  面向人类和面向硬件对象/系统的程序员有很大不同。

  不与人沟通的程序员不是好程序员。一个优秀的解决方案需要计算机世界与人类世界的双重技能。只有连接起两个世界,才能成为一个真正的优秀程序员。

文章来自:http://www.williamlong.info/archives/2907.html

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

DeepMind认为:神经科学与人工智能的联手已无法阻挡!

近日,DeepMind AI 博客发表了一篇讲述他们对人工智能研究和神经科学研究协作的看法的文章,文章中表明,他们认为这两个领域的合作不仅有好处,而且同样是迫在...

3438
来自专栏新智元

给我一根棍子,就能撬动图灵测试 | MIT用AI自动生成声音(论文)

【新智元导读】MIT计算机科学与人工智能实验室一项最新的研究表明,机器通过深度学习可以制造出和物理世界中相似度极高的声音,达到以假乱真的水平,并通过了“声音图灵...

3525
来自专栏AI科技评论

AI的发展已经失去了方向?人工智能哲学学家Aaron Sloman IJCAI演讲

Aaron Sloman专注人工智能哲学领域有几十年了,这项学科认为人们应该从根本上通过概念化自然界中的物体,为AI研究打下基础,Sloman还认为,现在的AI...

2566
来自专栏新智元

两年半努力,Yoshua Bengio 团队重磅新作《深度学习》

《深度学习》经过两年半的努力,由谷歌大脑团队科学家 Ian Goodfellow, Yoshua Bengio 和 Aaron Courville 撰写,麻省理...

3375
来自专栏企鹅号快讯

新手程序员想要成功需要做的事情

1、解决你自己的问题 从外面获取答案和自己解决问题、找到答案,这两种方式是有区别的。 当你自己解决一个问题时,你不仅解决了这一个问题,也意味着解决了跟它类似的数...

1728
来自专栏企鹅号快讯

机器学习和深度学习概念入门(上)

目 录 1人工智能、机器学习、深度学习三者关系 2什么是人工智能 3什么是机器学习 4机器学习之监督学习 5机器学习之非监督学习 6机器学习之半监督学习 7机...

1888
来自专栏新智元

《AI寒冬将至》作者:人工智能存在十大问题

【新智元导读】不久前,一篇题为《AI寒冬将至》的文章火了,引发AI领域专家学者、研究人员、学生甚至吃瓜群众的大量讨论。该文对有关深度学习的炒作提出批评,认为深度...

460
来自专栏人工智能快报

麻省理工科学家尝试让人工智能认识三维世界

人工智能(AI)研究人员正在构建能让三维(3D)世界可视化并采取相应行动的系统,美国麻省理工学院(Massachusetts Institute of Tech...

2575
来自专栏AI科技评论

学界 | 机器人走路未必笨拙,DeepMind新方法训练的人工智能就走得很飘逸

AI 科技评论按:无论是在树木间乱窜的猴子,还是躲避对手和进击目标的足球运动员,他们灵活敏捷的速度,都让人十分惊叹。掌握这种复杂的电机控制是物理智能研究的方向,...

3409
来自专栏华章科技

R vs Python:R是现在最好的数据科学语言吗

Sharp Sight Labs 近日在 r-bloggers 上发表了一篇文章,论述了为什么当今的数据科学工作者应该学习 R 语言的原因。为了给大家提供一个明...

655

扫描关注云+社区