从大学开始学C++到现在的一些感悟

时间:2022-08-18 18:47:15

Since I choose this road, I will not regret it.

                         --Mereyct

端午过后的第二天,闲着没事,更新一下博客。

写这个博客的原因是,看到了群里有人问调用构造函数时能成功,调用析构函数却失败了。他在群里问大家问题,可是没有人回答他。其实,开始写这个博客的时候,我感悟挺深的。也许我会得罪咱们中国的应试教育,所以提前对应试教育说句好话:我就是因为中国的应试教育考上研究生,成为一名学计算机的小码农。称自己为小码农,是因为自己连码农的资格都没有。水平还属于超级底下。

我的启蒙语言是C语言,学校开了C++课程前,我已经学过C了。我第一次接触了C++这个新鲜的玩意。所有的printf变成了cout << ,scanf变成了cin >>,但是我天真的以为,也就这点区别吧。学校的用书是中国著名的老师谭浩强写的《C++》,当然C语言也是用他的。我们老师是一个博士后,大学毕业想考北大,因为受不了政治这门课,选择了报送,去了北京科技大学。后来又去了某大学读了博,还顺便读了博士后。我真的不是有意贬低他的教学方式有误,确确实实是故意说他教学方式真的不行(这里我就不再吐槽了),总之,课结束以后,大家都是靠刷题,才考过的。因为C++这门课是上机考。于是期末考试那几天,天天背题。最后还得了80多。所以我感悟很深的原因就是,看到刚开始学习c++这门语言的时候,很少有老师会带你入门。很多老师只是完成课程任务,上完课后,也许他们有公司,要打理自己的公司,有些有家庭,根本没时间理你。你问他问题:他觉得太简单,自己看。所以导致很多人加群,在群里问,但是刚入象牙塔的大学生,哪里知道百度Google才是他们真正的老师。我不敢说所有的学校的计算机专业都这样,最起码我看到的学校,很多学校都老师都并不能很好的给学生指引一条就业的道路。教授教授,他们只是搞学问的,也就是弄学术,发论文,他们大部分的人根本不懂代码。就我现在的实验室,某老师做项目的时候,只会和你说需求!完成他要求的需求就是优秀的学生!但是他提出来的需求,有时候根本不切实际,他们并没有站在码农的角度来想。你说完不成!他们就说:没有完不成的事,只有做不成事的人!某某软件怎么就做出来了呢?我心里踏过了无数遍的*:刚读研的大学生啥项目都没做过,就要和大公司专业的做出来的东西比吗?当然了,高要求对自己并没有错。

其实,读研期间学到的东西真真实实比本科多,这是肯定的,但是也是不能和实际工作比的。要是我的大学老师,能指点我,和我说:今天你要看这些这些书,看完你就懂了!如果你想走什么方向,就要多做这个方向的项目,多看这个方向的书!我也不至于读研了,早就工作了。4年大学了,真的很少有老师和我们这么说,绝大部分的老师,都是上完课就走人。连我的班主任,走在路上都不认识我们。

很多人会说,学习是靠自己的,老师只是领你进门。这句话我真的非常同意。但是事实上?我的老师们并没有带我进门。

到了大四,学了很多很多的专业的课,却编不出一个程序。当然,最主要的原因是因为我自己吧,水平不够。平时做做我们学校的OJ,刷刷题,搞搞算法。对项目这个概念,真的非常的模糊。

大四我开始了考研。想通过考研这个方式来改变这个现状。希望自己能多做项目,也希望自己对计算机有更深层次的理解。如我所愿,我真的考上了。还进了我们学校最好的实验室。

大四的时候我开始深思熟虑,我到底是做JAVA还是c++,之后因为对C++这门语言先入为主的观念,我打算走c++这条路。做Linux下服务器编程。我当时励志想进大公司,给大公司做架构,给他们造*。因为linux下服务器编程,也就是一项做*的工作。

我开始疯狂的百度各种大神的学习经验,我先花了半个月看了 《C++primer》第四版,敲了上面的所以例子。学完这本书以后,我发现自己的以前所有看不懂的代码。我都能读懂了。大二纠结的那些问题,全部都迎刃而解。我还看了酷壳上博主写的C++程序员自信曲线图。深知做走这条路真的不容易,没有3、4年我都不敢说自己已经入门了。因为c++里面的东西太多。模板的运用、STL库的使用、BOOST库等等,以及你想搞SOCKET编程,你还得学习W.Richard Stevens传世经典的《UNIX网络编程》,这些书都是大砖块,你想学习完他们并不容易。你需要花大把的时间熟悉他们。当然会使用他们还不够,你还得知道他们的源码,例如,你还要了解例如STL源码里面的东西。侯捷说过:源码面前,了无秘密。只有都掌握了这些,你才能说自己是一名合格的C++程序员,你的简历上也才能写上熟悉C++。

在校的本科生,如何学习?项目+经典书籍+交流,这才是王道。不要一味闭门造车,学习一些新的东西并不是坏事。项目是增加你的动手能力,也是检验你的掌握程度。

现在和大二时候的自己,对C++的感悟肯定是不同的。觉得C++是从C里面演变过来的,这样的思想,现在觉得是多么的可笑,因为现在我觉得,她是一门和C并没有多少关系的语言。不管怎么说,既然选择这条路,我就绝不后悔(Since I choose this road, I will not regret it)。希望你们也一样。

 

#12楼 2015-06-21 18:24 东王 

使用C++和C语言,应该最大的区别还在于面向对象的思想。很多人学了很长时间的C++,实际上也只是使用了有类的C语言。根本就没有面象对象的思想。只是会定义个类,然后定义些方法封装一下。最多就是把公有的东西做一些封装。多态这些根本就不知道如何用。这些在书本上都讲了,只是不能灵活运用,要灵活运用,就需要在实际项目中练习体会,学习《设计模式》是最好的选择。
 
12楼的网友说的很对,确实设计模式太重要了。所以我觉得,应该多做做项目,做了一定项目后,看看设计模式会有很大的收获。
 
 
一些C++国外网站,英文能力不错的可以看看: