大咖推荐!程序员必看的七本书(附下载链接)

2023-05-16

全文共3184字,预计学习时长6分钟

图源: Ehud Neuhaus \ Unsplash

我喜欢创造东西,所以先学习了编程(当然也可能是因为我有点太喜欢电脑了)。 或许有很多人和我一样。
 
从某些方面来看,计算机编程是人类创造力的最终实践。 我曾经担任过青年志愿顾问,那时我们将创造力定义为“从无到有”的过程。
 
这就是程序员的工作: 推动“从无到有”的过程。
 
从一个空白的文本编辑器开始,程序员可以创造出自动驾驶汽车、互联网和超现实VR。
 
作为一名程序员,想要锤炼编程水平绝非易事,但这个过程可以是趣味盎然的。
 
你以为学了几种编程语言之后,学习之路就已经走到了尽头,但事实上一切才刚刚开始。
 
工具在手,打遍天下无敌手,接下来我们需要思考的就是: 如何运用它们。 熟练掌握一种语言自然有所裨益,但关键还在于如何使用。
 
如果你擅长解决难题,也很有耐心,那么阅读以下书籍将帮助你从一名普通码农变成一名编程专家。
 
注意: 本文中所有书本封面图像所有权均属原作者所有。
 
1、 《编码: 隐匿在计算机软硬件背后的语言》(Code:The Hidden Language of Computer Hardware and Software )
 
作者: Charles Petzold
出版社: 微软出版社
 
本书并未教读者如何编程,也未分享在技术行业找到工作的技巧。
 
但这本书却是走向职业程序员的第一步。 许多程序员常常因为编程痛苦挣扎,这是因为他们缺少对技术的必要深入认知。 本书解决的就是这个问题。
 
“计算机处理器做的往往是一些简单到近乎愚蠢的事——将一个字节从内存转移到寄存器,给一个字节加上另一个字节,将结果返回到内存。 这个过程最有意义的地方在于它极快的速度。 用 RobertNoyce的话来说: ‘如果你理解了纳秒,那么从概念上来说,计算机操作就非常简单了。 ’”
 
就算读者已经接触了很久的编程,仍然可以从本书中学到一些新东西,最起码也可以从新角度看待某些旧事物。
 
这是任何技术行业的起点,也是成为高级程序员必不可少的一步。
 
2、《程序员修炼之道》(ThePragmatic Programmer)
 
作者:Andrew Hunt, DaveThomas
出版社: Addison-WesleyProfessional
版本: 20周年纪念版; 第2版
 
在本书中,两位作者为读者分享了一系列提高编程输出能力的实用技巧。
 
这些技巧主要围绕一个原则展开——编程的核心在于追求协作。 如果你立志要成为一名软件工程师,或任何种类的程序员,那么你接触的大多数代码往往是别人写的。 本书就旨在引导读者如何在此类环境中工作。
 
书中的技巧都非常实用,通过实践来学习效果最佳。 读者阅读时可以放慢速度,下次写代码时可以回过头来想想书中的建议。 这不是一次性的阅读,而是通过不断实践获得真知的过程。
 
以下是一些例子:
 
建议11: 避免重复代码
建议30: 没有人能写出完美的软件
建议44: 成功的代码不是靠运气的
建议50: 不要使用你不懂的向导代码
建议70: 记得给你的成果署名
 
对任何从事与代码相关工作的人来说,本书提出的建议都珍贵异常,每位程序员都应当对其进行阅读。
 
3、《算法导论》(Introductionto Algorithms)
 
作者: Thomas H.Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
出版社: 麻省理工学院出版社
版本: 第3版
 
已经拿到计算机科学学士学位的读者或许知道这本书,甚至已经做过了一些练习。 但如果你还没有,请仔细阅读下面的内容。
 
在没有老师的情况下,读这样一本书可能会让人望而生畏,但这也有好处,那就是你可以慢慢读。 对于任何认真对待自身职业发展的程序员来说,花再长时间阅读本书中有关基本数据结构和算法的知识都是有价值的。
 
当然,即使记不住QuickSort的时间复杂性,或者根本不知道在不去Stack Overflow复制或者不使用内置库的情况下该如何写出DFS代码,你仍然可以勉强当几年的软件工程师。
 
但是,认为数据结构和算法不必要的这种概念已经过时了。 程序员正是用数据结构和算法来解决问题的,它们是现代软件工程师的饭碗。
 
如果不熟悉本书(或者其他你所选择的算法书)的内容,无论是程序员、软件工程师,还是计算机科学家,都很难继续向前发展。
 
4、计算机程序设计艺术(第1卷:基本算法)(The Art of ComputerProgramming: Volume 1Fundamental Algorithms)
 
作者: Donald E.Knuth
出版社: Addison-WesleyProfessional
 
和前面几本书一样,阅读《计算机编程的艺术》也是一项艰巨的任务,很少有人能够坚持不懈地将它从头看到尾,能够仔细阅读前几章中所有数学运算的读者更是寥寥无几。
 
虽然并未通读这系列书,但我仍然向大家强烈推荐这本著作。 这本书有自己的问题,主要是因为作者Knuth提出的MIX语言往往很难被现代读者接受。 但如果跨过这一道坎,你会发现这本书对基本算法和数据结构提供了深入独到的精彩见解。
 
此书对读者的智力和毅力提出了双重挑战,但也蕴含着巨大的信息财富。
 
比尔·盖茨都说,如果你能读完这本书,应该给他寄一份简历。 这够有诱惑力了吧?
 
5、程序员面试金典 (Cracking the Coding Interview)
 
作者: GayleLaakmann McDowell
版本: 第6版
作者本人出版
 
你是否想成为一名软件工程师? 即使不想,这本书也值得一读。
 
虽然有关算法和数据结构的教科书是必读书目,但这些书其实很少、甚至并未提供实践练习。 前面提到的两本书在每次介绍概念时都会提供许多练习,但要注意的是: 你必须始终清楚应该用什么工具。
 
在实际操作中,想解决一个软件问题,并没有人会告诉你该用哪种数据结构、算法或技术。
 
本书先介绍了基本的数据结构和算法(顺便提示一下,这本书的内容并不适合初学者),并在后面额外添加了两个章节,分别列出了中等难度和高级难度的问题。
 
这些问题随机排列,读者需要努力找出最好的解决方案。 如果在阅读前面章节的时候,你已经开始留心这些问题,那么在解决过程中,当你需要选择正确的数据结构或者算法时,你往往能想出与众不同的解决模式和解题线索。
 
本书能让读者更游刃有余地解决计算机编程问题,所以即使你在近期没有面试的打算,本书也值得一读。
 
6、人月神话 (The MythicalMan-Month)
 
作者: Frederick P.Brooks Jr.
出版社: Addison-WesleyProfessional.
版本: 第2版
 
这是一本具有历史性意义的软件工程类书籍,是软件项目管理的必读书目。
 
如果要与一些工程师进行团队合作,本书中提出的一些概念将有利于扩展你的思维,并提醒你在开发软件时哪些是有效的,哪些是无效的。
 
这本书的核心信息在于,软件工程并不同于其他那些人力和时间可以互为替代的学科。 作者指出,如果一定要说,那么在软件工程领域,人力和时间是完全不可以互换的。 “好的烹饪是需要时间的。 如果你等上菜等了很久,那都是为了你能享受到更好的服务和佳肴。 ”作者在第二章的副标题如是引用。
 
本书及许多其他有关软件工程实践的文章都有助于避免程序员掉入软件工程中的陷阱,也有助于程序员正确认识自己在团队中的角色,甚至是在整个科技行业中的角色。
 
总之本书值得阅读,也值得巧妙地推荐给你的经理阅读。
 
7、《算法之美》(Algorithms to LiveBy: The Computer Science of Human Decisions)
 
作者: BrianChristian, Tom Griffiths
出版社: Henry Holt and Co.
 
本文要推荐的最后一本书并不完全与写代码有关,而更多的是在研究从某些算法设计中衍生出来的问题解决技术(或许你已经遇到过这些问题,因为你看到了最后)。
 
作者在人类心理学和计算机科学之间建立起了绝妙的联系,将一些精心挑选的算法的原理融入了日常生活中的问题。
 
除了在电脑上写代码,程序员也经常怀疑自己所学的概念究竟有多适用于生活。 幸运的是,本书为此提供了答案——两位作者将通用算法应用于非计算机科学问题,并将答案量化成了日常琐碎。
 
学习算法和数据结构,一方面当然是为了写出更好的代码,另一方面也是为了如何跳脱出文本编辑器而更好地运用这些知识,这会让学习变得更为有趣。
看到这里,是不是巨心动巨想要?
小芯福利时间到~
历经千辛万苦,九九八十一难,小芯终于将这七本书的电子原版凑齐,给大家安排上啦。(是不是很棒棒?快夸我快夸我)
想要的小伙伴可以关注小芯芯, 微信后台回复“20191118” ,就可以免费获得全部电子书啦~(惊不惊喜?意不意外?)
集齐七本书,接下来大家就可以召唤神龙,迈上大神的阶梯啦。加油!米娜桑!
推荐阅读专题

留言 点赞 发个朋友圈
我们一起分享AI学习与发展的干货

编译组:莫菲菲、王努铱
如需转载,请后台留言,遵守转载规范

推荐文章阅读

长按识别二维码可添加关注
读芯君爱你

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大咖推荐!程序员必看的七本书(附下载链接) 的相关文章

  • TX2 常用操作

    2019 April 11 tx2 TX2 常用操作 1 trt 版本 span class nv span span class o span dpkg span class nt l span span class nb grep sp
  • 编程中经常遇到的调试没问题,运行却出错的一种原因

    情况一 xff1a 数据提交数据库后如果马上读 xff0c 就会出现这种问题 xff0c 因为新的记录提交到数据库后需要一段时间 xff08 虽然很短 xff0c 但对执行的程序来说很长 xff09 xff0c 如果系统在这个工作完成前就读
  • 【转载】Realsense2深度相机的基本操作命令

    Realsense2深度相机的基本操作命令 刚开始学习realsense2深度相机 xff0c 有必要熟悉一下相关指令 转载自 xff1a https blog csdn net weixin 42361804 article detail
  • D435i相机获取某一点深度图像的深度值(ROS实现以及官方API调用)

    文章目录 前言一 ROS实现深度值的获取代码解释二 使用方法三 调用官方API获取深度 总结 前言 最近这段时间一直在研究intel的D435i相机 xff0c 主要用来实现识别物体并反馈物体的深度值 特别强调一点 xff0c 通常所说图片
  • TOP 命令 使用技巧

    TOP 命令 使用技巧 参数解释 PID xff08 Process ID xff09 xff1a 进程标示号 每个 process 的 ID USER xff1a 进程所有者的用户名 该 process 所属的使用者 PR xff1a 进
  • 搭建树莓派 4B + intel movidius 神经元计算棒2代深度学习环境

    换源 这样下载速度会快一点稳定一点 xff1a 使用管理员权限 xff0c 执行 sudo leafpad etc apt sources list 在打开的文件中 xff0c 用 注释掉原文件内容 xff0c 用以下内容取代 xff1a
  • 虚拟机Ubuntu没有IP地址上不了网

    环境 Ubuntu 22 04VMware Workstation 15 Pro 问题 之前一直可以正常上网 xff0c 今天忽然上不了网了 查看IP地址 xff0c 发现没有IP了 ip addr 1 lo lt LOOPBACK spa
  • Ubuntu 16.04 + Intelrealsense Depth Camera D455 + VINS-Mono配置全记录

    Ubuntu 16 04 43 IntelRealsense Depth Camera D455 43 VINS Mono配置全记录 文章目录 Ubuntu 16 04 43 IntelRealsense Depth Camera D455
  • 接口类(interface),实现类(class),继承(extends),实现(implements)

    接口类 xff1a 64 Service public interface AppCertMsgService public Map lt String Object gt saveCardMsg AppCertMsg appCertMsg
  • 面试经验(互联网,研究所,国企)

    第二篇 xff1a 这篇文章要介绍我在各个领域各种方式的面试经验 xff0c 包括 互联网 研究所 外企 国企 银行 笔试 的面试及笔试 各种面试形式包括 无领导小组面试 群面 xff08 包括英文 xff08 海信 xff09 xff09
  • 使用Github上Eigen库计算自适应信号处理中维纳滤波算法

    LMS算法是自适应信号处理中最常见的算法之一 xff0c Least Mean Square最小均方算法是自适应系统最常见的算法 xff0c 利用Eigen库的线性代数便利计算 xff0c 得到最小均方误差MSE xff0c 程序如下 Th
  • Git 子模块

    2019 March 01 git Git 子模块 0 子模块信息 gitmodules文件用来保存子模块的信息 1 查看子模块 span class nv span git submodule span class c 已检出子模块代码
  • Ubuntu 18.04 安装Clang/LLVM 11

    从 APT 安装 Install the GPG Key for https apt llvm org wget O https apt llvm org llvm snapshot gpg key sudo apt key add Add
  • adb dumpsys

    windows环境下 adb命令 adb shell dumpsys activity findstr 34 mFocusedActivity 34 linux环境下 adb命令 adb shell dumpsys activity gre
  • GPS经纬度的表示方法及换算

    想要认识GPS中的经纬度 xff0c 就必须先了解GPS xff0c 知道经纬度的来源 xff1a 1 GPS系统组成 GPS是 Gloabal Positioning System 的简称 xff0c 意为全球定位系统 xff0c 主要由
  • void指针

    意义 对象的多态性 有一个对象是picture t xff0c 他的某一个成员函数的作用是读入一帧图像并保存成固定的格式 但是 xff0c 图像种类有很多种 xff0c YUV420 YUV422等等 xff0c 或者压缩方式不同 xff0
  • 虚幻引擎VR游戏开发基础教程

    虚幻引擎VR游戏开发基础教程 了解如何使用 Oculus Quest 2 的蓝图在虚幻引擎 4 中从头开始构建基本的 VR 机制 课程英文名 xff1a Unreal Engine VR Development Fundamentals 此
  • 为linux服务器安装windows的图形化界面(华为云服务器)

    背景 Linux云服务器需要安装桌面才方便编程 xff0c 但在实践中 xff0c 有时候用网络上安装Linux桌面的vncserver的教程不成功 xff0c 所以本文教大家为Linux安装 安装驱动 笔者认为 xff0c 安装图形化界面
  • 机器人视觉系统分为哪几种,主要包括哪些关键技术?

    机器人视觉系统是指用计算机来实现人的视觉功能 xff0c 也就是用计算机来实现对客观的三维世界的识别 人类接收的信息70 以上来自视觉 xff0c 人类视觉为人类提供了关于周围环境 最详细可靠的信息 人类视觉所具有的强大功能和完美的信息处理
  • 云计算部署模型和服务模式,云行业入门的第一步

    云计算 大数据 物联网 人工智能 xff0c 可谓是最近几年大热之词 xff0c 热度一浪高过一浪 xff0c 今天主要介绍的是云计算 xff0c 私有云 公有云 混合云 社区云 xff0c 大家都耳熟能详 xff0c 却不知道属于什么 x

随机推荐