小伙伴们,大家好。

关于C语言和C++的学习路线终于梳理完了。

这块的东西很多很杂,不过梳理和总结之后,回过头来看,其实学习思路、学习路线应该还是比较清晰的。由于个人认知有限,不足的地方也欢迎大家评论里补充。

先聊几个有趣的问题

这几个问题都是私信里常被问到的,也是我当时学习过程中的一些疑惑。

问: 为啥我学完了C语言或者C++,却还是啥东西也做不出来?

答: 编程语言学完了就能做出东西那也真是天才哇!应该说语言学得就算再精通,它其实也只代表完成了“最小的”那一部分,和实际上手干活之间还是有一个非常大的鸿沟,这个鸿沟就表现为下文即将详述的 编程基础四大件 + 应用实践编程

问: 为什么C/C++写出来的东西都是运行于黑乎乎的命令行?这玩意真有用吗?

答: 嘿嘿,谁说黑乎乎的命令行里运行的程序就没有用!咱大名鼎鼎的Linux系统都以命令行跟用户交互呢,而且Linux里面很多强大的工具都是运行于黑乎乎的命令行!

问: 从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?

答: C/C++,它和Java确实不太一样。C语言和C++,尤其C++,语言粒度细、机制多,性能虽然高,但语言本身的包袱也确实重,我们更愿意称它“造轮子”的语言!也正是因为C语言和C++性能好、粒度细,所以什么都能做。而Java本身就是一种服务于互联网软件开发(后端开发+客户端开发)的语言,它有一个明显的“生态圈”的概念,所以应用领域非常清晰。我个人觉得C语言和C++编程比Java还是要难一些,Java毕竟是纯应用层的,C语言和C++则对程序员能力的要求要更高一些。

岗位分析

了解一下岗位,知道以后能做什么,这个也有利于自己树立学习目标。

C语言和C++属于“造轮子”语言,几乎什么都能做。不过一般来说,C语言和C++主要还是做后台(服务端)开发比较多,包括:

  • 通信公司后台开发
  • 互联网公司后台开发
  • 游戏公司后台开发
  • ……

当然这个后台开发具体职责又有很多细分,比如:

  • 有做数据处理和分析的
  • 有做基础协议和通信的
  • 有做服务端底层应用优化的
  • 甚至还有做后台系统驱动和内核的
  • ……

不管怎样,下面即将要介绍的这些学习路线和内容适用于以上所有情况。

语言本身的学习

C语言:

  • 除了最最基础的语法:变量、条件、循环、字符串、数组、函数、结构体等之外
  • C语言最最最最最重要的那就是:指针、内存管理,以后企业里开发就靠它俩吃饭,这也是检验C语言掌握情况的两大标准

推荐书籍:《C Primer Plus》、《C和指针》、《C专家编程》

C++:

  • C++和C语言确实是不同的语言,但是C++确实是对C语言的延伸,可以理解为在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的复用扩展工程化,这是大型项目的必备要素
  • 除了C语言所有的底子之外,还需要学习C++的面向对象(封装、继承与多态)特性、泛型、模板、STL等等

推荐书籍(有先后顺序):《C++ Primer》、《Effective C++》、《C++ 标准程序库》、《STL源码剖析》《深度探索C++对象模型》

最后一个小建议是:语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,高强度给它压下来,否则容易把自己拖泄气。

编程基础“四大件”

基础四大件包括:数据结构和算法计算机网络操作系统设计模式

这跟学什么编程语言、后续从事什么编程方向均无关,只要做编程开发,这四个计算机基础就无法避开。可以这么说,这基础四大件真的比编程语言重要!!!

1、数据结构和算法

可以说这个直接决定了面试的成败!几种基础数据结构类型得烂熟于心,比如:字符串、链表、二叉树、堆、栈、队列、哈希等;基本的几大算法也要了如指掌,比如查找、排序、动态规划、分治等等。

建议LeetCode多刷题啊啊啊啊啊!

参考资料: 《大话数据结构》、《算法》、《剑指offer》《LeetCode刷题》

2、计算机网络

此处的计算机网络指的就是TCP/IP协议栈,可以说它是当下互联网通信的基石,无论如何一定要对TCP/IP的协议栈了如指掌,主要就是学习和掌握原理,包括:ARP协议、IP协议、ICMP协议、TCP和UDP协议、DNS协议、HTTP协议、HTTPS协议

推荐书籍: 《TCP/IP详解》

3、操作系统

该部分重点包括:进程和线程的相关原理(原子性、并发、锁)、内存相关原理(内存分布、内存调度)

推荐书籍:《深入理解计算机系统》

4、设计模式

倒不需要23种设计模式全部记住,常见的几个如:单例模式、工厂模式、代理模式、策略模式、模板方法模式建议熟练于心。

推荐书籍:《大话设计模式》、《设计模式之禅》

应用实践编程

这部分会涉及到一些工具、编程环境、和具体编程实践,应该说这一部分学完,自己应该能做点东西出来、或者说能看懂一些实际项目的代码。

实践这部分,我也是结合我之前在通信公司的实际工作经历和所听所见,来聊一聊。

1、Linux操作系统的使用

很多人初学C语言、C++(包括我)都是在Windows环境上进行的,而实际企业级开发几乎不可能,所以Linux系统必须要会,我们别无选择。先谈使用。

包括:常见的Linux操作命令基本的Shell编程

推荐书籍:《鸟哥的Linux私房菜》

2、编译/调试工具

首先是跟编译相关的:编译工具!

我们知道很多人学C语言、C++都在类似Visual Studio这种集成IDE里进行代码编译,这个其实也用了编译器,只不过是微软自家的MS编译器,而且所有操作均可视化。而企业里开发很少会基于Windows系统,所以Linux平台上的编译器更为重要,最典型的当属 GCC,甚至有些公司有自己定制过的交叉编译工具,但没关系,只要 GCC熟悉,其他问题都不大。

其次,大家自学C语言、C++,都借助类似VS这种IDE,点按钮即可对源文件编译。而企业里实际项目的编译动作叫 make,编译的实际动作和过程都是写在 makefile文件里,所以makefile的书写规则建议学习!

最后说到调试工具,Linux平台上的 GDB调试工具要熟练使用,会借助于它进行调试。

推荐资料: 这部分没有书可推荐,英文好的同学可以直接看 GNU官网关于 GCCGDB的文档,中文材料可以看:《debuging with gdb》(中文版)和陈皓先生的《跟我一起写makefile》

3、Linux环境编程

还是那句话,企业里C语言和C++几乎都是基于Linux平台的,这一部分我们没办法避开

(1)Linux系统编程

众所周知,Windows系统编程里有各种各样的Windows API,同理Linux系统API的使用就更加重要。

(2)多线程编程

此处指的是多线程编程实践相关的东西,一般包括:线程、资源、信号、同步、互斥、锁等等一些具体的编程方法。

(3)网络编程

此处的网络编程主要指的是具体Linux系统上的网络编程 APIIO函数的编程实践。

推荐书籍:这三部分综合在一起,推荐必看书籍包括《Unix环境高级编程》、《Linux高性能服务器编程》、《POSIX多线程程序设计》

文中提到的书籍我已经帮大家整理好了!

回复:学习路线 获取。后续更多精彩内容!!!!!

谢谢大家的支持。

后续更多精彩内容!!!!!

谢谢大家的支持。

http://weixin.qq.com/r/NEzQyI3EwdC_rcmr9xkm (二维码自动识别)

c语言多线程_马云都称赞的C语言、C++学习路线!!!!相关推荐

  1. cpu模拟器c语言实现_你写出来的C语言是这样调用硬件的!

    大家都知道我们可以使用C语言写一段程序来控制硬件工作,但你知道其工作原理吗? 网友北极 C语言在实际运行中,都是以汇编指令的方式运行的,由编译器把C语言编译成汇编指令,CPU直接执行汇编指令.所以这个 ...

  2. 谭浩强c语言入门_计算机学生为什么学不会C语言?看到这4点原因,学生表示太真实...

    C语言是理工科(特别是计算机专业)的必修课之一,是计算机应用的基本技能,本来是一门简单的课程,在程序员眼里算是"体力活",不需要太多智力.但是,看似这样一门简单课程,计算机专业学生 ...

  3. java和易语言对比_国外流行排行榜编程语言和易语言相比较的优势和劣势

    国外流行排行榜编程语言和易语言相比较的优势和劣势 适合对象:对于初学者或者没有接触过编程语言的朋友有巨大参考价值. 比较特点:以C语言和Java两门最流行也是最经典的外国编程语言来和易语言相比较, 比 ...

  4. 第七章 C语言函数_什么是函数?C语言函数的概念

    函数就是一段封装好的,可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码. 函数可以提前保存起来,并给它起一个独一无二的名字,只要知道它的名字就能使用这段代码.函数还可以接收数据 ...

  5. 网络工程师都学什么?网络工程师学习路线内容

    大家在备考软考的时候肯定想着选择那些科目报名比较好,比较有发展前途,这里给大家整理了网络工程师的学习路线以及学习内容,仅供大家参考. 网络工程师是从事计算机信息系统的设计.建设.运行和维护工作,掌握网 ...

  6. vhdl语言入门_从当初汇编、C语言入手,到如今FPGA开发已然十年,总结出“三多”!...

    从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表.抢答器.密码锁等实验时那个兴奋劲.当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus ...

  7. c语言多线程的建立视频,如何用C语言实现多线程

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Windows操作系统,C语言实现多线程: #include #include DWORD APIENTRY ThreadOne ( LPVOID thr ...

  8. 判断魔方阵c语言程序设计_魔方阵算法及C语言实现

    1 魔方阵概念 2填充的,每一行.每一列.对角线之和均相等的方阵,阶数n = 3,4,5-.魔方阵也称为幻方阵. 例如三阶魔方阵为: 魔方阵有什么的规律呢? 魔方阵分为奇幻方和偶幻方.而偶幻方又分为是 ...

  9. 最简单的python语言程序设计_编程中最简单的语言Python,这样学或许更容易

    最近微信小程序上面出了一个跳一跳的小游戏 大家有没有玩呀? 编程中最简单的语言Python,这样学或许更容易 分享之前我还是要推荐下我自己建的Python开发学习群:628979297,群里都是学Py ...

最新文章

  1. 实现计算机界“大满贯”,芮勇博士再获技术成就大奖
  2. XPsp3键盘设备链/栈信息_02_VMware
  3. Android wear
  4. python策略模式_设计模式(python实现):策略模式
  5. 如何让API回调你的VC类成员函数而不是静态函数
  6. java批量删除接口怎么定义_教你在Java接口中定义方法
  7. mysql实例化_MySQL如何通过实例化对象参数查询数据 ?(源代码)
  8. 电子政务项目风险管理(上)
  9. jQuery版三级联动案例
  10. 微信和QQ,终于可以互通了!
  11. 内点法介绍(Interior Point Method)
  12. Linux查看硬盘挂载
  13. python PNG图片显示
  14. 带你玩转 3D 检测和分割 (二):核心组件分析之坐标系和 Box
  15. Image Signal Processor
  16. word使用技巧大全
  17. 搭建在线LaTeX编辑器Overleaf
  18. c++ 海战棋_GitHub - yifeitao/SimpleProgrammingProblems: 简单编程问题集中译版
  19. 9月25日科技资讯|小米推出售价 19999 元的 MIX Alpha;高通已向华为重启供货;.NET Core 3.0 发布
  20. Logstash:如何处理 Logstash pipeline 错误信息

热门文章

  1. 运用Axure6.5快速完成微信交互效果的简单办法
  2. AgileEAS.NET 4.0重构裁剪,新的ORM、支持Linq,正式支持WPF,开放更多的接口
  3. 容器编排技术 -- Kubernetes Service
  4. Mac系统上安装Composer
  5. python读取html文件中的表格数据_使用解析html表pd.read_html文件其中单元格本身包含完整表...
  6. leetcode 最长回文子串
  7. Java 时间处理整理
  8. JavaScript性能优化【中】-- Performance 工具
  9. CSS和JS两种颜色渐变文字效果代码
  10. flask处理http request的时候是多线程还是多进程?