世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。 ' t, T+ u; E9 B: Y' _( H
4 k) t7 G$ S% t! K* y: l+ e1、扎实的基础 & M8 I6 n4 g' r+ p7 w0 d- u- ` m) X3 v. J6 ~' B% }8 p @: V
2 v% Z+ O8 H7 N- \5 x, k7 ~& q% X. V
数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握它们,很难写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常有必要的。 7 C% ?. J' G/ c 1 N, B% Q. T u& e; p$ _- X; c5 ~ 6 f+ Z" B8 S1 \, i' F4 u4 ? ! o6 W3 G/ B. K ^+ J6 k3 p2、丰富的想像力 % W& A; {8 e+ ]% y$ l+ k \
j: L. K* q1 M; o4 C
7 P2 r& M3 ^1 i* d" O5 }2 ? F
! q$ q! \; F4 [' g. _7 t, U 不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想像力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。开阔的思维对程序员来说很重要。 4 w e' s) h4 b& ?7 F/ O" d/ l; x( I6 k G2 ]" @, R4 F
7 J2 R$ f3 e$ P" j* O
& Y- ?$ F) ~0 q- u
3、最简单的是最好的 ' [+ q$ v" C" H$ i3 p8 x: I" c* Y# ]" L7 s" R+ x5 s. V
. g8 R$ Z: c Q5 R$ [" d1 b1 Y
( n7 v' H. _$ U* a6 c$ R 这也许是所有科学都遵循的一条准则,复杂的质能转换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。 8 _9 c* k' E) ]; a0 \3 k
% i/ Q) B- F' V0 W$ Z2 C. U* p* v7 e! r# A, K# k
; b; W% g2 B. E; ~$ `4、不钻牛角尖 O+ g8 @/ V& V7 D7 e; I( j 2 k* Y2 z( X' p$ F; G % R. l& h5 S% A6 Y% E( O ^2 ~0 l1 S: i/ e( W
当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。 # Q ]) l" n: w/ k
& L a4 ~! u$ W: o' [. d. S+ s
( E1 v! W3 t4 W) c( d2 F' E 8、韧性和毅力 ' x! D0 g9 b6 O& U& T) F. }0 Y
! d' [0 W, f* B7 K" U# H' C) q* `8 r4 y; k
3 Z* K* T$ x* u2 a
这也许是“高手”和一般程序员最大的区别。高手们并不是天才,他们是在无数个日日夜夜中磨炼出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。