[编程开发] 用一年时间如何能掌握 C++ ?

[复制链接]
rainsun66 发表于 2023-10-25 22:07:19|来自:北京 | 显示全部楼层 |阅读模式
有一定 C 语言基础,日后想从事游戏开发等工作,给自己一年时间,能在此期间精通 C++ 吗?
全部回复5 显示全部楼层
洗尽铅华 发表于 2023-10-25 22:07:54|来自:北京 | 显示全部楼层
这个问题有点历史了,不过我想换个角度,从 C++ 应用方向来回答下这个问题。当初学习C++也是用知乎和 Google 搜索学习方法,现在把自己的学习经验分享出来给后来的同学。


图源 hippopx  CC0
首先,只是掌握 C++ 还不够,所有编程语言都只是个工具而已,本质上我们要用语言工具去实现产品逻辑,软件开发就是要做一个东西出来。
所以先想清楚,你想用C++做哪些事或者从事哪方面工作
方向不同,需要学习掌握的内容也大不相同。我大概罗列一下,C++的应用方向,包括但不限于:

  • 服务器后台开发(流媒体后台,游戏后台,高性能服务器后台)
  • 应用开发工程师(QT和MFC,偏前端)
  • C++游戏开发(游戏方向,熟悉游戏引擎cocos2dx等)
  • C++逆向开发工程师(网络安全,破解等)
  • 嵌入式软件开发(C/C++,Linux平台,软硬兼施)
  • 音视频编解码方向(协议优化)
  • 图像处理(机器视觉,医学图像,遥感图像,人像美颜等)
从上面可以看出,一样都是学 C++,应用方向不同,技能要求和需要掌握的技术栈也不一样。其中需求比较大,也是大部分人选择的方向是「C++服务器后台开发」方向,也是我自身工作相关内容。
在招聘网站找了一个「腾讯的 C++ 研发工程师招聘要求」,可以看到除了对 C++ 语言的要求外,对面试者的其他要求也不少,我们可以从招聘需求反推需要掌握的技能。


「如何用一年时间掌握C++」这个问题有点大,能力有限,我来回答如何用一年时间掌握C++服务器后台开发?
总结下 C++ 服务器后台开发的一般学习路线,可以归类为以下 4 个阶段:

  • C++基础
  • C++进阶
  • 现代C++
  • 后端技术
  • 项目练习
首先当然是学习C++

C++后台开发,顾名思义也要先学 C++ 。题主有C语言基础的话,C++的学习还是相对会容易一些,但你要说「精通」,即使是用C++这么多年,也不敢在简历上写这两个字。
敢说精通C++的人要么是真的特别厉害,要么是半桶水学会了一点拿出来忽悠面试官,第二种人早晚会被遭受面试官‘毒打’,要是限定一年时间,达到熟练使用C++的水平没有问题,前提是按正确的学习路线,不要走了弯路。
开始之前,还是先来看下,C++学习到底要学哪些东西:
C++知识点


  • 基础:类型、遍历、const 限定符号、声明与定义
  • 标准库和算法:string、vector、bitset、map
  • 数组、指针和引用、动态数组、多维数组
  • 表达式、循环、条件判断语句
  • 堆和栈的区别,mallocl和 new 的区别
  • 面向对象的特性,封装、继承、多态
  • 虚函数、虚函数表、派生类虚表,对象内存布局
  • 重载 Overloading 和覆盖Overriding
  • 析构函数、构造函数,派生类中的构造函数与析构函数
  • 模板与泛型编程:模板定义、实例化、模板编译、模板特化
  • 继承:单继承、多继承、菱形继承、虚继承
  • static关键字作用
  • #define与 const 的区别
  • C++中的强制类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
  • 异常处理、命名空间
  • 现代C++:C++1X、C++20 新特性
怎么学C++?看书学!最高效的学习方式,看经典图书。
我当初在学习C++的时候,第一件事就是 Google 搜索前辈们推荐的 C++ 经典书单,前人的经验能让你少走弯路,这里我也分享下自己学习C++,从入门到进阶之路看过的图书:基础 3 本,进阶 3 本,现代C++ 1本。
自学C++相比Java和Python还是要难一些,因为C++更接近操作系统底层,需要自己管理内存等等。

关于C++优质视频学习资源这块,这块我整理了一系列优质的C++公开课和教程视频资源
<a href="http://www.zhihu.com/question/21661498/answer/1673362143" data-draft-node="block" data-draft-type="link-card" data-image="http://pic2.zhimg.com/v2-52a91223c84a45fb921e02c48f1a5ec9_l.jpg" data-image-width="402" data-image-height="487" class="internal">有没有什么好的C++视频教程?一定要看的书,总共 7 本书(带封面,方便你找),一年应该看得完。
C++基础   3 本


  • 《C++ Primer 》豆瓣9.4



  • 《Effective C++》豆瓣9.5



  • 《More Effective C++》 豆瓣9.2


C++进阶  3 本


  • 《Inside the C++ Object Model》 这本书中文版《深度探索C++对象模型》翻译质量也很高, 豆瓣9.1



  • 《STL源码剖析》 豆瓣 8.7



  • 《C++编程思想》


现代C++  2本

所谓的现代C++就是C++1X 甚至 C++20 引入的新特性,让C++这门「古老」的编程语言更加现代化。学完上面推荐的书籍,你已经是算的上是掌握了传统 C++ 用法,如何快速上手现代 C++ 特性,入门我推荐开源电子书:

  • Effective Modern C++
看过Effective C++ 都知道那是多么经典的一本书,这本书的作者和Effect C++是同一位:
20多年来,Scott Meyers的“Effective C++从书”(包括《Effective C++》、《More Effecitve C++》和《Effective STL》)已经为C++程序设计指南的业界设立标杆。他清晰明了引人入胜的、对复杂技术材料进行条分缕析的阐释为他赢得了世界范围内的称誉,也使他成为一名广受欢迎的培训师、咨询顾问和会议讲师。他拥有布朗大学计科学专业的博士学位。
原书在豆瓣评分9.0,这本书有中文版,学习现代C++必备的高质量图书。



  • 《现代C++教程:高速上手C++11/14/17/20》




本书号称『高速上手』,从内容上对二十一世纪二十年代之前产生 C++ 的相关特性做了非常相对全面的介绍,读者可以自行根据下面的目录选取感兴趣的内容进行学习,快速熟悉需要了解的内容。这些特性并不需要全部掌握,只需针对自己的使用需求和特定的应用场景,学习、查阅最适合自己的新特性即可。
这本书已在Github开源 changkun/modern-cpp-tutorial
以上,多了也不推荐,看完这 7 本书差不多算是掌握C++,要达到熟练掌握,还需要项目练习和代码量积累,至于找哪些适合的练手项目,这个我后面会说。
附带了一份我整理的 C++ 电子书合集:C++ 必读书籍推荐(含下载方式)

C++后台开发

其实 C++ 语言学习在 C++ 后台开发中,只占了非常非常小一的部分,要知道语言只是一个工具,你要做开发,工具使用是最低的要求,还需要学习以下内容才能符合岗位要求。
归纳起来,C++后端开发需要掌握的技术点包括:


  • 计算机基础
  • Linux
  • 数据库
  • 设计模式
  • 中间件
  • 分布式
  • 高并发
  • 高可用
  • 高性能(统称互联网三高)
  • 搜索引擎
  • 测试技术
  • 监控运营
  • 虚拟化
  • 安全技术
  • 大数据
技术点比较多,这里只说下计算机基础学习,这是软件开发基础。

后端开发工作中经常用到 Java、C++、Python、Golang ,这些语言称为高级编程语言,之所以称为高级语言,是它们接近我们日常交流的自然语言,离计算机底层远。但所有的高级语言最终都会转化成汇编->计算机指令->控制流操控计算机硬件。
所以学习计算机构成和工作原理、操作系统这些基础知识,能够加深我们对高级语言的理解。
计算机基础

计算机科学技术 CS(Computer Science),大学计算机专业课,计算机基础是软件开发的基本功,当然也是C++开发的基本功,下面是一份中中科大的计算机技术本科主要课程结构安排



计算机基础课程包括

计算机组成原理


  • 数据在计算机中的表示和运算
  • 存储系统
  • 指令系统
  • 中央处理器
  • 总线
  • 输入输出系统
  • 计算机网络
  • 计算机操作系统
操作系统


  • 进程管理
  • 内存管理
  • 文件管理
  • 输入输出管理
数据结构与算法


  • 线性表(链表、数组、循环链表)
  • 栈和队列
  • 树和各种二叉树(二叉排序树、平衡二叉树、哈夫曼树、B树、B+树、Trie树)
  • 图(图的存储结构、BFS、DFS、最短路径、最小生成树、拓扑排序、关键路径)
  • 查找算法(二分查找、B树查找、HASH表、KMP字符串模式匹配)
  • 排序算法(插入排序、冒泡排序、归并排序、基数排序、堆排序)
  • 贪心算法
  • 位运算
  • 分治算法
  • 动态规划
数据结构大家最熟悉,大家面试刷的算法题本质上就是对各种数据结构的运用。
计算机基础的学习,理论知识会比较枯燥,建议结合视频公开课,我整理了一些优秀的计算机基础公开课资源:
计算机专业有哪些不错的公开课资源?讲完了后端开发技术体系的「计算机基础部分」,关于C++后端开发的其他技术点,以前我花了半个月时间整理过,就是下面这篇1 万 5 千字后端开发完全学习指南,对各个知识点的学习已经讲得非常详细,想了解C++后端开发技术栈的同学可以看看:
后端都要学习什么?项目练习

在完成上述学习内容的同时,可以同步找一些开源项目源码来学习,任何一门编程语言学习都需要多动手,一直看书不动手敲代码的效果也不好,可以试着着用C++造几个轮子玩玩,不仅可以积累代码量,同时也是一件很有成就感的事,编程是个手艺活,无他,唯手熟尔
还是那句话,对于C++初学者推荐看书+视频的方式学习。
关于如何寻找适合练手的开源项目,我之前帮大家找过一些,适合练手和观摩学习的开源项目:

  • cpp_redis
  • LevelDb
  • TinyXML
  • yaml-cpp
  • Muduo
  • rpc
  • ...
项目地址和详细介绍,看我下面这个回答,这里就不再搬运一遍了,给个传送门:
C++后台开发有哪些练基础的开源项目?你所看到的大神都是在写了无数代码之后,从量变引起的质变,学习C++编程没有捷径可走,总结起来两句话:多写代码,多看书。
当然了,一年时间掌握全部后端开发技术是不可能,但可以做到掌握C++和了解后端开发技术栈。这时候找个像上面招聘要求的那种,C++后端开发相关工作问题不大。
如果你连一年时间都没有,比如学生党只有一个寒假时间想C++入门,我觉得也没问题。某种程度上是对大目标的拆解,分成切实可行的小目标,反而没有那么大的执行压力,解决了大部分人的拖延症。
寒假 45 天如何自学入门C++?如果你时间还充足一些,比如很多人想利用研究生两年学习C++,这样时间更多可以安排的内容也更多,学的会扎实一些,其实两年时间认真学习,找一份相关工作问题不大。
研究生生涯还剩两年,学C++(达到可以找工作的标准)时间够用吗?最后,在这个短平快的时代,很多人总想给学习界定时间,想速成。但是啊,学无止境,C++ 学习也是一条漫长的道路,不追求一年速成,也不可能一年精通,只要每天都有进步,共勉
最后,再给大家送上点干货!

下面这些是我知乎的高赞回答合集,建议大家点赞&收藏,一是鼓励我创作分享,二是方便以后查找!

  • 互联网大厂炙手可热的后端开发岗位,如何成体系的学好?收获点赞3000+ 收藏 5100+
后端都要学习什么?2. VS Code 如何编写运行 C/C++ 代码?实战开发经验分享,收获 1000+点赞 2100+ 收藏
Visual Studio Code 如何编写运行 C、C++ 程序?3. 你们初刷leetcode时会怀疑自己的智商吗?手把手教会你算法刷题的正确方式,效率翻倍!
你们初刷leetcode时会怀疑自己的智商吗?3.  算法与数据结构中,AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?4000+ 收藏!
AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?2. C++开发有哪些练基础的开源项目推荐?从入门到进阶,安排明明白白,点赞1400+ 收藏3700+
C++后台开发有哪些练基础的开源项目?赶紧点赞和收藏吧~  我是 @程序员柠檬 专注分享计算机编程学习~
<hr/>如果回答对你有帮助,码字不易,点赞收藏分享给更多需要的同学~
更多干货回答和文章,可以查看我的专栏,面向工资编程:
学编程,涨工资2021.03.05更新:C++常见面试题也整理出来了,需要自取。
精选 30 个 C++ 面试题(含解析)
想拒绝呼吸 发表于 2023-10-25 22:08:18|来自:北京 | 显示全部楼层
建议不要把掌握c++作为一个一年的目标。
C++的外延太广,就是应用领域、面向对象、设计模式等等。C++语法和标准库本身是有限的。
好比说常用汉字是有限的,但是国学是无限的。
应该把学习语言作为一个持续的过程,并且要把语言学习用在实际的开发场景中。
我见过很多大佬在C++这门绝学上已经潜心研究了整整十年,最终悟道这是一门终其一生都不敢说精通的绝学。
如果你能在C++上潜心投入,比普通人稍高一个层次,在市场上便非常有竞争力。
因为C/C++技术在很多行业应用广泛:网络、通讯、图像、游戏、桌面等,它也是目前唯一适应多方面需求的编程语言。C/C++适用于Windows程序设计,PC游戏、嵌入式等软件开发,在软件编程领域,几乎没有C++软件工程师不能解决的问题。主流的3种操作系统Windows、linu、Unix内核部分都是用C++语言和汇编写的,上层高级特性也是用C++写的。它的实时性,灵活性、是其他的编程语言无可比拟。
正是这些原因各类企业对C++软件工程师的需求持续升温。国际上许多著名的企业像IBM、HP等都将C++作为优秀程序员的必备软件语言要求,是招聘员工的基本参考。所以,业界流传着:掌握C++技术是通往一流企业的敲门砖。
分享一篇C语言/C++直通企业级开发的详细学习路线。B站上最为优质和全面的C++学习攻略分享。(作者codesheep,B站近40万粉丝大V。)
https://www.bilibili.com/video/BV1G7411K7j2?p=1&share_medium=android&share_plat=android&share_source=COPY&share_tag=s_i&timestamp=1596435670&unique_k=zXBcxNhttps://www.bilibili.com/video/BV1v441187mZ同时分享一篇他的 C 语言、C++ 学习路线的文章给大家,要知道语言本身只是工具,C++开发是个系统工程,更需要有深厚的内功训练。
先聊几个有趣的问题

这几个问题都是私信里常被问到的,也是我当时学习过程中的一些疑惑。
问: 为啥我学完了C语言或者C++,却还是啥东西也做不出来?
答: 编程语言学完了就能做出东西那也真是天才哇!应该说语言学得就算再精通,它其实也只代表完成了“最小的”那一部分,和实际上手干活之间还是有一个非常大的鸿沟,这个鸿沟就表现为下文即将详述的 编程基础四大件 + 应用实践编程
问: 为什么C/C++写出来的东西都是运行于黑乎乎的命令行?这玩意真有用吗?
答: 嘿嘿,谁说黑乎乎的命令行里运行的程序就没有用!咱大名鼎鼎的Linux系统都以命令行跟用户交互呢,而且Linux里面很多强大的工具都是运行于黑乎乎的命令行!
问: 从技术学习和实际运用的角度来看,C/C++和Java到底区别在哪?
答: C/C++,它和Java确实不太一样。C语言和C++,尤其C++,语言粒度细、机制多,性能虽然高,但语言本身的包袱也确实重,我们更愿意称它“造轮子”的语言!也正是因为C语言和C++性能好、粒度细,所以什么都能做。而Java本身就是一种服务于互联网软件开发(后端开发+客户端开发)的语言,它有一个明显的“生态圈”的概念,所以应用领域非常清晰。我个人觉得C语言和C++编程比Java还是要难一些,Java毕竟是纯应用层的,C语言和C++则对程序员能力的要求要更高一些。
岗位分析

了解一下岗位,知道以后能做什么,这个也有利于自己树立学习目标。
C语言和C++属于“造轮子”语言,几乎什么都能做。不过一般来说,C语言和C++主要还是做后台(服务端)开发比较多,包括:

  • 通信公司后台开发
  • 互联网公司后台开发
  • 游戏公司后台开发
  • ……
当然这个后台开发具体职责又有很多细分,比如:

  • 有做数据处理和分析的
  • 有做基础协议和通信的
  • 有做服务端底层应用优化的
  • 甚至还有做后台系统驱动和内核的
  • ……
不管怎样,下面即将要介绍的这些学习路线和内容适用于以上所有情况。
语言本身的学习

C语言:

  • 除了最最基础的语法:变量、条件、循环、字符串、数组、函数、结构体等之外
  • C语言最最最最最重要的那就是:指针、内存管理,以后企业里开发就靠它俩吃饭,这也是检验C语言掌握情况的两大标准
推荐书籍:《C Primer Plus》、《C和指针》、《C专家编程》
C++:

  • C++和C语言确实是不同的语言,但是C++确实是对C语言的延伸,可以理解为在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的复用扩展工程化,这是大型项目的必备要素
  • 除了C语言所有的底子之外,还需要学习C++的面向对象(封装、继承与多态)特性、泛型、模板、STL等等
推荐书籍(有先后顺序):《C++ Primer》、《Effective C++》、《C++ 标准程序库》、《STL源码剖析》《深度探索C++对象模型》
最后一个小建议是:语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,高强度给它压下来,否则容易把自己拖泄气。
为了方便大家学习,我把C++学习的书籍都打包好了,点击链接下载即可↓
链接:https://pan.baidu.com/s/1-hlwD6qwfOtzLhzgwxSYIw   密码:l7ha
编程基础“四大件”

基础四大件包括:数据结构和算法计算机网络操作系统设计模式
这跟学什么编程语言、后续从事什么编程方向均无关,只要做编程开发,这四个计算机基础就无法避开。可以这么说,这基础四大件真的比编程语言重要!!!
不管是不是科班出身,每一个程序员都应该花时间了解和学习计算机科学相关的基础知识,因为所有关于如何编程的底层逻辑和原理都在那里了。
这里有4本手册,全网累积下载100w次,几乎程序员人手一套,包含数据结构与算法、操作系统、计算机组成原理、计算机网络等硬核基础知识,图文+实战案例,平时开发+搞定面试,帮你快速建立对计算机科学的大局观,夯实计算机基本功,瞬间起飞~
全网累计下载100w+次,瞬间让你起飞的计算机基础知识切记:学习资料在于精,不在于多,多反而不是好事,作为一名程序员,大家的学习时间都太宝贵了,我们要把80%时间投入在最有价值20%的学习内容上,具体内容可以看上面这篇资料贴。
1、数据结构和算法
可以说这个直接决定了面试的成败!几种基础数据结构类型得烂熟于心,比如:字符串、链表、二叉树、堆、栈、队列、哈希等;基本的几大算法也要了如指掌,比如查找、排序、动态规划、分治等等。
建议LeetCode多刷题啊啊啊啊啊!
参考资料: 《大话数据结构》、《算法》、《剑指offer》《LeetCode刷题》
2、计算机网络
此处的计算机网络指的就是TCP/IP协议栈,可以说它是当下互联网通信的基石,无论如何一定要对TCP/IP的协议栈了如指掌,主要就是学习和掌握原理,包括:ARP协议、IP协议、ICMP协议、TCP和UDP协议、DNS协议、HTTP协议、HTTPS协议
推荐书籍: 《TCP/IP详解》
3、操作系统
该部分重点包括:进程和线程的相关原理(原子性、并发、锁)、内存相关原理(内存分布、内存调度)
推荐书籍:《深入理解计算机系统》
4、设计模式
倒不需要23种设计模式全部记住,常见的几个如:单例模式、工厂模式、代理模式、策略模式、模板方法模式建议熟练于心。
推荐书籍:《大话设计模式》、《设计模式之禅》
应用实践编程

这部分会涉及到一些工具、编程环境、和具体编程实践,应该说这一部分学完,自己应该能做点东西出来、或者说能看懂一些实际项目的代码。
实践这部分,我也是结合我之前在通信公司的实际工作经历和所听所见,来聊一聊。
1、Linux操作系统的使用
很多人初学C语言、C++(包括我)都是在Windows环境上进行的,而实际企业级开发几乎不可能,所以Linux系统必须要会,我们别无选择。先谈使用。
包括:常见的Linux操作命令基本的Shell编程
推荐书籍:《鸟哥的Linux私房菜》
2、编译/调试工具
首先是跟编译相关的:编译工具!
我们知道很多人学C语言、C++都在类似Visual Studio这种集成IDE里进行代码编译,这个其实也用了编译器,只不过是微软自家的MS编译器,而且所有操作均可视化。而企业里开发很少会基于Windows系统,所以Linux平台上的编译器更为重要,最典型的当属 GCC,甚至有些公司有自己定制过的交叉编译工具,但没关系,只要 GCC熟悉,其他问题都不大。
其次,大家自学C语言、C++,都借助类似VS这种IDE,点按钮即可对源文件编译。而企业里实际项目的编译动作叫 make,编译的实际动作和过程都是写在 makefile文件里,所以makefile的书写规则建议学习!
最后说到调试工具,Linux平台上的 GDB调试工具要熟练使用,会借助于它进行调试。
推荐资料: 这部分没有书可推荐,英文好的同学可以直接看 GNU官网关于 GCC和 GDB的文档,中文材料可以看:《debuging with gdb》(中文版)和陈皓先生的《跟我一起写makefile》
3、Linux环境编程
还是那句话,企业里C语言和C++几乎都是基于Linux平台的,这一部分我们没办法避开
(1)Linux系统编程
众所周知,Windows系统编程里有各种各样的Windows API,同理Linux系统API的使用就更加重要。
(2)多线程编程
此处指的是多线程编程实践相关的东西,一般包括:线程、资源、信号、同步、互斥、锁等等一些具体的编程方法。
(3)网络编程
此处的网络编程主要指的是具体Linux系统上的网络编程 API和 IO函数的编程实践。
推荐书籍:这三部分综合在一起,推荐必看书籍包括《Unix环境高级编程》、《Linux高性能服务器编程》、《POSIX多线程程序设计》
文章来源:codesheep
整理不易,据说双击屏幕有惊喜 ❤️
renshen 发表于 2023-10-25 22:08:33|来自:北京 | 显示全部楼层
本人大约从20多年前开始学习及使用C++,但仍未达到我认为「精通」的阶段,甚至对于C++11的各种新特性也未掌握。然而因为我是在读书时自学C++的,也是游戏程序员(原问题中提到题主想从事游戏开发),觉得也许能提供一点意见供网友参考。
首先引一下2010年8月号《程序员》刊登的拙文《
C++强大背后》最后一段:
C++学习建议C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:

  • 第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;
  • 第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;
  • 第三层次,深入了解C++:关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;
  • 第四层次,研究C++:阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。
由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。
如果题主认为的「精通」是指上述所指的第二层次,那么我估计一年全职时间也未足够「精通」。首先,阅读这些书籍本身也需要不少时间,而且对于一般人来说(指除了一些学习记忆能力超强的人),很可能需要阅读几遍才能记住一些细节。另外,阅读后必须要练习。除了入门的习题外,还需要做一些工程向的项目,才能了解各种语法、编程范式的使用方法及时机,理想地建议参与一些开源项目。然而,学习是需要不断思考并把结果沉淀,方法包括与朋友讨论、写博客、写知乎答案等,这些都需要时间。
如引文末段所指出,我建议不要把「精通C++」作为一个一年目标,应该要把学习语言作为一个持续的过程,同时要把语言运用在具体的应用场合中。
---------------------------------------------------
再讨论C++与游戏开发。
看到有不少答案讨论到有关C++是否游戏开发者所必须的技术。我认为,这并不是完全必须的,但许多游戏开发项目需要到C++。以下列举一些过往曾流行的游戏平台/类型:

  • PC单机游戏(Windows)
  • PC网络游戏(Windows、Linux)
  • 移动平台游戏(J2ME、Symbian、Palm……)
  • 家用游戏机游戏(PS1/2/3/4、XBox、Wii……)
  • 掌上游戏机游戏(GB、GBA、NDS、PSP……)
  • 网页游戏(HTML、Flash)
  • 智能移动设备游戏(iOS、Android)
我们会发现,除了J2ME和网页游戏外,大多数的平台都支持(或只支持)原生编程。而原生编程最常用的就是C/C++和汇编。这种现象并不难解译,再次引用拙文:
应否选择C++
哪些程序适宜使用C++?

C++并非万能丹,我按经验举出一些C++的适用时机。

  • C++适合构造程序中需求较稳定的部分,需求变化较大的部分可使用脚本语言;
  • 程序须尽量发挥硬件的最高性能,且性能瓶颈在于CPU和内存;
  • 程序须频繁地与操作系统或硬件沟通;
  • 程序必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新;
  • 项目中某个目标平台只提供C++编译器的支持。
按应用领域来说,C++适用于开发服务器软件、桌面应用、游戏、实时系统、高性能计算、嵌入式系统等。

很大程度上,游戏──或说游戏引擎,都是C++非常适合的应用时机。
一些人认为,游戏开发者使用现成的引擎,就不需要使用C++了。过往,业界有一个普遍常识,就是用C++开发游戏引擎,而游戏引擎提供脚本引擎供编写游戏逻辑代码。但这个观点被Unreal Engine 4的决策改变,UE4放弃了维护多年且被大量使用的UnrealScript脚本语言,而改用原生C++作为游戏逻辑编程的语言。此决策背后有多个原因,但这里只想举出这例子展示C++在游戏开发中的用途及潮流,具体原因分析就不详细展开了。
除了自行研发游戏引擎需要使用C++,我们可以看到,大部分游戏引擎都提供了其C++原代码(Unity算是例外),这让我们可以

  • 方便调试游戏
  • 深度剖析、优化游戏的性能
  • 为引擎扩展新功能
  • 修改现有引擎以适应项目所需
在专业的游戏开发中,这些都是很常见的工作任务。所以,即使并非自研引擎,并使用脚本语言开发游戏逻辑,也有很多机会需要使用C++。
最后,「还需学习什么」是一个很难简单回答的问题,因为游戏开发涉及的知识面很广。建议可参考本人译作。
南天一柱 发表于 2023-10-25 22:08:52|来自:北京 | 显示全部楼层
强烈反对 @kubisoft 功利性太强的高票答案!
这是在把一个能成为业界top 1%的顶级游戏开发技术大师的黑马,往能傻乎乎地受你们压榨的IT民工的火坑里推,你造吗?
这让我想起了乔帮主关于“卖糖水”的那句经典话语,而我们的版本是:

你是愿意就这样学点皮毛混口饭吃随波逐流,还是成为真正的游戏开发业界顶尖技术大牛,推动业界的发展,去改变世界?

关于上面这句话的两个抉择,我们来做个选择题。

A.     如果你是想从事游戏行业当个二流的民工打打杂一辈子就这样过去,请去看@kubisoft兄有些对现实妥协之前排名第一的答案。(不带人身攻击的,只是对事不对人而已呢)  这种太依赖IDE和游戏引擎所谓速成方式,到最后只能是二流的民工,打杂的,混饭吃的。知道其然,不知道其所以然。遇到真正的专业性问题就卡壳了,比如如何优化渲染质量之类的问题。或者开发的项目就是那种2D的小儿科,或者山寨跟风赶进度赶上市的快餐游戏,而不是画质精美,设计精良,堪称经典,为国产游戏长脸,推动全球游戏业界发展的革命性大作。

B.     如果你是志向高远,想制作出改变世界的革命性游戏,或者推动游戏产业的发展,成为游戏开发业界top 1%的技术领军人物。请熟练C++,请修炼好内功。@王选易 兄 @徐奕成  兄的答案是极好的。且正如萌萌的V大 @vczh 所言,就算你的志向是开发crysis这样的游戏,其实也只需要用到C++的一小部分就够了。C++各种范式是发明来解决所有问题的,游戏只是其中的冰山一角,你没必要精通,没必要学会C++的所有部分。我们这里所说的,是了解原理,学C++只是其中的一小部分,与其说去不断的学C++的更多高级特性,更好的学习方向是熟练利用C++配合DirectX或者OpenGL来制作Windows小游戏,对数据结构设计模式有一定的认识,且能够准确针对问题选择你的数据结构,研习计算机图形学blablabla的。
(PS:不要轻易用“精通C++“这个狂妄的词眼,后文有一些关于这个梗的解释)

正如我之前在自己博客里面所转载的文章《编程巨星的唯一秘诀》中说的:

“对所做的事情的理解越深,你就会做的越好。”

既然题主都提到要走熟练C++,以后开发游戏这最正统的技术道路了,他内心渴望的应该是志向高远,做个强者,而不是去当IT民工打杂做技术含量不高的事情。

即我是不能同意更多 @Aaron Luo 兄的观点。
”题主还是学生,别用压榨it民工的想法来教导!题主可以从cocos2dx和unity3d开始学游戏开发,但是,如果想一直做编程,请别忘了必须同时修炼c++, 因为它可以给你认识到真正的编程,让你懂得更多计算机编程思想,以后就算不写c++也可以迅速了解别的语言,别的工具的~而不会变成仅仅依靠IDE工具,随便抄抄别人代码,完成山寨程序的It民工。“

也不能同意更多 @徐奕成@Floristt兄的观点。
@Floristt 兄在评论区说:那些不懂原理只是挑一个工具熟练掌握使用或许在当前游戏市场火热的背景下也能混得不错,但是感觉很快会遇到职业瓶颈。这对自身而言就是一种风险。如果一项技能你学三个月就能耍通常意味着可以轻易找到一个人代替你。
@徐奕成 兄说: 你学会这些可以让你比较容易找到一个工作,但是几年之后会碰到你的职业瓶颈,要么继续学底层,要么转行。否则公司会毫不犹豫地找人来替代你。其实有一句话我很赞同:“程序员如果不学好底层,将毫无作为。C++让你走向程序员这条路,编译原理和汇编语言等让你走得更好,数学英语让你走得更远。”

大方向的话,就如
@王选易 兄所言,如果你是图形程序员,那么最好的项目就是,自己做一个游戏引擎如果你是Gameplay Programmer,那么最好的项目就是,自己做一个游戏项目。
另外,
@IMAGICE 兄在评论区说到,“还是那个问题,是选择偏向游戏(文艺方向,独立开发),还是想做好技术(引擎开发,技术研究,打工,这个可能是大部分人的归路)。”
是时候引出游戏开发领域的两大流派了,即 @伍一峰 兄在回答中提出的气宗与剑宗。
独立开发者和小团队因为时间和精力的限制,大多是以实现为目的,这也是情有可言,这就不难解释
@kubisoft 兄所推崇的以快速实现为目的,依赖工具、引擎和不求甚解的剑宗流派有不少人的追捧。(文艺方向另谈)
每个人切入这个行业的方法不尽相同,能选择最适合自己的入门方式就是最好。但是入门后如果想有更好和更长远的发展,必须开始崇尚气宗一派,了解内部技术细节,修炼好内功。不要流于形式,浮于表面,依赖工具,而是要深钻进去,了解得越深越透彻越好。最好是能自己了解游戏引擎的底层原理,甚至是写出自己的游戏引擎来,这样才是更高的境界(当然这只是极少部分的顶尖高手能达到的境界)。
总之,剑宗一派适合入门,这样有趣,有成就感,能快速得到成果,但容易遇到职业瓶颈,后劲不足。气宗一派注重内功,了解原理,作为稀缺的高水平人才资源,能有更多选择的权力,有更长远的发展。而且不难理解游戏开发领域是先有了气宗才有了剑宗,且了解原理,内功深厚的气宗境界更高一筹。
能找到自己的合适的方式就是最好。并不是否定从引擎出发入门这条便捷之路,其实我的建议,若决定走修炼技术为主的气宗一派,先学点C++,然后配合着C++学一些底层API(DirectX或OpenGL),能写一些比较炫酷的三维游戏场景,或者说自己实现一个小型的软引擎,再去真正地接触引擎,利用引擎做一点有趣的demo或者完整的游戏,阅读一些优秀开源引擎的源码(比如Ogre,irrilicht,Unreal Engine4 ,cryEngine),甚至自己实现引擎或者做游戏项目,这是重视技术的气宗流派比较科学的内功修习方式。
我们都知道,气宗和剑宗的争执永远不会停歇,就像这个回答下的评论区,永远不是一边倒,而是气宗剑宗的支持者平分秋色,各有千秋。
我很欣慰的是,这个答案写出来之后,一天之内就已经超过了当时排名第一的、已经在答案中被我@了无数次的kubisoft兄有些对现实妥协,倚老卖老(不带人身攻击呢,只是对事不对人)的答案。这证明大家的眼睛是雪亮的,内心还是不甘心的,还是希望做个明白人,做个强者,知其然并知其所以然,并且希望自己有能力站在更高的山峰,去完成更大的事业。
(PS:这段貌似才算是比较理性的分析,回答一开始写的有些小愤青了,但的确是肺腑之言。)
----------------------------------------------------------------------------------------------------------------------------------------
既然提到了小愤青,就另外附一点我在2013-03-25写的一篇年代久远带些小愤青的拙作中的一些观点:
“【
事实如此,现在市面上所有画质精美的单机游戏作品(鬼泣5,上古卷轴5,刺客信条3,仙剑奇侠传5前传,古剑奇谭等等……),所有的大型网络游戏(Dota2,英雄联盟,魔兽世界,龙之谷,剑灵等等等……),所有高性能的三维游戏引擎(虚幻3,Unity3D,Cry Engine3等等……),以及一些高性能的2D游戏引擎(Cocos2d-x等等),都是用C++来开发的。
其实游戏引擎并没有那么神秘,说白了也就是那么回事,用类封装好功能的C++代码而已。C++写出来的游戏引擎自然能跨平台。Unreal Engine3、Unity3D、Cocos2d-x等游戏引擎就是绝好的例子。

学好C++,你可以亲手写出Unity3D,亲手写出 Cocos2d-X,让大家都叫你大神,大家都用你写的游戏引擎做游戏,等着你什么时候心情好了更新一下给引擎加更多功能;而不是只会盲目跟风,今天大家说Unity3D火,就都去学Unity3D,明天大家说Cocos2d-x热门,就来学学Cocos2d-x。你学游戏引擎,学的只是人家某引擎作者某C++大神按心情来定的函数调用方式,学的只是如何调用一些别人写好的一些类,一些API函数。这样在别人规定给你的一些rule中固步自封,大家觉得有技术含量么?

我们是时候该该想一想了,为什么现在全球范围内优秀的三维引擎,就是没有我们国产引擎的影子。
所以,无论是哪个平台,Windows也好,iOS也好,Android也罢,如果你真正想在游戏开发领域有所作为,混出个名堂,请学C++,请学计算机图形学,请了解计算机图形API(OpenGL或者DirectX),而不是在跟风某种“热门”的游戏引擎的大潮中随波逐流,在某种移动平台的游戏开发中迷信某某引擎,乐不思蜀,固步自封。
咳,扯远了,而且有些小愤青了,我并没有歧视其他编程语言的意思。浅墨只是想表达,无论是哪个平台(Windows,Play Station,Xbox,Android,iOS, WindowsPhone, WUII),在三维或者高性能游戏开发领域,确实就是C++的天下。
】“原文在这里:【Visual C++】游戏开发四十九 浅墨DirectX教程十七 三维天空的实现


----------------------------------------------------------------------------------------------------------------------------------------
2014-6-2更新部分。
答评论区  
@李柯  兄的一段话。关于站在巨人肩膀上的一些思考。
首先对于这部分, 在这篇回答的评论区,
@invalid s兄的文字是相当的深刻与一针见血,推荐大家读一读。
1.我们并不是说支持完全去从头造轮子,而是你理解的越深,就可以收放自如,做个有选择权的强者。当没有合适你的轮子的时候,当遇到技术瓶颈的时候,你自己完全可以制造个更好的,前所未有的轮子,而不是懵在那边,等待你所谓的巨人们心情好后的施舍,造一个合适的轮子给你用,或者因为长久以来的太依赖工具而丧失了本来的能力。
我大家所希望的,是能做一个真正的明白人,心中有墨水,心中有底气,然后无所畏惧,遇到什么瓶颈都不虚。
我们站在巨人的肩膀上的同时,不仅仅是靠业界巨人们写出来的库去实现自己的东西,而是可以理解与吸收巨人们的思维、技术和实现方法。当达到一定境界后,我们可以当下一个巨人,推动业界革命。这大概就是大牛与民工,强者与弱鸡,最外在的区别与表现形式。
太依赖所谓的巨人们的肩膀,太依赖工具,如同井底之蛙,日复一日地调用让你崇拜的大神们写出来的类库,以为只要能做到这样就天下无敌了,以为就是软件行业的全部了——这大概就是目前,我们国内软件行业的误区所在吧——依赖工具,浮于表面。
2.能理解内部实现细节肯定是推崇的,这个看个人,或迟或早,但是越早越好。
我写这个答案只是希望题主以及看到这个回答的朋友们能有更长远的眼界,立意更高远,能有更宽的视野,能知道更大的世界,而不是一辈子就这样炒炒现饭调用调用别人写的函数窝囊地就过去了。
人的一生精力有限,作为一个聪明人,作为一个明白人,入门的时候什么方式越快越好,但是入门之后呢,如果希望自己有更好更大的发展,大方向千万不要错,不要过分依赖拘泥于工具,浮于表面,一定要跳出那个圈子,从井里爬出来。
即,如果希望自己变得更强,不人云亦云随波逐流,最好的方式或许就是自己去理解细节,也并不是咬文嚼字地要自己真正花大工夫花精力去做一款引擎,这个量力而行。
人的一生精力有限,没有哪条路哪种方法适用于所有人,但一个人只要能专注于自己认为值得事情,能自得其乐,那也是值得尊敬的。
回答 IMAGICE兄的评论:
3.直接用轮子,并真正做出非常赞的作品出来,那也是值得尊敬的。当今游戏引擎的发展,为我们提供了前所未有的便利,我们可以合理的利用他,但千万不能太迷信太依赖他。
但如果已经在某个领域花了10年甚至更长的时间,还没能有所突破,那就得反省自己,是不是方法问题了,是不是方向问题了,是不是之前研习的时候,或进度太慢,还是走了很多弯路。我们都清楚,并不是每个人都能有很好的技术天赋与底子,当然也不是每个做游戏的人都要去理解和实现底层,要量力而行,要有所侧重,要找到自己最合适的角度。我们只是从长远来看提倡将知识挖深,让自己打开眼界,不做井底之蛙,不随波逐流,让自己因为站得高看得远,而有更多更广选择的权利。
技术与创意,并不矛盾。人生在世,有所为,有所不为,游戏开发亦如此。
----------------------------------------------------------------------------------------------------------------------------------------

以下算是一些关于C++的附加思考。
【关于“精通C++”这个字眼,请不要滥用】
引用@徐奕成 兄的一段话。
徐兄现在大三,从初一开始学习C++,对这些有一定的了解,也有一定的发言权。但是他从来不敢说他精通了C++。因为徐兄的主管, 15岁开始学习C语言,现在学习C++已经超过20年。但是他对于技术非常的谦逊,抱着学习的心态去学习技术,也没在我们面前提过他精通C++。即使他已经是国内行业的领军人物。

引用 @渐修竹  兄的一段话。
“我也做了两年c++了,也不敢说精通,我们老大做了至少8年,也没敢说精通,我认识的很多大神,也都没敢说精通。事实上我认识的很多大神都很谦虚,我跟他们学到了很多,大家的简历上也都写着熟悉c++之类的字眼。”

即对于博大精深的C++,业界的大牛们穷其一生去研习都不敢言能精通它。就算是天天去钻研C++,一年也只能学个皮毛而已。
C++的精通细节与思考,可参看萌萌的V大 @vczh 的这篇回答:怎么样才算是精通 C++?
至于快速入门,强烈推荐 Essential C++,其为C++业界入门必读《C++ Primer》的作者剥去繁杂,只讲C++核心的一本书。
而后续的一些,可以参考这个豆列中的书单:学习C++语言
----------------------------------------------------------------------------------------------------------------------------------------

在结束回答之前,感谢 @洪逸群兄在回答中的at,间接地邀请,让我知道有这个讨论存在:)

总之,最后的最后,还是那个抉择:

你是愿意就这样学点皮毛混口饭吃随波逐流,还是成为真正的游戏开发业界顶尖技术大牛,推动业界的发展,去改变世界?

在二十几岁这段人生可塑性最强的时光里,我们应该是满怀信心,志向高远,想让自己与这个急功近利、日渐扭曲世界有所不同的吧。


(呃,这个问题已经被改得面目全非,为了注重真实性,此回答就这样保持原貌吧。2014.6.8日更新)
hnlzc 发表于 2023-10-25 22:09:45|来自:北京 | 显示全部楼层
  我觉得可以过来再更新一次了。
/*****************************************以下内容可以跳过*****************************************/
  我说一下我做游戏的历程吧,二年级的时候(我出生于1991.11)我开始接触电脑,当时对电脑的画图工具很痴迷,为什么画图工具能够做出这么好看的东西。所以我对这些所见即所得的东西非常着迷,因为我觉得很容易就开发出来一个东西炫耀。
  后来四年级时候,我的父母有接触一个游戏叫《传奇》,我在他们没在家的时候偷偷创建了一个帐号,体验了十五分钟(没错小学生就是我),觉得游戏真的很吸引人,我是父母在我从小禁止玩游戏的,所以我没有接触过任何游戏,包括红白机,这应该也是很多人的童年。在那时候,我的梦想就是未来能够做游戏设计师,做一个全世界的人都喜欢的游戏。
  慢慢CCTV某一个频道有一个栏目是一个教授开始了解有一样东西叫做powerpoint 2000.我开始拉一些图片进来,做了一个小游戏,你没看错,是ppt做了一个小游戏,是类似大逃杀的游戏。点一下进一个地点,有了最原始的交互。
  从初一的时候,我知道了有一个东西叫做VB,我也尝试用VB写程序。同时开始学习一个编程语言叫C,那时候我果断抛弃了C,因为VB真的很容易做出一个窗口,然后写一个helloworld拿出去炫耀。
  兴趣是最好的老师,我爸妈说学好这些东西就可以做游戏了。我就开始认认真真学C语言,当时效率也很高,我现在一直觉得我在吃老本。。学C的基本概念,用控制台做一个打飞机游戏,做一个RPG游戏,类似于colossal_cave_adventure。
  再到了高中,开始用VC++6来开发一些win32小游戏,我觉得把游戏做好是一种使命,那时候也知道了国内著名的工作室:西山居1995 完美时空 2004 琳琅天上2004.
  我的心愿就是加入他们,成为真正的游戏开发者。
  后来到大学,我学计算机图形学,数据结构,自学编译原理,汇编语言。才发现原本单纯的梦想发现是不可实现的,我不可能做出每个人都喜欢的游戏,就开始学习游戏引擎制作。如果你希望能够从事引擎开发,我推荐叶劲峰 @Milo Yip 大神翻译的《游戏引擎架构》一书。
  直到现在,我如愿以偿,成为了居士,开发游戏引擎。这不是一年两年能决定的,如果你要做程序,真的要多积累了。
/*****************************************跳到这里就好*****************************************/
  从始至终,我是抱着一种使命来学习,来努力,来做游戏的。当时面试的时候,面试官问我,你为什么要做游戏,我说:“我一生就为了做游戏,生活能够过得去就行。”我现在也觉得,我如果不做游戏,我还能做什么(我现在很局限了,眼界很窄)。

我最近学校的课程是要用Objective-C开发游戏,我从来没有学过oc语言,但是我并不觉得他特别的难,相反,我觉得他很容易上手开发iOS应用,因为有C++的积累,我可能不知道具体的语法或者用法还有API,但是我可以通过C++来融会贯通。

  C++是一种潜移默化的东西,当你了解他之后,你学什么都会容易,觉得简单。

所以,C++是重中之重!!!

  吐槽完毕。。只有20个赞,第一次这么认真回答的说。 T_T

/*****************************************这是之前的回答*****************************************/

我不请自来了,因为我发现在这里面回答的人都在回答:“我想做游戏开发,难吗?”,而不是回答“我想从事游戏开发,一年内能精通C++吗?”。无视题主的提问,实在忍不住。
对于题主的提问,我比较赞同 @王选易  的答案 ,也许大家都是技术人员并且也在大学中学习游戏开发。

首先我回答题主的问题,作为大二即将升大三的学生,由于你大一大二忙于社团活动。以致于你可能错过了大学中打基础的黄金时期,大三的一个学年里面,除去你的课程时间,能够继续深入学习C++的时间也许并不多。所以,一年内你说可以精通C++,我觉得不可能。



我现在大三,从初一开始学习C++,对这些有一定的了解,也有一定的发言权。但是我从来不敢说我精通了C++。因为我的朋友,他是15岁开始学习C语言,现在学习C++已经超过20年。但是他对于技术非常的谦逊,抱着学习的心态去学习技术,也没在我们面前提过他精通C++。即使他已经是国内行业的领军人物。
说一下精通C++这个吧,其实精通这个词真的很大争议,至少在许多的社区都有人对这两个字吵的不亦乐乎,那么我来和你说一下熟悉的概念吧:
我觉得熟悉C++,至少要能够做到这些:
1、你完整阅读过C++ Primer 第五版之后的书,这本书可谓是C++程序员入门必读的书。(为什么我推荐第五版之后,因为第五版之后包涵的内容是C++11标准的内容,你现在重拾编程语言,那么推荐你看新的书)
2、你能够对面向对象编程有明确的概念。因为现在许多程序员用着面向对象语言,却做着面向过程的事情。
3、能够利用C++配合DirectX或者OpenGL来制作Windows小游戏。
4、对数据结构有一定的认识,能够准确针对问题选择你的数据结构。
5、其他内容一下子没想到这么多,等以后更新。
至于精通,精通C++不仅仅是C++的语法,还有编译的原理,那么又涉及到编译原理,还有计算机的组成原理。调试的时候,当你用release的调试,你又需要汇编语言的知识,又涉及到汇编语言。再后来你需要设计比较大型的程序,你要对数据结构,和设计模式有一定的认识。
再回答下一个问题:你希望从事游戏开发工作,做游戏其实不仅仅是看着最近火热,而是你要从一开始就对有游戏有接近疯狂的热爱,把做好一款游戏当做你的使命,你才有动力继续学习。因为程序学习起来非常枯燥。
至于你最后的问题:
你需要学习其他什么,我觉得其实你需要做游戏,不一定是C++,你可以选择另一个语言比如Objective-C开发iOS的游戏,或者学习C#,可以开发wp8或者xBox的游戏。
如果你单纯是做游戏,语言并不是问题,问题是你对其他知识的了解程度和对游戏行业的热爱,为了工作而工作可能并不会让你充满满足感与激情。
其他的知识:
计算机图形学
数据结构
编译原理
汇编语言
英语
数学
至于苦逼软件的作者的回答,我反对,并且我认为这不是合适的答案。
不是所有的人会为你“工作十几年游戏项目超过十年而买单。”

---------------------以下逐个写下来得罪人---------------------
“想做游戏开发根本不需要精通C++,根本就是南辕北辙。”
》游戏开发不需要精通C++,甚至说不需要会C++,但是你至少要熟悉任何一门开发语言,并且充分了解数据结构。这根本不是南辕北辙,而是取向问题。
“挑一个引擎熟悉起来”
》这是我看到最不负责任的回答,这位同学问的是未来的路,现在让一个学生直接选一个引擎,没有错,这样可以让他更容易找到小公司,但是会使用,不懂一个引擎的原理,在日新月异的今天,公司换了一个引擎,要重新去学习,如果掌握最基础的东西,那么无论任何引擎,都可以迅速上手。
“游戏开发就是耍剑,耍得好看才有饭吃”
》游戏开发实质就是程序员不仅要练剑,也要练气。

ps:以上纯属个人观点。

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则