程序员必备的书籍有哪些?_unix

经典必备书籍

深度学习

程序员必备的书籍有哪些?_程序员书籍_02

作者: 【美】Ian Goodfellow(伊恩·古德费洛) 【加】Yoshua Bengio(约书亚·本吉奥) 【加】Aaron Courville(亚伦·库维尔)

  • 2018年图灵奖得主潜心打造的AI圣经!
  • 深度学习领域奠基性的经典畅销书!
  • 长期位居美国ya马逊AI和机器学习类图书榜首!
  • 所有数据科学家和机器学习从业者的bi读图书!特斯拉CEO埃隆·马斯克等国内外众多专家推jian!

深度学习是机器学习的一个分支,它能够使计算机通过层次概念来学习经验和理解世界。因为计算机能够从经验中获取知识,所以不需要人类来形式化地定义计算机需要的所有知识。层次概念允许计算机通过构造简单的概念来学习复杂的概念,而这些分层的图结构将具有很深的层次。本书会介绍深度学习领域的许多主题。

本书囊括了数学及相关概念的背景知识,包括线性代数、概率论、信息论、数值优化以及机器学习中的相关内容。同时,它还介绍了工业界中实践者用到的深度学习技术,包括深度前馈网络、正则化、优化算法、卷积网络、序列建模和实践方法等,并且调研了诸如自然语言处理、语音识别、计算机视觉、在线推荐系统、生物信息学以及视频游戏方面的应用。最后,本书还提供了一些研究方向,涵盖的理论主题包括线性因子模型、自编码器、表示学习、结构化概率模型、蒙特卡罗方法、配分函数、近似推断以及深度生成模型。

UNIX环境高级编程(第3版)

作者: 【美】W. Richard Stevens Stephen A.Rago

译者: 戚正伟 ,张亚英 ,尤晋元

程序员必备的书籍有哪些?_编程语言_03

20多年来,严谨的C程序员都是依靠一本书来深入了解驱动UNIX和Linux内核的编程接口的实用知识的,这本书就是W. Richard Stevens所著的《UNIX高级环境编程》。现在,Stevens的同事Steve Rago彻底更新了这本经典著作。新的第3版支持当今领先的系统平台,反映了技术进展和实践,并且符合新的Single UNIX Specification第4版(SUSv4)。

《UNIX环境高级编程(第3版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第3版。在本书第2版出版后的8年中,UNIX行业发生了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持前一版风格的基础上,根据新的标准对内容进行了修订和增补,反映了新的技术发展。书中除了介绍UNIX文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在此基础上介绍了众多应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附录中给出了函数原型和部分习题的答案。

UNIX网络编程 卷1:套接字联网API(第3版)

作者:【美】W. Richard Stevens Bill Fenner Andrew M. Rudoff

程序员必备的书籍有哪些?_程序员_04

本书是一部UNIX网络编程的经典之作!书中全面深入地介绍了如何使用套接字API进行网络编程。全书不但介绍了基本编程内容,还涵盖了与套接字编程相关的高级主题,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还深入分析了流这种设备驱动机制。本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案,是网络研究和开发人员理想的参考书。

UNIX网络编程 卷2:进程间通信(第2版)

作者:【美】W. Richard Stevens

程序员必备的书籍有哪些?_程序人生_05

本书是一部UNIX 网络编程的经典之作!进程间通信(IPC)几乎是所有Unix程序性能的关键,理解IPC也是理解如何开发不同主机间网络应用程序的必要条件。本书从对Posix IPC 和System V IPC的内部结构开始讨论,全面深入地介绍了4 种IPC形式:消息传递、同步、共享内存及远程过程调用。本书内容详尽且具权威性,几乎每章都提供精选的习题,并提供了部分习题的答案。

领域驱动设计:软件核心复杂性应对之道(修订版)

作者: 【美】埃里克•埃文斯(Eric Evans)

译者: 赵俐 ,盛海艳 ,刘霞

程序员必备的书籍有哪些?_程序人生_06

  • 领域驱动设计之父”经典著作
  • 众多声名显赫软件大师鼎力推荐
  • 凝聚领域建模专家数十年的实战经验
  • 深度剖析构建高质量复杂系统的核心技术

领域模型使开发人员可以表达丰富的软件功能需求,由此实现的软件可以满足用户真正的需要,因此被公认为是软件设计的关键所在,其重要性显而易见。但讲述如何将领域模型用于软件开发过程的杰出的实用资料却不多见。本书正是这一领域声名显赫的作品,受到众多业界大师的赞美和推介,广受读者好评。

要通过创建领域模型来加速复杂的软件开发,就需要利用大量实践和标准模式在开发团队中形成统一的交流语言;不但要重构代码,而且要重构代码底层的模型;同时采取反复迭代的敏捷开发方法,深入理解领域特点,促进领域专家与程序员的良好沟通。针对这些内容,本书结合真实项目,系统地介绍了领域驱动开发的目标、意义和方法,充分讨论了复杂系统的建模与设计问题。

职业素养必备书籍

代码整洁之道

程序员必备的书籍有哪些?_程序员书籍_07

你的代码在哪道门后面?你的团队或公司在哪道门后面?为什么会在那里?只是一次普通的代码复查,还是产品面世后才发现一连串严重问题?我们是否在战战兢兢地调试自己之前错以为没问题的代码?客户是否在流失?经理们是否把我们盯得如芒刺在背?当事态变得严重起来,如何保证我们在那道正确的门后做补救工作?答案是:技艺(craftsmanship)。

这是本有关编写好程序的书。它充斥着代码。我们要从各个方向来考察这些代码。从顶向下,从底往上,从里而外。读完后,就能知道许多关于代码的事了。而且,我们还能说出好代码和糟糕的代码之间的差异。我们将了解到如何写出好代码。我们也会知道,如何将糟糕的代码改成好代码。

什么是整洁代码?有多少程序员,就有多少定义。

鲍勃大叔又是怎么想的呢?在作者眼中整洁代码是什么样的?本书将以详细到吓死人的程度告诉你,我和我的同道对整洁代码的看法。我们会告诉你关于整洁变量名的想法,关于整洁函数的想法,关于整洁类的想法,如此等等。我们视这些观点为当然,且不为其逆耳而致歉。对我们而言,在职业生涯的这个阶段,这些观点确属当然,也是我们整洁代码派的圭旨。

重构:改善既有代码的设计(第2版)

程序员必备的书籍有哪些?_编程语言_08

重构不是包治百病的万灵丹,也绝对不是所谓的“银弹”。不过它的确很有价值,尽管它不是一颗“银弹”,却可以算是一把“银钳子”,可以帮你始终良好地控制自己的代码。重构是一个工具,它可以(并且应该)用于以下几个目的。

  • 重构改进软件的设计
  • 重构使软件更容易理解
  • 重构帮助找到bug
  • 重构提高编程速度
重构的唯一目的就是让我们开发更快,用更少的工作量创造更大的价值。
重构技术就是以微小的步伐修改程序。如果你犯下错误,很容易便可发现它。
傻瓜都能写出计算机可以理解的代码。唯有能写出人类容易理解的代码的,才是优秀的程序员。

本书是一本为专业程序员编写的重构指南。我的目的是告诉你如何以一种可控且高效的方式进行重构。你将学会如何有条不紊地改进程序结构,而且不会引入错误,这就是正确的重构方式。

本书的首要目标读者群是想要学习重构的软件开发者,同时对于已经理解重构的人也有价值——本书可以作为一本教学辅助书。在本书中,我用了大量篇幅详细解释各个重构手法的过程和原理,因此有经验的开发人员可以用本书来指导同事。

尽管本书的关注对象是代码,但重构对于系统设计也有巨大影响。资深设计师和架构师也很有必要了解重构原理,并在自己的项目中运用重构技术。最好是由有威望的、经验丰富的开发人员来引入重构技术,因为这样的人最能够透彻理解重构背后的原理,并根据情况加以调整,使之适用于特定工作领域。如果你使用的不是JavaScript而是其他编程语言,这一点尤其重要,因为你必须把我给出的范例用其他编程语言改写。

下面我要告诉你,如何能够在不通读全书的情况下充分用好它。

  • 如果你想知道重构是什么,请阅读第1章,其中的示例会让你弄清楚重构的过程。
  • 如果你想知道为什么应该重构,请阅读前两章,它们会告诉你重构是什么以及为什么应该重构。
  • 如果你想知道该在什么地方重构,请阅读第3章,它会告诉你一些代码特征,这些特征指出“这里需要重构”。
  • 如果你想着手进行重构,请完整阅读前四章,然后选择性地阅读重构名录。一开始只需概略浏览列表,看看其中有些什么,不必理解所有细节。一旦真正需要实施某个重构手法,再详细阅读它,从中获取帮助。列表部分是供查阅的参考性内容,你不必一次就把它全部读完。

UNIX传奇:历史与回忆

程序员必备的书籍有哪些?_程序员_09

Unix是怎么来的?贝尔实验室是怎样的机构?寥寥数位研究员组成的小团队是如何改变世界的?是什么让Unix成为可能,并推动它 演化?

本书主要的写作目的是讲述计算机历史上某个极具生产力和发展性的时期中的一些精彩往事。理解我们习以为常地使用的技术如何演化而来,颇为要紧。有人顶住压力、克服时间限制,做出了定义技术发展方向和路径的决策。越了解历史,我们越感激那些带来Unix的发明天才,或许也越能理解现代计算机系统是如何发展成现在这个样子的。仅就那些如今看起来大错特错抑或倒行逆施的选择而言,常常也是在当时可用资源限制之下所能考虑和实现的必然结果。

本书不仅写到技术内容,还写了许多幕后故事,写了那些天才人物的个性,以及Unix诞生和发展的独特创造性环境。

科技创新的发生还与另一件有趣的事相关。Unix诞生地贝尔实验室是很出色的机构,它既制造出许多好点子,也投资了这些好点子。多个改变世界的发明由贝尔实验室而起,它的运作机制足资学习。

Unix的故事当然也贡献了大量有关设计和构造软件,以及有效利用计算机的洞见,我会在书中一一指出。例如,Unix软件哲学倡导合用既有软件,完成很多不同任务,而不是从头写个新软件。这个例子简明又生动,它在编程领域体现了“分而治之”的故技:将大任务切分为多个小任务,每个小任务都变得更可控,然后再以各种不可思议的方式将之整合到一起。

软技能:代码之外的生存指南

程序员必备的书籍有哪些?_unix_10

多数软件开发的书都是有关软件开发本身的,本书却不是。有大量的书论述如何编写优质代码、如何利用各种技术,但是很难找到一本能够告诉我“如何成为一名优秀的软件开发人员”的书。

毋庸置疑,这本书并不是在讨论“你能做什么”,这本书讨论的是“你自己”——关于你的职业生涯、你的生活、你的身体、你的思想以及你的灵魂——如果你确信灵魂存在的话。我觉得你会发现我是一个非常脚踏实地的人,我不过恰好正在思索——作为一名软件开发人员如何超越编写代码本身?

我拥抱所有的软件开发方法。这意味着,我认为,如果你想真正成为一个更好的软件开发人员(或者其他真正优秀的人才),你需要把重点放在整个“人”上,而不只是你生活中的一两个领域。

这就是这本书的由来,也是这本书的初衷。现在,显然我不可能在这本书的短短篇幅里包罗万象、涵盖生活当中的方方面面,我也没有丰富的经验或智慧来解决这个如此广泛的课题,但我可以通过将本书的内容聚焦于软件开发人员的生活主要方面,在这里我恰好有一些经验和专业知识也许可以让你最大可能地受益。

在这本书里,你会发现不少看似无关的主题串联在一起,但这种无序的背后其实另有深意。本书共分为七篇,每一篇都聚焦在软件开发人员生活的不同方面。如果你想为这些内容分类和分组,最简易的方法是将它们看成是事业、思想、身体和精神四个方面。

数学之美 第三版

程序员必备的书籍有哪些?_unix_11

浪潮之巅、文明之光、硅谷之谜、大学之路、见识作者吴军博士作品,源自谷歌黑板报,根植谷歌方法论,新增区块链、量子通信、人工智能知识,文津图书奖获奖书

这是一本备受推崇的经典科普作品,被众多机构推荐为数学学科的敲门砖,是信息领域大学生的必读好书。

数学既是对于自然界事实的总结和归纳,又是抽象思考的结果。在《数学之美》里,吴军博士集中阐述了他对数学和信息处理这些专业学科的理解,把数学在IT领域,特别是语音识别、自然语言处理和信息搜索等方面的美丽之处予以了精彩表达,这些都是智能时代的热门技术话题。

浪潮之巅 第四版 吴军博士作品

程序员必备的书籍有哪些?_程序员书籍_12

数学之美、文明之光、大学之路、信息传作者吴军博士作品,深度剖析信息产业,掌握下一个黄金十年,李开复作序推荐,来自谷歌的方法论,智能时代的行动指南

《浪潮之巅 第四版》是一本介绍互联网及IT行业兴衰变化的书,书中的内容最初由吴军博士发表在Google黑板报上,历经多次改写和重构,第四版增加了四分之一的内容,并重写和更新了其他章节。近一百多年来,总有一些公司很幸运地、有意识或无意识地站在技术革命的浪尖之上。在这十几年间,它们代表着科技的浪潮,直到下一波浪潮的来临。从一百多年前算起,AT&T 公司、IBM 公司、苹果公司、英特尔公司、微软公司、思科公司、雅虎公司和 Google 公司,也许还有接下来的特斯拉公司,都先后被幸运地推到了浪尖。虽然,它们来自不同的领域,中间有些已经衰落或正在衰落,但是它们都极度辉煌过。在这些公司兴衰的背后,有着它必然的规律。《浪潮之巅》系统地介绍了这些公司成功的本质原因及科技工业一百多年的发展。本书不仅讲述科技工业的历史,更重在揭示它的规律性。

程序员学数学必备

Python数学编程

程序员必备的书籍有哪些?_程序员_13

有趣、生动、实用,高中生也能看得懂的Python编程书,美亚青少年学计算机编程畅销书,通过编程来探究代数、统计、几何、概率、微积分等数学主题。

本书展示了如何应用Python探究高中和大学低年级的数学主题,比如代数、统计、几何、概率以及微积分。你会从简单的项目学起,比如因式分解、二次方程求解,当你掌握了这些基础的知识后,就可以处理更复杂的项目了。

使用本书提供的方法探索数学和编程,将让你的整个数学和计算机科学学习过程变得有趣、实用。

你将从本书学到以下内容:

  • 用统计方法描述数据,用线图、条形图和散点图可视化数据
  • 用程序探究掷硬币、掷骰子和其他概率游戏中的集合理论和概率问题
  • 用Python的符号数学功能解决代数问题
  • 绘制几何图形,探索分形,如Barnsley蕨类植物、Sierpiński三角以及Mandelbrot集
  • 写程序求解导数与积分

程序员的数学基础课 从理论到Python实践

程序员必备的书籍有哪些?_程序员_14

本书紧贴计算机领域,从程序员的需求出发,精心挑选了程序员真正用得上的数学知识,通过生动的案例来解读知识中的难点,使程序员更容易对实际问题进行数学建模,进而构建出更优化的算法和代码。本书共分为三大模块:“基础思想”篇梳理编程中常用的数学概念和思想,既由浅入深地精讲数据结构与数学中基础、核心的数学知识,又阐明数学对编程和算法的真正意义;“概率统计”篇以概率统计中核心的贝叶斯公式为基点,向上讲解随机变量、概率分布等基础概念,向下讲解朴素贝叶斯,并分析其在生活和编程中的实际应用,使读者真正理解概率统计的本质,跨越概念和应用之间的鸿沟;“线性代数”篇从线性代数中的核心概念向量、矩阵、线性方程入手,逐步深入分析这些概念是如何与计算机融会贯通以解决实际问题的。除了理论知识的阐述,本书还通过Python语言,分享了通过大量实践积累下来的宝贵经验和编码,使读者学有所用。

本书的内容从概念到应用,再到本质,层层深入,不但注重培养读者养成良好的数学思维,而且努力使读者的编程技术实现进阶,非常适合希望从本质上提升编程质量的中级程序员阅读和学习。

机器学习的数学

程序员必备的书籍有哪些?_unix_15

本书的目标是帮助读者全面、系统地学习机器学习所必须的数学知识。全书由8章组成,力求精准、最小地覆盖机器学习的数学知识。包括微积分,线性代数与矩阵论,**化方法,概率论,信息论,随机过程,以及图论。本书从机器学习的角度讲授这些数学知识,对它们在该领域的应用举例说明,使读者对某些抽象的数学知识和理论的实际应用有直观、具体的认识。 本书内容紧凑,结构清晰,深入浅出,讲解详细。可用作计算机、人工智能、电子工程、自动化、数学等相关专业的教材与教学参考书。对人工智能领域的工程技术人员与产品研发人员,本书也有很强的参考价值。对于广大数学与应用的数学爱好者,本书亦为适合自学的读本。