文档章节

北京尚学堂:程序员的本质

SXTkaifa
 SXTkaifa
发布于 2016/11/13 11:39
字数 1884
阅读 7
收藏 0

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。

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

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

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

程序员的本质

人类世界的背景

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. 实践(比如代码重构、单元测试、持续集成)——周期性活动,以保持系统可靠、健康与可改变。

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

不与人沟通的程序员不是好程序员。一个优秀的解决方案需要计算机世界与人类世界的双重技能。只有连接起两个世界,才能成为一个真正的优秀程序员。更多精彩内容关注微信公众号:北京尚学堂。​

如果你的目标是就业,并且是高薪就业,那么北京尚学堂是你正确的选择。北京尚学堂一直在为改变中国IT教育努力着。十年以来,北京尚学堂坚守“为莘莘学子改变命运而讲课”这份情怀,不忘初心。感谢大家的阅读!​

更多猛料!欢迎扫描上方二维码关注北京尚学堂官方微信公众号(资料领取验证消息:156)

本文作者北京尚学堂原创。如需转载请联系作者授权,未经授权,转载必究。

© 著作权归作者所有

共有 人打赏支持
SXTkaifa
粉丝 3
博文 109
码字总数 250758
作品 0
太原
程序员
私信 提问
作为一个程序员的另一半容易吗?

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 女生坐在一起会讨论找个什么样的男朋友呢?经常会有人说,找个程序员作男朋友,老实,会疼人,会做饭,脾气好,有耐心…… 当时就觉...

SXTkaifa
2016/11/20
12
0
关于程序员,你知道的有多少?

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 关于程序员,多数人印象里是无趣、无情商、不修边幅,头发蓬乱,黑眼圈,神情憔悴……差不多是这样的…… 甚至还有段子调侃程序员生...

SXTkaifa
2016/11/18
13
0
北京尚学堂:程序员的权利

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 “起来,不愿做奴隶的开发者们!是时候为了捍卫我们自己基本的工作场所权利站起来了”,Jeff Atwood说。Jeff Atwood,Stack Ove...

SXTkaifa
2016/11/13
5
1
非计算机专业学Java需要注意什么

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 俗话说:“三百六十行行行出状元”,在互联网+的大背景下,IT行业红红火火的向前发展着。蓬勃发展的背后,也衍生出来形形色色的事物...

SXTkaifa
2016/11/15
7
0
一个真实的实例: Java程序员的成长经历

版权声明:本文为北京尚学堂原创文章,未经允许不得转载。 我们大家都默认:程序员的脑子里除了一些散乱的代码和概念外,已经没有别的东西了吧!现在最缺的是实际的工作经验,而不是书本上那...

SXTkaifa
2016/11/16
71
0

没有更多内容

加载失败,请刷新页面

加载更多

记录replugin使用的一个坑

反复编译插件放入宿主中,一直出现如下错误: android.content.res.Resources$NotFoundException: Resource ID #0x7f050000 type #0x5 is not valid 回滚代码,重启AS还是出错。最终发现将宿...

Gemini-Lin
今天
2
0
Vert.x系列(二)--EventBusImpl源码分析

前言:Vert.x 实现了2种完成不同的eventBus: EventBusImpl(A local event bus implementation)和 它的子类 ClusteredEventBus(An event bus implementation that clusters with other Ve......

冷基
今天
2
0
Perl - 获取文件项目

参考:http://www.runoob.com/perl/perl-directories.html 下面返回JSON格式的文件列表 #!/usr/bin/perluse strict;use warnings;use utf8;use feature ':5.26';require Fi......

wffger
昨天
3
0
vue组件系列3、查询下载

直接源码,虽然样式样式不好看,逻辑也不是最优,但是可以留作纪念。毕竟以后类似的功能只需要优化就可以了,不用每次都重头开始。。。 <template> <div class="pre_upload"> <div ...

轻轻的往前走
昨天
3
0
java浅复制和深复制

之前写了数组的复制,所以这里继续总结一下浅复制和深复制。 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝。 深拷贝:对基本数据类型进行值传递,对引用数据类型,...

woshixin
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部