我把学习计算机的路线想象为成为魔法师的过程。一个魔法大师得既有神奇魔法也得有充沛魔力才能做到神挡杀神,佛挡杀佛。那么计算机的学科知识就是魔力,编程技能就是魔法。
0.一门编程语言(魔法)
1.从C语言开始(从最简单的招式了解练武这件事)
最好从C语言开始,C语言相比C++/Jave简单,处在系统层级,易于学习后面的计算机系统。C语言入门从视频开始,看着视频,视频看完一集,就把代码敲出来。
2.重点关注C++/Java(主修功法)
C++/Jave选择其中一个作为重点,深入研究,C++偏向硬件,Jave偏向软件。C语言简单的代价是功能弱,好比斧子与电锯,刚开始从斧子入门学砍树,等到真正需要砍树的时候,肯定选择效率更高的电锯。和学C语言一样,从视频入手,但为了深入,需要阅读经典的教科书。
3.辅助学学Python(辅修功法)
Python在开发小脚本时特别好用,代码量远远小于C++/Java。看看类似菜鸟教程,因为有学习其他编程语言的经验,很快就可以学会。
1.数据结构与算法(魔力)
1.数据结构就是容器与算法就是魔法
把信息想象成水,数据结构就是装水的容器,有的水,前辈曾经对付过,用前辈设计好的容器就行;有的水比较复杂,得自己组合容器/设计容器。只把水装在容器里面没有用,要让水流动起来才有用。算法就是操控水的魔法,要让水以自己想要的样子变化,就得学会利用/设计不同的算法。
2.可以自己造轮子
一些问题时需要程序员创新出新的数据结构/算法来解决的,学习前辈的开发思路,之后自己就可以尝试开发。
3.刷爆LeetCode
随便什么刷题网站都行,熟悉数据结构/算法,自己封装数据结构/算法。
2.计算机系统(魔力)
1.硬件与软件的桥梁
计算机系统也是一种软件,不过因为这种软件的特殊性,大家就把它叫做计算机系统了。一起软件的开发都是在计算机系统之上完成的,计算机系统调控着一切硬件资源。
2.优化程序性能
了解着一部分,可以让软件减少bug,更好地利用计算机硬件资源,使程序更加高效。
3.试着开发一个简单的系统
这不是必要的,但可以照着教程,一步步试着开发出这样的操作系统。
3.计算机网络(魔力)
1.连接不同的计算机
每个计算机以前都是各自独立的,老死不相往来的,之后随着有线/无线的连接,计算机之间可以进行信息的交换,这样计算机网络就出现了。
2.使得程序利用多个计算机资源
计算机网络使得一些以前单个计算机无法完成的程序可以出现,其实现在的QQ,王者荣耀都在时时刻刻进行着互联网的信息交互。
3.搭建一个服务器/网站
试着利用云服务器搭建一个网站,使用不同的设备去访问。
4.计算机结构与组成(魔力)
1.计算机的硬件组成
信息是如何被电子化的,电路的不断导通与闭合为什么可以为当代世界造成如此大的影响,CPU是如何处理信息的,程序员的程序在底层到底是怎么运行起来,一切的答案就在计算机结构与组成。
2.从底层理解程序的运作原理
以终为始,在编写程序时,就思考程序在计算机硬件上的运作过程,编写的程序在底层执行时可以更快速,占用更少资源。
3.玩玩单片机
单片机是一个非常简单的小型计算机,学习单片机可以进一步了解个人计算机。
5.根据需求具体学习(魔法)
1.喜欢啥,啥赚钱学啥
在完成前面几步的前提下,可以根据自己的爱好,选择发展方向。
2.万变不离其宗
一切新技术都离不开这些计算机学科知识,掌握了这些知识,就等于抓住了技术的源头,一切新技术学起来自然轻松简单。
3.此时个人必然有自己的方法
此时,每个人都有自己对计算机的认识了,依照自己的想法去探索。