名言警句

来源:互联网 发布:三维弹球怎么玩 知乎 编辑:程序博客网 时间:2024/04/26 00:31


Windows API:《Windows程序设计》+《Windows核心编程》;

/////////////////////////////////////////////////////////////////////////////////////////////////////////
C++Primer
The Design and Evolution of C++
Inside C++ Object Model
C++ Template (Meta Programming)?

然后再学Haskell(这是非常重要的一环,不可或缺),之后就会充分理解STL和Template这么设计的深刻含义了,从此成为C++大牛



作者:vczh
链接:https://www.zhihu.com/question/20297036/answer/18380715
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

////////////////////////////////////////////////////////////////////////////////////////////////////////////

认真学完 C++ Primer 后,C++ 语言到了什么水平?

达到不会在论坛上问弱智问题的水平。——不是针对你,是真心话。网上很多C++小白问题都可以用一句话回答:C++ Primer第n版第x.y节。
够不够?不够,你至少还要学 Effective C++ 才能开始用 C++ 干活。

////////////////////////////////////////////////////////////////////////////////////////////////////////////

C++Primer 5th + Visual Studio 2013 Community

///////////////////////////////////////////////////////////////////////////////////////////////////////////

http://bbs.csdn.net/topics/391851971

理解讨论之前请先学会如何观察

计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构……

对学习编程者的忠告:
多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程!
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!

单步类的实例“构造”或“复制”或“作为函数参数”或“作为函数返回值返回”或“参加各种运算”或“退出作用域”的语句对应的汇编代码几步后,就会来到该类的“构造函数”或“复制构造函数”或“运算符重载”或“析构函数”对应的C/C++源代码处。

VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。
对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。
(Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句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++有难度,但也是相当有趣且有满足感的

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
至于快速入门,强烈推荐 Essential C++,其为C++业界入门必读《C++ Primer》的作者剥去繁杂,只讲C++核心的一本书。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

我觉得熟悉C++,至少要能够做到这些:

1、你完整阅读过C++ Primer 第五版之后的书,这本书可谓是C++程序员入门必读的书。(为什么我推荐第五版之后,因为第五版之后包涵的内容是C++11标准的内容,你现在重拾编程语言,那么推荐你看新的书)

2、你能够对面向对象编程有明确的概念。因为现在许多程序员用着面向对象语言,却做着面向过程的事情。

3、能够利用C++配合DirectX或者OpenGL来制作Windows小游戏。

4、对数据结构有一定的认识,能够准确针对问题选择你的数据结构。

5、其他内容一下子没想到这么多,等以后更新。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
整明白《C++ Primer》,对C++有一个感性的认识之后,你可以去看侯捷翻译/写的几本书比如Effective系列、《STL源码剖析》,甚至对于没什么人用的MFC,你也可以看下《MFC九(shen)浅(ru)一(qian)深(chu)》,看下上个世纪的业界的C++程序员都是怎么样来用C++这门语言的。然后,可以看看《Inside C++ Object Model》,深入理解下C++。然后,对C++已经有了一个理性的认识之后,就可以再拿回来《C++ Primer》,顺便再翻翻《Thinking In C++》,查查C++标准什么的,仔细琢磨琢磨自己究竟能用C++干什么。至于模板元、FP什么的,题主看完这些书自然会知道自己有没有兴趣接触的。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
最好用的工具:profiler
我身边的这位大牛写程序的方式是:花很多时间设计好架构,然后以最快最易读的方式写出实现,然后profiling,深挖瓶颈再做改进。一开始就考虑细节设计是学生常犯的错误。

最大的鸿沟:多线程
世界上只有两种程序员,一种能左右互搏,另一种不能叫自己程序员。如果不能玩转多线程设计,还是转行做其他有前途的职业好些,比如很多人就回学校当了老师教编程。


最大的挑战:大型多模系统的架构设计
出色的架构师好似乐队的指挥,他们懂得一个很现实的问题:不同的模块是不同的人写出来的,他们能力参差,相互可能不熟,甚至没有见过,更有甚者相互敌视。架构师必须有威望,不然各个组都会找架构师抱怨自己的模块活儿太多可以让别的模块分摊点儿。架构师必须有领导才能,不然上线后出了问题各个组会相互推脱踢皮球。

所以架构并不只是程序和程序怎样沟通,还有不同组的人沟通。好的架构可以让不同模块指责分明,不同组的人分工明确,这不仅有利于初期功能的实现,对之后的系统健康的维护和成长也是至关重要。这一点在学校是学不到的
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
“以前觉得,反正要写程序,只要往死里写,总是可以写出来的。”

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Synchronization (Windows)

Processes and Threads (Windows)


把这两个都看完(特别是文字部分),然后补补操作系统,你就学会了任意语言的多线程编程了,再也不局限于C++


知乎用户
看这个之前需要先看windows程序设计吗
当然是要会一点的

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

先看操作系统里面的多线程和多进程,个人推荐《现代操作系统》,里面会简单的使用pthread。如果基本理论都懂,你可以直接看《c++标准库》,这个里面有一章讲c++的并发编程,讲了标准库怎么用,有哪些注意的。最全的估计还是c++ concurrency in action了,这本是标准库那本书推荐了的。这几本书都是和操作系统无关的,Linux和Windows下用法一样。我当初是先会了Windows下的并发编程,刚看C++的还有些不习惯。

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

The C++ Standard Library 2nd介绍了C++11中添加的并发特性
《Windows核心编程》更是介绍多线程编程的好书,Jeffery Richter专注多线程一万年,CLR via C#也介绍了多线程编程

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////



0 0
原创粉丝点击