推荐几本书,从初学者到高级程序员,每个人都可以从这些书中提高自己。

1、算法设计

1.众多名校采用的算法设计课程教材;
2.用实际示例阐明枯燥的算法理论;
3.更注重算法设计思路而非算法复杂度分析;
4.本书覆盖面广,且含有200多道精彩的习题,最后还扩展了PSPACE问题、参数复杂性等内容。
这是一本被众多名校采用的算法设计课程教材,强调用实际示例阐明枯燥的算法理论,更注重算法设计思路而非算法复杂度分析。本书采用新颖的教学方式,通过分析真实世界的问题来激发算法思想。两位作者以一种清晰、直接的方式,指导学生自己分析和定义问题,并从中找出适用于给定场景的算法设计原则。本书鼓励读者更深入地理解算法设计过程,探索算法在计算机科学的更广阔领域中的应用。
本书具有以下特色:

  • 强调问题分析和设计方法;
  • 遵循结构化教学法,引导学生掌握问题形式化、算法设计和算法分析的全过程;
  • 通过一系列带解答的问题,展示计算机科学家设计和应用算法的过程;
  • 包含 200 多道作业题,其中一些题目出自 Yahoo! 和 Oracle 等公司;
  • 提供广泛用于处理 NP 困难问题和随机应用的算法,这些是极其重要的算法主题。

2、编程珠玑 第2版

本书描述了计算机编程更具魅力的一面:在可靠的工程之外,在洞察力和创造力范围内结晶而出的编程珠玑。正如自然界中的珍珠来自于磨砺牡蛎的细沙一样,这些编程珠玑来自于磨砺程序员的实际问题。书中的程序都很有趣,传授了重要的编程技巧和基本的设计原理。

本书每一章都独立成篇,各章之间却又有着逻辑分组。第1章至第5章构成本书的第一部分,这部分回顾了编程的基本原理:问题定义、算法、数据结构以及程序验证和测试。第二部分围绕效率这个主题展开。效率问题有时本身很重要,又永远都是进入有趣编程问题的绝佳跳板。第三部分用这些技术来解决排序、搜索和字符串等重要问题。

阅读本书的一个提示:不要读得太快。要仔细阅读,一次读一章。要尝试解答书中提出的问题——有些问题需要集中精力思考一两小时才会变得容易。然后,要努力解答每章末尾的习题:当读者写下答案时,从本书学到的大部分知识就会跃然纸上。如有可能,要先与朋友和同事讨论一下自己的思路,再去查阅本书末尾的提示和答案。每章末尾的“深入阅读”并不算是学术意义上的参考文献表,而是我推荐的一些好书,这些书是我个人藏书的重要部分。

本书是为程序员而写的。我希望书中的习题、提示、答案和深入阅读对每个人都有用。本书已用作算法、程序验证和软件工程等课程的教材。附录A中的算法分类可供实际编程人员参考,该附录同时还说明了如何在算法和数据结构课程中使用本书。

3、Python密码学编程

本书是为对加密、破解或密码算法抱有浓厚兴趣的人士准备的。除第23章和第24章介绍的公钥密码算法以外,本书其余的密码算法均有超过一个世纪的历史,但目前的笔记本电脑有破解它们的计算能力。现在已经很少有组织或个人会使用这些密码算法了,但通过学习这些算法,读者能够了解密码算法建立的基础,也能了解黑客破解弱密码算法的方式。

本书也是为从未学习过编程的读者准备的。它将以Python语言传达基础的编程理念。对于新手来说,Python是一门优秀的编程语言,拥有平缓的学习曲线,各年龄段的初学者均可以掌握,而它同时也是一种用于专业软件开发的强大语言。Python程序可以运行在Windows、macOS、Linux系统,甚至树莓派,下载和使用Python程序都是完全免费的。

在本书中,作者将频繁用到“黑客”这一术语。“黑客”这个词语有两种定义,它可能指某个研究密码系统(如密码算法的原理或软件代码的片段)的人,这个人精通整个系统,以致他不会受到系统原则的限制,甚至可以创造性地对系统进行修改;这个词也可能是指闯入计算机系统的不法分子,他们会侵犯人们的隐私,造成各类损失。本书采用的是第一种释义。黑客是很“酷”的,而犯罪分子不过是一些认为搞破坏就能显得自己高人一等的家伙罢了。

本书将Python语言与密码学结合起来,从简单的古典密码算法开始,一直到公钥密码算法,进行了简洁而细致的说明与解读。每一种密码算法的讲解包括原理部分、实现部分和破解部分(公钥算法不包括破解部分),其中后两者附有详细的Python代码,注释简洁明了,可读性极高。每章的末尾还提供了一些习题,帮助读者巩固所学知识并进行深入理解。

4、代码整洁之道

学写整洁代码很难。它可不止于要求你掌握原则和模式。你得在这上面花工夫。你须自行实践,且体验自己的失败。你须观察他人的实践与失败。你须看看别人是怎样蹒跚学步,再转头研究他们的路数。你须看看别人是如何绞尽脑汁做出决策,又是如何为错误决策付出代价。

阅读本书要多用心思。这可不是那种降落前就能读完的“感觉不错”的飞机书。本书要让你用功,而且是非常用功。如何用功?阅读代码——大量代码。而且你要去琢磨某段代码好在什么地方、坏在什么地方。在我们分解,而后组合模块时,你得亦步亦趋地跟上。这得花些工夫,不过值得一试。

本书大致可分为3个部分。前几章介绍编写整洁代码的原则、模式和实践。这部分有相当多的示例代码,读起来颇具挑战性。读完这几章,就为阅读第2部分做好了准备。如果你就此止步,只能祝你好运啦!

第2部分最需要花工夫。这部分包括几个复杂性不断增加的案例研究。每个案例都清理一些代码——把有问题的代码转化为问题少一些的代码。这部分极为详细。你的思维要在讲解和代码段之间跳来跳去。你得分析和理解那些代码,琢磨每次修改的来龙去脉。

你付出的劳动将在第3部分得到回报。这部分只有一章,列出从上述案例研究中得到的启示和灵感。在遍览和清理案例中的代码时,我们把每个操作理由记录为一种启示或灵感。我们尝试去理解自己对阅读和修改代码的反应,尽力了解为什么会有这样的感受、为什么会如此行事。结果得到了一套描述在编写、阅读、清理代码时思维方式的知识库。

5、Linux命令行大全 第2版

本书将带您从初探终端开始,学习使用bash(Linux Shell)编写完整的程序。
本书的内容涉及bash 4.x,例如重定向操作符和Shell扩展知识。更新的Shell脚本部分讨论了Shell脚本实践以及避免常见类型的潜在危险故障的方法。

您将学习以下内容:

  • 创建和删除文件、目录和符号链接;
  • 管理系统,包括联网、软件包安装和进程管理;
  • 使用标准输入和标准输出、重定向和管道;
  • 使用文本编辑器 Vi 编辑文件;
  • 编写 Shell 脚本自动执行常见的任务;
  • 使用 grep、cut、paste、patch 和 sed 等对文本文件进行处理。

提高你计算机科学知识的5本书相关推荐

  1. 关于提高软件开发知识的建议

    1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来." 其实这是一个来自国外教育领域的一个研究果.相信工作过几年.十几年的朋友对这个道理有些体会吧.但我相信这一点也很 ...

  2. 计算机二级买那几本书,计算机二级公共基础知识买哪本书复习好?重点在哪..._公共英语考试_帮考网...

    cenggaoliu 考证达人 02-18 TA获得超过6197个赞 总复习的内容很多,而时间只有一月之余.要搞好总复习工作,必须对教学的现状作认真的分析,合理地安排好教学时间.在分析教学的现状时,大 ...

  3. 如何提高自己的知识水平?

    这篇是知乎的回答原文,在知乎有大概一万五千的赞,但是不知为何总是被人举报然后被封,后来也就没管了.因为一直都有不少人来信跟我要,所以转移发到公众号来.我没有授权任何人转载,如果你在其它公众号遇到类似的 ...

  4. 提高记忆计算机知识的方法有哪些,由计算机的记忆方法想到...

    计算机的储存方式是怎样的呢? (一)由计算机的储存方式想起 让我们想象一下,计算机是如何储存信息的呢? 首先,计算机对所输入的信息进行编码(将大量信息转化二进制): 之后,再进行储存: 当需要用的时候 ...

  5. 算法提高课-数学知识-矩阵乘法-AcWing 1303. 斐波那契前 n 项和:矩阵乘法,快速幂,线性代数

    题目分析 来源:acwing 分析: 先利用矩阵运算的性质将通项公式变成幂次形式,然后用快速幂的方法求解第 n项. 斐波那契数列的递推公式:f1=f2=1,fn=fn−2+fn−1(n≥3)f_1 = ...

  6. SQL提高查询效率知识拾忆

    SQL条件解析是自下而上,从右到左进行解析.所以条件末尾需要是最关键的条件. SQL Server解析器from后的表,是按照从右往左的顺序处理.所以from处理表是,应该让from表中最后的表的行数 ...

  7. 24个提高你的知识和技能极限的数据科学(机器学习)项目(免费)

    作者|ANALYTICS VIDHYA 编译|Flin 来源|analyticsvidhya 介绍 数据科学(机器学习)项目为你提供了一种有前途的方式来启动你在该领域的职业.你不仅可以通过应用它来学习 ...

  8. 提高记忆计算机知识的方法有哪些,有哪些增强记忆力的好方法

    有哪些增强记忆力的好方法 要想增强记忆力,首先要了解一些有关记忆方面的常识.简单地来讲记忆分为三个阶段. 第一阶段我们称为编码阶段. 这就好比计算机的信息输入,都要经过编码,只有经过编码的信息才会得到 ...

  9. T字型人才必读扩展知识面的40本书

    思考力 <世界上最简单易懂的逻辑思考课> <为什么疯子比常人更容易成功> <麦肯锡教我的思考武器> <天才在左,疯子在右> <轻松学会独立思考&g ...

最新文章

  1. 深度学习(神经网络)[1]——单层感知器
  2. NOIp 2014 #2 联合权值 Label:图论 !!!未AC
  3. 算法改进有多快?是否比迭代硬件收益更大?这是MIT的结论
  4. GitHub上已超过2900星!这份有原理、有代码、有Demo的算法资源火了
  5. Java 将File转换为MultipartFile类型
  6. VSCode打开底部状态栏
  7. 华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年...
  8. 小程序获取视频缩略图
  9. android平板改成电视盒子,安卓平板改裝成電視盒子
  10. Ubuntu12.04 64位 无法运行32位程序 吉林大学校园网客户端Drcom DrClient
  11. CentOS7 使用光盘镜像作为yum源
  12. Qt 串口调试软件自动发送数据
  13. 我的世界java版钻石剑附魔_我的世界钻石剑怎么附魔 钻石剑附魔100级指令
  14. Python暴力破解教程: Zip加密文件, pdf加密书籍在线爆破!
  15. VS2015中“项目无法加载,因为它缺少安装组件”的解决方法
  16. 算法时间复杂度lg是多少_斐波那契数的 O(lgn) 时间复杂度算法 | 学步园
  17. 数据分析,如何挖掘业务机会
  18. Windows环境下32位汇编语言程序设计 相关资料
  19. 安全交流:浅谈sql注入式(SQL injection)攻击与防范
  20. 电影《天空之城》观后感

热门文章

  1. 健康比什么都重要-网易CEO孙德棣先生辞世
  2. 2021年安徽省大数据与人工智能应用竞赛人工智能(网络赛)-本科组赛题
  3. Node.js相关资源
  4. C++:实现量化相关的各类数据测试实例
  5. 游戏环境公示及处罚名单9月18日
  6. 用借款方实际付出的手续费(或利息)计算真实的手续费率(或利率),或快速估算年利率
  7. 【TensorRT】TensorRT was linked against cudnn 8.6.0 but loaded cudnn 8.3.2
  8. c++如何输入一个不定长的字符串数组
  9. 如何使用redis做一个定时任务?
  10. 自学 java如何入门?