该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
众所周知,C++是一个多范型编程语言。面向对象在C++语言中占有相当大的比例。面向对象最重要的作用在于对事物的抽象。而C++本身是一个“纯粹”的语言,其本身不包括太多与外部环境有关系的类库。所以初学C++的人,如果不了解操作系统的很多东西,是没法写出什么可以让初学者感到有实际用处的程序。如果只会C++,只能是做纯思维的锻炼,但是由于缺乏一些具体的东西,而且也没有可能遇到很复杂的业务场景,导致没什么东西需要去抽象的。这导致初学者容易产生以下几种想法:
1.我学C++学的这么辛苦,怎么什么都编不出来,你看人家学Java的,学C#的,学ASP的,学PHP的,等等。
2.C++到底能干什么?
3.学了这么辛苦,还什么都做不出来,编程序太难了,不适合我,我放弃了
难道真的是C++什么都做不出来吗?当然不是了!那为什么会这样?就是因为C++太“纯粹”了。C++必须配合与操作系统打交道的库,才能实际上做出来点什么东西。而C++的库却太多了,不同的方向有不同的库,同一个方向,也有无数个库,初学者根本不知道有这些库,知道了,更迷茫,到底选择哪个库?
而Java的却相当于有自己的官方库,学习了基本的Java语法以后,马上就会学习点别的东西,比如与数据库打交道类,比如Swing,比如Socket之类的东西,很快就可以做出点对初学者来说可以看到见摸得着的东西,容易产生成就感,不会有太强的挫折感。而且很快就遇到了很多“具体”的事物,所学习的面向对象的思想,可以用来抽象和表达这些具体的事物,使得其学习不会给初学者以“空中楼阁”,“纯理论”的感觉,更接地气的感觉。
个人觉得C++没有自己的官方库,确实是其在某些方面的发展声势不如Java的一个很重要的原因! 但是C++要跨平台,提供很多东西,也确实有很多困难。
不得不承认,C++的优势在于其对底层接近的一些事物的抽象能力,同时有保持了很高的性能。那这些与底层接近的事物,在常见的操作系统上都是以非面向对象的API形式提供给用户的。比如线程,进程,socket等等。所以要想去自由使用C++去进行抽象的前提,就是去对这些底层的事物有了认知以后,才能去做。
那么也就意味着你必须去先学习操作系统的API,了解操作系统的东西以后,再结合具体的业务场景,这个时候,你才能认知到抽象的价值,那么才能体会到C++的美妙。
所以Linux Application Development - 2nd Edition读起!