软开大侠们看过来,指点指点吧,虾米们也欢迎过来交流学习啊!

本人是今年六月刚毕业的计算机系的本科生,大学期间,学习和使用的语言主要是C++;
现在一公司从事C++软件开发工作,正参与公司的一个电力行业视频监控系统软件开发项目;
参与项目四个月了,感觉就刚开始一两个月做了些实事,做了客户端分屏控件,一开始用MFC做的,后来改为使用QT实现。

说说我想要请教各位大牛的问题吧!

现在工作挺闲的,因为经理没分什么任务给我,大部分时间都是我自己在学习,看资料,或者看经理写的代码。
其实我C++语法算是学的不错了,但是刚开始工作时还是很多不清楚,一是因为学了很久忘了,二是在学校都学的很基础,而且很少真正用于实践。前两个月在工作之余,狂看《C++ primer》补语法,看完之后觉得语法方面的问题几乎不是问题了。

目前在看《effective C++》和《more effective C++》,感觉这两本书主要讲解一些提高程序效率和正确性的通用有效的编程技巧。
类似的网上堪称经典的C++资料我下了好多。包括《STL源码剖析》、《深入探索C++对象模型》、《design patten》、《深入浅出MFC》、《modern C++ design》、《多态与虚拟》、《泛型编程与STL》、《C++代码设计与重用》、《C++沉思录》等,还下载了ANSI的C++标准,因为C++的语法和编译器都是基于标准设计的,所以个人感觉看看这个也会很有帮助吧,当然目前只有英文版的,所以看起来会比较费时间,另外,C++之父所写的《C++设计与演化》也下了,这本书看完之后应该能知道C++设计背后的理论,应该能对语言本身掌握更好。

我觉得迷茫的就是,不知道做软件开发什么比较重要,又应该以怎样一个顺序学习相关知识。是编程能力、对所从事行业的了解、对项目业务逻辑的了解、对一些库(如boost、loki)的熟练应用、又或者是抽象设计的能力,再或者说搞清楚程序的编译连接过程究竟做了什么,是否需要深入研究编译器背后所做的事,对内存管理机制等是否要很熟悉,是否也应该对操作系统有深入了解。

我个人的想法是,首先编程能力是基础,这就包括对C++语法的全面深入理解,还有一些提高程序效率和正确性的编程技巧。目前正处于此阶段。然后应该熟练运用一些功能强大的库,此前因为编程需要接触过boost、loki等库了,偶尔会看看这两个库的某些部分,MFC在大学中使用较多,但主要是用于可视化编程,自认为很简单的,但之后才发现其实不是那么简单,以前不使用手动编码实现,并且对其中很多类都不太了解,对消息机制也没深入研究过,只是知道怎么写按钮、鼠标、菜单等的响应事件而已,通过用MFC编码实现分屏控件后,对MFC理解更深,会手动编码设计了。
前段时间,因为要在linux下用QT做客户端,还学习了一段时间QT,了解了QT的元对象、信号与槽等机制,也能编程设计简单界面。期间,还花了几天时间研究qmake、linux shell和linux环境变量等。现在我的分屏控件已经改用QT实现好了,所以最近几乎又没看QT了。
然后我认为最重要的应该是设计能力,刚工作时,经理让我做的编码工作我都能很快完成,而且自认为实现的很好,但他总会被气到,还说我编程就是拼代码,当时很不理解,认为要实现的功能自己都实现了,没有逻辑问题。但随着我的分屏控件的完成,到我看过一些经理的代码,开始有体会了。我编码的时候不会将功能逻辑抽象出来,已到达和实现分离。C++中个人认为很精辟的就是模板、类继承和多态。通过对抽象类编程是可以将抽象和实现分离的,你不用管最后采用什么实现。

刚看完Primer时也跟经理交流过,问他MFC、STL、深入探索C++对象模型等是否可以看,他的答案是MFC不用去看,使用的时候针对需要学习,似乎是说这个是偏应用的。说STL值得看,主要看看它的编程逻辑,当时没太懂啊,以为是关注效率等。但经理的回复是,现在做软件效率都不是首先考虑的了,主要考虑代码的柔性、复用性、扩展性、低耦合等等。回想经理的代码,几乎都是对抽象逻辑进行编程,以达到最大的复用性和对所交互模块的最小限制性和依赖性。经历曾经叫我去看《设计模式》,但一直还没有看,想对C++编程掌握更好之后在看。另外《modern c++ design》这本书网上评价很好,《C++ primer》的作者对其评价也相当之高,这本书是针对loki库所写的,经理说这本书是相当深的,也就是我现在肯定还不能看。loki库中的东西似乎也很深,包括智能指针,互斥锁等等。

另外说说我个人情况,我是那种遇到问题想得比较深入的,看资料时,会把每句话的意思理解透,并想一些相关的例子来证实这句话的意义。我也是那种对不懂的都想要学会的人,在工作中,每遇到一个问题,就会去深入研究,而且有时会想得很细节。有时候,想想自己这样的学习过程,是不是很浪费时间,而且感觉像囫囵吞枣,遇到什么就抓什么,过了那段时间又放了。我对编译器幕后所做的事情很想弄清楚,因为感觉这样能够对代码有整体把握,在程序的运行超出设想时可以能很好的分析问题所在。很想搞清楚动态库静态库的使用、原理,动态编译、静态编译不异同,以及宏开关的使用等等。

后来有一个又和经理交流,经理说最好是选一个感兴趣的方向学习,他说开发的范围太广了。

请大牛们给点指示,在学习时是不是应该有针对性的呢?还有到底现在做开发什么最重要啊,应该怎么提高自己呢?

希望大家多多给意见,有和我一样迷茫的人,也希望能一起多多交流,共同提高,无比感谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值