查看原文
其他

程序员的代码为什么永远写不完?

Ouellette CSDN 2019-05-05


程序员和常人有着什么样的区别?是否所有的程序员都是天然呆?为何女性程序员的人数要远远少于男性?在本文中,我们将带着种种疑问深入探讨计算机程序员中的文化。

作者 | Jennifer Ouellette

译者 | 弯月

责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

现如今,我们日常生活的方方面面都渗透着计算机的代码。然而,普通人并不了解计算机编程的工作,也不清楚程序员正在悄悄地影响着整个社会。科技报道的记者Clive Thompson希望通过他的新书《Coders:The Making of a New Tribe and the Remaking of the World》来改变这一点。

在担任科技记者之前,高中时期的Thompson曾是一名黑客,他自学了如何在早期的个人计算机上写代码,比如在Commodore 64上等。之前他还出过一本书《超乎想象的聪明:论科技如何改进我们的思维》(Smarter Than You Think: How Technology Is Changing Our Minds for the Better),书中推翻了末日预言者所信奉的看法:新的技术工具正在腐蚀我们的大脑,Thompson则认为这些东西实际上提高了我们的认知能力。他在《Coders》中说到:“我想让一般人了解程序员,以及为什么他们会比较注重某方面的东西,他们的激情在哪里,他们的盲点又是什么。希望普通人可以更好地了解程序员为我们创造的这个数字世界。”

提问:最终你成为了一名作家而不是专业的程序员。从很多方面来看,编程只是另一种语言,但许多作家都对这种工作敬而远之。你觉得这两种工作之间有相似之处吗?

Thompson:程序员通过代码进行沟通,而他们的沟通对象是机器。写代码的工作和写作的工作都是脑力劳动,这是二者很大的相似之处。作家需要搞清楚如何创作一本小说、一篇文章、一本书。而程序员则需要设法考虑他们构建的代码的结构,以及函数之间如何相互调用。这两种类型的工作人员都喜欢连续工作12个小时,中途不会被人打断,所以他们都可以在思绪的尽情飞扬中完成他们的工作。

两者之间的区别可能在于人类可以理解具有歧义的内容,而计算机则不能。在你写Python代码的时候,任何一个小小的错误都会导致系统停止运转。这就是程序员的工作与其他方面工程师的不同之处。在修理汽车的时候,如果你没有拧紧一个车轮上的螺栓,那么不至于整辆车都停止工作。但是在写代码的时候,哪怕是少写一个括号,都会导致整个应用或整个网站宕机。我认为这是所有作家都感到很恐怖的一件事,因为他们都习惯了模棱两可。

提问:在这本书中,你谈到了一些典型的程序员的性格,但你自己也会感叹程序员身上常见的刻板印象,比如他们很孤立、体型较胖、不擅长社交。是否有某种特定的人倾向于从事这个领域?

Thompson:现在有很多人都加入了程序员的大军,但是你了解一些各行各业就会发现有一些特征也似乎很正常。例如,编码员善于逻辑思考,将大问题分解为小步骤。这种习惯也会体现在他们的日常生活中,因为他们需要花大量时间进行线性、精确的思考。此外,每个擅长编程的人都能够应对一些令人费解的挫折。

这是程序员与普通人之间的分界线。好莱坞影片塑造的程序员都有一种刻板的印象,程序员整体坐在电脑前写代码。实际上,他们坐在那里只是在盯着无法正常工作的代码,并设法弄清楚如何修复这些代码。这是程序员一辈子都做不完的主要工作。这种工作不会越来越好,因为你技术越好,所面临的挑战就越难。但是,一旦你改好代码,程序开始正常运行时,那种成就感简直无与伦比。程序员就是在日复一日地追逐这种快感。相比之下,那些残酷的挫折时刻都不值一提,所以这群人非常擅长应对一次又一次地碰壁。

提问:你还介绍了一些程序员的历史。女程序员可能是最早的一批程序员。后来,如你在书中所述,这个领域变成了男性的天下——男性占据了绝对的主导地位。这中间发生了什么?

Thompson:女性在编程界遭到排挤的原因有点复杂。历史上没有发生过重大的事件,这种情况是三种或四种因素互相影响的后果。这也意味着我们无法通过一个解决方案彻底地解决这个问题。就像有个笑话说:对于这个问题,我们没有一发即中的银弹,只有很多的铅弹头。

早期从事编程工作的人都是精英,因为没有人知道如何编程。各个公司聘请了逻辑思维一丝不苟的人,并且只培养了这群人。因此,才出现了Mary Allen Wilkes这样的人,她说:“既然我不能成为一名律师,因为在1959年这个职业有浓烈的性别歧视,所以毕业后我只能去麻省理工学院,问他们还要不要程序员。结果他们说,要!”后来,她成为了第一个操作系统(可以说是第一台个人电脑上的操作系统)的先驱。在当时,软件不值钱。男子汉都去做硬件了。而软件被当成了类似于秘书的工作。

随着各家公司开发出了大量的代码后,软件操作就变得至关重要了,于是男人们开始逐渐产生了兴趣。他们建立了所谓的硅谷文化——“我们雇佣某人不仅仅是因为他擅长编程,也不仅仅是因为他拥有这些技术,而是因为我们觉得他就是我们的一份子。”一直到20世纪80年代出现了一批像我一样,从高中时代就开始在个人电脑上编程的人。几年后,我们开始上大学,并学习计算机科学的课程,全身心地投入到这个领域。教授们说:“这些人才是我们应该教导的学生。我们应该改变我们的课程,要求每一位程序员从十几岁就做黑客。”而就在当时,所有从事计算机科学领域的女性几乎都崩溃了。

提问:最近有大量关于许多算法中固有的偏见的讨论,特别是在社交媒体中。这让很多非计算机科学领域的感到不解。他们会认为:“算法怎么会有偏见?它可是数学啊。”

Thompson:首先,从字面意思来看,偏见通常会源自你需要解决问题的算法。例如,社交媒体中采用的推荐算法是由架构师设计,由程序员实现的某种“预测手段”。这种算法会不断关注人们最常点击的内容,设法找出人们最喜欢和着迷的内容。这一切都在为基于广告的市场模式服务。人们往往会被有可能引发极度情绪(深深的愤怒、怨恨、恐惧)的内容所吸引。这种算法会把人们按下心理按钮的行为视作用户的互动,而这正是这种算法需要找到和推荐的内容。

其次,如果用带有偏差的数据训练算法,那么算法也会产生偏差。我的书中有这样一个例子:Henry Gan是Gfycat(一家做动画GIF托管服务的公司)的程序员。Henry和他的团队需要利用视觉学习神经网络AI来识别图片并自动进行标记。他们是一家小公司,所以他们并没有从头开始做。他们利用了一些由Google和Facebook等公司开发和训练好的开源神经网络软件。

结果,他们发现在识别亚洲人的面孔时,这些软件的实际效果很糟糕。对于Gfycat来说这是一个非常大的难题,因为他们的用户群众有很大一部分是流行音乐的粉丝。他们喜欢寻找亚洲主流明星的GIF动画。Henry跟我解释说,他们使用的AI的训练数据集主要是白人,因为收集这些数据集的机构位于白人的国家。所以,你没法利用这种算法识别亚洲人的面孔,这个AI非常不擅长区分亚洲人的面孔。反之亦然。在中国接受训练的人工智能主要针对的是中国人的面孔,因此在识别白人面孔就会遇到很大的困难。

提问:算法对媒体也产生了巨大的影响,当然有好也有坏。

Thompson:媒体受到排名算法的影响,甚至从“网站上最常转发的10条新闻”的时代就开始了。这其实都算不上AI,实际上只是一种排序算法。给我一份今天转发的所有内容列表,按人气排序,排在前10位就是我们的排名列表。这几乎是软件工程师的条件反射。

有一个网站专门寻找播放次数为零的YouTube视频。我经常想,我们能做的远不止此。你可以利用软件进行非常有趣的搜索。人们忽视的重点是什么?你可以通过代码和算法做一些非常酷和有趣的事情,之所以没人这么做是因为每个人都在追寻最容易获取的利润。寻找流行的东西,这是一种很划算的模型。但是,使用软件的巨大灵活性感觉在这种模型中完全没有发挥出来。

提问:你在写这本书时,感觉最惊讶的是什么?

Thompson:真正让我感到意外的一件事情是,你可以发现软件开发人员很享受提高效率和优化的乐趣。他们很喜欢优化一些笨重或具有重复性的工作。几乎所有的工程师都很关注运行效率的提高。节省劳动力,巩固步骤,简化工作,加强人类的能力。但是,似乎他们没有办法停止这样的思考。例如,Scott Hanselman整天都在谈论编程,甚至在晚餐时间,家里的其他人正在做饭,而他却批评他们的做事效率太低,他说:“我开始了对晚餐代码的审查。”

这种下意识的条件反射正是商业模式的来源。Facebook推送的一则新闻中说:“让我们来加速和优化一切工作。”Facebook加速了我们关注其他人的能力。Facebook对我们了解周围的朋友的方式进行了巨大的优化。这本身是一件好事,但同时也出现了很多问题。在诸多信息的干扰下,我们很难集中注意力做一件事情,因为有多事情即将出现在你面前。

这个问题贯穿了整本书:软件工程师对优化的追求永无止境。但有时这会变成《猴爪》一书中所说的诅咒。我可以想象这种诅咒从个人扩散到整个社会。就像优步一样,他们优化了汽车的受欢迎程度,但也给汽车行业带来了破坏。还有Airbnb优化了房屋的租赁,最终会影响到房地产市场。历史在一遍遍地重复,当你看到某家科技公司锁定了人们的某个兴趣时,通常他们都会优化自认为这是对大家有益的事情,但结果却会给其他人带来间接的伤害。

原文:https://arstechnica.com/gadgets/2019/04/how-the-new-art-form-of-coding-came-to-shape-our-modern-world/

本文为CSDN翻译,转载请注明来源出处。

作为码一代,想教码二代却无从下手:

听说少儿编程很火,可它有哪些好处呢?

孩子多大开始学习比较好呢?又该如何学习呢?

最新的编程教育政策又有哪些呢?

下面给大家介绍CSDN新成员:极客宝宝(ID:geek_baby)

戳他了解更多↓↓↓

 热 文 推 荐 

☞ 马云:腾讯是阿里的成长伴侣;华为 2 万 CNBG 员工“投奔”余承东;18 岁学生索赔苹果 10 亿美元 | 极客头条

☞ 取代 JavaScript!Python 成 Stack Overflow 最受质疑编程语言

☞ 流量为王,程序员如何打破 8 秒原则?| 技术头条

☞ 5G 赋能教育信息化?

☞ 源码泄露是裁员报复还是程序员反抗 996?

☞ 深入浅出Docker 镜像 | 技术头条

☞ 特斯拉全新自动驾驶芯片最强?英伟达回怼,投资者用脚投票

☞ 她说:为啥程序员都特想要机械键盘?这答案我服!

☞ 西安奔驰女车主哭诉维权背后, 区块链究竟能否还消费者以尊严?


System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存