关于编程的书籍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于编程的书籍相关的知识,希望对你有一定的参考价值。
一、Python系列(3本)如果你之前一点编程经验都没有,先看如下两本:
1、《简明Python教程》(A Byte of Python)
入门Python的绝佳Tutorial,从书的目录便可以了解到作者Swaroop C H清晰的行文思路,以及对Python高超的驾驭能力。
2、《集体智慧编程》
以具体实例的方式来展示Python的编程技巧,受益良多。作者用非常直观的方式向读者展示了人工智能和机器学习中的大量经典的算法。更可贵的是,作者在展示算法时所使用的例子都是网络中非常有代表性的场景,并且很多情况下还会结合一些实际运营的 Web 站点的数据作更进步阐释。当然,作为一本实用型的书,少不了的是大量可运行的代码。
3、《Python Cookbook中文版,第3版》
这本书可谓Python版《代码大全》。有人说《代码大全》这类书是字典,其实不尽然《代码大全》是高手过招。《Cookbook》也如此,阅读时总能让你有一种:“哇塞,漂亮!”的感觉。能把 Cookbook 全部读完,你的Python水平绝对发生质变。
二、Java语言系列(3本)
1、《Java核心技术·卷1:基础知识(原书第9版)》
Java领域最有影响力和价值的著作之一,拥有20多年教学与研究经验的资深Java技术专家撰写,与《Java编程思想》齐名。
2、《算法 第四版》
Java 语言描述,算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。书的内容非常多,可以说是Java程序员的必备书籍之一
3、《数据结构与算法分析:Java语言描述》
这本书真是非常好!个人感觉很适合给初学者入门看,里面的分析数学公式恰到好处,没有算法导论的令人望而生畏,也没有国内图书的草草了事,既学习了数据结构又有刚刚好的算法分析,很容易使人产生共鸣。
当然,对于Java我们建议进行系统的学习,扎实基础不能只靠看书。如果你有任何疑问,欢迎你在千锋武汉官网上留下你的相关情况,我再对号入座帮你解答。
在这里插入图片描述
三、前端系列(4本)
1、《Java权威指南(第6版)》
淘宝前端团队翻译,这本书又叫犀牛书,号称Java开发者的圣经,网上对此书评价很多,大概意思都是说这本书是一本Java文档手册,没有完整看过一遍此书的都不能算是一名合格的前端工程师。
2、《Java高级程序设计(第3版)》
又称红宝书,雅虎首席前端架构师,YUI的作者Zakas出品。虽然书名带了“高级”二字,但是讲得也很基础,而且行文风格很流畅,每一小节就像是一篇博客,读起来并不枯燥,个人感觉比上面那本犀牛书可读性更强。
3、《Java设计模式与开发实践》
本书是在设计模式上的进一步扩充。一大特点就是结合实操,代码完整能直接应用到实际开发中。
4、《Web性能权威指南》
本书是谷歌公司高性能团队核心成员的权威之作,堪称实战经验与规范解读完美结合的产物。本书目标是涵盖Web开发者技术体系中应该掌握的所有网络及性能优化知识。 参考技术A 《程序员修炼之道》由一系列的独立部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。无论你是初学者,是有经验的程序员,还是软件项目经理,本书都适合你阅读。
代码整洁之道
作者:Robert C. Martin,66% 推荐度
软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。本书提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
代码大全(第 2 版)
作者:Steve McConnell,42% 推荐度
这是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它从软件质量和编程思想等方面论述了软件构建的各个问题,并详细论述了紧跟潮流的新技术、高屋建瓴的观点、通用的概念,还含有丰富而典型的程序示例。这本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论是什么背景的读者,阅读这本书都有助于在更短的时间内、更容易地写出更好的程序。
重构:改善既有代码的设计
作者:Martin Fowler,35% 推荐度
重构,一言以蔽之,就是在不改变外部行为的前提下,有条不紊地改善代码。多年前,正是本书原版的出版,使重构终于从编程高手们的小圈子走出,成为众多普通程序员日常开发工作中不可或缺的一部分。本书也因此成为与《设计模式》齐名的经典著作,被译为中、德、俄、日等众多语言,在世界范围内畅销不衰。
深入浅出设计模式
作者:Eric Freeman / Bert Bates / Kathy Sierra / Elisabeth Robson,29.4% 推荐度
《深入浅出设计模式》(影印版) 的编写运用许多最新的研究,包括神经生物学、认知科学以及学习理论,这使得《深入浅出设计模式》(影印版) 能够将这些设计模式深深地烙印在你的脑海中,不容易被遗忘。你将会更擅长于解决软件设计中的问题,并能够和你的团队成员用模式的语言来更好地沟通。
人月神话
作者:Frederick P. Brooks Jr,27.9% 推荐度
作者为人们管理复杂项目提供了颇具洞察力的见解,既有很多发人深省的观点,也有大量的软件工程实践。书中的内容来自布鲁克斯在 IBM 公司 System 360 家族和 OS 360 中的项目管理经验。初版的 20 年后,布鲁克斯重新审视了他原先的观点,增加了一些新的想法和建议。新增加的章节包括:原著中一些核心观点的精华;在经过了一个时代以后,Brooks 博士对原先观点新的认识;1986 年的经典文章《没有银弹》;对 1986 年所下论断(在 10 年内不会出现银弹)现在的认识。 参考技术B 第一名:1181票 《程序员修炼之道》
《程序员修炼之道》由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。
尽管这本书写于1999年,但是它的概念是我们以一种务实的态度去开发复杂系统的基础。程序员也是工匠,他们被训练使用一组特定的工具(编辑器,对象管理,版本跟踪器)生成某种可在一定环境中(硬件组件上的操作系统)工作的产品(程序)。
第二名:701票《计算机程序的构造和解释》
以一种对解决问题和编程技术分析和严谨的态度,这本书面向于工程。这本书进一步解释了4个最著名的编程语言范式——命令式编程,面向对象编程,基于逻辑编程和应用性编程。
第三名:572票 《C程序设计语言》
在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛。本书原著即为C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。
我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。人们熟知的“hello,World"程序就是由本书首次引入的,现在,这一程序已经成为众多程序设计语言入门的第一课。对于计算机从业人员来说,《C程序设计语言》是一本必读的程序设计语 言方面的参考书。
第四名:481票 《算法导论》
这本书深入浅出,全面地介绍了计算机算法。对每一个算法的分析既易于理解又十分有趣,并保持了数学严谨性。本书的设计目标全面,适用于多种用途。
涵盖的内容有:算法在计算中的作用,概率分析和随机算法的介绍。书中专门讨论了线性规划,介绍了动态规划的两个应用,随机化和线性规划技术的近似算法等,还有有关递归求解、快速排序中用到的划分方法与期望线性时间顺序统计算法,以及对贪心算法元素的讨论。此书还介绍了对强连通子图算法正确性的证明,对哈密顿回路和子集求和问题的NP完全性的证明等内容。
第五名:478票 《重构:改善既有代码的设计》
Martin Fowler写的《重构Refactoring》主要关于改进现有代码的设计。这是一个改变软件系统而不改变代码的外部行为,却能提高它内部结构的过程。
《重构:改善既有代码的设计》(中文版)的核心是一份完整的重构名录(catalog of refactoring),其中每一项都介绍一种经过实证的代码变换手法(code transformation)的动机和技术。某些项目如Extract Method和Move Field看起来可能很浅显,但不要小看它们,因为理解这类技术正是能否顺利进行重构的关键。
函数式、动态和面向方面编程的模式
【中文标题】函数式、动态和面向方面编程的模式【英文标题】:Patterns for functional, dynamic and aspect-oriented programming 【发布时间】:2010-12-16 05:40:24 【问题描述】:我们有一本关于面向对象编程模式的非常好的 GoF 书籍(设计模式:可重用的面向对象软件的元素),以及网络上关于此主题的大量文章和资源。
有没有关于函数式编程模式(最佳实践)的书籍(文章、资源)?
对于 Python 和 Ruby 等语言的动态编程?
对于 AOP?
【问题讨论】:
【参考方案1】:这是Design Patterns in Dynamic Programming的链接
【讨论】:
我是唯一一个对使用“动态编程”来描述动态语言编程有问题的人吗?该术语已被占用。就像 .NET 人在表示“静态类型”时使用“强类型”一样。 ^没有。这也让我很困扰。【参考方案2】:有一个Design patten in Ruby。
除了GOF中提到的设计模式之外,它还列出了一些其他模式,如Convention over Configuration。
【讨论】:
【参考方案3】:Functional Pearls 不是函数式编程设计模式的规范集(其中之一)吗?
【讨论】:
【参考方案4】:GoF 中描述的设计模式列表是为 C++ 和 Java 等语言编写的。它有时被认为是使不灵活的语言更加动态的变通方法列表。例如,Ruby 中并不真正需要访问者模式,因为您可以在运行时简单地将添加成员函数更改为您的类。如果你可以使用 mixins,装饰器模式就已经过时了。
根据我的经验,当我用 C++ 实现解决方案时,我倾向于将大部分时间花在编写脚手架代码上。我首先创建一个平台,让我在应用程序的程序域中进行思考。设计模式可能是作为对不同种类的脚手架进行分类的一种方式而开发的。
我应该提到,当我使用 Ruby 编程时,我没有太多支持代码。似乎不需要它。
我的理论是,其他语言不会仅仅因为它们的基本语言结构就足够了而强调设计模式的概念。为 Java 和 C++ 辩护:这可能是因为函数式和 AOP 语言通常用于更具体的问题领域或领域,而 Java 和 C++ 则用于所有领域。
现在来点不同的。如果您对 OO 设计感到有些厌烦,并且想学习一些新东西,那么您可能会对 Stepanov 撰写的书 Elements of Programming 感兴趣。在这本书中,他解释了如何从数学的角度来处理编程。如需预览,请查看他的 Class notes for Adobe(可在 this page 上找到)。您可能还对 Adobe 的 Collected Papers 感兴趣。
【讨论】:
我部分同意你的看法。但是,例如,函数式语言具有一组类似的特性来处理该领域的常见任务——考虑单子/工作流或模式匹配或流水线。此外,例如,像 Python 这样的动态和灵活的语言传达了装饰器模式,即使它是内置在语言中的。【参考方案5】:之前有人问过一个相关问题:"Does functional programming replace GoF design patterns",得到了很好的回应。
“设计模式”的等价物在 FP 中非常模糊。通常,每次在代码中看到“模式”时,您都应该创建一些东西以统一的方式涵盖其所有用途。通常它是一个高阶函数。
比如下面的C代码
for (int i = 0; i < n; i++)
if (a[i] == 42)
return true;
return false;
可以想到一些基本的“设计模式”——检查列表中是否有一些特殊元素。这个 sn-p 可能在不同条件的代码中出现多次。在 FP 中,您只需多次使用高阶函数。它不再是“模式”了。
函数式编程有自己的实践,但它们与 OOP 中的“设计模式”有很大不同。它们包括使用多态性、列表、高阶函数、不变性/纯度、惰性[并非所有都是 FP 必不可少的或特定的]...另见 "what are core concepts of FP"。此外,类型类 (Haskell)、模块和仿函数 (OCaml)、continuations、monads、zippers、finger trees、monoids、arrows、applicative functors、monad transformers、许多@98765413 @(book) 等Functional pearls,Randall Schulz 已经提到,构成了一个非常丰富的 FP 资源。
要学习如何编写惯用代码,任何关于函数式编程语言的书籍/资源都足够恕我直言(例如,RWH 和 LYAH);命令式思维和功能性思维之间的区别总是在那里解释。
在动态语言中,Jeff Foster 的链接是一个很好的集合; here 是 JavaScript 中记忆化的一种非常巧妙的用法,可以被视为一种“设计模式”。
【讨论】:
【参考方案6】:就我个人而言,我最重要的动态语言模式——编写测试。它比静态类型语言更重要。
【讨论】:
以上是关于关于编程的书籍的主要内容,如果未能解决你的问题,请参考以下文章