说C++之前先说一下C语言。很多人说C语言简单,其实C语言一点都不简单。看着只有30几条基本语法,好像一个本科生学一星期就能上手了,但是要能用起来——注意这个用词,“用起来”——难死了。什么叫“用起来”?用起来是形成生产力,不是笨拙地打开IDE,像元谋人摆弄一柄石斧一样创建一个工程,然后打印一句“Hello world”,或者说出一行“1,2,3,4,5”。这不叫“用起来”。用起来是在山雨欲来之时,你能掏出你的C语言,如同一个胸有成竹的战将拿出自己得意的兵器,你是要冲锋陷阵、奋勇杀敌的,你手里的家伙,应该像你身体的一部分一样自然,随心所欲。到这个地步,实在是太难了。
C++更是如此。如果说C语言给我的感觉是典雅古拙,就像商朝的青铜器,汉朝的石刻,古朴,但是力量感十足,那C++给我的感觉就是盛唐,明亮而华丽,宏大而繁复,汉纳百川,王者之气。
在用Python,或者Java之类的“高级语言”时,总觉得有种不透亮的感觉。就像总是蒙着一层什么,不爽利。当然不是说这些语言不好,从开发者的角度看,我写得最爽的语言其实是MATLAB。多么强大啊,就像扛着一柄无限弹药的RPG,我轰啊,炸啊,把横在我面前的难题一个个轰得渣都不剩。但是最后怎么样呢?只留下无尽的空虚。就像满级大佬回到了新手村,实在令我提不起兴趣。
而C++就不是这样了。它有足够多的玩法供你选择,可玩性简直没有止境。它对硬件的抽象恰到好处,你可以用指针搞手术刀式的精准打击,也可以用成套的现代化工具搞集团军冲锋,甚至可以召唤黑魔法(宏、模板),直接把问题消弭于无形。
当然,这一切的前提是长期、刻苦、反复的学习、练习、思考。这并不简单,但绝不是毫无意义。因为并不是C++复杂,而是这个世界复杂。Python啊Java啊C#啊,哪里有什么风轻云淡,只是虚拟机在帮你负重前行罢了。:)