标题解读:标题中的死神,是源自《死神》动漫里面的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招。意旨做程序界中程序员的佼佼者,一步一步最终修炼自己的大招。

本文选自左耳朵耗子叔的程序员练级攻略理论学科的内容,以此来分享一下。

进入专业的编程领域,算法、数据结构、网络模型、计算机原理等这样的计算机科学专业需要学习的理论知识是必须要学习的。

数据结构和算法

算法是比较难学习的,数组、链表、哈希表、二叉树、排序算法等一些基础知识,对大多数人来说是没什么问题的。但是一旦进入到路径规划、背包问题、字符串匹配、动态规划、递归遍历等一些比较复杂的问题上,就会让很多人跟不上了,不但跟不上,而且还会非常痛苦。是的,解决算法问题的确是可以区分人类智商的一个比较好的方式,这也是为什么好些公司用算法题当面试题来找到智商比较高的程序员。

然而,在很多时候,我们在工作中却发现根本用不到算法,或是一些基本的算法也没有必要实现,只需要使用一下第三方的库就好了。于是,导致社会上出现很多“算法无用论”的声音。

对此,我想说,算法真的很重要。我这 20 年的经历告诉我,无论是做业务还是做底层系统,经常需要使用算法处理各种各样的问题。比如,业务上我需要用算法比较两个数组中差异的布隆过滤器,或是在做监控系统时实时计算过去一分钟的 P99 统计时的蓄水池算法,或是数据库的 B+ 树索引,还有 Linux 内核中的 epoll 的红黑树,还有在做服务调度里的“背包问题”等都会用算法,真的是会本质上帮助到你,也是会让你瞬间会产生成就感的事情。

虽然算法很难,需要智商,但我还是想鼓励你,这其中是有很多的套路是可以学习的,一旦学会这些套路,你会受益无穷的。

推荐书籍

  • 《算法》
    是算法领域经典的参考书,不但全面介绍了关于算法和数据结构的必备知识,还给出了每位程序员应知应会的 50 个算法,并提供了实际代码
  • 《算法导论》
    理论加持
  • 《编程珠玑》
    这本书也是很经典的算法书,其中都是一些非常实际的问题,并以其独有的洞察力和创造力,来引导读者理解并学会解决这些问题的方法,也是一本可以改善你思维方式的书。

然后,你需要去做一些题来训练一下自己的算法能力,这里就要推荐 LeetCode这个网站了。它是一个很不错的做算法训练的地方。现在也越做越好了。

还有两个网站推荐

  • List of Algorithms,这个网站罗列了非常多的算法,完全可以当成一个算法字典,或是用来开阔眼界。
  • 还有一个数据结构动画图的网站 Data Structure Visualizations。

其它理论基础知识

下面这些书,基本上是计算机科学系的大学教材。如果你想有科班出身的理论基础,那么这些书是必读的。当然,这些理论基础知识比较枯燥,但我觉得如果你想成为专业的程序员,那么应该要找时间读一下。

  • 《数据结构与算法分析》
    这本书曾被评为 20 世纪顶尖的 30 部计算机著作之一,作者 Mark Allen Weiss 在数据结构和算法分析方面卓有建树,他在数据结构和算法分析等方面的著作尤其畅销,并广受好评,已被世界 500 余所大学用作教材。
  • 《数据库系统概念》
    它是数据库系统方面的经典教材之一。这本书全面介绍了数据库系统的各种知识,透彻阐释数据库管理的基本概念。
  • 《现代操作系统》
    这本书是操作系统领域的经典之作,书中集中讨论了操作系统的基本原理,包括进程、线程、存储管理、文件系统、输入 / 输出、死锁等,同时还包含了有关计算机安全、多媒体操作系统、掌上计算机操作系统、微内核、多核处理机上的虚拟机以及操作系统设计等方面的内容。
  • 《计算机网络》
    这本书采用了独创的自顶向下方法,即从应用层开始沿协议栈向下讲解计算机网络的基本原理,强调应用层范例和应用编程接口,内容深入浅出,注重教学方法,理论与实践相结合。
  • 《计算机程序的构造和解释》
    这本书也很经典,是 MIT 的计算机科学系的教材。这本书中主要证实了很多程序是怎么构造出来的,以及程序的本质是什么。
  • 《编译原理》
    这本书又叫 " 龙书 ",其全面、深入地探讨了编译器设计方面的重要主题,包括词法分析、语法分析、语法制导定义和语法制导翻译、运行时刻环境、目标代码生成、代码优化技术、并行性检测以及过程间分析技术,并在相关章节中给出大量的实例。

小结

进入专业编程领域的人,一定要学习算法、数据结构、网络模型、计算机原理等理论知识,并推荐了相应的学习素材。

我认为,虽然这些理论知识枯燥难学,而且通常学完了在工作中也并不是马上就能用上,但这些知识是必须要学好的。
这些理论知识可以说是计算机科学这门学科最精华的知识了,认真学习,理解其背后的逻辑和思维方式,会让你受益匪浅。不管是未来你是要学习新技能,还是解决什么疑难问题,都能在这些知识中获得灵感或者启发。

该笔记摘录自极客时间课程
《左耳听风》

做程序界中的死神,提升灵力上限相关推荐

  1. 做程序界中的死神,继续提升灵力上限

    标题解读:标题中的死神,是源自<死神>动漫里面的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招.意旨做程序界中程序员的佼佼者,一步一步最终 ...

  2. 做程序界中的死神,提升斩魂刀

    标题解读:标题中的死神,是源自<死神>动漫里面的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招.意旨做程序界中程序员的佼佼者,一步一步最终 ...

  3. 做程序界中的死神,获取自己的灵力修养

    标题解读:标题中的死神,是源自<死神>动漫里面的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招.意旨做程序界中程序员的佼佼者,一步一步最终 ...

  4. 做程序界中的死神,锻造合适的斩魂刀

    标题解读:标题中的死神,是源自<死神>动漫里面的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招.意旨做程序界中程序员的佼佼者,一步一步最终 ...

  5. 做程序界的死神,获取自己的斩魂刀

    标题解读:标题中的死神,是源自<死神>动漫里面的角色,斩魂刀是死神的武器,始解是斩魂刀的初始解放形态,卐解是斩魂刀的觉醒解放形态,也是死神的大招.意旨做程序界中程序员的佼佼者,一步一步最终 ...

  6. Metaverse 元宇宙入门-08-Content, Services, and Asset Businesses in the Metaverse 元界中的内容、服务和资产业务

    元界中的内容.服务和资产业务 这是"元界入门"的第八部分,重点介绍内容.服务和资产业务在"元界"中的作用. 在这里,内容.服务和资产业务被定义为"与用 ...

  7. 做跨界的跳跃,不惧怕学习,不惧怕失败 —— 阿里云 MVP 裔隽专访

    十足的苹果粉: 摄影爱好者,且精通 Lightroom 后期: <Visual Basic 3-4 编程技巧与程序实例><Python 机器学习实战>书作者之一: 曾经带领 2 ...

  8. 什么星座更适合做程序猿?

    IT是现在的高薪行业,程序猿又是重要元件,可谓是钱途无量. 陌生人眼中的程序员:宅.无趣.邋遢.加班.苦逼 熟人眼中的程序员:优秀,聪明,理性,沉稳,和善 他们的统一特征是热爱工作,写起代码来也是多彩 ...

  9. 35岁以后,不要成为程序员中的钻石

    2020年,是一个不同寻常的一年. 从年初爆发的疫情,到全球经济下行的压力,大家都成为了历史的见证者. 让本来就艰辛的成年人们,雪上加霜. 我们都是社会中的人,在这场经济下行背景下,经济影响会以各种各 ...

最新文章

  1. MailKit帮助类
  2. Spring Boot 五种热部署方式,极速开发就是生产力!
  3. 深度学习 Optimizer 梯度下降优化算法总结
  4. NEC中标里斯本智慧城市项目 助力城市整体数字化变革
  5. 2020-08-17TensorFlow 和keras有什么区别?
  6. 图解半监督学习FixMatch,只用10张标注图片训练CIFAR10
  7. FreeMarker简介及其语法
  8. 二叉树最大宽度与leetcode662的二叉树最大宽度
  9. VSS源代码管理应该怎么样对bin目录及项目中用到的第三方组件进行管理?
  10. maven报错Non-resolvable parent POM for com.wpbxin:springboot2-first-example:0.0.1-SNAPSHOT: Could not
  11. 回溯子集树与排列树——装载问题旅行售货员问题(算法设计课题)
  12. ICCV2021—工业界中的神经网络视频传输超分算法
  13. Asp.net 调用sqlserver存储过程参数传中文乱码!
  14. java反射 javabean_Java反射之模仿JavaBean接收表单参数.
  15. 基于Android语言的通信调试助手实现(TCP协议+Socket编程)
  16. windows下Python集成开发环境-Spyder安装和使用
  17. GitHub中文社区
  18. 软件测试——126邮箱网页注册和登陆功能测试
  19. java的 finalize() 方法
  20. 用C语言实现汉诺塔的移动过程并且统计移动的次数

热门文章

  1. 清晰扫描件怎么弄:试试扫描裁缝ScanTailor Advanced吧 | 含scantailor使用方法
  2. fastqc检验时不能执行java_fastqc出现错误
  3. 心物各东西:基因,文化和心灵
  4. 100种鞋子的画法,如何画鞋子
  5. 程序员教程-1章-计算机系统基础知识
  6. thinkpadE450 进入bios并设置bios为uefi模式U盘启动(也可以是legacy)
  7. CAD文字显示号问题原因和解决办法
  8. matlab中idfs,【 MATLAB 】离散傅里叶变换(DFT)以及逆变换(IDFT)的MATLAB实现
  9. Docker部署Django+Mysql+uWSGI+Nginx Web应用 - 笔记更新2022-01-04
  10. 怎样将腾讯视频qlv格式转换成mp3音频