How you learn programming
作者:刘润
很多人在学 python 。
其实学计算机,关键学的不是语言。而是学思维方式。比如,变量,判断,循环,递归,封装,调用,面向对象,等等等等。这些思维方式,是一整套拆解世界,构建世界的逻辑。
语言( c , c ++, c #, basic , pascal , java , python ,等等)是最表象的。但还是要学,因为能借假修真。通过语法的强制性,训练你的严密的建构思维。你会越来越敬畏规律,把"差不多"从你的字典里去掉。因为代码不能"差不多",只要有一个符号错了,都是通不过编译器,无法执行的。
学到一定程度,你看世界都会不一样了,会开始相信,上帝是一个程序员。
但是很快,你就会遇到瓶颈。进步越来越小。学习招式,没有内力,天花板很低。
这时,一定要学算法和数据结构。堆栈,先进先出,后进先出,链表(学到这里,你讨论区块链时才不会像一个哲学家),加密算法, sha , rsa ,公钥私钥,拜占庭问题,七桥问题,等等。要求高一点的,重学数学里的数论。
然后,再回来学编程。会上一个台阶,真正用编程解决难题。否则语言就是花架子。
学到一定程度,你看世界都会不一样了,会开始相信,上帝是一个程序员。
但是很快,你就会遇到瓶颈。进步越来越小。学习招式,没有内力,天花板很低。
这时,一定要学算法和数据结构。堆栈,先进先出,后进先出,链表(学到这里,你讨论区块链时才不会像一个哲学家),加密算法, sha , rsa ,公钥私钥,拜占庭问题,七桥问题,等等。要求高一点的,重学数学里的数论。
然后,再回来学编程。会上一个台阶,真正用编程解决难题。否则语言就是花架子。
如果还想深入,就要学习网络。这部分软硬结合,需要很强的抽象思维能力。透彻搞明白 tcp / ip , dhcp , mac ,路由器,交换机,协议, dns , sam , http , javascript , smtp , imap ,等等。
这时,如果你对互联网时代的编程真的感兴趣了,想干这件事,你可以看看 mac 编程, ios 编程, android 编程,鸿蒙编程,打通这些东西。当你发现他们区别很小,甚至出来个新东西,你看看资料,就能上手编程了,就贯通了。
如果还想深入,就要往后端走了。也就是往所谓"鄙视链"前段走。
数据库是要学的。系统架构是要学的。安全,分布式,防火墙,冗余,灾备, failover ,最好补一补拓扑学,操作系统感兴趣的话也可以学一些,不一定能写出高稳定性的数据库,分布式计算架构,优秀的操作系统,但至少能理解,使用,调试,并基于开源代码继续开发。
如果再想深入,就几乎全是数学了。人工智能的深度学习,神经网络,进化算法,几乎全是数学。这需要比较深的数学基础。看你能到什么程度了。
到了你的最深处,剩下的就是磨刀了。从此 github 深似海。你的代码宇宙的英雄,都是 github 这个开源社区里从来没有见过的大神。你在膜拜大神,和成为大神的路上,终其一生。
然后,剧终。
(一个1985年开始学编程的商业顾问,飘过)