学习一门编程语言最好的办法就是通过写代码解决实际问题。今天为大家分享的这本《挑战编程技能:57道程序员测试题》为你提供经过大家验证的好问题,以及更为重要的——解决好问题的好思。市面上的这类书极少,它不像ACM,也不像学习某种编程语言的训练营,显得尤为可贵。
新手程序员在具备了理论基础后,面对实际项目时往往不知道如何解决问题;有经验的程序员在学习了一门新语言后,也会有很多不知道如何使用的特性。针对程序员的这一普遍困惑,资深软件工程师Brian P. Hogan在这本书中总结了57道题,帮助他们技能。这些题均取自实践,难度会逐渐增加,使得编程训练充满挑战又乐趣多多。
例如,读者在第一周需要编写的程序只是简单地接受一些输入,操作数据得到不同的输出,以便体验计算机程序如何处理输入和输出操作。这是新手面对的问题。
下一步就有些挑战了,要编写进行计算的程序。有些程序就像计算房屋面积那么简单,有些可能会涉及金融和医疗方面的计算。然后,通过引入决策逻辑和重复逻辑,我们会增加程序的复杂性,而且会引入函数。之后,你会发现有些问题需要使用像数组或映射这样的数据结构来解决。
书最后面有几个比较大的程序,每个都有一些在构建程序时必须遵循的约束,还有一些高于当前程序的挑战。如果你在前面已经积累够了经验,可以试试。取决于所选择的编程语言,有些挑战可能非常困难。比如,如果使用JavaScript和HTML开发这些程序,那实现一个GUI版本会非常容易;而换成使用Java开发,就要多做大量的工作。
现如今,很少有程序员只靠一门编程语言就能活得无忧无虑。很自然地,如何高效掌握一门新编程语言就成为具有普遍意义的问题。本书恰好帮你解决这个痛点。
本书不限定于某种具体的编程语言。你可以选择自己喜欢的任何一门编程语言。但是编程语言的选择会影响书中程序实现的难易,比如:
本书会通过这种比较和引导,让你更为快速地上手一门新编程语言,并理解它与你之前学过的语言有何差别。
——如果你只想通过这本书看看自己的水平到底怎样,不好意思,这个目标实现上会有折扣。原因有三:
本书示例具有通用性,可用任何编程语言实现,因此,如果你只想测定某编程语言的水平,这些示例可能不是最理想的;
本书不会提供测试程序的解决方案。主要目的是引导你做足够深入的思考,使用所有可调配的资源,最终想出解决之道。
“如果你正想学习一门新的编程语言,那你也应该选择这本书。你将从中学到如何从基本原理出发解决问题,为后面的学习和工作打下的基础。我学到了很多,希望你也大有收获。”——Stephen Orr,Impact Applications高级软件工程师
“实践是学习新编程语言的最佳方法,而这本书就是这方面的绝佳资源。因为这本书是语言无关的,所以也有无限的重读价值。在诸多技术图书中,这种特质极为少见。”——Jason Pike,件工程师
“对于任何一个想学习一门全新语言的人而言,这本书都常棒的。不管是新程序员还是老程序员,都能从这本书的题中获益良多。初学者可以舒服地学习这本书,有经验的程序员也能看到很多挑战。”——Alex Henry,JAMF Software测试工程师
Web开发者、教师、技术书作者。自1995年起开发Web站点和应用,担任过开发者,创业公司技术主管。经常在各种技术大会上发表。目前在契皮瓦谷技术学院教授软件开发课程。另著有《HTML5和CSS3实例教程》《Web开发秘方》等书。Twitter账号@bphogan。
臧秀涛中国科学院计算技术研究所硕士,对编程语言、虚拟机等领域有浓厚兴趣。先后从事过游戏服务器、操作系统方面的开发,现于InfoQ任QCon大会主编,推动软件开发领域内实践经验的。业余喜欢读书、翻译,译作包括《Java性能权威指南》《C++ API设计》《Groovy程序设计》等。 期待读者通过微博(@臧秀涛)或者微信号dev-news联系。
你觉得自己的编程水平如何?这本书吸引你吗?为什么?评论区留言,精选评论点赞前2位,图灵君选3位,每人一本签名版《挑战编程技能呢:57道程序员测试题》。
推荐:
网友评论 ()条 查看