中易网

C++学习方向及深入

答案:5  悬赏:70  
解决时间 2021-02-12 09:28
C++学习方向及深入
最佳答案
C++这门语言从诞生到今天已经经历了将近30个年头。不可否认,它的学习难度都比其它语言较高。而它的学习难度,主要来自于它的复杂性。现在C++的使用范围比以前已经少了很多,java、C#、python等语言在很多方面已经可以代替C++。但是也有很多地方是其他语言完全无法替代的,主要集中在需要运行效率比较高的行业,比如游戏、高效的服务器。
  现在学习java、C#等语言的人数远远高于C++,主要是C++的入门门槛太高,可能学习了一段时间后还做不了什么东西,导致信心大受打击,进而放弃。
  1. 语言
  要成为一个程序员,学的东西会很多很杂,但是最开始一定要从语言开始学习,而学习语言最关键的莫过于选好一本书,学校的教材就算了,根本没有写得好的。在此隆重推荐《C++ Primer》,这本书很厚,内容也很丰富,对知识的讲解不仅仅停留在表面。如果这本书能有耐心看完,语言方面基本就没有什么大问题了,对以后的学习也打下了一个很好的基础。
  2. GUI
  C++方面的GUI库有很多种,比如MFC、WTL、wxWidgets、QT。这些GUI库都各有自己的特点,其实只要先了解一种就可以了,只要深入了解了一种GUI库,需要的时候再学习其他的就够了,本质上都差不多,很快就可以上手了。MFC虽然设计上有很多问题,但是作为入门还是不错的,而且学习资料很多,碰到问题也好解决。
  3. 数据结构和算法
  很多人都忽视了数据结构和算法方面的知识,尤其是一些编程语言的库做得非常好,几乎不需要自己去实现一些数据结构和算法,导致现在很多程序员不重视甚至忽略这方面的知识。但是,当想让的程序跑的更快、内存占用更少的时候,这些知识就非常非常重要了。很多程序员都是刚开始的时候不重视这些,但是工作几年后又来补习这些知识。
  最开始可能不需要学习的太深入,但是基本的数据结构和算法一定要知道。
  推荐《数据结构(C语言版)》,在数据结构和算法的学习中,最好不要去关心面向对象方面的技巧,就用C语言来实现,这样能更关注于算法本身的内容。
  4. 数据库
  学习数据库的基础知识,并且掌握一种数据库使用,推荐使用Oracle,而且最好不要用一些封装好的接口,而应该直接用Oracle提供的数据库API,可能对数据库了解的会更深入。
  5. 并行
  CPU主频已经不能遵循摩尔定律了,现在CPU发展的趋势是多核心。无论是多线程,还是多进程,都是为了更好的利用CPU的性能,提供更好的用户体验。这就要求如果要写出高效的应用程序,必然要涉及到并行计算。多花些精力在并行计算上吧,一定会有丰富的回报。
  6. 网络编程
  这里所指的网络编程是指socket编程。现在C++的应用很多都是在做服务器开发,如何开发一个高并发、大吞吐量、高稳定性的服务器就是要考虑的了。
  7. 设计模式
  设计模式不是具体的技术,更多的是如何让代码更容易阅读、更好扩展、更容易使用。
  8. 库的使用
  C++标准库仅仅提供了一些很基本的功能,所以经常会引入一些第三方库。最著名的恐怕就是被称为准标准库的boost库,它提供了编程中用到的各方面的技术,文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。其它也有一些专著于某一方面的库,比如ACE是网络通信方面的,TinyXML是解析xml的,OGRE是图形渲染方面的。
  9. 操作系统的知识
  程序员需要了解的操作系统知识和普通用户是不一样的,一个高手是需要深入了解操作系统的方方面面,而不是停留在使用层面。至于应该了解哪些知识,Windows上的去看《Windows核心编程》,Linux的去看《深入理解Linux内核》,应该可以知道自己应该学什么了。
全部回答
我也是C++初学者,我也觉得有些迷茫~~C++的内容好庞大高深奥哦~~~ 我们现在接触的实在是太小太小的一个部分了~~~ 我觉得基础要打好本来就是一个漫长有需要耐心的过程~~~ 我自己觉得~如果说现在刚入门或者可能根本没入门就去定方向,可能我们会看不清形势,也不了解自己到底在哪个方向有优势,还不如先埋头把API,MFC学好~~~站得高点了自然看得远点,这点基础不管往哪发展都有用的,等视界大一点的时候在决定要走的方向也不是件坏事~~~ 我刚刚接触到了API,了解了一点现在在学MFC,其实我什么都不懂~~哈哈~~~只是凭自己的感觉说一下~~~想法太肤浅的话希望大家不要见怪哈~~~其实我觉得大家志同道合的,何不携手前行,一起努力呢~~
C++学习方向 你问你们老师才对. 哪天你问问你们老师:"老师同志,你教我们软件开发,到底是开发什么软件?" 你老师的回答肯定是:"你开发什么软件问我干什么!". 首先你要学会一门编程语言,数据结构算法,和一种数据库,并会用你的语言操作它,网络编程基础,还要会WINDOWS编程,等等这些基础的, 这些课其实很简单,一年就搞定了,还有很多玩的时间,不过要合理安排时间. 学会基础的之后,就要选择你到底要从事哪一方面的软件开发了. 是 数据库软件开发? 游戏开发? 网站开发? 嵌入式开发? 网络产品开发? 多媒体软件开发? 系统程序开发? 人工智能软件开发? 还是专门为一种行业软件开发. 请问你选择哪一种软件开发? 你要向哪方面发展就去找哪方面的资料看,你不会让老师一个一个教你吧,老师可能也不会..... 以上这些发展方向都是按"年"来学习的,第一年你只是个菜鸟,第二年你也是个菜鸟,第三年你是个新手,然后去工作了,再慢慢实习去吧.
看你的这个回答,就知道你这个人很浮躁。首先你说你的学习是重复的?学习了C在学习C++你认为C++完全包含C语言了。?? C++基础你说你都看烦了,请问你的C或者C++基础是不是打的很好了呢? 告诉你吧,我大学学的是计算机科学与技术专业,开的课程应该与你们差不多,数学就不说了,高数,离散,概率论,等等。 其实主要就学了几个方面,一个是程序设计语言,我们学习了 汇编,C,C++,C#,Java。 几乎主流的C系列语言都学过了。 除了VB,Delphi这两个语言都是B系列的(Basic),Delphi的原生语言是Pascal。先不说你们学校开课是否合理。首先你应该将整个计算机专业的课程的框架结构搞清楚,那个语言是用来做什么的,例如汇编语言主要是在嵌入式,病毒,加密解密,软件逆向工程等方面使用的比较多。C语言主要是在嵌入式上,C++主要用来开发应用程序,特别是Windows环境下的窗口程序,或者Linux系统些的程序。例如我们平时玩的 魔兽,传奇等等这些游戏几乎都是C++开发的,而Java,C#在网页应用程序方面使用的非常广泛,java在手机游戏方面也很出色。 而在数据库方面我们平时接触的比较多的就是微软的SQL Server,甲骨文的Oracle数据库了。 从你的叙述看出你是要将精力放在C++上面了,可以看出你的迷茫时在:“整天学习的编程都是在dos窗口下,怎么才能写出windows窗口程序呢,就像QQ这样的程序?” 我相信你也是有这样的疑问的,所以你说你找不到方向,不知道如何下手。 首先你要知道,任何知识基础是至关重要的,你说你看C++的基础看的烦了,试问你C++基础真的学好了吗,可以看出你很浮。 C++中的指针,数组,函数,类,多继承,多态,函数模版,类模版,异常机制这些最重要的东西你是否都搞懂了,泛型程序设计,C++标准模版库,那些泛型算法你是否都了然于胸了呢? 当然并不是说要你都搞的精通了在去学Windows程序设计,我相信现在的很多Windows程序员都没有把这些高精通,因为这些东西实在是太庞杂了,C++本身就是一门复杂的语言,没几年功夫连入门都很难。 如果你要学习Windows程序设计的话,首先 《Windows程序设计》这本书是不的不看的,里面的程序例子都是用Windows api写的,没有涉及到框架等等,这样你可以了解到Windows程序运行的消息机制。到底一个窗口程序时怎么跑起来的。 这些原理你至少要熟悉,其次 《VC++ 技术内幕》这本书讲的很好,还有就是侯捷的相关书籍,特别是如果你要学MFC的话,《深入浅出MFC》这本书是必看的。。 C++还有很多好书,你自己去网上搜索,例如林锐的《高质量C++》,侯捷翻译的《深入探索C++对象模型》《c++模版》,等等。。 学习要脚踏实地,要把自己沉下去,切不可浮在表面。那样只会人云亦云,知其然不知其所以然,实质性的东西学不到。
一、技术能力   1. 语言   要成为一个程序员,学的东西会很多很杂,但是最开始一定要从语言开始学习,而学习语言最关键的莫过于选好一本书,学校的教材就算了,根本没有写得好的。在此隆重推荐《C++ Primer》,这本书很厚,内容也很丰富,对知识的讲解不仅仅停留在表面。如果这本书能有耐心看完,语言方面基本就没有什么大问题了,对以后的学习也打下了一个很好的基础。   2. GUI   C++方面的GUI库有很多种,比如MFC、WTL、wxWidgets、QT。这些GUI库都各有自己的特点,其实只要先了解一种就可以了,只要深入了解了一种GUI库,需要的时候再学习其他的就够了,本质上都差不多,很快就可以上手了。MFC虽然设计上有很多问题,但是作为入门还是不错的,而且学习资料很多,碰到问题也好解决。   3. 数据结构和算法   很多人都忽视了数据结构和算法方面的知识,尤其是一些编程语言的库做得非常好,几乎不需要自己去实现一些数据结构和算法,导致现在很多程序员不重视甚至忽略这方面的知识。但是,当想让的程序跑的更快、内存占用更少的时候,这些知识就非常非常重要了。很多程序员都是刚开始的时候不重视这些,但是工作几年后又来补习这些知识。   最开始可能不需要学习的太深入,但是基本的数据结构和算法一定要知道。   推荐《数据结构(C语言版)》,在数据结构和算法的学习中,最好不要去关心面向对象方面的技巧,就用C语言来实现,这样能更关注于算法本身的内容。   4. 数据库   学习数据库的基础知识,并且掌握一种数据库使用,推荐使用Oracle,而且最好不要用一些封装好的接口,而应该直接用Oracle提供的数据库API,可能对数据库了解的会更深入。   5. 并行   CPU主频已经不能遵循摩尔定律了,现在CPU发展的趋势是多核心。无论是多线程,还是多进程,都是为了更好的利用CPU的性能,提供更好的用户体验。这就要求如果要写出高效的应用程序,必然要涉及到并行计算。多花些精力在并行计算上吧,一定会有丰富的回报。   6. 网络编程   这里所指的网络编程是指socket编程。现在C++的应用很多都是在做服务器开发,如何开发一个高并发、大吞吐量、高稳定性的服务器就是要考虑的了。   7. 设计模式   设计模式不是具体的技术,更多的是如何让代码更容易阅读、更好扩展、更容易使用。   8. 库的使用   C++标准库仅仅提供了一些很基本的功能,所以经常会引入一些第三方库。最著名的恐怕就是被称为准标准库的boost库,它提供了编程中用到的各方面的技术,文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。其它也有一些专著于某一方面的库,比如ACE是网络通信方面的,TinyXML是解析xml的,OGRE是图形渲染方面的。   9. 操作系统的知识   程序员需要了解的操作系统知识和普通用户是不一样的,一个高手是需要深入了解操作系统的方方面面,而不是停留在使用层面。至于应该了解哪些知识,Windows上的去看《Windows核心编程》,Linux的去看《深入理解Linux内核》,应该可以知道自己应该学什么了。   二、项目经验   以上的内容如果都精通了,也算是个比较厉害的程序员了。但是对程序员来说,项目经验更加重要。一个好的项目可以让把各种技术进行综合运用,并且能学到一些新的知识。比如说做游戏的就需要学习图形方面的知识,做播放器的要学习编解码器方面的知识。   很多程序员会忽略项目的经验,而单纯的谈技术能力,这是错误的。其实这就是理论和实践的关系,技术就是理论知识,做项目就是实践,理论对实践有知道作用,实践能加深对理论的深入理解。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
文科考了400分可以报哪些大学
各位有缘人,看看我这是正财格还是偏财格。身
一个好男人永远不会嫌弃老婆无能
C++写一个函数creat,用来建立一个动态建表
名城金典地址在哪,我要去那里办事
有没有关于龙的成语故事?
比亚迪s6前轮过桥轴承怎么换
宝贝丫榜样童装地址在哪,我要去那里办事
哪家的短信公司使用不满意还可以退款?
我刚下载的asp.net评分系统看了说明还是不会
余家河怎么去啊,有知道地址的么
1把办公椅能挣多少钱?
和一女孩相处一段时间后,她说我们不合适,我
各位高手:在excel表格里,存了很多人的个人
什么叫排骨葬
推荐资讯
OpenAL-v2.0.3.下载以后不能安装
快乐购,卖的护肤品是正品吗?能信吗?
“仁者”“礼者”中的“者”都是“……的人”
水准管内壁圆弧半径越大,分划值越小,其灵敏
中国移动双色球中几等奖才能兑现金
”陈烁”韩语怎么写?
笔记本电脑装显卡驱动后电脑黑屏求助,电脑为
玉溪到楚雄的直达车有么?谢谢了,大神帮忙啊
大伟筋饼骨头王地址在哪,我要去那里办事
睡宝家具商城怎么去啊,有知道地址的么
四川广播电视大学直属学院锦华教学点地址在哪
空调用的风门执行器的扭力(Nm)如何计算选型?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?