不少人认为计算机变得如此智能,因此在不久的将来将再也不须要程序员。另一些人认为程序员是天才,他们在电脑前能不断地解决复杂的数学难题。甚至很多程序员对他们是作什么的都没有清晰的概念。在这篇文章中,笔者想给不知情的人解释一下程序员究竟是作什么的。程序员
程序员是将人类想法翻译成计算机语言的译者。web
他们是两种世界之间的纽带。你认为维护这个纽带很容易吗?算法
人类世界的背景编程
The problem with people is that they’re only human. – Bill Watterson 人类的问题是,他们只是人而已。——比尔·沃特森编程语言
人类是生物进化的产物,而且拥有独特而宝贵的器官——大脑,它能为程序员提供想法。大脑有组合复杂的新大脑皮层(对人类而言是独特的),还有从哺乳动物和爬行动物继承的旧结构。旧的大脑结构主要负责生殖(性)和生存(寻找食物或者躲避危险)。新大脑皮层进化成可以更好地支持这些功能,可是,它开始产生奇怪的反作用——意识、思考和好奇心。幸好这些反作用的影响,人类产生了文明并在数千年后发明了计算机。ide
一些人相信通过数千年的发展,人类应该变成彻底沉闷的、理性的、可预测的生物,可是这并无发生。人类旧的大脑结构、复杂的心理和社会行为每每令人们不理性,不可预测并带有欺骗性。而且,人类有糟糕的记忆力、强烈的情感和我的兴趣。可是,程序员无法选择与更理性的物种工做,他们不得不与人类共事而且把人类的想法翻译成计算机语言。单元测试
计算机世界背景学习
Part of the inhumanity of the computer is that, once it is competently programmed and working smoothly, it is completely honest. – Isaac Asimov 计算机非人性的一部分表现是,一旦完成编译而且顺利运行,它将忠实地完成工做。——艾萨克·阿西莫夫测试
计算机是人类文明的最佳发明。它由CPU、主板、内存、硬盘驱动器、显示器和其余部分构成。计算机将咱们的文明推入一个新的水平,使咱们的生活更有意义并充满乐趣,还弥补了咱们大脑的缺陷。极可能计算机比人类更聪明。(不过,我有点关心若是这成为现实后,计算机还须要人类程序员吗?)spa
现代计算机具备彻底逻辑性、直接性和顺从性。若是你知道它应该作什么而且知道如何命令它,那么和计算机一块儿工做是快乐的。惟一的问题是,计算机只会作你告诉它去作的。所以,你应该有清晰的思路而且在见你的上司或客户时保证计算机不出岔子。
在人类和计算机之间的翻译
翻译中会遇到三个主要的挑战:
为了写出优秀的软件,程序员们必须克服这些困难,理解人们的想法并将之转换成计算机语言。
一名优秀程序员所具有的能力
咱们能够看到,一名优秀程序员应该具有应付两个不一样世界的两套技能。
理解人类的需求并提出解决方案:
告诉计算机该作什么,并创建解决方案:
面向人类和面向硬件对象/系统的程序员有很大不一样。
不与人沟通的程序员不是好程序员。一个优秀的解决方案须要计算机世界与人类世界的双重技能。只有链接起两个世界,才能成为一个真正的优秀程序员。