【C++养成计划】不聊学习只谈感情(Day1)

前言
以前喜欢在笔记本上做笔记,以至于在学习C++、Python的时候做了满满的一本,但是却很少翻看,甚至在用的时候经常“提笔忘词”。所以我从上个月开始转战博客,希望把自己的笔记整理分享出来,正所谓“技术是开源的,知识是共享的!”
我是在上大二的时候才开始学C++的(相比很多大佬已经很晚了),当时管这门课叫做《面向对象程序设计》,我记得课程结束最后考了97分,算是我大学里学的最好的几门课之一了。当时觉得自己还有点小牛批,但是当我后面参加比赛、接触项目时,才知道什么是打脸。所以后面又陆陆续续的自学了一遍。
这个《C++21天养成计划》我打算分21天写完,每天一章。特别适合新手小白,不用担心没有C语言的基础。虽然C++是从C语言发展而来的,但是C++本身是一个完整的程序设计语言,而且它与C语言的程序设计思想完全不同。我们的学习过程不必严格遵循科学技术的发展进程,只有尽快地掌握最新的理论和技术,才能站在巨人的肩膀上。也有专家认为,C++是可以作为程序设计的入门语言来学习的。那么下面我们就开始进入正题吧!

1.为什么要学C++

选择一门编程是很重要的事情,这取决于你将要的做的事以后从事的方向。就我而言,我觉得主要从两个方面来考虑:外部因素内部因素
首先是外部因素:说白了就是好用,大家都在用,公司接纳度高,好就业。确实,C++目前仍然是使用频率最高的几门编程语言之一。那么我们再深入了解一下,既然会关系到以后的方向,那么C++编程最常用的领域有哪些呢?

  • 游戏开发。现在很多游戏客户端都是基于C++开发的,除了一些网页游戏可能不是,所以如果想从事游戏开发行业学好c++是没错的。
  • 服务器端开发。很多互联网公司的后台服务器程序都是基于C++开发的,而且大部分是linux,unix等类似操作系统。如果你想从事这样的工作,你需要熟悉linux操作系统及其在上面的开发,熟悉数据库开发,精通网络编程。
  • 数字图像处理。我用C++做的第一个项目就是有关图像处理的。对于以后想从事图像处理、模式识别、机器视觉的,那么学习C++也是必不可少的。
  • 虚拟现实仿真。我们常说的VR技术,这个也是发展很快的计算机领域,目前各种数字地球,数字城市,虚拟地理环境什么的,出现了这方面的大量应用。

当然C++的应用领域肯定不止上面这些,但是这也足以说明C++不可替代的地位。如果你有意从事上面的这些领域,那么就开始跟着我一起学习C++吧~
然后就是内部因素:所说的内部因素是从自身出发的,比如兴趣、自己将要做的事需要用到C++、自己的职业需要C++、或者单纯地想提升自己的编程能力。这样都是可以的。
就比如说我,原本是学自动化的,用到C++的地方不多。但是出于兴趣,想提高自己的编程能力,所以大二选择了这门课,而且考的还算不错。后面参加机器人比赛,原本我是做嵌入式单片机开发这一块,用到的基本都是C语言,但是后来考虑到需要增加视觉组,于是我又兼顾机器视觉,在这过程中,我又陆续的把C++回顾了一遍。
所以外部因素和内部因素都是我们选择和学习C++的一个动力。

2.怎样学好C++

我特别喜欢一句话"practice makes perfect",用我们老祖宗的话来说就是熟能生巧。想要学好一门编程技术,没有捷径可走,只有不停地去练。大家耳熟能详的"一万小时定律",也就是这个意思。但是这里不需要你花10000个小时,如果你能坚持认认真真的学完100个小时,我相信你已经入门了。
那么这里我也给大家整理了一些常用的刷题和学习网站:

  1. 力扣。很好的一个刷题练习平台,题量丰富、分类全面、社区活跃。

  2. 牛客网。互联网人都知道的,这个不解释。

  3. C++官方网站。很全面的英文网站。

3.C++简史

C++ 是一种中级编程语言,它最初由 Bjarne Stroustrup 于1979年在贝尔实验室开发。
C++语言是从C语言发展演变而来的一种面向对象的程序设计方法。C++的主要两个特点:一是兼容C,二是支持面向对象的方法。
面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。
由于C++面向对象方法的很多优点,目前它已经成为开发大型软件时所采用的主要方法。而C++是应用最广泛的面向对象的程序设计语言之一。
C++并非一种新语言,但仍被广泛采用,并在不断地改进中。最新的C++标准获得了ISO标准委员会的批准,名为C++17。下表就展示了C++的一个发展过程:
在这里插入图片描述

4.编程环境

这里我给大家推荐我学习时所用的两款软件
(1)Visual Studio Community 2017 (社区版)
这款软件出自微软,是我做工程时常用的一款软件。当然也可以作为C++语言的编译器使用。对于以后想长期从事这方面的开发人员,强烈安利这个软件,而且社区版是免费的,不需要你去破解!记得最好装2017版的,因为之前的版本会不支持C++17新特性。

  1. 下载与安装:Visual Studio Community 2017
  2. 打开Visual Studio Community 2017
  3. 点击文件->新建->项目
  4. 左侧列表选择C++ Visual ->控制台应用->设置项目名为FirstCpp,项目存放地址通过浏览键选择,最后点击确定。
    在这里插入图片描述
  5. 点击已经创建成功的FirstCpp.cpp源文件,输入以下代码,实现第一个C++程序。
    在这里插入图片描述
  6. 点击调试运行或者使用快捷键Ctrl + F5,运行第一个C++程序。

(2)Dev-cpp5.4.0
这款软件是一个轻量版的编译器,对于编程小白来说,相比于Visual Studio Community 2017更友好。缺点就是,可能不支持C++11之后的一些新特性。

  1. 下载与安装:百度云链接, 提取码:4wz0
  2. 打开Dev-cpp
  3. 依次点击File->New->Source File
  4. 输入第一个程序,点击编译与运行,如下图箭头所示:
    在这里插入图片描述
  5. 完成第4步后,会出现下面页面。如图所示,先选择文件存放路径,再设置文件名Firstcpp,最后点击保存。在这里插入图片描述
    运行成功后就会出现下面结果:
    在这里插入图片描述
    下次再点击编译运行时,就会直接运行了,不用再重新保存文件了。

5.写给读者

说好了【C++养成计划】第一天,不聊学习只谈感情(gan huo)的。今天确实没讲学习,只是想带大家对C++有一个简单地认识,从而决定自己是不是真的要学习C++,知识可以后面慢慢分享嘛~。
我一直认为,选择大于努力。所以前面我花了很多篇幅在说为什么要学C++,如果你觉得学习它对你有帮助,或者是你职业规划的必备技能,哪怕是为了应付考试,我举得都可以成为你学习C++的动力。而当我们选择之后,那么就要持之以恒,切勿半途而废。“锲而不舍,金石可镂”的道理大家都懂!
而我自己就吃过这方面的亏! 高考完后,听家里人的意见和怀着毕业就进世界五百强公司的憧憬,就选择我们学校最好的材料专业。但是学了快一年,不是很感兴趣,甚至对未来感到迷茫。于是在大一末选择了转专业,考虑到自己喜欢动手(小时候家里的一些电器经常被我拆了,嘿嘿),所以我选择了被称为“万精油”的自动化专业。于是,整个大二我就在拼命补充掉了的课程和填补自己编程方面的不足。还利用课余时间参加了学校的机器人比赛,获得了不错的成绩,经选拔进了学校的机器人实验室。自从大二暑假开始就开始驻扎实验室了。在准备比赛过程中,做的最多还是嵌入式单片机方面的,因为赛题和自身兴趣还接触过传统的机器视觉。
而我现在主要学习的方向是深度学习和机器视觉。其实这个决定来源于我本科的一次实习经历。那是一次寒假的时候,因为在家无聊,所以投了一家公司,面试的是图像处理岗位。一面的时候,面试官(一个小姐姐),熟练地看完我的简历后,问了一下有关项目的问题。然后就直接抛给我了一道题。给了我一堆图片,里面是各种麻将牌,让我对它进行识别和分类。不仅要逻辑推理,还要代码实现。给了我一天时间,让我第二天拿程序来实测。(哈哈,可能考虑到当时我还是个学生)
回家一顿捣鼓之后,我用C++写了个模板匹配的程序,在家测试还不错,但是精度不高。于是第二天怀着忐忑的心情去测试代码。还是这个小姐姐(后来成为了我的师傅),将我的代码进行了一顿测试,发现还不错,基本功能都能实现,于是就问我原理。然后我也尽可能面面俱到的回答了。当然,最后也是顺利地通过了。
而我后面的实习经历其实就是围绕这个麻将自动分类项目展开的,在刚开始的一周,我一边学习一边尝试各种传统的图像处理方法,但是发现,分类精度仅仅有一点提升,并得不到根本性质上的改变。所以后来,在小姐姐的建议下,开始学习深度学习和机器视觉。于是我又开始恶补深度学习理论和Python的基本语法。经过一个星期学习后,我对深度学习算法有了初步的认识,并用Tensorflow框架搭建了最简单的手写数字分类识别模型。在这个模型的基础之上,我又搭建了一个四层的卷积神经网络,并运用到麻将分类上。仅仅通过几个小时的训练时间,在测试集上就达到了97%的精确度。当时就感叹,深度学习真牛逼,心里暗暗下定决心读研就要学这个方向。
虽然这个实习时间不长,才不到一个月,但是收获满满!最重要的是,让我决定从传统的图像处理转变到深度学习和机器视觉领域。
对于想学习深度学习,而又无从下手的小白,给您推荐我的深度学习专栏:TF2.0深度学习实战(一):分类问题之手写数字识别
说了这么多,其实就是想告诉大家,选择大于努力 。如果有喜欢的方向和事情,那就赶紧去做吧。越早投入,你就越优秀!
最后,感谢大家不厌其烦地看完了。由于我也是写作新手,难免语言表达有不到之处。如果您有什么好的建议,欢迎评论区留言哦~

发布了53 篇原创文章 · 获赞 348 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wjinjie/article/details/105316043