前言
听到过很多人抱怨,为什么做程序员需要学那么多的东西,天天学,夜夜学,还是赶不上新技术出现的速度。
这要从程序员的工作究竟要做什么说起。
我尝试对这个问题做一个归纳,就是:用最小的成本让代码运行起来,解决现实世界存在的需求或问题,并保障代码能持续稳定的运行下去。
对于没有接触过软件开发的人来说,这或许有些抽象,我们可以做个类比。软件开发,就相当于在虚拟的世界里盖出一栋栋的大楼。 这就是为什么很多程序员会自比码农或者建筑工人。相比在现实世界盖楼,建造虚拟的大楼固然相对简单,但单个项目投入的人力也会远远低于现实建筑。这样就要求程序员的知识面更广,能够覆盖一个项目从分析、设计到实施、验收整个流程。
我们再对其做个拆解:
将现实世界的事物、流程用计算机表示出来;
写出代码;
让代码能够运行;
了解系统的运行状态并保障其稳定运行;
减少做上述一系列事情的成本;
无论是大家大学期间学的各个课程,还是工作后背的各种八股,以及学习使用的各类工具,本质上都是为了解决上面这些问题。
接下来我会列一下作为一个合格的程序员,都需要掌握哪些知识,并说明他们有什么作用。
数据结构、算法,就是将现实世界中的事物、流程用计算机表示出来的方法;
为了写出代码,我们需要学习常用的编程语言;
为了让代码能够运行,就需要有计算机体系结构、组成原理、编译原理;
为了了解系统的运行状态并保障其稳定运行,有了各种监控、日志工具,比如prometheus、log4j、zipkin,等等。
而剩下的相当一部分知识,其实都是为了减少做上述一系列事情的成本;比如,
软件工程是针对开发流程的方法论,目的是减少在沟通、开发中各种配合性的工作带来的各种损耗;
设计模式是针对开发中具体问题的解决方案和最佳实践,通过对一些常见的场景给出代码模版或模式,提升开发效率;
像操作系统、计算机网络,就是对硬件相关的各种操作进行了封装,让我们写应用程序的时候,无需再考虑怎么调动键盘、怎么让数据通过网络传输,等等;
像数据库原理及一些常用数据库的实现,也是对数据怎么保存这一问题的通用解决方案。
包括后来出来的消息队列、缓存、容器技术以及各种分布式理论、云原生,实际上都是一代代的前辈们贡献的“轮子”。
这些轮子固然给我们带来了越来越高的学习成本,但也让我们的开发体验越来越舒适,我们可以从容的应对越来越复杂的业务场景。
同时,事实上,如果能理解这些知识为什么会出现,学习起来也会更加简单。你会发现,所有的知识都是相通的,他们有一套共有的底层逻辑,就是帮助程序员更好的解决现实问题。
像我之前对云原生的介绍、对设计模式的归纳、对分布式系统的总结,都是按照这个思路来进行的。将来也会按照这个思路,将更多的知识点给大家讲明白,欢迎关注和收藏。
读者福利:如果你对Python感兴趣,这套python学习资料一定对你有用
无论你是对Python感兴趣,还是想要多学一份技能提高工作效率,扎实的学习好Python相关知识是重中之重!在现在的互联网行业,无论是大厂还是小公司,招聘人才的最核心要求是技术能力,只有自己的能力和岗位匹配的时候,你才能获得更多的工作机会。
资料包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等学习教程。带你从零基础系统性的学好Python!
零基础Python学习资源介绍
👉Python学习路线汇总👈
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
👉入门学习视频👈
👉实战案例👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉100道Python练习题👈
检查学习结果。
👉面试刷题👈
资料领取
上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码输入“领取资料” 即可领取