没接触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=>….. ...
随机推荐
- linux应用程序开发-文件编程-库函数
---恢复内容开始--- c库函数文件操作独立于具体的系统平台,可移植性较好. 库函数-创建和打开 FILE*fopen(const char*filename,const char*mode) mo ...
- iOS9 collectionView新特性
近日因为系统升级导致xcode6.系列版本出现bug,于是开始使用xcode7.在使用之余突然想到collectionView在iOS9中发布了一个可以移动cell的新特性,就尝试着将其实现,无奈ap ...
- python 中的input
渣渣之路. 一. 在python编程初学者指南中的第六章.使用参数和返回值的例子中: # -*- coding: utf-8 -*- def display(message): print messa ...
- 正则神器,RegexBuddy
解释 转换 测试匹配 使用帮助 正则图书馆 转为PHP案例 功能强大,虽然是英文的!挺不错的~
- JavaEE开发环境搭建(2)---(MySQL的安装)
上次写了JavaEE开发环境搭建之jdk的安装...然后自己看的时候感觉有时候加载图片不是很流畅,所以这次就少添加点图片了~~ JavaEE开发环境搭建之MySQL的安装 1:mysql 的下载 在百 ...
- STL中的查找算法
STL中有很多算法,这些算法可以用到一个或多个STL容器(因为STL的一个设计思想是将算法和容器进行分离),也可以用到非容器序列比如数组中.众多算法中,查找算法是应用最为普遍的一类. 单个元素查找 1 ...
- ASP.NET MVC Html.Partial/Html.RenderPartial/Html.Action/Html.RenderAction区别
1. @Html.Raw() 方法输出带有html标签的字符串: <div style="margin:10px 0px 0px;border:1px;border-color:red ...
- Python3.X新特性之print和exec
print print 现在是一个函数,不再是一个语句.<语法更为清晰> 实例1 打开文件 log.txt 以便进行写入并将对象指定给 fid.然后利用 print将一个字符串重定向给文件 ...
- StringBuffer delete
描述 java.lang.StringBuffer.delete() 方法将删除这个序列的一个子字符串中的字符. 子字符串的开始在指定的start和延伸处的字符索引end - 1或结束的序列,如果不存 ...
- html 通用 遮罩弹出层 弹出后 支持跳转页面
//showMessage 提示的内容默认为空必填 buttonText:按钮显示的内容默认为"确定" 传入 "" 为默认 url:跳转链接 传入"& ...