5 Y/ h$ ?. W' h. B, X⑤我为什么开头不讲学习者要具体学什么怎么顺序学呢?因为那些技术学习者要掌握的话,根本可以自己解决(翻书+实践的反复循环),但是如果没有一个对自己现在投入的努力和【以后形成的能力和层次积淀的预测】的基本了解,那么毕业后虽然也能找到不错的工作,薪水也可能高,但是却不是一个大牛(虽然这之间确有转化关系,仅个人见解)。 7 v3 y8 ]8 G3 N+ G' W% ^2 V8 E, B$ @0 F$ d2 \9 n4 P
现在才开始讲学习顺序(一种可能的顺序,并且大部分被我验证或预测过)。4 y& F; n- F" Z' s( y
- d# O" k5 r& U0 E C语言是可以写很多核心和高级的东西,而不只是小东西,编码技巧有很多可以提高的空间之处。 9 A; F* p: G8 B- _: H. }# B : _# `1 l: p3 ]9 |0 F# R$ |& h 学习者的学习顺序应该是: # G8 a, ]1 K9 ~7 [+ k C:建议有时间的话,学到这个程度-做一个超级马里奥出来,并能够读取文本脚本来更新关卡。 8 t1 I9 u: V8 r* E0 N! m C++:写一个2D图形引擎,封装掉细节,实现面向对象设计和可复用设计(但是2D图形引擎注重效率,对复用的设计理念显然不需要太在乎,所以最具有复用挑战力的是外表简洁,内部设计复杂而高度灵活如WPF的GUI),并且用到《设计模式》中提到的一些设计模式,这样才能算对C++有一个很好的掌握。 ( S+ k6 }* U. O, K# j* ?1 [, Q MFC:MFC技术虽然据说前期一段时间冷下来了(近期又有新的热度,貌似融入了新的血液),但是学习者能熟练掌握它,才能短期内证明学习者的C++OO技术够纯熟,严格证明学习者掌握了MFC很简单,学习者只要用MFC做出一个非内核的杀毒引擎简化版就差不多了。推荐的书有《深入浅出MFC》。 ' q: p4 ^# J6 d" Q0 U; O ~ 《Windows程序设计》:和MFC不同的是,用的是windows核心SDK,也就是Windows API,这本书学完后,学习者才能从操作系统层面上算掌握了win32 平台下的机理(其实win64和win32大部分API机理类似)。 ; z) W/ |. f- [: D C#:C#里集合了当代和前沿计算机科学里最先进的一些语法(虽然执行效率一直被人质疑),但是学习者学完C#并深入后,至少能够算是对计算机语言有一个更加深刻的理解了。如何证明学习者C#学的不错了?也很简单,再次写一个随便什么游戏。如果更加证明自己呢?用它写一个P2P网络对战游戏。& N0 ~2 ^$ }9 [
; T. j) A) Z E9 A- T ; D$ d ~/ R$ s: D9 X6 {; L⑥作为进阶学习编程语言的附加要求,其它语言建议也学习下,学之前可以先看《冒号课堂》(告诉你各种范式语言之间的关系,让你对编程语言有一种截然不同的全新视野的掌握)。 8 B' b$ r7 k, ~( a8 ^- e" Y+ u) R( U* c# V# r
(如果学习者注意的话,会发现我说的学习顺序都是沿着语言和某些技术的,为什么呢?因为这些语言和技术涉及到特定的领域技术和计算机理论思想,比如【真正】学完了C++或C#的话,就不单指学完了C++或C#,而是把多种语言范式都学习了一遍,以及现代的程序开发思维(因为里面用到了很多让学习者一劳永逸的技术))% K' l$ x( g+ L
9 \: M- \6 L4 i/ X( ] 以上5个步骤都是基础大步骤,要解决的话要没1-2年应该不够。0 O# g, n8 c2 A
与此同时,要尽快选出文中学习者感兴趣的方向作为3-5年的长期方向,不要担心过早选择分支方向会有什么损失,因为计算机很多分支是相通的,只有学习者把分支方向深入进去,才能真正理解很多理论的实践意义。并且一旦学习者在某个分支领域形成了较强的优势(比如,到公司里只有学习者这方面最强),那么学习者就是稀缺人才。 7 z! S) a3 N2 }7 [5 h1 f" A/ d, Y2 t# ?5 S5 M, B& j9 I
关于大方向的细分步骤就暂时先说到此处,有兴趣学习者的主要就是要把我说的这几个基础步骤先解决,同时平时要注重大方向理论结合实际去编码和开发。 * o# P9 H+ d( A- s8 u2 I8 G/ T) b& W4 `! m
8 v" M. @8 _6 x* z0 H$ N4 |
% O6 _9 o; y( g' X8 t
⑦最后,再从资本论的角度去度量一下为什么要深入至少1-2门技术,而非只是泛泛的都学。: B6 g, |* d& j; O: g$ l; V2 n3 N- v
8 _. Q$ `' H& m. i' l9 \! G# T9 x! y; W