0%

vczh

带逛,不需要刻意为之,听其言,观其行做到即可。

成长

直觉一半来自于举一反三,举一反三一半来自于那个一,而当你对很多问题都有那个一的时候显然是因为你这些问题都碰过,碰过问题跟只学会知识还不一样,你还要解决他们。那如何才能碰过并解决大量的问题呢?唯一的方法就是熬过那一大段时间,通常是十几二十年。你光是聪明,可以学会很多东西,但是由于实践的时间不够,仍然不足已成为一个牛逼的程序员。所以牛逼本身不是一个可以速成的东西,它是知识和经验的积累,然后是运用你的知识和经验的熟练程度。

整天搞windows,遇到需要用linux的时候也只是问问人看看说明书(不过linux好像没有说明书)的事情了。因为本质困难的东西你都会了,剩下的这些操作问题,只是熟练不熟练的区别而已。

游戏做完了不能满足于做完,就要开始想模块化的问题了。怎么做一个游戏用的GUI库?怎么做一个游戏用的脚本引擎?怎么给他们制作工具?怎么写一个游戏引擎?怎么写一个RPG Maker?每一个问题想做简单也可以做简单,想做复杂也可以做的很复杂。于是当我问题一个一个的解决之后,都已经来了M$RA了,这也是我为什么后来会做GacUI 和各种奇怪的编译器研究各种奇怪的类型系统的原因了。当然现在做到这地步都不是仅仅为了游戏而做,当时当你做出一个游戏可以用得东西之后,你就要开始想怎么把它做成通用的,使得开发软件也可以用。每一个问题都最终上升了一个台阶,而你觉得容易的问题就不要浪费时间去解决了

你需要花时间做什么,取决于这个问题是不是够难,是不是刚刚好你可以做出来,再难一点点你就做不出来了

从一个解决问题的程序员,变成一个研究编程本身的程序员了。

  • 学习编程语言,尽量挑选C++等很有用、不好学、不时髦的语言,避免自己分心,有利于克服人类的劣根性。
  • 算法数据结构设计模式编译原理,都有经典书籍。
  • 勤奋的练习。命令行刷几道题练练手感就好了,接下来就是从贪吃蛇和记事本开始抄,你可以一路抄到很远,譬如做一个vscode。

自己做vscode的时候有一个要点,除了windows api以外不要使用任何其他东西,需要什么全都自己来,这才是练习。你的目标不是开发一个有用的编辑器,你的目标也不是学习对马上工作有用的技能,你的目标是练习编程。要是真的好用,你可以自己用。

学习编程,就要从磨螺母到锤车床到风洞实验室到光速发动机都自己一路做过来,掌握的技能才扎实,你可以从22岁做到92岁,不管即使发生什么变化,都可以从容应对,轻松跟上世界的发展。只会用别人的工具而不会自己造工具的,只会疲于奔命,在35岁的时候还是只能干应届生的活,因为体力不支惨遭淘汰。

变量名用英文的话,写代码的时候就不要用中文思考。你可以每天下班在家4小时,写自己的开源项目,文档全用英文,锻炼自己的语言能力。

另外,设计模式也是一套词汇表,建议先掌握。这样写出来的代码,同样是懂设计模式的人来看,理解起来轻松很多。

  • one man army
  • There’s only one way to learn to program: writing a lot of code.