基本信息
- 作者: [美] Brian P. Hogan
- 译者: 臧秀涛
- 出版社:人民邮电出版社
- ISBN:9787115446800
- 上架时间:2017-2-9
- 出版日期:2017 年2月
- 开本:16开
- 页码:136
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计
编辑推荐
学习并掌握一门编程语言好的方式是用它去解决问题,而本书正是为想要动手实践的程序员设计的。书中基于日常软件开发中经常遇到的实际问题提炼了57道练习题,以帮助程序员磨练技艺、提升技能。这些练习题由浅入深,首先从简单的程序入手,然后逐步过渡到解决更难的问题。如果你是一名新手,这些练习题可以帮你打开编程的大门。如果你是一位经验丰富的程序员,也可以运用这些练习题来快速地学习一种新语言或新的编程风格。
内容简介
作译者
Web开发者、教师、作者、编辑。自1995年起一直在开发Web站点和应用。曾是多家小企业的自由开发者,并在两家创业公司担任过技术主管。经常在各种技术大会上发表演讲。目前在契皮瓦谷技术学院教授软件开发课程。喜欢撰写技术著作,尤其是关于Web设计和开发的。另著有《HTML5和CSS3实例教程》《Web开发秘方》等书。Twitter账号@bphogan。
目录
理解问题 1
发现输入、处理和输出 3
用测试驱动设计 4
用伪代码编写算法 7
编写代码 9
挑战 9
前进! 10
第2章 输入、处理和输出 11
1 问好 12
2 计算字符数 13
3 打印引语 14
4 疯狂填词 15
5 简单的数学处理 16
6 计算退休时间 17
本章回顾 17
第3章 计算 19
7 矩形房间的面积 22
8 比萨聚会 23
9 涂料计算程序 24
序言
如何使用本书
宝剑锋从磨砺出。
音乐会钢琴家每天练习数小时,学习音乐,排练技艺,提升技能。他会反复练习同一段音乐,打磨每一处小细节,确保准确无误,因为等到登台表演时,面对那些花钱、花时间来的观众,他希望可以为自己的表现而感到骄傲。
职业足球运动员会在健身房里花费很多时间,练习托举、跑动和跳跃,并反复训练,直至完全掌握,然后才开始练习足球。他会研究比赛,观看以前的比赛录像。当然,他也会参加分组对抗和表演赛,确保做好一切准备,可以随时真正上场比赛。
空手道从业者一生都在练习“形”(kata)——这是模仿实战的动作套路,学习如何呼吸以及正确发力。他会千万遍地练习同一个套路,通过一次次重复做到越来越好。
我遇到过的优秀软件开发者,也是这样锤炼其技艺的。他们并不是天天只利用上班时间练习,而是会用自己的时间学习新编程语言,在其他方面不断精进自己的技术。当然,在工作中他们也会学习新东西,但因为是工作时间,所以会有预期:公司是希望你有产出的,而不是花钱请你来练习的。
本书要谈的就是程序员如何锤炼其技能。翻到本书的某一页,打开文本编辑器,敲出上面的程序。可以自己做些修改。用你从来没用过的一门语言实现这个程序。随着一次次重复,你要做得越来越好。
目标读者
本书主要面向两类程序员。
首先,本书为刚开始学习编程的人提供了课外练习材料。技能不可能仅靠做作业就得到提升。未来的雇主会希望你们表现出批判性思维和解决问题的能力,而这需要通过练习来训练。本书会提供这种练习,书中的问题都取自实践,是很多开发者都要面对的,但是这里针对读者的能力做了针对性的设计。每一章都会围绕一项基本的编程能力展开,而且会比前一章复杂一点,后面的内容构建于前面所学的知识之上,同时让你为以后的挑战做好准备——不管是课内的还是课外的。
很多新手程序员习惯于有人清清楚楚地告诉他们如何解决某个问题。他们往往是跟着可以直接输入示例代码的教程来学习一门语言。这确实也是开始编写代码的不错途径。但是当面对没有现成答案的开放性问题时,这些程序员就纠结了。任何有经验的人都可以告诉你,软件开发中满是开放性问题。本书中的练习可以帮助你培养问题求解技能,使你有信心攻克更大的问题——或许是从来没有人解决过的问题。
不过,本书也适合那些想将手头的事做得更好的有经验的程序员。在学习Go和Elixir时,我使用了类似本书中的那些程序。在尝试iOS开发时,我也编写了这些程序。每隔一段时间,我都会用一门我了解的语言实现一下它们。我熟练掌握了JavaScript和Ruby,而看看是否能以不同的方式、不同的算法或模式实现其中的一个程序,也是极大的挑战。在我开始全职讲授Ruby和JavaScript时,这些程序帮我发现和解释了这两种语言的一些特性,这些特性我知道怎么用,但是并没有充分理解。所以,如果你是有经验的开发者,我鼓励你也这么做。比如用Haskell试试其中的一个程序;或是试试用你熟悉的每种语言编写其中的一个,然后比较一下结果。也可以让你的同事每周做其中的一个练习,并比较你们的方案;或是使用这些程序来指导团队中的新人。
教育工作者需要注意
如果你是在高中或大学讲授编程入门课程,可能会发现本书中的练习在课堂上也很有用。不过,我不建议将其用作最终的考试评估,我鼓励读者彼此分享其解决方案。当然,如果学生可以共同合作,我也建议将本书中的练习用于课堂。这些练习很适合问题导向的学习环境。
本书内容
之所以写作本书,首先是希望向编程语言初学者提供一些一开始可能要面对的、有挑战的问题。因此,大部分问题一开始相对简单,难度会逐渐增加。书中练习的这种延续性,使得编程基础的训练充满挑战,同时又有很多乐趣,还可以让我们更加快速地上手一门新语言。在第一部分,程序只是简单地接受一些输入,操作数据得到不同的输出,让你体验计算机程序如何处理输入和输出操作。这是新手第一周要编写的程序。
下一步就有些挑战了,要编写进行计算的程序。有些程序就像计算房屋面积那么简单,但是其他程序可能会涉及金融和医疗方面的计算,和我们可能在工作中碰到的类似。
然后,通过引入决策逻辑和重复逻辑,我们会增加程序的复杂性,而且会引入函数。
之后,你会发现有些问题需要使用像数组(array)或映射(map)这样的数据结构来解决。这些程序还需要你利用之前解决的其他问题。
媒体评论
——Stephen Orr,Impact Applications高级软件工程师
“实践是学习新编程语言的zui佳方法,而这本书就是这方面的绝佳资源。因为这本书是语言无关的,所以也有无限的重读价值。在诸多技术图书中,这种特质极为少见。”
——Jason Pike,theswiftlearner.com软件工程师
“对于任何一个想学习一门全新语言的人而言,这本书都是非常棒的。不管是新程序员还是老程序员,都能从这本书的练习题中获益良多。初学者可以舒服地学习这本书,有经验的程序员也能看到很多挑战。”
——Alex Henry,JAMF Software测试工程师