学好C/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++的学习裙【  767,865,598  】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

最开始可能不需要学习的太深入,但是基本的数据结构和算法一定要知道。

推荐《数据结构(C语言版)》,在数据结构和算法的学习中,最好不要去关心面向对象方面的技巧,就用C语言来实现,这样能更关注于算法本身的内容。

4. 数据库

学习数据库的基础知识,并且掌握一种数据库使用,推荐使用mysql,而且最好不要用一些封装好的接口,而应该直接用mysql提供的数据库api,可能对数据库了解的会更深入。

5. 并行

cpu主频已经不能遵循摩尔定律了,现在cpu发展的趋势是多核心。无论是多线程,还是多进程,都是为了更好的利用cpu的性能,提供更好的用户体验。这就要求我们如果要写出高效的应用程序,必然要涉及到并行计算。多花些精力在并行计算上吧,一定会有丰富的回报。

6. 网络编程

这里所指的网络编程是指socket编程。现在C++的应用很多都是在做服务器开发,如何开发一个高并发、大吞吐量、高稳定性的服务器就是我们要考虑的了。

7. 设计模式

设计模式不是具体的技术,更多的是如何让代码更容易阅读、更好扩展、更容易使用。

8. 库的使用

C++ 标准库仅仅提供了一些很基本的功能,所以我们经常会引入一些第三方库。最著名的恐怕就是被称为准标准库的boost库,它提供了我们编程中用到的各方面的技术,文本处理、算法、网络、多线程、图像处理等等,几乎无所不包。其它也有一些专著于某一方面的库,比如ACE是网络通信方面的,TinyXML是解析 xml的,OGRE是图形渲染方面的。

9. 操作系统的知识

程序员需要了解的操作系统知识和普通用户是不一样的,一个高手是需要深入了解操作系统的方方面面,而不是停留在使用层面。至于应该了解哪些知识,windows上的去看《windows核心编程》,linux的去看《深入理解linux内核》,应该可以知道自己应该学什么了。

二、项目经验

以上的内容如果都精通了,也算是个比较厉害的程序员了。但是对程序员来说,项目经验更加重要。一个好的项目可以让你把各种技术进行综合运用,并且能学到一些新的知识。比如说做游戏的就需要学习图形方面的知识,做播放器的要学习编解码器方面的知识。

很多程序员会忽略项目的经验,而单纯的谈技术能力,这是错误的。其实这就是理论和实践的关系,技术就是理论知识,做项目就是实践,理论对实践有知道作用,实践能加深我们对理论的深入理解。

小编推荐一个学C语言/C++的学习裙【  767,865,598  】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

三、沟通能力

沟通能力是一个高级程序员要具备的软实力。

我这里想说的沟通能力并不是一般说的能说会道,夸夸其谈,说话天花乱坠。而是建立在技术基础之上的沟通能力。

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

原文地址:https://www.cnblogs.com/xiaochen520/p/11311200.html

时间: 2024-10-11 21:24:48

学好C/C++编程,走遍天下都不怕的相关文章

话说:学好C语言,走遍天下都不怕

学好C语言,走遍天下都不怕 ·为什么要学习C语言,学习C语言的重要性 C语言是现代通用编程语言的鼻祖语言,也是所有操作系统必须支持的语言,在全世界编程社区的排行榜中常年稳居榜首.不学好C语言,其它编程语言难于到精通的程度. 我们不想重复"C语言是编程的基础"."学好C语言,走遍天下都不怕"等等.C作为一门工程实用性极强的语言,提供了对操作系统和内存的精准控制,高性能的运行时环境,源码级的跨平台编译等优点,这才是我们学习C的理由. C语言也是个有趣的东西,对编程的认知

俗话:学好正则表达式,走遍天下都没事!最详细的正则入门教程!

简介 正则表达式(regular expression)是可以匹配文本片段的模式.最简单的正则表达式就是普通字符串,可以匹配其自身.比如,正则表达式 'hello' 可以匹配字符串 'hello'.进群:125240963   即可获取数十套PDF哦! re 模块 在 Python 中,我们可以使用内置的 re 模块来使用正则表达式. 私信小编007即可获取数十套PDF哦! 使用 compile 函数将正则表达式的字符串形式编译为一个 Pattern 对象 通过 Pattern 对象提供的一系列

运维人员如何学好shell脚本编程

核心:练-->想-->再练-->再想! 运维人员如何学好shell脚本编程老男孩linux早期毕业的学生谈如何学好shell编程技巧该生毕业后一年任职一家近千人公司的运维经理.目前就职小米科技1.基本语法,敲n+1遍.为什么不是n遍那,因为n遍是你刚开始为了编程而努力的几天,  1是说你以后要每天都要写写想想,至少是要看看.2.各种基本语法,if多种判断都要会,这样做不是为了什么都要学而是为了看懂别人的  代码. 这个要写一段时间,各种都用.3.解决上边说的问题,各种语法都要学的问题,现

2.JAVA编程思想——一切都是对象

一切都是对象 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040221 尽管以C++为基础,但 Java 是一种更纯粹的面向对象程序设计语言 正式用它设计之前,必须先将自己的思想转入一个面向对象的世界 1      用句柄操纵对象 在 Java 里,任何东西都可看作对象.可采用一种统一的语法,任何地方均可照搬不误.注意,尽管将一切都"看作"对象,但操纵的标识符实际是指向一个对象的"句柄"(

编程, 细心永远都不嫌多(记录java连接数据库的一个错误)

最近在学习Java连接oracle数据库操作, 无意间一个小问题, 浪费了一个下午和半个晚上去找这个错误, 本来可以做更多的事情的, 现将这个错误贴出来, 每次看到, 定将勉励! 1 ........................... 2 3 try { 4 String sql = "insert into t_test (user_id, user_name, password) values (?,?,?)"; 5 pst = conn.prepareStatement(sq

浅谈怎么样学好C语言编程

一.工欲善其事,必先利其器这里介绍几个学习C语言必备的装置和书籍:A)开发环境例如turbo C 2.0,这个曾经占据了DOS时代开发程序的大半个江山.但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便.建议使用Visual C++,这个平台虽然体积大,但是一旦安装好了,用起来很方便.B)一本学习教程现在C语言教材多如牛毛,推荐大家使用<C语言程序设计>第二版.此书很适合初学者,并且内容也很精到.C)利用辅助

java编程思想 一切都是对象

java是一种面向对象程序设计语言,一切都是对象,并且用引用操作对象,如一个电视机就是一个对象,而操作电视机的遥控器就是引用,引用可以单独存在,如遥控器可以单独存在. String s; 这里只是创建一个引用,并不是对象,如果此时向s发送一个信息就是返回一个运行时错误,因此一种安全的做法就是创建引用时就给它初始化, String s="adfa"; String s=new String("adfa"); 两种方式初始化是相同的.  

看了这篇文章,Java编程速度我都惊呆了

熟记于心,打遍天下,(开始装了) 保存 Ctrl+s                    (这个就不用解释了吧!!!!) 注释代码 Ctrl+/ 取消注释 Ctrl+/代码辅助 Alt+/ 快速修复 Ctrl+1 代码格式化 Ctrl+Shift+f 整理导入 Ctrl+Shift+o 切换窗口 Ctrl+f6 <可改为ctrl+tab方便> ctrl+shift+M 导入未引用的包 ctrl+w 关闭单个窗口 F3 跳转到类.变量的声明 F11 运行上次程序 Ctrl + F11 调试上次

结对编程-人和代码都长得好看系列

说实话,看本人队友的代码已有1年之余,也帮忙上刀山下火海不辞劳苦为她找BUG,有时找了n个小时就是因为把i达成了1,==打成了=,然而凭心而论此人代码武功高强,内力深厚,不仅人长得漂亮而且代码风格确实登得大雅之堂,括号该对称就对称,该缩进就缩进,除了注释略微不多让本人略感头疼外,一切都非常...真香. 队友采用C++编写,在dev上跑,说起代码,那是和本人一样好看,比如队友把代码分成几个模块,(在鄙人强烈建议下)将其变成了工程,整个工程由5个文件组成: main.cpp:除了实现的主函数文件 l