没接触C++之前与学习了C++之后的思想转变
我在学习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++之后的思想转变的更多相关文章
- 网络学习day01_计算机网络与分层思想
2018.9.1 网络学习day01_计算机网络与分层思想 网络安全 计算机网络 分层思想 LAN与WAN LAN(Local Area Network)--局域网 局域网(Local ...
- 转:浅谈深度学习(Deep Learning)的基本思想和方法
浅谈深度学习(Deep Learning)的基本思想和方法 参考:http://blog.csdn.net/xianlingmao/article/details/8478562 深度学习(Deep ...
- 我和Python的第一次亲密接触 - 零基础入门学习Python001
我和Python的第一次亲密接触 让编程改变世界 Change the world by program 小甲鱼经常说,学习一门编程语言就是要深入其中,要把编程语言想象为你的女朋友你的情人,这样你学习 ...
- 全景智慧城市常诚——没接触过VR全景的你就是目前VR最大的新闻
据调查,自2015年开始,VR(虚拟现实)技术在传媒行业中的应用呈现井喷式增长,各大国际主流媒体纷纷在新闻报道中使用VR技术.国内运用VR报道新闻最早在2015年12月,财新网利用VR技术对深圳山体垮 ...
- 从0开始接触html--第一天学习内容总结
第一天 总结: h1-h6 p 段落 hr br 有序 ol li 无序 ul li 定义列表 dl dt dd 块级元素:独占一行,h1-h6 p hr div 行内元素:共占一行, em和i st ...
- spring中@Param和mybatis中@Param使用区别(暂时还没接触)
1.spring中@Param(org.springframework.data.repository.query.Param) int selectRoleCount(@Param("bu ...
- [没接触过kubevirt?]15分钟快速入门kubevirt
@ 目录 本文介绍 前言 环境准备 详细版 搭建步骤 安装KubeVirt 安装virtctl客户端工具 创建VirtualMachine 启动VirtualMachineInstance 启动和停止 ...
- Hibernate学习1--对象持久化的思想
前些天开始接触hibernate,想想以前直接用c3p0进行笨拙而繁杂的数据库操作就觉得生无可恋了,也正因如此,在刚刚接触hibernate的我,便强烈地喜欢上这种偷懒而优雅的面向对象式操作数据库的方 ...
- 深度学习笔记之关于基本思想、浅层学习、Neural Network和训练过程(三)
不多说,直接上干货! 五.Deep Learning的基本思想 假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为: I =>S1=>S2=>….. ...
随机推荐
- 值得学习的C语言开源项目
值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工 ...
- window.location.href 失效的解决办法
第一种:在window.location.href 后面加上 window.event.returnValue = false; 如: <a href="#" onclick ...
- DEELX 正则表达式引擎(v1.2)
DEELX 正则表达式引擎(v1.2) 简介见文末. 选择使用deelx的理由:全部代码位于一个头文件(.h)中, 比任何引擎都使用简单和方便. 利用分组从字符串当中提取出化学元素英文名.比如 Ag, ...
- shopex最新版前台一处想不到的SQL注入漏洞
shopex代码核心的地方都做了加密处理,找漏洞就需要一点想象空间了,比如这个SQL注入… 存在于用户注册(想不到的位置吧?) /core/shop/controller/ctl.passport ...
- 错误信息:System.Resources.MissingManifestResourceException: 未能找到任何适合于指定的区域或非特定区域性的资源。请确保在编译时已将“****.****.Resource.resources”正确嵌入或链接到程序集"****",或者确保所有需要的附属程序集都可加载并已进行了完全签名
在网上搜索了N久都没看到几篇解决的文章,最后在不懈的努力下终于解决了,所以决定写下解决方法方便以后遇到同样问题的朋友: 其实这个错误的主要问题就是没有找到需要的资源文件(该文件为Resources.r ...
- 动态规划(一)——最长公共子序列和最长公共子串
注: 最长公共子序列采用动态规划解决,由于子问题重叠,故采用数组缓存结果,保存最佳取值方向.输出结果时,则自顶向下建立二叉树,自底向上输出,则这过程中没有分叉路,结果唯一. 最长公共子串采用参考串方式 ...
- 读javascript高级程序设计14-错误处理与调试
一 错误类型 ECMA规定了常见的7种错误类型: Error: 基类型.其他常见的错误类型都继承自该类型,一般供开发人员抛出自定义错误. EvalError:该类型会在eval()函数使用异常时被抛 ...
- 如何获取有性能问题的SQL
1.通过用户反馈获取存在性能问题的SQL. 2.通过慢查日志获取存在性能的SQL. 启动慢查日志 slow_query_log=on set global slow_query_log=o ...
- Octopus系列之UploadValues异步上载
不多说了直接上代码 public void ProcessRequest(HttpContext context) { context.Response.ContentType = "tex ...
- 交换机的端口状态是UP,但是查询该端口下的MAC地址为空
(电脑已关机)电脑与交换机直连的端口状态 还是 UP ,但是 查询该端口下的 MAC地址为空. 初步怀疑原因: Wake-on-LAN(电脑关机,网卡还在工作) Wake-On-LAN简称WOL,是一 ...