我在学习C++之前学习了C,学习C是因为选修时觉得它比较神奇,当时以为学会了C就能纵横计算机领域。

  之后听说C++更厉害。并且大多数我这样的男生都喜欢玩游戏,C++又是能编写大型游戏逻辑的语言。于是幻想着我想象中的游戏,学着C++,一本《C++ primer》拿起来就看,几个月就看完了。我是2015年7月开始学习的,同年11月学完。当时自己手写过的代码全部加起来不足5000行,我看书时看懂了原理,记了笔记,代码就不怎么想自己敲出来试试了。毕竟原理知道了。C语法学完了,C++语法也学完了。怎么我还是不会编写游戏?额,怎么编都是一个黑窗口程序,当时玩一个手机小游戏叫2048,感觉自己能实现,就用C++写了一个,特别low,就一个[4][4]的数组,连输入都是按下w,再按下enter,意思就是"上"。

  学了这么久,我怎么能放弃呢。于是我又听说了C++的图形库:MFC,买了本《深入浅出MFC》。这一次,和看C++时感觉就不一样了。这次的感觉是:完全摸不着头脑,什么乱七八糟的,看一会儿就没心情了。之后看不下去了,我深深怀疑了我自己,又仔细想想,“我怎么可能这么傻?肯定是哪里出问题了!!!”于是我又发现了一个问题:其实C语言也有自己的图形库,C++的图形库MFC便是把C的图形库封装了一遍后的产物,变得让人方便使用了,方便是方便了,可是他的内部实现是很复杂的。于是我从底层开始,又回到了C的图形库。

  什么是图形库呢?在Windows操作系统中,你眼睛直接看到的窗口,就是靠图形库产生出来的吧,库就是很多函数的集合——函数仓库的意思。调用几个函数,出一个窗口。这就是Windows操作系统提供的函数接口,Windows 操作系统与硬件打交道,程序与操作系统打交道,就这么简单。而且,windows提供的函数不止有图形函数库,还有很多很多,比如说操作系统进程的,作业管理的,内存管理的,设备管理的,用户管理的,乱七八糟的。又扯远了。学了很多函数接口(API)之后,好枯燥好无聊啊,这还用讲吗?8万多的Windows API函数,难道要一个一个去学一遍?哎,直接给我一本手册不就行了,我用到时看手册不就行了,真是的,不学这个了。

  现在感觉Windows 操作系统我应该弄明白,我又随便买了本讲操作系统的书来看,同时MFC也能看懂了一部分了,要是细心的话,我肯定能全部看懂一遍了。操作系统那本书讲的好广,操作系统(OS)并不是讲Windows的,Windows只是个个人电脑用的比较多的操作系统,还有unix,linux,苹果,安卓等各种各样的操作系统。甚至现在把各种简易的操作系统嵌入到工厂生产机床上,家具上。哎,我原本只是想学C++做电脑游戏的啊。这个时候我的学习计划完全乱了,有种不知道学什么的感觉了,只能每天看看API,看看MFC,看看操作系统的知识。兴趣并没有最初那么浓了。我在想看完这些之后看点游戏引擎去试试,游戏引擎其实就是一个关于游戏开发的函数集合,没错,就是一个函数库,有cocos2d和Unity3d之类的网上有源代码的,学的人比较多,写一些小游戏也很容易出师。

  前几天有一个学姐推荐了一篇博客给我,是关于学习C++后面试工作的心得。看了之后我决定以后就按照那条路线学下去了。那个作者把学习C++分成了5个模块,分别是C++,Linux,OS(操作系统),数据结构与算法,网络。我思考了以后觉得挺靠谱的。这个学习套路直接面向互联网公司的服务器开发,以后毕业了至少学的东西能换来金钱的回报。至于以前想开发游戏,游戏有大型的和小游戏两种,大型游戏是很多人合作完成,做什么样的游戏是产品经理说的算,C++工程师在团队中也只有写逻辑代码的份,并不是想做什么做什么的;而小游戏能一个人或者几个人完成,这就当成我的兴趣爱好吧,我以后闲着的时候可以慢慢研究,写一些小游戏自娱自乐一下。况且我了解了游戏引擎之后,有一种感觉,感觉写游戏的人并不厉害,厉害的是写游戏引擎的人。

  学了C++以后,发现并不是原先想的那么容易,路比想象中的要长,学了这么久,我只能说我入了这一行,至于学习的东西,还有很多未知的等着我去发现吧。但是我并没有为此而放弃,毕竟兴趣所在嘛,虽然有时很枯燥,有时又很迷茫。但是学了这么久了,放弃了的话真的好亏的说。而且我现在找到了新的方向,就是专攻Linux服务器网络编程,这个能给公司带来很大的经济效应,学有所用嘛。

  其实我学的时间也不算长,从接触C到现在也就一年半。但是我发现,不管学什么,一定要让自己处在学习的路上,一定要自信自己能行,这才会有所成。

没接触C++之前与学习了C++之后的思想转变的更多相关文章

  1. 网络学习day01_计算机网络与分层思想

    2018.9.1 网络学习day01_计算机网络与分层思想 网络安全 计算机网络 分层思想    LAN与WAN   LAN(Local Area Network)--局域网   局域网(Local ...

  2. 转:浅谈深度学习(Deep Learning)的基本思想和方法

    浅谈深度学习(Deep Learning)的基本思想和方法  参考:http://blog.csdn.net/xianlingmao/article/details/8478562 深度学习(Deep ...

  3. 我和Python的第一次亲密接触 - 零基础入门学习Python001

    我和Python的第一次亲密接触 让编程改变世界 Change the world by program 小甲鱼经常说,学习一门编程语言就是要深入其中,要把编程语言想象为你的女朋友你的情人,这样你学习 ...

  4. 全景智慧城市常诚——没接触过VR全景的你就是目前VR最大的新闻

    据调查,自2015年开始,VR(虚拟现实)技术在传媒行业中的应用呈现井喷式增长,各大国际主流媒体纷纷在新闻报道中使用VR技术.国内运用VR报道新闻最早在2015年12月,财新网利用VR技术对深圳山体垮 ...

  5. 从0开始接触html--第一天学习内容总结

    第一天 总结: h1-h6 p 段落 hr br 有序 ol li 无序 ul li 定义列表 dl dt dd 块级元素:独占一行,h1-h6 p hr div 行内元素:共占一行, em和i st ...

  6. spring中@Param和mybatis中@Param使用区别(暂时还没接触)

    1.spring中@Param(org.springframework.data.repository.query.Param) int selectRoleCount(@Param("bu ...

  7. [没接触过kubevirt?]15分钟快速入门kubevirt

    @ 目录 本文介绍 前言 环境准备 详细版 搭建步骤 安装KubeVirt 安装virtctl客户端工具 创建VirtualMachine 启动VirtualMachineInstance 启动和停止 ...

  8. Hibernate学习1--对象持久化的思想

    前些天开始接触hibernate,想想以前直接用c3p0进行笨拙而繁杂的数据库操作就觉得生无可恋了,也正因如此,在刚刚接触hibernate的我,便强烈地喜欢上这种偷懒而优雅的面向对象式操作数据库的方 ...

  9. 深度学习笔记之关于基本思想、浅层学习、Neural Network和训练过程(三)

    不多说,直接上干货! 五.Deep Learning的基本思想 假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =>S1=>S2=>….. ...

随机推荐

  1. sqlalchemy 优化count()……

    一.sqlalchemy 中的count() count()统计数据特别慢: session.query(cls).count()  8W 数据花费了近50s 但是在数据库中直接查询: select ...

  2. Page Visibility API(页面可见性)

    页面可见性: 就是对于用户来说,页面是显示还是隐藏, 所谓显示的页面,就是我们正在看的页面:隐藏的页面,就是我们没有看的页面. 因为,我们一次可以打开好多标签页面来回切换着,始终只有一个页面在我们眼前 ...

  3. DEELX 正则表达式引擎(v1.2)

    DEELX 正则表达式引擎(v1.2) 简介见文末. 选择使用deelx的理由:全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便. 利用分组从字符串当中提取出化学元素英文名.比如 Ag, ...

  4. unittest框架介绍

    1.test fixture(测试框架) 测试准备前要做的工作和测试执行完成后要做的工作,例如测试前需要把数据初始化,测试完成后需要把测试环境中需要关的东西都关掉.主要包括setUp()和tearDo ...

  5. /proc/stat文件详解(翻译)

    原文地址:http://www.linuxhowtos.org/System/procstat.htm 各种关于系统内核的活动信息都可以在/proc/stat文件中找到,该文件记录了自系统第一次启动以 ...

  6. javascript 技巧

    1.将arguments转化为数组函数中的预定义变量arguments并非一个真正的数组,而是一个类似数组的对象. 它具有length属性,但是没有slice, push, sort等函数,那么如何使 ...

  7. roscpp

    不服气不行,写ROS这伙就是比我知道的库函数多 inti函数:初始化节点是简单读些命令行参数和环境配置来配置节点名呀,命名空间呀和命名重映射之类东西. 其是在roscpp里面解释很清楚了,只是,我当时 ...

  8. 介绍开源的.net通信框架NetworkComms框架之八 UDP通信

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  9. PHP EMS: 开源 在线考试系统安装

    PHPEMS: 在线考试系统调测记录 下载安装软件包 PE2014.RAR 环境要求:利用了RHEL 5.X的一个环境,系统要求的运行环境是PHP 5.2以上,MYSQL 5.0以上.看了一下光盘,发 ...

  10. Java中final的作用

    Java中Final可以被用于变量,方法,类.具体来说: 1, Final 变量 修饰主类型时,制定变量为常数,不希望被改变 修饰类类型时,表示变量的句柄不变,不能被指定指向新的变量 修饰参数时,参数 ...