記不得在哪里看過(guò)這句話(huà),“當你擁有一把用得順手的錘子,就會(huì )認為全世界都是釘子”。所有的事情、所有的問(wèn)題,你都嘗試用這把錘子去解決。很多情況下,常常,這把錘子解決不了問(wèn)題,或者說(shuō),有更好的工具來(lái)解決手頭的問(wèn)題。比如,將釘子從木頭中取出來(lái),使用起子會(huì )更有效率、更省事。
編程語(yǔ)言,比如C#,就是我們手上的錘子;而由此語(yǔ)言而形成的思維方式、思考習慣更是我們頭腦中一把無(wú)形的錘子。這是好事、也是壞事--好事在于我們至少有一把錘子,壞事在于我們常常因為手中的用了順手的錘子而忽略了其它工具。
我曾經(jīng)在廣州的一個(gè)公司建議我所在部門(mén)的經(jīng)理將AOP技術(shù)應用到我們手頭的項目中來(lái)解決很多AOP擅長(cháng)而OOP不擅長(cháng)的事情,部門(mén)經(jīng)理告訴我說(shuō),“AOP能做好的,OOP都能做好,比如你說(shuō)的日志記錄,在每個(gè)需要記錄的地方,加個(gè)函數調用就可以了啊,何必使用AOP把事情搞的那么復雜”。
我曾建議某個(gè)熟練C的程序員可以嘗試了解一下C++,得到的回答大概如是,“C++能做的,C都能做,C++的對象可以使用結構和函數指針來(lái)模擬,多態(tài)可以使用基于函數指針的表來(lái)模擬”??墒橇?,這個(gè)熟練的C程序員從來(lái)都沒(méi)有這么模擬過(guò)。他真的還有可能步入面向對象世界的門(mén)檻嗎?
我曾建議某個(gè)熟練的C++程序員嘗試了解一下C#或Java這樣的語(yǔ)言,得到的回答大概如是,“C#和Java能做到的,C++都能做到,而且使用C++能對底層有更好的控制權,而且效率更高!”我又問(wèn)他,“既然是為了更多的控制權和更高的效率,為什么不直接使用匯編或C了?”他沒(méi)有回答。日后,他仍然使用著(zhù)MFC快樂(lè )而低效地創(chuàng )造著(zhù)很多似乎運行的并不高效的程序,他依然很滿(mǎn)足很快樂(lè )。再當他和別人說(shuō)到C#和Java,“那些是什么東西,我從來(lái)不用它們!”。
如果,我們不能暫時(shí)放下手中那把幫助了我們許多卻又限制了我們許多的錘子,我們就永遠不可能拿起其它的工具(思考方法)來(lái)更有效的解決問(wèn)題,也永遠不可能體會(huì )到其它工具(思考方法)的精妙所在!就像上面的那個(gè)經(jīng)理,對于A(yíng)OP的理解,再過(guò)10年,恐怕仍然也不會(huì )深入一點(diǎn)點(diǎn)。
我們不愿放下手中那把順手的錘子,可能是因為
(1)我們已經(jīng)深深的愛(ài)上這把錘子,對其它的工具都沒(méi)興趣
網(wǎng)上大把的口水戰,像,C#和C++哪個(gè)好?Java和.NET哪個(gè)有前途?這些口水戰的斗士們,支持.NET的你對Java的世界了解多少了?支持C++的你對C#又了解多少了?我們經(jīng)常把自己關(guān)在井底觀(guān)望著(zhù)頭上巴掌大的一片天空,然后對看不到的世界妄加論斷,卻始終沒(méi)有勇氣跳出井去了解一下我們不熟悉的更廣闊的世界。
一個(gè)真正的智者,不在于它掌握了哪些編程語(yǔ)言、哪些平臺,而在于他的思維方式、思考方法,在于他開(kāi)闊的胸襟、不固步自封的人生態(tài)度。功夫練到最后,都是練內功、練個(gè)人修養,真正的高手,飛花落葉即可傷人!
(2)我們已經(jīng)沒(méi)有時(shí)間沒(méi)有精力去學(xué)習新的工具(新的思維方式)
這個(gè)理由的緣由僅僅在于我們的懶惰和固步自封!
走出去學(xué)習吧,不斷地走出現在的那口井、并且不斷的學(xué)習才有出路,誰(shuí)叫你選擇程序員這個(gè)職業(yè)了。
(2006.04.10 Appendix)我很抱歉,我的文字讓很多人誤解了我的意思,我的本意并不是要大家去學(xué)習很多編程語(yǔ)言,而是建議大家從現在的思維模式、思考方式中走出來(lái),去看看外面的世界!比如,你一直是面向過(guò)程的思維,可以了解一下OOP、AOP,你一直是使用靜態(tài)的語(yǔ)言工作(如C++、C#),可以了解一下動(dòng)態(tài)語(yǔ)言(如Python),你一直從事C/S開(kāi)發(fā),可以去了解一下B/S,你一直在Windows上工作,可以去了解一下Linux,反之亦然。擴寬我們的視野,無(wú)論如何,對我們的成長(cháng)是有幫助的。當然,這些的前提是,你必須靜下心去研究和體會(huì )(這是所有技術(shù)人員的必備的基本素質(zhì)),要知道哪些東西是淺嘗的,哪些是需要深究的。不要無(wú)緣無(wú)故的排斥、反感什么技術(shù),不要無(wú)緣無(wú)故的追捧什么技術(shù)。
其實(shí)我最想強調的是這一點(diǎn):“功夫練到最后,都是練內功、練個(gè)人修養,真正的高手,飛花落葉即可傷人!”思想狹隘者、固步自封者,很難成為真正的高手。
聯(lián)系客服