我是初学者,不懂c++。我该怎么学?
简述C和C++的学习过程。小哥老师总是被同学问怎么学C和C++才不至于无所适从,不至于乱学。想了一下,这里是一个大概的回复。作为一家人,欢迎拍砖。1,可以考虑先学C。很多时候,学习语言的目的不是成为语言专家,而是成为解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值会体现在客户的价值上,而不是语言好不好。C++是C的面向对象解释,C++为C扩展了大型工程应用和复杂系统结构的组织控制方法,但是,我觉得C++骨子里还是C。毕竟要解决具体问题,每个函数都是用C写的,还是面向过程的。所以,想学好C++,我建议你先学C,先学解题能力,再讨论解决大问题的能力。就是先学会走,再学会跑。2.在学习C的过程中,一定要了解结构化的编程思维。为什么?我在前面的一篇文章里说过,软件语言的开发过程就是一个数据私有化的过程。大型工程应用强调高内聚、低耦合和模块化设计,保持代码的最大灵活性和安全性。这是现代工程发展的核心和灵魂。所以用C语言入门,了解结构化开发思维,是一个非常方便的方法。因为C的功能本来就是准备重用的。同时,从cpp内部全局变量和私有变量的区别及其使用原则中,我们可以学到很多结构化的开发思维。3.开始学习C++ C++并不难。很多人觉得C++难学,其实是因为它提供了很多概念,尤其是对象,很难理解。但是,这么多年过去了,我已经淡化了这个问题。我认为面向对象是相对面向过程的,这只是结构化编程的一个具体体现,是编译器提供手段迫使程序员遵循数据私有化的一个例子,C++和C的关系核心也无非如此。现在让我们回到c,如果我们把一个全局变量写入一个cpp,而没有在对应的H文件中声明它,那么它是唯一可以使用的模块吗?是私有变量吗?有了这样的认识,班级能理解吗?4、在类的基础上学习C++的深入技巧,C++经过这么多年的发展,其实提供了很多深入的概念,看似很复杂,其实我觉得也很简单。比如模板,我的理解是“类的类”,你说是不是?现在模板理解了STL,ATL,静态模板库,动态模板库,是不是还很难理解?就是很多类,可以用来实现应用中需要的很多类,不需要程序员自己写。好了,STL明白了,泛型开发还有难度吗?所谓泛型开发,其实就是我做一个模板来定义一套算法规则。不过我希望这个算法规则可以进一步抽象,核心数据类型我不做限制。我可以使用各种数据,所以不需要只重写这部分算法。你认为这是事实吗?学到这里,C++和C,其实差不多就够了。再学一门语言,就是求全责备,太过分了。5、学习应用开发前面说过,学习语言的目的不是让别人认为自己是专家,而是写程序赚钱。所以学了语言学之后,要学应用开发。什么是应用开发?我懂一种语言,但是客户不懂。客户直接说。给我写一个Windows下的程序,要什么功能。为什么是Windows?因为我习惯了。好吧,很多情况下,应用开发要尊重客户的习惯。一般来说,语言要结合具体平台的开发,才能开发出有意义的应用,才能卖钱。嗯,一般来说,客户端是Windows系统,服务器是Linux,这些都是行业习惯。嵌入式系统就不好说了,有各种平台,比如Palm,S60,Linux,WinCE等等。这取决于你的目标客户。当我们选择目标平台的时候,有一个问题,选择哪种语言。很多时候,这就是学生和商业程序员的区别。学生一般没得选,知道什么就用什么,企业的程序员不行。我们必须首先评估需求,看看哪种语言更合适。如果我们不能,我们必须学习。好的,如果选择C和C++,那么就需要选择开发平台。不用说,Windows下最好的是VC,Linux下是gcc,其他都差不多。如果我们开发VC,使用C++,这个时候就需要考虑学习MFC了,因为这是微软的标准类库,至少在Windows平台下,它是最权威的。你看到我们从学习到MFC走了多少步了吗?MFC不是学C++必须要学的东西吗?6.学习MFC学习MFC,很多人一上来就开始看它的架构,很迷茫。我还是看不懂那个模块依赖图。呵呵,其实不是。和学习语言一样,学习MFC的目的不是成为MFC的专家,而是用MFC开发Windows应用程序,为我们赚钱。看到了吗?MFC是手段,不是目的。目的是开发Windows程序。其实在Windows下,有一个非常标准的C接口叫做Win32API,是Windows的标准编程核心。所以学习MFC的真正目的是了解Windows程序的开发。建议可以先学习Win32API。看来我们又回到C了,呵呵。刚开始学C有用吗?7.Win32APi其实Win32API并不难学,因为虽然它很大,接口也很多,但并不是必须的。我们真的做一个简单的Windows应用,但是不需要那么多。做一个简单的对话,然后实现一个功能。其实你遇到的大部分界面功能都是以后常用的。熟练的记住常用的,就ok了。重点是此时通过WinMain了解Windows的事件机制,这是核心。其实就和死一样简单。以前你的程序,因为没有系统支持,很多事情都要自己做,比如检查鼠标键盘输入。你需要写一个无限循环,然后一直自己看着它,但是Windows说,不要做这些事情,我会比你做得更好。没事就去玩吧。我会把和你相关的新闻放在一个队列里,这个队列就是你的事件队列。没事就自己去找吧。如果有什么新消息,就做点什么。没事就好好玩。很简单,不是吗?当然,Windows是一个多任务操作系统。有时候,我们的逻辑需要并发函数。例如,当我在等待鼠标和键盘消息时,我需要查看打印机是否准备好了。在这里,我需要理解并行计算,它与语言和操作系统无关。这是另一个话题,这里就不多说了。可以自己去找线程开发的相关资料。看到了吧,要想学好Windows编程,其实我们需要学习的不仅仅是语言,还有操作系统,并行计算的原理,内存的原理,也许有时候还需要学习网络通信等很多知识,所以单靠学习语言是无法成为商业程序员的。一个合格的程序员要理解的东西太多了,要广泛学习。当我们理解了Win32API和基本的窗口编程之后,就可以回到MFC继续学习了。是不是有点递归返回?哈哈。8.回到MFC学习MFC是非常困难的,因为它封装了太多的细节,很难理解透彻。不过幸运的是,我们有侯老师对MFC的简单解释。下面我们来了解一下如何从Win32API的纯C编程转换到MFC的C++模式。看到这个是最快的。看完前六章,我已经学会了,这里就不多说了。9,COM COM,COM,COM,我最头疼了,呵呵。COM是一种远程过程调用,就是你请求的代码运行在另一个进程中,通过某种通信协议来回传递参数和结果。仅此而已。DCOM更进一步,服务器可以在另一台计算机上。在公司的发展中,大家可能会齐心协力。如果要合作的话,建议在Windows下多使用COM。(我个人喜欢socket通信。)简而言之,COM提供了一种跨进程通信甚至跨机器通信的机制。但是,为了传递各种参数,COM无所不能。它发明了智能指针,可以指向任何一种数据。同时,为了实现智能指针,它使用了大量的C++泛型设计。看到没,C++的基本功发挥作用了,ATL也用上了。学习COM的时候要注意一个接口的概念。因为开发人员是不同的人,而且调用程序和服务程序可能不是一个语言的,OK,所以不可能简单的提供一个C或者C++。h文件回答界面。所以COM提供了一个标准接口,用户可以在程序内通过查询获得可用的接口,然后用接口ID调用。累死人了。学习了COM之后,我们可以对ActiveX有更多的了解,然后再学习一点dll(动态链接库)就可以编写OCX控件了。总的来说,OCX控制是一个很好的设计,可以在任何地方使用。一个软件模块理想的开发是这样的,比exe灵活。10,没了。按照少林门派的说法,学完以上,你其实已经在18青铜阵中战斗过了,可以下山帮助智主,扫除汉奸,扭转乾坤,拯救万民。但是,关键是你有没有通过上面的过程学会学习方法,遇到新的东西就不难学了。这大概是武侠里的理解。有了这个基础,以后只要慢慢练,估计20年后,你会比天下英雄都厉害。呵呵,你不觉得吗?咻,我太累了。从
记得领养