很好很好的 给c++初学者的一些学习路线的建议 ,有点相见恨晚的感觉

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
分享如何学好C++的一点想法及给初学者的建议
   江涛 jiangtao [at] tao-studio.net
摘要
    根据社区中一些言论的思索,发现一些问题,产生一些想法。并将这些想法分享给C++
    初学者。

关键词:
    C++ 学习方法 分享 误区

0.引言
    本文适用于C++初学者。
   “妈呀,咋又跑偏了哩!”[小沈阳]
    如果您还是作为C++的初学者或者是“学过几年C++”却不得要领,您是否知道,您也存
在跑偏了的可能呢?   根据student.csdn.net社区中的一些言论,指出C++初学者陷入
的误区,并试图分享一些如何学好C++的一些想法。

   本文特别以论文的形式出现,但这仅是形式上,本文缺少论文存在的一些先决条件,可划
分为杂文类中。
  

1. 社区中的一些言论 
   [作者注:尊重同学的隐私,引文略!]

   根据以上贴子的摘录,我把社区人口分为以下几类
   
   0-1. 隐身高手
   0-2. 不知道在说什么,无法分类的
   0-3. 老师,辅导员
   0-4. 快乐的C++爱好者

   1-1. 不快乐的C++爱好者及伪快乐者
   1-1-1. 为学业而挣扎的同学
   1-1-2. 不知道如何入门的同学
   1-2-3. 不知道如何时提高的同学
   1-2-4. 陷入学习误区而挣扎的同学
   1-2-5. "乐于"陷入学习误区的同学
   
   本文主要是写给后一大类的人。
2. 分享一些我学习C++(编程技术)的想法
   先分享一些通用的包括但不限于C++的,再分享一些仅与C++相关的。
   1) 培养兴趣
   爱因斯坦说“兴趣是最好的老师”。有些人是天生会对某一事物产生兴趣(一见钟情),有
些是后天慢慢好感并产生兴趣(先结婚后恋爱,像老一代人),有些是则是指腹为婚,但却
也终生幸福的人。
   但是,如果您是对C++(或编程技术)实在没有兴趣,当初报考专业也是家长老师逼迫的。那我
强烈建议  该转学转学,该退学退学,该改行改行,及早选择自己的新生活吧。
     
  2) 打好基础(尤其是在校的同学)
   学好一门课需要重视它的先导学科。学习有捷径,那就是先打好基础。张无忌之所以能快速学
习,是因为他已炼成神功了。下面列出一些基础的知识:
   a) 语文
   b) 英语
   c) 基础数学
   d) 离散数学,组合数学
   e) 数据结构及算法
   f) 操作系统
   
   语文,看似很远的课本了,其实,在工作中离我们很近。写报告、作总结、开会发言、说服客
户掏腰包,说服老板涨工资。就连论坛发贴也需要语文功底。
   英语,尽量不要向网友求助:“有没有xxx的中文版”。仔细看几本英文原著,差不多编程的英文
书都能看个大概了。
   

3 如何学C++
  C++是一门期很古老又充满生机的编程言语。如果您想成为真正的编程高手并以技术工程师为职业创
造财富,那选择C++是正确的。如果我们对以上断言达成共识之后,那就请接着向下看。
   下面的内容分为两大部分,分别讲述如何入门和如何提高。
  1) 如何入门
    轻松上阵:学习c++,并不需要特别的先导知识。我认为,只要能理解顺序,条件和重复,
那就能学编程。有论证结论:任何复杂的程序,都是由顺序执行、条件判断和重复执行组成的。
    学C++,不一定非要先学C。
    入门选择正确门口: 
    C++是抽象名词,它不会单独存在。它会与以下名称共同存在:
      a) 程序
      b) 文件
      c) 可执行文件
      d) 代码
      e) 源代码
      f) 编译器
      h) 链接器
      i) 调式器 
      j) 集成开发环境(IDE,即把编译器,链接器,调试器合在一起的东西)
      k) 命令行
    另外,还有一大堆影响初学者其它的名词,如
      VC, gcc, mfc, windows等等。
      
    认为C++入门难,可能是没有理想上述名称的关系,其实也不要紧,了解上述术语也容易。
 下面直接给出入门的方法建议(按顺序)。
 
     建议1: 作好准备,建立好C++的开发环境,选择一个单纯的命令行开发环境。
      较容易得到的有VC开发环境和linux下的gnu开发环境,也可以在windows下用cygwin,这
是一个让不熟悉linux开发环境的初学者也可以在windows下使用像linux一样的开发工具。不建
议直接使用Visual Studio 或eclips这样的集成开发环境。
    
    IDE有很多优点,但是,对于初学者来说,它的缺少也很明显。大而全的集成开发环境会让
初学者面临更多的名称,从而更烦恼。

     建议2: 先学会C++编程的过程,步骤可以列举如下
       a) 理解编程的目标(需求)
       b) 编写 make file文件 
       c) 编写程序
       d) 编译,链接程序
       e) 检查是否有编译、链接错误,如果有错转到c),直到没有错误
       f) 调试程序,检查程序输出结果是否符合预期要求,如果有错,转到c),直到没有错误
      无论是选择vc的编译器,还是linux(cygwin下)用g++编译器,上述过程都能通用。
入门C++编程,可以写编译一个最简单的程序,演练上述过程。

     建议3: 理解C++包括的学习内容
      C++是一个内容并不多的编程语言,可以分为四大块内容
      第一部分: C++基础部分,它包括C++的一些标识符,语句,函数,参数。
      第二部分: C++面向对象部分,它包括用C++设计新的类型,通过面向象的思想来编写
程序。
      第三部分: C++的泛型编程,它包括用C++设计一些模板,通过泛型或元编程的思想来
写程序。
      第四部分: C++的第三方可复用的库。也包括开发人员自己写的库。学习如何使用第三
方或自己写的可复用的库。

     作为初学者,可以先学第一,第二,第四部分。


2) 如何提高C++编程技能
    建议4: 遵守规范和遵循“原则”
        如: 编码规范和编码规范的原则;
             编程规范和编程原则;
             设计规范和设计原则。
     举例来说,前阵子有网友探讨编码规范和样式,这是一个很好的现象。但遗憾的是没
给出编码规范的原则。我这里简单的引述一个较好的原则(注:原则也会不停的进化的)。
     a) 简单原则,清晰易读。
     b) 最小混淆原则,代码样式一致
     c) 最小干扰原则,修改方便。
如果编码规范中的要求满足以上原则,那就是好的规范。(注:匈牙利样式的风格与原则冲
突较大,所以它仅存于MFC中)
    再举个编程原则:比如,设计函数尽量是唯一的返回点;  函数尽量完成一个仅一个
完整的功能等。
    设计原则:开闭原则,替换原则,依赖倒转原则等等。
    
    建议5: 识别优秀的代码和发臭的代码
    优秀的代码长什么样呢?我认为有下面的特性,以优先顺序列序
    a) 易读易懂的
    b) 正确且高效的
    c) 易复用的
    d) 易移植的
    稍作说明:代码主要还是用来被阅读的,其实是写代码和让机器执行,如果代码很难
读懂,它的价值就会打折扣;第二点不必说明,错误的代码什么价值也谈不上;易复用和
易移植是体现代码价值很重要的指标了。
    发臭的代码又长什么样呢?这个可以参考“重构”相关的知识,也可以留作大家讨论。
    
    建议6: 重视代码的价值--复用层次
    代码的复用度越高,它的价值就越大,代码作者就更应该获得更多财富和尊敬。代
码复用的层次既是软件工程发展的过程,也是学习者学习的路线。
    那代码复用有哪些层次呢?下面是我的规纳
    第一层次:代码级复用:也就是最低层次代码复用,是源代码级的拷贝粘贴。初学者
也不学就会的技术;
    第二层次:函数级复用:子函数的出现,人们可以通过函数来复用代码,并发展成为
    库函数。像c语言中的 printf(),scanf()这样的函数就放在库中,可以被开发人员链
接到自己的程序中。有时候初学者还以为这些函数是C语言中的一部分呢。
    第三层次:类库级复用:面向对象的思想曾经是被人们寄予了厚望,希望它能帮助人们
脱离软件工程危机(软件工程的危机中的程序员被比喻成陷入焦泥潭的猛兽,越挣扎陷是越
深)。大家熟悉的基础部分的MFC,boost都可以算作是基于类库的复用。我们也可以把COM,
模板算到这一层次。
    第四层次:基于模式的复用:一个伟大的建筑工程师给软件开发人员提供了灵感,发现
 建软件和修房子一样,离不开那些相同或相似的套路。于是,为了复用以前的成功案例,总
 结出一些模式。模式还和面向对象技术结合起来了,专门研究具体的问题可以分到什么类别中,
 并直接给出对象模型。设计模式已经应用了十多年了,可惜很多初学者还不重视它。
    
   第五层次:基于模式的框架复用: 理想中的面向对象是想把对象当作可复用的库像积木一
样生成, 这样开发软件就像搭积木一样快乐。但是,很快就发现,让积木结合的胶水比积木
还更难控制,程序员要写大量的胶水代码,并且反复的重写。解决这个问题就是应用框架。
框架的成功示例很多了。像ACE,MFC就是成功的框架。

   第六层次:中间件级的复用: 不同的应用领域以及不同的基础环境,却有着相同或相似的
中间层,图形表示就是一个两头大中间小的沙漏形。中间件就是研究“沙漏”腰。中间件是一个
很迷人的领域。

  第七层次:面向服务的复用?基于模型的程序自动生成?认识会不断的提高,我想很快会有
更迷人的领域。

   建议7: 重视C++的应用
   C++不是孤离的,如果离开应用学C++会容易走偏。建议学习了C++基础之后,多学习以下内容
(可选,排名不会先后)
   a) 操作系统(linux,windows),熟悉多线程,linux的体系,windows的内核对象
   b) 数据库
   c) 图形
   d) 网络
   e) 你的专业和兴趣的其它领域
   
   建议8: 重视C++相关的工具
   a) 调试器
   b) 测试工具或框架,如cppunit
   
   建议9: 重视团队
   个人英雄时代过了,现在的项目离不开不同角色的开发人员协同工作。让专业的人做专业的事,
所以,选择一个自己感兴趣的点,深入研究,做到最好。
   
   建议10: 多读别人的代码并自我积累
   不必说为什么。
   
 4. 结束语
   本文的观点不求全部被认同,欢迎来邮件与我交流心得,共同学习提高。
C++ 学习路线推荐 相信有很大一部分计算机的童鞋都是靠自,即使本身是计算机专业的同,也会觉得仅仅通过课堂上的习是远远不够的,而且在上课时所用到的教材也不够好。然而自的时候有个很大的问题就是找不到合适的方向和学习路线,我在刚开始的时候也吃过这样的亏,总是纠结于语言的习,觉得编程就是很多语言。然而单纯习语言并不能解决问题,我们需要习的是一个完整的体系,而编程语言只不过是其中一个解决问题的工具而已。后来我 阅读详情

相关推荐

小白 C++ 入门并发疯学习路线(书单)

真人就是我自己,这是我的 C++ 习之总结。 具体总结前,想先回答一个问题——要不要先C,再C++? 我作为小白时疑惑过这个问题,在此给后来的小白和当年的自己一个答案。 个人看法是,C++,就直接C++,不用先C。在微软维护STL的Stephen Thomas Lavavej都说他当年C++之前C语言浪费了大量的时间,早知道就直接从C++开始。 因此,我这篇文章基本不提C的...

振之的博客 3万+

编程软件C++

VC++6.0绿色版亲测实用,若电脑为win10系统,则需自行安装MSDEV.EXE文件,将压缩包内文件替换掉即可。

Linux C/C++ 服务器/后端开发/后台开发学习路线

这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」。 这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其它人写得不一样, 也定下了一个目标,这篇文章,不能是简单的堆砌习资源和书单推荐,更要细化如何有效的去执行落地。 争取做到让看到的同有一种相见恨晚感觉哈哈哈。 所以大家可以试着看一下,帮我检查下有没有达到预想的效果哈哈,希望不要被打脸???? 那就正式开始吧。 这篇文章会有点长有点干,可以先去冲杯咖啡,收藏关注一波慢慢看~ 正文 | 干货 |收藏【文末附上学习路线

Linuxhus的博客 5998

分享如何C++的一点想法及给初学者建议

TAO工作室Stone Jiang的专栏 2万+

GOC初级编程----C++启蒙

这个函数是有两个的,一个是showXY,一个是_showXY,不过前者用的是模式(可选0-4)和颜色,而后者就麻烦了,要指定长度、尺寸、颜色、样式和一个叫做shownum的东西…没错,所以,不用说了吧?rt是右转,lt是左转,另外,fd可以用+来代替,bk可以用-来代替,rt可以用^代替,但lt不能用符号代替。up是抬笔,而down是落笔,想要画两个不交接的图形时就可以用这两个函数,另外,GoC默认是落笔的。o是画空心圆的,其唯一的参数为半径,e则是画空心椭圆,参数为宽和高,r则是空心矩形,参数为宽和高。

墨宸的博客 2512

GoC语言习(C/C++程序设计语言入门)

GoC语言习 GoC语言是江涛老师独创的,基于c++语言和go语言的一种编程语言, GoC的意思就是向C/C++编程。通过简单有趣的编程绘图,习C/C++的入门编程。 新版webGoC是在线版,不需要安装,地址是:http://www.51goc.com/rumentCourse/index 特别提醒,webGoC直接编译运行,没有使用devcpp,仅支持少量c++语言。 离线安装版,百度网盘下载地址:https://pan.baidu.com/s/176-kl6L9MCEBx..

cnds123的专栏 4万+

c++习之:从入门到精通

一、配置环境:clion 二、【C++习】如何在Clion中生成多个可执行文件

IT届的小学生 1304

C++』我想C++C++太难了,那我想入门,给我10分钟我带你入门

从第一个CPP开始写起: "hello,world" #include<iostream> using namespace std;//使用所有命名空间 int main() { cout<<"Hello World"<<endl; return 0; } c++的具体结构 简单来说,一个C++程序就是由若干头文件和函数组成。 #include <iostream> 就是一条预处理命令, 它的作用是通知C++编译系统在对C++程序进行正式

日拱一卒,功不唐捐 7294

C++学习路线以及未来就业趋势

C++到现在已经有四个年头了,但是从来没有很深入习,有人说C++是面向对象的编程语言,但是我在这里想说的是,C++是一个多泛型的编程语言,它既可以面向过程,比如我们完全可以用C++写C的代码,这是没问题的,它也是一个面向对象的语言,它具有面向对象的特征,可以模拟现实世界中的各种事物;它也是一个泛型编程语言,里面包含大量的模板特性,比如C++的标准库STL就是基于模板的一个库,C++语言的难...

u011555996的博客 1865

后端 C++ 学习路线(转载总结)

后端工程师软件基础自线(转载总结)建议学习路线1. C++基础数据结构与算法数据结构算法刷题(一直持续到找工作)操作系统操作系统&编译原理Linux内核 建议 对于技术岗,软件基础知识可以说是个人的硬实力,是你能通过面试的一个大前提。如果当初还是小白的时候,就能确定一个比较合理的学习路线,对知识由浅入深的进行习,习的过程肯定会顺利一些,效率自然也会更高。 首先,对于软件基础知识的习,建议尽可能地去看一些经典的书籍,看第一遍的时候可以不用太过细致,快速地看,重在了解这本书的知识框架,

Nekoraa的博客 1万+

妹熬夜的一份零基础 C++ 开发学习路线

大家好,我是帅地。 之前写过几篇学习路线的文章 前端开发学习路线 Java 后端开发学习路线 一般开发岗主流的就是 Java 后台开发,前端开发以及 C++ 后台开发,现在 Go 开发也是越来越多了,今天把 C++ 后台开发学习路线补上。 写之前先来回答几个问题 1、C++ 后台开发有哪些岗位? C++ 后台开发的岗位还是很多的,例如游戏引擎开发,游戏服务端开发,音视频服务端/客户端开发,数据库内核开发等等,而且 C++ 也能用来写深度习,做硬件底层这些。 总之,C++ 后台开发的岗位,还是很丰富的,大家

帅地 1万+

万字长文 | 保姆级的后台服务器开发C++学习路线

这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」。这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其它人写得不一样, 也定下了一个目标,这篇文章,不能是简单的堆砌习资源和书单推荐,更要细化如何有效的去执行落地。争取做到让看到的同有一种相见恨晚感觉哈哈哈。所以大家可以试着看一下,帮我检查下有没有达到预想的效果哈哈,希望不要被打脸???那就正式开始吧。这篇文章会有点长有点干,可以先去冲杯咖啡,慢慢看~

波风水门 1万+

C++后台开发学习路线

C++后台开发学习路线建议C++基础数据结构与算法数据结构算法刷题操作系统操作通用知识Linux内核计算机网络数据库设计模式 作者:玩铁的搬砖工 链接:https://www.nowcoder.com/discuss/164781?type=2 来源:牛客网 建议 对于技术岗,软件基础知识可以说是个人的硬实力,是你能通过面试的一个大前提。而说到软件基础的习,对于很多还没有基础的同可能会...

qq_38872537的博客 1913

framework学习路线和方法

之前分享过我转framework的经历,可以看这里《我是如何从Android开发转framework开发的》,今天根据自己实际工作感受整理出一份framework的学习路线和方法,仅供参考,如有不足,还望指正。习framework是一件非常枯燥的事情,原因在于相比于app开发的coding,framework更侧重于对源码的reading,但习它能让我们更深入的了解Android系统,增加自身的知识储备,降低自己在行业中的可替代性,延长自己的职业生涯,提高自身身价。

这个人很懒,什么都没留下... 8853

熬夜肝了这一份C++开发详细学习路线

C/C++后台开发相关视频,文档代码资料包,学习路线思维导图免费领取了之后要验证自己得如何,可以来小编的网站看看这些面试题,通过面试题查漏补缺技术视频讲解,总之,关于校招,学习路线,面试题等等,很多我在网站都更新了,包括个人经历,大家迷茫没事做时,可以多打开看看。最后,大家加油,努力两年,争取日后那个好的 offer原文链接:https://juejin.cn/post/6997248187413037070。.....................

Linuxhus的博客 1339

校招| C++ 后台开发学习路线

一直有一些读者来问我要习经验。我也很想写一个学习路线给大家,希望可以帮助到更多的小伙伴少。之前一直没写的原因在于自己觉得自己懂得太少,还没成为一个大佬,还没成为一个精通某个领域的...

编程与实战的博客 2181

个人C++学习路线大公开

摄于2020-12-11 上海环球港 一乐拉面大家好,我是阿秀。前言上篇文章发布后,问我如何C++ 的小伙伴可远比问我如何写简历和刷题的多多了,思虑再三还是先把自己的 C++ 习...

博客 1862

过来人的经验:八年C/C++开发经验学习路线分享,坐上习的快车!

随着互联网及互联网+深入蓬勃的发展,经过40余年的时间洗礼,C/C++俨然已成为一门贵族语言,出色的性能使之成为高级语言中的性能王者。而在今天,它又扮演着什么样重要的角色呢?请往下看: 后端服务器,移动互联网后端,经典Windows界面开发,移动互联网端界面开发,跨平台界面开发,图形分析,系统架构,应用设计,还有现在最为流行的分布架构等一些新的技术领域。 很多人在习的过程中都会感觉...

1837
上一篇: 从IT菜鸟变为“IT骨干开发者”的11个建议
下一篇: cin、cin.get()、cin.getline()、getline()、gets()等函数的用法 基础版
涂涂妹
博客等级 码龄15年 52粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值