编程可以很简单

978-7-115-52162-0
作者: [美]尼基尔·亚伯拉罕(Nikhil Abraham)
译者: 田野
编辑: 武晓燕

图书目录:

详情

编程已然成为 21 世纪最流行、最重要的必备技能之一。编程可以方便地解决生活中遇到的多种问题,让生活变得更简单。 本书共分为 5 部分。第 1 部分(第 1 ~ 3 章)讲解什么是代码、编程中常用的语言和编写代码的流程;第 2 部分(第 4 ~ 9 章)讲解如何使用 HTML、CSS和 JavaScript 编写一个规范的网页;第 3 部分(第 10 ~ 12 章)介绍构建一个Web 应用的具体过程;第 4 部分(第 13 ~ 14 章)简单介绍 Ruby 和 Python 语言的作用和用法;第 5 部分(第 15 ~ 16 章)介绍一些程序员常用的编程资源和初学者应该注意的问题。

图书摘要

版权信息

书名:编程可以很简单

ISBN:978-7-115-52162-0

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


著    [美] 尼基尔•亚伯拉罕(Nikhil Abraham)

译    田 野

责任编辑 武晓燕

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


Nikhil Abraham

Coding For Dummies

Copyright © 2020 by John Wiley & Sons, Inc.

All right reserved. This translation published under license.

Authorized translation from the English language edition published by John Wiley & Sons, Inc.

本书中文简体字版由John Wiley & Sons公司授权人民邮电出版社出版,专有出版权属于人民邮电出版社。

版权所有,侵权必究。


编程已然成为21世纪最流行、最重要的必备技能之一。编程可以方便地解决生活中遇到的多种问题,让生活变得更简单。

本书共分为5部分。第1部分(第1~3章)讲解什么是代码、编程中常用的语言和编写代码的流程;第2部分(第4~9章)讲解如何使用HTML、CSS和JavaScript编写一个规范的网页;第3部分(第10~12章)介绍构建一个Web应用的具体过程;第4部分(第13~14章)简单介绍Ruby和Python语言的作用和用法;第5部分(第15~16章)介绍一些程序员常用的编程资源和初学者应该注意的问题。

本书适合那些从未接触过编程或者对编程知之甚少的读者。


尼基尔·亚伯拉罕(Nikhil Abraham)曾经就职于Codecademy公司。在Codecademy公司工作期间,他帮助许多科技、金融、传媒以及广告方面的公司培训员工如何编写代码。在他的帮助下,数以千计的市场、销售以及人力资源领域的人学会了如何编写代码,同时其中的许多人能够学以致用,通过练习或者做项目的方式完成了人生中的第一次编程实践,甚至后来一些人经过不断地学习和研究开发出了一些功能实用的App,成为了比较专业的程序员。在教学工作以外,他还负责Codecademy公司的合作伙伴管理以及市场营销工作。在他的努力下,编程活动走进了许多国家的校园。美国、巴西、阿根廷、法国以及英国都是他曾经工作过的地方。

在入职Codecademy公司之前,尼基尔曾经在管理咨询、投行以及法律领域工作。他还创办了一家由Y-Combinator资助的科技教育类初创型公司。他曾经获得美国芝加哥大学颁发的法学博士(JD)和工商管理硕士(MBA)学位,以及美国塔夫茨大学颁发的经济学学士学位。

尼基尔现在居住在美国纽约曼哈顿。


田野,男,汉族,吉林四平人。2002年毕业于四川大学计算机软件专业,获得学士学位。毕业后一直在一线工作,从事软件的开发工作,工作内容涉及智能手机、专业多媒体影像采集、数据通信、自动化测试、Web应用等;对Linux系统编程、驱动编程、Web前后台编程有深入的了解。他曾荣获2009年度大连市高新园区创新能手称号、2011年度沈阳市科技振兴奖,以及多次公司内部奖励。

近年来随着IT教育的兴起,他也参与到了编程培训活动中;曾经先后主持了Python基础编程、网络编程、系统编程、GUI编程以及基于Django的网站构建等初级、中级和高级内容的培训班;通过授课、实操项目演练以及与学员们的良好沟通,对目前高校教育与社会教育中存在的痛点有着深刻的理解。通过将多年的IT从业经验与培训经验有机地结合,他力求把业界最好的科技作品以一种更加贴近国内读者喜好的形式带给大家。


这是一个日新月异、不断变化、充满活力的行业。就像这本书的作者所说的,计算机行业从未像今天一样受到全社会的关注与追捧。究其原因,正是作为计算机灵魂的软件推动了整个计算机行业,甚至全社会的快速发展。笔者因为孩子参与长笛课外班的缘故有幸也收获了一门音乐爱好,同时也结识了一些这个圈子中的资深人士。常常在与他们交流的时候用计算机行业与音乐行业做类比,也许不恰当但也确实从一个侧面印证了计算机行业的发展是如何颠覆了传统行业“三观”的。纵观管乐的发展,实际上在19世纪初德国著名音乐改革家波姆发明了机械式传动按键系统后就已经定型。在音乐的内容方面,近几十年来也鲜有很大的变化,翻开现今的音乐教材以及各种音乐会的曲目,其内容仍然是数百年前贝多芬、海顿、亨德尔等音乐家的作品。演奏技术方面也没有特别的创新。反观软件行业,一共也只有数十年的历史,而这数十年中的发展变化又岂是三言两语可以形容。从最初的程序员排队等待打印纸带,到鼠标与微软图形化操作系统的诞生,再到一日千里的互联网、Web技术,乔布斯带来的智能手机革命,再到国内BAT三巨头的风光无限,无一例外地在诉说着计算机行业昨日、今日与明日的种种传奇。而这种变化带来的是什么?是需要不断学习新知识的痛苦吗?答案既是又不是。显然,不断学习这件事在“劳形”方面是一定的,学习哪有不累的?看看我家小孩每天写作业时的痛苦表情就略知一二了。而当掌握了这些知识,站在行业发展的潮头挥洒自如,被社会所认可、被别人所需要,这又是何等的一种人生极致呢?

这是一个兼容并蓄、充分承认知识与个人努力的年代。我经常在和身边的朋友们聊天时说:无论现在过得怎么样,都要感谢这个时代。笔者作为一个“80后”,纵观祖国的发展历程,不敢妄加议论。但是看看父辈们的人生,就知道现在这个时代给予了我们多少发展的机会。父辈们生活的年代就像一艘行驶在大海上的轮船,错过了这一班就要等待很久。而我们的时代就好像站台上的高铁,这一班没赶上,最多半个小时还会有一班高铁能到达目的地。笔者通过在工作中和培训班里与各种各样的人一起交流时发现,大多数人虽然身处这个时代,却往往觉得迷茫。想想也是,如今的时代充斥着财富的传奇,难免让人眼花缭乱。面对这些,笔者禁不住要说,别人的故事是别人的,自己的故事还要自己去谱写。找到自己的定位,沉下心去,做行业中的专家。相信这个时代一定会给肯努力、肯用心的人以丰厚的回报。

这是一本学习编程的前导书。在这本书里,尼基尔·亚伯拉罕用平实的语言、生动的案例以及深入浅出的分析,为大家带来了“编程”这个“高冷”概念的另类解说。如果说其他更为高深的编程图书是科学院的大专家在与读者探讨着“嫦娥一号”探月之旅的高深理论,那么这本书就是初中班里那位戴着花镜、严格认真却又平易近人的班主任老师,用她那缓慢而又慈祥的语调,为大家讲述着平面几何中的勾股定理。不过,正如尼基尔所说的,“编程”知识之博大精深,甚至用毕生的精力去探索仍然无法到达终点。所以,这本书也无法面面俱到。这里更多的是为大家指明学习的方向、学习的方法,让大家在阅读了这本书之后对Web编程有一个大致的印象,学会为自己的编程生涯树立一个现实的目标,并且为实现这个目标制订一个计划。学会通过利用各种资源完成对每一门编程语言的自学。独立学习、独立思考是这本书所倡导的,当然也是计算机软件这个行业所倡导的。希望大家能够在这本书的带领下,将独立学习、独立思考养成一种习惯、一种性格,这将为大家的职业生涯甚至人生产生积极的意义。最后,祝大家在编程之路上走得更远、走得更快、走得更好!

如果大家在阅读这本书时有什么问题,可以通过电子邮件tianyesq@sina.com与我取得联系。欢迎大家对我的工作提出批评与指正。如果需要我的帮助,我也会尽量及时地回复大家。

译者 田野  

2020年10月2日


谨将本书献给莫利·罗利(Molly Grovak)。

这本书是在许多人的帮助下得以完稿的。感谢Wiley出版社的所有同仁。感谢斯蒂文·海耶斯(Steven Hayes)能够时刻保持一个开放的心态接纳我的想法。有些很好的想法甚至是在电话交流中无意之间碰撞出的思想火花。感谢克里斯托弗·莫里斯(Christopher Morris)不辞辛苦帮我完成编辑工作,此外也给了我许多有益的建议。感谢那些技术编辑、版式以及图形设计师帮助我把内容质量不太完美的书稿“点化”成了图文并茂、设计出色、行文流畅的图书。感谢网友们帮助我改进本书内容以及许多我负责整理的在线内容。感谢Codecademy的同事扎克(Zach)、里安(Ryan)为我这本书的许多章节提出了宝贵的意见,也帮我搞清楚了许多问题。感谢道格拉斯·洛西克夫(Douglas Rushkoff)举办了一场对话,在这场对话中大家针对“社会公众究竟应该广泛地参与到编程活动中去,还是仅仅作为计算机软件的一个用户就好”这一议题充分交换了意见,并且一起将这种信息与理念传播到中小学、大学以及非营利的团体中。感谢苏珊·基什(Susan Kish)能够在我的介绍下,以一家公司CEO的身份完成了在TED Talk上的演讲。在这场演讲中他分享了自己学习编程的经历,并且展望了编程技能在职业发展中的前景。感谢艾莉亚·沙菲尔(Alia Shafir)和约书亚·斯尼萨兹(Joshua Slusarz)帮助我整理了所有编程环节。为了帮助我,他们顶着上司的压力,加班加点,让我十分感动。感谢梅利莎·弗雷肖尔茨(Melissa Frescholtz)以及她的领导小组帮忙传播编程文化,将编程教育带到了许多地方。感谢康奈尔大学、西北大学(美国)、弗吉尼亚大学和耶鲁大学的校友们帮助我测试了本书早期版本中的一些内容,并帮我做了许多改进。感谢Donorschoose社区的查尔斯·贝斯特(Charles Best)、阿里·奥斯特利茨(Ali Austerlitz)、Google在妇女儿童编程教育方面做出的不懈努力。感谢CODE网站让编程工作走进社会的各个角落,帮助数千万的美国以及世界各地的儿童学习编程知识。

最后,感谢莫利,她在我忙着写书期间无微不至地照顾了我的饮食起居,是我的贤内助。


就像“书中自有黄金屋”这句话所形容的一样,懂得编程这件事从来没有像今天一样那么重要、有用。只是如今这句话中的“书”恐怕要改成“编程”了。计算机程序深远地改变着我们的生活。很多人甚至已经到了那种无比依赖电子设备的程度。而这些电子设备的“灵魂”又都是由形形色色的程序所构建起来的。但即便是这样,对于很多人而言编程这件事情仍然那么高高在上,难以企及。可能你参加了一场以技术为主题的会议,听着嘉宾们口若悬河、侃侃而谈,而你却如坠云雾,不知所云。可能你想为家人编写一个主页,却遇到了那些不知道该如何解决的问题,比如图片显示不出来、文本对不齐等。也可能你常常被那些冠以“HTML、CSS、JavaScript、Python、Ruby”等计算机名词的图书吓到,不知道这些奇怪的名词都是在讲述谁家的故事。

如果你是上面所列的这些人中的一分子,那么本书正是为你准备的。这本书里对那些基本的概念做了通俗易懂的解说,让你摆脱在技术会议上常常上演“徐庶进曹营”的尴尬,可以在听懂的同时也积极地参与讨论。在这本书里,我会把各位读者作为编程的初学者来对待,针对每一个概念做相对清晰的说明。这本书的读者甚至可以是那些完全不知道编程为何物的人。我不会毫无选择地在这本书里导入过多的内容。此外,我鼓励大家边学边做,一边读书,一边自己编写程序。你可以想象自己不是在编写一个网站,而是在搭建一个房子。你既可以先花8年的时间学习如何成为一个建筑架构师,也可以今天就着手学习如何打地基、建框架。快慢优劣大家自有体会。无论如何,这本书都将会带你开启编程之旅。

编程技能在高度信息化的今天正在变得越来越重要。业内知名作家、资深工程师道格拉斯·洛西科夫(Douglas Rushkoff)曾说过一句名言:“去做程序的主人,否则做程序的奴隶。”(Program or be programmed.)当人类发明了语言和数字后,人们就学着去听和说,随后就是读和写。在这个数字化的世界里,只知道如何使用软件是不够的,也应该知道该如何设计软件。例如在过去的一个多世纪里,唱片公司决定了什么样的歌曲能够出版和发行,只有这些歌曲才能走进千家万户。然而在2005年,3个程序员创立了举世闻名的YouTube网站,它使得每一个人都拥有了成为“歌手”的机会,任何人都可以在YouTube上发布歌曲。今天在YouTube上发布的歌曲数量甚至超过了过去一个世纪发行歌曲的总和。在Codecademy网站上发布的一系列示例程序是这本书的“忠诚伴侣”,每一章中提到的各种练习也是学习编程非常有效的方式。大家可以很容易地做这些练习,而不用去额外安装或下载任何软件。Codecademy网站上提供了本书提到的示例和练习,希望这些能够与其他的项目和示例程序一道作为读者额外的练习内容,帮助读者更好地掌握编程技巧。

这本书适合那些没有或者只有少量编程经验的人阅读。本书用一种通俗易懂的方式向那些“外行”展示了什么是编程。这本书用平实的语言,介绍了代码是如何被运用在程序中的,一些“知名”的程序是由什么人开发出来的,这些人采用什么样的流程完成了程序的开发工作等。这本书的主题包括:

解释什么是编程,并回答了一些有关编程的常见问题;

使用3种常用的编程语言(HTML、CSS、JavaScript)编写一个简单的网站;

比较几种常见的编程语言——Ruby和Python;

使用本书所教授的知识点构建一个应用。

当你阅读本书时,请注意以下事项。

你可以从头至尾阅读本书,也可以任意跳过其中的一些章节,直接从最感兴趣的部分开始阅读。当然在必要时也可以随时回去参考前面的章节。

有时你会被某些意想不到的问题所阻碍。如果编写的程序不能如预想的一样运行,请不要害怕,因为有很多资源可以帮到你,如技术支持论坛、有相关经验的网友甚至是我本人。你可以使用推特(Twitter)向我发送消息与我取得联系。(使用@Nikhilgabraham找到我,并用#codingFD向我发消息。)

本书中的代码都将以类似于<h1>Hi there!</h1>的字体显示。

我不会先入为主地为读者的技术水平、理解能力等做过多的假设。但是我会假设各位读者具有以下特点。

各位读者没有编程经验。因此你们只需跟着本书的进度阅读、输入程序并根据书中的指示行事即可。我会尽量多地通过你们耳熟能详的例子和类比来介绍编程的概念。

假设读者的计算机上安装了最新版本的Google Chrome浏览器。本书中的程序示例都在最新版本的Google Chrome浏览器上测试和优化过。此外,本书中的所有示例也可以在最新版本的Firefox浏览器上运行。不推荐使用Internet Explorer运行本书示例。

读者的计算机可以访问互联网。本书中的一些示例可以在没有网络的环境下使用,但是大多数示例需要网络连接。你也可以在Codecademy网站上完成这些练习。

以下是本书中用到的图标。这些图标用来标注书中的段落,旨在引起读者的注意或者告知读者可以跳过某些段落。

 

TIP图标提示某段说明很有用或者是有助于理解某一概念的简短说明。

 

TECHNICAL STUFF图标进一步揭示了某个概念的细节,可能是告知性的信息也可能是逸闻趣事,但对于理解某一概念并不是必要的。

 

REMEMBER图标提醒读者记住某些内容。它意味着这个概念或者流程是非常重要的,需要牢记。

 

WARNING图标提醒读者留神!这个图标表示需要注意可能出现的问题或错误。

很多在本书中没有提到的内容可以访问Dummies网站进行查找。Dummies网站为大家准备了以下内容。

本书提到的示例源代码、一个指向Codecademy网站“习题”页面的链接和按照章节整理的源代码。一次性下载某一章节的源代码,并随着这一章的阅读来实际动手操作是最好的方法。

简易说明。在Dummies网站上大家可以找到一系列关于基本HTML、CSS和JavaScript常用关键字的简易说明。

可以访问Dummies网站,并搜索“Coding For Dummies Cheat Sheet”来查找本书相关的简易说明。

附加内容:Dummies网站为大家准备了本书每一部分提到的参考内容。

更新:各种编程语言的代码和手册都在不停地更新换代,常常是今天能用的命令和语法,或许明天就过时了。因此,关于本书的更新、更正会随时上传到Dummies网站上。

好了,闲话少叙进入正题。相信自己可以在编程这条路上走得更远。现在恭喜大家,已经为编程事业迈出了第一步。


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

本书提供如下资源:

要获得以上配套资源,请在异步社区本书页面中单击 ,跳转到下载界面,按提示进行操作即可。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/ selfpublish/submission即可)。

如果您所在的是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


在这一部分,你将:

理解什么是代码,可以用代码来构建哪些应用;

浏览编程中常用的语言;

使用前端、后端编程语言编写Web应用;

按照程序员惯用的流程编写程序;

使用代码编写第一个程序。


在这一章里,你将了解到:

什么是编程,编程能完成什么任务;

浏览你的第一个程序;

了解几门常用的编程语言。

“一百万美元很酷吗?不,十亿美元才酷。”

——肖恩·帕克(Sean Parker),出自影片《社交网络》(The Social Network

报纸上每周都演绎着财富的传奇。例如某个科技公司又募集了巨额的资金,或者是被天价收购等。有时候,在报纸头条上出现的都是数以十亿美元计的天文数字,比如耳熟能详的Instagram、WhatsApp和Uber等。当看到这些时,你一定会在震惊之余感到十分好奇,特别想知道那些所谓的“代码”是如何“摇身一变”成为让无数人为之垂涎的“阿里巴巴的宝藏”。然而,大家的兴趣或者说“眼界”可能更多地与现在所从事的职业息息相关,也许你所从事的行业是一个日薄西山的夕阳产业,诸如纸媒,抑或者是一个快速变化的领域,例如市场营销。无论是想要“弃暗投明”,奔向那些新的工作岗位,还是想在现有的工作岗位上再创佳绩,理解计算机编程都能推动大家的职业进步。此外,大家也可能更多地关注自己的内心,比如说你有一个很长时间以来一直心驰神往的美好理想,梦想着用双手创造一个“神器”,它可能是一个网站或者是一个软件应用,人们可以用它来完美地解决日常生活中遇到的问题。有此想法的人当然知道阅读和编写程序将是实现梦想的第一步。无论动机是什么,这本书都将成为你编程生涯的“指路明灯”,帮助你掌握编程工作中复杂的概念和解决遇到的奇怪问题,让你用一个清晰的、可达成的方式,自己动手实现,最终掌握编程中的知识和技巧。

在这一章中,大家将会了解到什么是编程,计算机软件深刻地影响到了哪些产业,有哪些不同种类的编程语言,最后还会通过构建一个简单的Web程序以对编程工作有一个初步的认识。

编程不是那种只能由天才才能完成的“特异功能”。实际上,只要花上几分钟,你就可以自己写上一段程序!绝大多数程序能够完成的任务是日常生活中司空见惯的事情,从那些最习以为常的事情到那些看起来有点复杂的事情。程序控制着城市中的红绿灯、人行横道信号灯、大厦中的电梯、那些帮助手机收发数据的通信基站,以及那些飞向遥远星际的宇宙飞船。程序之间的交互也与人类的日常生活息息相关,在手机、计算机上,人们可以用这些程序来检查邮件、查看天气等。

计算机程序是一系列的语句,就像语言中的句子一样,每个语句指示计算机完成一个动作或执行一个指令。每个动作或指令都要非常精确,甚至要求每个字母都正确。例如,在一家餐馆问服务员卫生间在哪里,他会说:“向后走,中间的门就是。”对于计算机而言,这种指令太模糊了,根本无法执行。对计算机应该这样说:“从这张桌子开始向东北方向走40步,然后向右转90°,再走5步,向左转90°,走5步,打开面前的门,进入卫生间。”图1-1展示了一款名为 “Pong” 的游戏程序中的一段代码。现在你可能还看不懂这段程序,不过完全没有必要担心,也不必被它吓到。你很快就能独立地阅读和编写程序了。

图1-1 游戏程序“Pong”中的代码片段

通常,一个粗略地衡量程序复杂度的方法是统计程序的语句数量,或者是程序的代码行数。像“Pong”游戏这样的初级应用共编写了大约5000行代码,而那些像Facebook一样的十分复杂的应用,目前的代码量已经突破1000万行。无论代码量多还是少,计算机都将准确地、不知疲倦地执行程序的指令。反观那些餐馆里的服务员,如果反复地问他100次卫生间在哪里,他将作何反应就不得而知了。

 

注意,只使用代码行数衡量一个程序的复杂度是不可取的。就像写一篇文章一样,100行良好设计的代码可以完成1000行粗制滥造代码所完成的功能。

如果你以前从来没有写过程序,那么现在机会来了!访问Computer Science Education Week官网,单击标题“Tutorials for Beginners”下面带有愤怒的小鸟(Angry Birds)图标的名为“Write Your First Computer Program”的链接[1],如图1-2所示。这个教程是为那些没有计算机编程经验的人准备的,它向用户介绍了几乎所有编程语言中都会用到的基本程序块状结构。通过这个教程,用户可以理解计算机程序如何按照代码逐字逐句地、精确地指示计算机执行一系列指令。

图1-2 通过一个以“愤怒的小鸟”为主题的教程来学习编写第一个程序

 

“计算机科学普及周”(Computer Science Education Week)是一个专注于提升计算机科学社会认知度的年度活动,时间是每年12月的某一周。美国前总统奥巴马、微软创始人比尔·盖茨、篮球运动员克里斯·波什、歌唱家夏奇拉(Shakira)等都曾经支持并鼓励美国以及全世界的人们积极参与这项活动。

程序能够用来执行那些日常生活中的常见任务,解决日常生活中的常见问题。随着科技的进步,这里所谓的“常见任务、常见问题”所涵盖的范围,也呈现出快速扩大的趋势。不仅如此,日益完善的Web应用、互联网无缝接入、智能手机等已经把计算机程序融入了生活中的方方面面,进一步降低了人们发明创造、解决个人或者专业问题的门槛。

2011年,著名浏览器Netscape Navigator(网景导航者)的创始人、现著名风险投资人马克·安德森(Marc Andreessen)指出“软件正在席卷全世界”。他曾经预言,软件公司正在以一个惊人的速度不断瓦解那些传统公司。传统意义上的软件都运行在台式计算机或者便携式计算机上。如果想使用这些软件,需要首先在自己的计算机上安装它们,然后为之提供数据。3个显著的趋势加速了软件在日常生活中的运用。

这些趋势共同孕育了一个又一个优秀的软件公司,在各行各业掀起了一次又一次的革命,颠覆了那些在自己领域中存在多年的传统公司,尤其是那些不接纳新技术的公司。以下是几个著名的例子。

图1-3 Airbnb在3年半的时间内共完成了500万间客房预订业务,并在此后的半年再次完成了500万间客房的预订

在日常工作中,编程也是十分有用的。在计算机领域外,编程也被那些金融交易员、经济学家、科学家等广泛使用。不过,对计算机领域外的大部分人员,编程只是正在逐步渗透到他们的日常工作中,并逐渐地提高其在各自业务领域中的运用。以下是几个编程占相对重要地位的领域。

 

使用别人的代码并在工作中加以改造会促使大家思考:我曾经遇到过什么样的问题,如果自己做的话将如何实现?大家可能有自己心目中的那个更理想的社交网站,一个更好的运动健身应用,或者一个全新的东西。将想法付诸实现并被人使用不是一个简单的事情,它意味着大量的时间和工作量。但是可能比你认为的更容易实现。以Coffitivity网站为例,这个网站旨在提高工作效率。为了达到这个网站所“标榜”的提高工作效率,该网站的手段居然是不停地向用户播放咖啡店中的声音,使用户仿佛置身在一个嘈杂的咖啡店中。这个网站是两个人创建的,而他们在几个月前刚学会编程。在Coffitivity网站上线后,时代杂志将它誉为2013年50大杰出网站之一,并且《华尔街日报》也报道了他们。尽管并不是所有的初创公司或者应用都能够得到如此多的媒体关注,但是当一个方案确实能够解决问题的时候,相信它距离“出名”也不远了。

如果想学习编程,那么设定一个诸如“构建一个网站或者应用”的目标将会是最好的方法之一。当遇到一个难以解决的问题或者难以理解的概念时,“使我的网站上线让大家使用”这个目标将会激励自己坚持下去。当然,要记住,不要把“发大财”“出名”作为学习编程的目标,因为最终网站是否能够成功往往取决于个人难以掌控的因素。

 

可以阅读文章“How to Manufacture Desire”来了解如何使一个网站或应用被人喜欢。产品通常是由公司生产的,阅读文章“Elements of Enduring Companies”来了解一个经久不衰的公司的所有特质。这些文章都是基于对那些红杉资本资助的著名公司的访问整理出来的。红杉资本是当今世界上最成功的风险投资公司之一,早年投资了苹果、Google以及PayPal等公司。

那些形形色色、不同种类的用于编写程序的代码称为“编程语言”。图1-4展示了几种流行的编程语言。

可以简单地认为编程语言与自然语言类似,因为它们的一些特征非常相似,如下所示。

图1-4 几种流行的编程语言

尽管有这么多相似性,编程语言和自然语言也有很多不同点,如下所示。

区分编程语言的一个方法是将其分为低级语言和高级语言。低级语言直接与计算机处理器或者CPU交互,能够执行非常基础的指令,通常来讲可读性差。机器指令码作为低级语言的一种,在程序中只包括两个数字:0和1。图1-5展示了机器指令码的片段。汇编语言是另一种低级语言,它使用一些关键字来执行基本的命令,诸如读数据、移动数据、保存数据等。

图1-5 只包括0和1的机器指令码

与之相反,高级语言大多借鉴自然语言,因此它们更加便于阅读和编写。使用C++、Python或Ruby编写的代码会由解释器或编译器翻译成机器可以理解的低级语言供机器执行。

高级语言依据不同的种类必须使用解释器或者编译器将其翻译成低级语言以供机器执行。编译型语言的速度通常比解释型语言更快,而解释型语言一般比编译型语言具有更好的可移植性。然而,因为处理器性能的不断提升,解释型语言和编译型语言的性能差别变得越来越小,因此编译型语言的性能优势为其带来的重要地位也在逐渐动摇。高级语言中的JavaScript、Python、Ruby等都是解释型语言。解释器直接执行这些语言,将每一行语句一次性地翻译成机器码。高级语言中的C++、COBOL和Visual Basic等是编译型语言。当使用这些语言完成编写后,编译器将代码翻译成机器码并创建一个可执行文件。此后这个可执行文件将会通过互联网、CD-ROM或者其他媒介进行分发和运行。在计算机上安装的Microsoft Windows或者Mac OS X通常都是由C或者C++这样的编译型语言编写的。

易于访问的网站正在逐步取代安装程序的地位。回想一下你上次是什么时候下载并安装软件的?我想大家可能都不记得了!诸如Windows Media Player和Winamp这样的播放音乐和电影的软件已经被诸如YouTube和Netflix一样的网站代替了(译者注:在中国则主要是被视频网站或App代替)。传统的文字编辑器和电子表格软件如Microsoft Word 和Excel也逐渐地开始受到了类似Google Docs和Sheets的挑战。Google甚至正在销售一款名为Chromebook的便携式计算机,其中没有安装任何程序,完全依赖Web应用所提供的功能。本书的其余部分将会聚焦在开发和创建Web软件上,并不只是因为Web软件发展迅速,而是因为Web应用比传统的安装软件更加易学、易用。

谈了这么多编程方面的话题,接下来让大家真正地了解一下如何使用代码构建一个Web应用程序。Yelp是一个点评网站,用户可以通过搜索来查看那些对本地餐馆、酒吧、购物中心的点评信息。如图1-6所示,Yelp并不是一开始就像现在一样漂亮,但是这些年它的功能、定位基本没变。

图1-6 2004年和2014年的Yelp网站外观

一旦明确了一个应用程序的功能目标,就可以梳理出几个特定的用户行为。这些用户行为中的每一个都是这个应用程序的功能目标的一部分。把页面的设计放在一边,先来看一看网站的功能。Yelp网站总是引导客户进行以下操作。

一个成功的Web应用通常只允许用户完成数量不多的几个关键功能。向一个Web应用中添加过多的功能通常被称为“范围蔓延”(scope creep),它将弱化那些已有的关键功能,因而,这种做法被绝大多数开发人员所摒弃。仍然以Yelp为例,它有超过30 000条餐馆的评价记录,但是直到成立10年后Yelp才允许用户在网站上直接预定餐馆的座位。因此无论使用还是构建一个Web应用,都要有一个清晰的功能目标。

开发者应该首先针对App的功能开发策略做出规划。哪些部分应该自行开发,哪些部分应该集成其他人的模块,这些应该尽早做出选择。开发者经常会针对那些非核心的功能或非卖点的功能寻求第三方来提供现成的模块或组件。这样做的话,App将会以其他人的成果为起点,并从那些已经实现的功能和已经解决的问题中受益。

同样,以Yelp为例,它显示在地图上列出的每一个场所和它的评价信息。Yelp只是收集那些评价信息并编写程序来显示基本的列表数据。如图1-7所示,Google开发了那个嵌入Yelp网站的地图。通过使用Google的地图服务(而不是自己从头开发),Yelp在一开始只用了很小规模的工程师团队就完成了初版的开发,否则其团队的人数和工作量将超出想象。

图1-7 在Yelp网站中用到的Google地图服务

[1] 现在的csedweek网站和作者编写这本书时相比发生了很大的变化,在翻译此书时“Tutorials for Beginners”标题已经找不到了,但是“Write Your First Computer Program”链接还在页面上。大家在页面上查找“Write Your First Computer Program”链接即可。——译者注


在这一章里,你将了解到:

流行网站常用的程序模块;

编写网站时常用的编程语言;

如何为移动设备编写程序。

在大学宿舍能干什么呢?搭建一个百万用户使用的网站怎么样?

这太疯狂了。

——马克·扎克伯格( Mark Zuckerberg)

如今,使用Web编程构建的特色网站以无与伦比的速度吸引着世人的关注。自2004年Facebook问世起的4年时间,它就已经集聚了1亿用户。到2012年,Facebook的用户数量就暴涨到了10亿。相比之下,PC软件如果想要积累100万用户,往往需要数年的时间。智能手机的出现更加速了Web应用聚集人气的速度。目前桌面计算机(包括台式计算机和便携式计算机)的全球年销量大概在3亿台左右,而智能手机却以每年销售20亿部的速度迅速改变着人们的生活方式,并且这个数字还在逐年稳步增长。

在这一章里,大家将会看到一个网站在计算机上以及智能手机上是如何显示的。我将介绍用于编写网站的常用编程语言,并讲解如何编写面向移动设备的应用程序。

在桌面计算机和移动设备上,Web页面是由浏览器负责显示的。最为流行的浏览器有Google Chrome、Mozilla Firefox(前身是Netscape Navigator)、微软的Internet Explorer和苹果的Safari。直到现在大家恐怕还是一个“听话”的用户,每天只知道按照网站所设计的那样通过移动和单击鼠标来使用网站提供的各项功能。接下来,我将剥去网站的“神秘面纱”,让你了解网站构建和运行的内在原理和机制。

你最喜欢哪个网站?通过以下步骤,你可以看到那些用于构建网站的源代码,甚至还可以去修改它。(即便按照我说的去做也不会违规,所以不必担心。)

 

假设你使用的是Google Chrome浏览器,那么可以使用以下方法查看任何网站的源代码。请在Google的官方网站上安装Chrome浏览器的最新版本。

“破解”你最喜欢的网站的方法如下。

(1)使用Chrome浏览器打开你最喜欢的网站(这里将以Huffington Post网站为例)。

(2)将鼠标指针指向任意静态标题,并单击右键,在右键菜单中的“Inspect element”项目上单击左键,如图2-1所示。

图2-1 单击鼠标右键并在菜单上选择“Inspect element”

 

如果使用苹果计算机,你可以通过按住键盘上的“Control”键并用鼠标单击的方式完成所谓的“右键”操作。

开发者工具栏将出现在浏览器的底部(编者注:新版本已移至右侧)。这里将显示实现当前页面的源代码。高亮显示的代码片段就是最开始鼠标所指向的标题部分,如图2-2所示。

图2-2 高亮显示的部分是用来实现页面标题的代码片段

注意高亮代码的左侧边缘,可以找到一个向右的箭头,单击鼠标将展开显示完整的源代码。

(3)仔细在高亮显示的代码片段中查找标题中显示的文字,找到后双击这段文字,之后就可以编辑这段文字了,如图2-3所示。

图2-3 在标题文字上双击鼠标左键进行文字编辑

注意不要点到以“http”开头的内容,那是标题栏的链接。单击标题栏链接将会打开一个新的浏览器窗口或者在当前窗口中打开一个页面卡并加载这个链接。

(4)在标题栏插入内容后按回车键。

这时插入的内容将会出现在标题栏上,如图2-4所示。是不是很有趣?

 

如果按照上述步骤成功地修改了网站的标题栏,即可进行下一步操作。刷新一下页面,原来的标题栏将会再次出现。为什么呢?不是已经修改成功了吗?为什么刚才编辑的内容会消失呢?

图2-4 成功改写了页面上的标题栏

为了回答这个问题,首先需要理解网页是如何被传递到计算机中的。

当我们在浏览器中输入一个网址,在页面被加载之前,计算机悄悄地执行了以下几个动作,如图2-5所示。

图2-5 将一个网页传递到浏览器的过程

(1)计算机向路由器发送“获得页面”这个请求。路由器负责分发家庭网络或公司网络中的各种互联网访问请求。

(2)路由器将网络访问请求发送给互联网服务商(ISP)。在美国,常见的ISP包括Comcast、Time Warner、AT&T以及Verizon。

(3)ISP将访问请求中的域名部分转换成一个数字表示的地址,它被称为IP地址。IP地址是一个点分格式的数字串(如192.168.1.1)。就像家庭住址、公司地址一样,这个数字表示的IP地址是唯一的,每个计算机都有一个。ISP有一个类似于电话本的“数字地址对照簿”,它被称为域名服务器。域名服务器是用来将字母型的地址转换成IP地址的特殊计算机。

(4)当找到了特定的IP地址后,ISP知道应该向谁转发访问请求了,此时计算机的IP地址也包含在这个访问请求中。

(5)网站服务器收到访问请求后,将向计算机发送一个网页源代码的副本,以便在浏览器中显示。

(6)浏览器收到网页源代码副本后将其显示在屏幕上。

当在浏览器的开发者工具栏中编辑网页标题栏内容时,编辑的只是网站服务器发出来的、保存在各自计算机中的网页代码副本,因此只有修改人能看到效果。当再次刷新页面时,计算机将会再次执行上述的步骤,此时计算机将会从网站服务器重新下载一份页面代码副本,这份新的副本将会替换此前保存在计算机中的内容,因此此前的修改也被覆盖掉了。

 

大家可能听说过一个名叫“Ad Blocker”的软件工具。这个工具就像之前修改标题栏一样,通过修改本地的网页副本来删除网页中所包含的广告。因为网站通常都是靠广告来支付其各种运营费用的,因此“Ad Blocker”工具的出现引起了不少争议。如果像“Ad Blocker”这样的工具越来越流行,那么网站将会失去广告所带来的收入,最终那些大大小小的网站会不会将其运营成本转嫁到普通的网站用户身上也未可知。

现在大家已经了解了浏览器是如何访问网站的,接下来就更深入地了解一下网站是如何运作的吧。如图2-6所示,根据代码的功能,用于网站编写以及一般用途的代码通常分成4部分。

图2-6 每个网站都由这4个部分构成

通常,网站开发程序员会比较精通上述的一两个方面。例如,一个有经验的工程师可能比较了解前端和逻辑语言,或者对数据库比较熟悉。当然,一个网站开发工程师也不是万能的,他们可能只对上述领域比较熟悉,脱离了这些领域,我想也只能从头学起了。就像一个脍炙人口的喜剧作家Jerry Seinfeld可以写出娱乐一代人的经典作品,而他的爱情小说却毫无乐趣。

 

对网站构建的所有方面都了解的“全才”工程师少之又少,这些“全才”工程师被称为全栈工程师。通常小公司才会招聘全栈工程师,而大公司则需要对某一个方面非常深入的领域专家。

Web应用是指通过浏览器或者移动设备访问的网站的总称。网站通常都会针对移动设备进行优化,为智能手机或者平板电脑优化过的网站叫作移动Web应用。但是,本地移动应用不能通过浏览器访问。它们通常都是经过特殊设计的应用,大家可以在流行的应用市场如苹果的App Store或者Google的Google Play下载适合各自移动设备的应用程序。移动设备在近几年史无前例地在保有量、销量上超过了桌面计算机。最近,移动计算领域出现了以下2个显著的趋势。

因为在过去的十几年里,移动设备的增长速度之快达到了让人瞠目结舌的地步,所以很多公司将面向移动设备的应用程序开发与设计列为头号大事,移动应用的风头远远超过了具有相同功能的桌面版本。两个著名的例子WhatsApp和Instagram就是这样,它们首先开发了面向智能设备的移动应用,并不断地为其增加新功能,此后它们的桌面版本才姗姗来迟。

图2-7 移动设备增长速度超过桌面计算机

Web应用的开发难度比移动应用的低,它完全不需要或者只需要针对开发和测试做一点点额外的工作就可以同时在移动设备、桌面计算机上运行。虽然移动应用可以完成很多一般Web应用所擅长的任务,诸如收发邮件等,但是一些任务使用Web应用更加简便、易用。比如,预约行程这件事使用Web应用来处理更合适。因为它包括了很多必要的步骤,如查询航班、酒店、租车信息、查看日历、输入大量的个人信息、支付信息、完成支付等,这些步骤最好是在桌面计算机上使用多窗口的方式完成。

正如我将要在接下来的章节中介绍的那样,用来编写Web应用的编程语言包括HTML(Hypertext Markup Language,超文本标记语言)、CSS(Cascading Style Sheets,层叠样式表)、JavaScript。此外,还可以通过使用Python、Ruby以及PHP等编程语言来为网站添加更多丰富多彩的功能。

如图2-8所示,一个简单的网站就是用HTML、CSS和JavaScript编写的。HTML用来把文字显示在页面上,CSS用来调整文字的风格,JavaScript用来实现交互式操作。在这个页面中,交互式的操作包括一个用来在Twitter和Facebook上分享内容的按钮,按下这个按钮将会更新这个内容被分享的总次数,既包括自己分享的次数,也包括其他人分享的次数。通常,一个网站如果只显示这些静态的、不变的内容,那么这3种编程语言就足以很完美地完成任务了。大家将在后续章节中学到这3种语言的更多内容。

图2-8 使用HTML、CSS和JavaScript编写的Linda Liukas网站

那些包含诸如用户账号、上传文件、电子商务等高级功能的网站,通常需要使用专门的编程语言完成任务。虽然Python、Ruby和PHP并不是完成这些任务的唯一选择,但它们却是最为流行的选择之一。这里所谓的“流行”意味着:有大量用户正在使用这些编程语言,他们在为数众多的在线社区里贡献自己原创的、具有特定功能的代码,并不断地发起针对某些特定问题的讨论,而且总是有人为这些问题提供解答。这一切都将成为大家完成任务、解决问题的宝贵资源,帮助大家顺利地、愉快地学到知识并达成工作目标。

这几种编程语言都有非常流行的、文档详尽的、功能完善的“程序架构”。所谓“程序架构”是指由一系列具有特定功能的模块构成、帮助开发者快速构建、测试网站的程序集合。通常这些程序框架都内置了诸如用户账号、认证等功能,开发者可以非常方便地加以利用,省时省力。大家也可以将程序框架与使用文字处理器(如Word)编写的模板做类比,可以根据不同的用途(比如设计个人简历、贺卡、挂历等)选择不同的模板,快速完成任务。这样做的另一个好处是利于保持一致性,也就是说无论内容是什么,大体格式是一致的。反之,如果不使用模板,就无法享受到这些便利条件了。目前,这些编程语言所支持的流行网站框架具体如下。

移动应用是当前的一个热门话题。一方面是因为诸如WhatsApp、Instagram这样的优秀移动应用在资本市场上备受追捧,还因为那些诸如Rovio(Angry Birds的开发商)、King Digital(CandyCrush的开发商)等在市场上风生水起,每年都赚个盆满钵满。

编写移动应用程序,开发者可以有以下选择。

在这两种选项中做抉择看似简单,却也在实际操作中存在一些问题。

 

一个著名的被苹果应用商店“拒载”的案例是,苹果因为Google开发的Google Voice应用与其手机预搭载的某个功能存在重复,所以驳回了Google的上线申请。作为应对,Google开发了一个基于浏览器的移动Web应用,允许用户通过浏览器使用这个功能,这样苹果就无能为力了。

如果你需要在移动Web应用和本地移动应用之间做选择,那么需要考虑目标应用的功能复杂度。如果你想做一个像日程表、菜单一样简单的应用,那么可以使用移动Web应用的形式。因为这样做可以在花费很少成本的前提下完成开发工作。相反,如果需要开发的是那些诸如即时消息、网上社区这样的功能复杂度高、用户众多的应用,那么本地移动应用的形式可能会更好。但事情也没这么简单直接,往往那些老牌的科技公司也会在这个问题上反复纠结。最开始Facebook和LinkedIn的产品都以移动Web应用的形式出现,但是后来他们不约而同地都将产品的重心转到了本地移动应用上。很多公司都认为本地移动应用可以天然地提供更快的性能、更好的内存管理、更强大的开发者工具,这些使他们最终成为了本地移动应用的“铁杆粉丝”。

虽然任何网站都可以使用移动设备上的浏览器来访问,但是那些没有专门为移动设备优化过的网站通常看起来都比较难看。它们的页面字体尺寸、图片分辨率都会为了适应移动设备的屏幕而被强行缩小,如图2-9所示。相反,专门为移动设备优化过的网站通常都会选择那些易于阅读的字体、适合移动设备屏幕显示的图片尺寸,并且一般都会以纵向平铺的方式组织它的内容。

图2-9 左:未经为移动设备优化的星巴克网站。右:为移动设备优化过的星巴克网站

可以通过使用HTML、CSS和JavaScript来完成移动Web应用的开发工作。CSS根据屏幕的尺寸控制网站页面的外观。那些搭载小屏幕的智能手机,通常都会被CSS指定一种纵向平铺的布局,而那些搭载较宽屏幕的平板电脑将会被CSS指定为另一种横向平铺的布局。因为这些移动Web应用是通过浏览器访问的,而不是被安装在用户的设备中,所以它们的服务器不能向用户的设备推送消息,这些移动Web应用不能在浏览器退出时仍然保持后台执行的状态,也不可以与其他的应用通信。

虽然可以选择使用HTML、CSS和JavaScript从头开发一个移动Web应用程序,但是移动Web框架将为你提供很多现成的程序模块,就像本书此前提到的那些编程语言常见程序框架一样。这些移动Web框架包括一系列常用的功能模块,开发者可以灵活地使用它们来快速完成网站的构建、测试和推广上线。Twitter开发的Bootstrap就是其中一个优秀的代表,我将在第8章重点介绍它。

本地移动应用可以更快、更稳健,并且看起来比移动Web应用更加漂亮。人们在安卓设备上使用Java、在苹果设备上(iOS平台)使用Objective-C或者Swift来开发本地移动应用。这些开发完成的移动应用必须首先上传到相应的应用商店,并等待审批。应用商店的好处之一是它集中了所有应用程序的发布渠道,这样任何一个在某方面有“特长”的优秀应用都将获得更大的下载量,将更加有利于推广。此外,因为本地移动应用是被安装在移动设备中的,所以它们可以在没有网络连接的场所中使用。最为重要的是,用户更加青睐本地移动应用,这个趋势还在持续,未来将会有更多的用户使用本地移动应用。因为本地移动应用可以在后台不间断地运行,因此可以支持一些诸如推送消息、与其他应用通信等功能,而这些功能是移动Web应用的先天短板。

此外,本地移动应用可以更好地支持图形操作,因此在开发游戏应用方面具有先天的优势。我们还要清醒地认识到,虽然本地移动应用可以提供更好的性能、支持更多的功能,但是也需要更长的开发时间、更多的人力物力来完成开发工作。

还有一种折中的方案可用于开发本地移动应用:混合方案。也就是使用一个名为“封装层”的组件包装由HTML、CSS和JavaScript编写的页面代码,并在一个本地移动应用构成的“容器”中运行它。最常见的“封装层”是一个名为PhoneGap的产品,它支持JavaScript语言,允许通过JavaScript程序访问设备层的各项功能,而这些设备层功能在移动Web应用中是无法使用的。一旦一个版本的本地移动应用“容器”开发完成,这个所谓的本地移动应用“容器”就可以同时在9种不同的平台(Apple、Android、Blackberry、Windows Phone等)上正常使用。使用这种“混合方案”的好处是,可以用最小的代价(只开发一个版本的程序)实现最大的效益(在很多个流行平台上无缝使用)。

 

设想一下,假如你懂得如何弹钢琴,但你也想学习拉小提琴。实现这个目标的一个方法是买一个小提琴然后从头学起。另一个取巧的方法是买一个具有声音合成功能的电子琴,将它的输出方式设定为小提琴,然后像弹钢琴一样在这个电子琴上演奏,此时大家听到的却是小提琴的声音。这正是所谓“混合方案”的一个生动类比。在这个例子中,HTML、CSS和JavaScript扮演着钢琴的角色,本地iOS应用扮演着小提琴的角色,像PhoneGap一样的“封装层”则扮演着具有声音合成功能的电子琴的角色。就像可以将电子琴的输出方式设定为小提琴、吉他、大提琴等,PhoneGap也可以创建支持Apple、Android和其他平台的本地移动应用。


其他的常用编程语言(C、Java等)

大家也许想知道为什么存在这么多种编程语言,这些编程语言都是用来做什么的。通常来讲,当开发者发现一些特定的需求无法被当前的编程语言所满足的时候,就会创造一种新的编程语言。例如,苹果为了让开发iPhone、iPad应用变得更加容易,推出了一种名为Swift编程语言,用来替换此前广泛应用的Objective-C语言。编程语言与英语、拉丁语等自然语言很相似。如果开发者都使用一种新的编程语言来完成自己的工作任务,那么它就会兴旺发达。在过去的6个世纪中,因为越来越多的人学习英语并在日常生活中使用英语进行交流,所以英语这门语言自然就会在全世界范围内流行起来,并成为当今世界上最流行的语言之一。相反,那些不被开发者认同和采纳的编程语言,其命运就将如同拉丁语一样逐渐消亡。

大家可能听说过C++、Java和FORTRAN语言。这些语言在今天仍然存在,并且它们的应用领域超出大家的想象。C++常常应用在那些对性能高度敏感的领域。比如C++常常被用来编写诸如Chrome、Firefox、Safari等Web浏览器。此外,C++还被用来编写诸如Call of DutyCounter Strike

这样的游戏程序。Java通常被用来编写大型的商业软件以及用于在Android平台上开发本地移动应用。最后,虽然FORTRAN语言现在已经不像过去一样流行了,但是它仍然在一些科学领域中顽强地生存着,因为它对金融领域中常用的计算具有良好的支持,所以当今世界上一些大型的银行还在使用FORTRAN语言作为内部的开发工具。

正因为人们不断追求更快、更好的编程方式,编程语言这一领域才会不断地推陈出新,使得编程这一特殊的劳动形式充满魅力与活力。



相关图书

推荐系统:产品与算法解析
推荐系统:产品与算法解析
程序员的制胜技
程序员的制胜技
面向电子鼻的复合光气体传感方法
面向电子鼻的复合光气体传感方法
程序设计竞赛专题挑战教程
程序设计竞赛专题挑战教程
Serverless核心技术和大规模实践
Serverless核心技术和大规模实践
深入浅出Windows API程序设计:编程基础篇
深入浅出Windows API程序设计:编程基础篇

相关文章

相关课程