c++到底有什么用?
本人在看CPrimer中文第四版学到了300页,学c++主要不是设计软件吗,为什么我感觉一点设计软件的内容都没有...
本人在看C Primer 中文第四版 学到了300页,学c++主要不是设计软件吗,为什么我感觉一点设计软件的内容都没有
展开
8个回答
展开全部
在我刚学C的时候,感觉和你是差不多的。就一个黑底白字的界面,除了做做简单的数学计算,还能干什么?
后来,我接触了单片机,渐渐的掌握了一些程序设计的技巧,当我自己写的程序能进行距离测定,并控制一个车跑的时候,感觉很好。所以那时我明白,C,能够用来做底层启动,执行逻辑指令。
再后来,我好好地学了下C++,感觉,C++这门语言在学的时候很糟糕,需要注意的细节和语法都是在是太多了。不过现在我对于C++的评价是:难学易用。尤其是其STL以及用来实现泛型编程的模板,让我感觉到了C++的魅力所在:既有C的运行效率,也有高级语言的开发效率。
那么C++能干什么呢?
我明白你的想法,想用C/C++或者java写出来功能强大的程序,就像我们平时玩的游戏,以及我现在正在用的Chrome浏览器,等等。但是,你要明白,C/C++是运行独立于操作系统的语言。也就是,C/C++并不是在语言本身中就整合了系统功能的。
你学了C++,那么想必你是知道new 以及malloc的。
new中,调用了malloc函数,而malloc函数则是能分配出内存空间的。
但是只要你想一想你就会明白,内存属于系统资源,如果你设计一个操作系统,会允许能在你的计算机上编写出一个能跨过系统,随意获取内存并修改内容的程序吗?如果一个系统能这样,那么肯定非常容易崩溃,比如dos。在dos上你是能随意修改显存的。
所以毫无疑问,malloc函数需要得到系统的支持,也就是所谓的API。(malloc调用HeapAlloc)
所以你说想学软件设计,首先,你要做的是,学习API,了解系统是怎么工作的,或者,你的程序在系统上是怎么运行的。不需要非常清楚,理解原理就可以了。
比如一般的windows程序,是基于消息来运行的。而消息来自于系统。当你的用户在你的程序上操作时,是借由操作系统来通知你的程序用户执行了什么操作。而不是你想怎样就怎样的。
你在某个程序上按下了button键,这个最先受到通知的是操作系统,操作系统判定鼠标的点击位置,然后再确定这个位置在哪,属于哪个程序,在哪个程序的什么位置上,属于哪个按键,亦或什么都不是。这些工作都是由系统来支持的。
系统支持是很必要的。别的不说,如果没有这些系统的支持,给你一周时间,整个系统资源都向你开放,让你自己用C++写一个带有滚动条的windows窗口都未必能做到。
所以你想学软件设计,我的建议是,先好好了解下你的软件要运行的系统,以及这个系统上的程序是怎么运行的。
另外,对于一个语言的掌控能力很重要。如果你写上100行代码要调上1个小时的语法错误,还是别想什么软件设计,看书去吧。
后来,我接触了单片机,渐渐的掌握了一些程序设计的技巧,当我自己写的程序能进行距离测定,并控制一个车跑的时候,感觉很好。所以那时我明白,C,能够用来做底层启动,执行逻辑指令。
再后来,我好好地学了下C++,感觉,C++这门语言在学的时候很糟糕,需要注意的细节和语法都是在是太多了。不过现在我对于C++的评价是:难学易用。尤其是其STL以及用来实现泛型编程的模板,让我感觉到了C++的魅力所在:既有C的运行效率,也有高级语言的开发效率。
那么C++能干什么呢?
我明白你的想法,想用C/C++或者java写出来功能强大的程序,就像我们平时玩的游戏,以及我现在正在用的Chrome浏览器,等等。但是,你要明白,C/C++是运行独立于操作系统的语言。也就是,C/C++并不是在语言本身中就整合了系统功能的。
你学了C++,那么想必你是知道new 以及malloc的。
new中,调用了malloc函数,而malloc函数则是能分配出内存空间的。
但是只要你想一想你就会明白,内存属于系统资源,如果你设计一个操作系统,会允许能在你的计算机上编写出一个能跨过系统,随意获取内存并修改内容的程序吗?如果一个系统能这样,那么肯定非常容易崩溃,比如dos。在dos上你是能随意修改显存的。
所以毫无疑问,malloc函数需要得到系统的支持,也就是所谓的API。(malloc调用HeapAlloc)
所以你说想学软件设计,首先,你要做的是,学习API,了解系统是怎么工作的,或者,你的程序在系统上是怎么运行的。不需要非常清楚,理解原理就可以了。
比如一般的windows程序,是基于消息来运行的。而消息来自于系统。当你的用户在你的程序上操作时,是借由操作系统来通知你的程序用户执行了什么操作。而不是你想怎样就怎样的。
你在某个程序上按下了button键,这个最先受到通知的是操作系统,操作系统判定鼠标的点击位置,然后再确定这个位置在哪,属于哪个程序,在哪个程序的什么位置上,属于哪个按键,亦或什么都不是。这些工作都是由系统来支持的。
系统支持是很必要的。别的不说,如果没有这些系统的支持,给你一周时间,整个系统资源都向你开放,让你自己用C++写一个带有滚动条的windows窗口都未必能做到。
所以你想学软件设计,我的建议是,先好好了解下你的软件要运行的系统,以及这个系统上的程序是怎么运行的。
另外,对于一个语言的掌控能力很重要。如果你写上100行代码要调上1个小时的语法错误,还是别想什么软件设计,看书去吧。
更多追问追答
追问
有推荐的好书吗?
追答
把C++学好的话,你看的书是一本,然后,EffectiveC++也很不错。
windows相关的书,深入浅出MFC, windows程序设计(第五版), windows核心编程,WindowsAPI开发详解。
另外有本《C专家编程》也很不错,虽然书很老了(94年),但是里面很多东西还是让我受益匪浅。
另外学习这些东西是一个比较漫长的过程吧,而且学起来比较辛苦。尤其是那个C++的一部分语法。
在某个领域,你看的书越多,经验越多,理解就越深,水平自然就更高。
要是一个人持续使用某种语言工作超过30年,只要不是智商有问题,那么毫无疑问,肯定是世界级的大师。
展开全部
这可能是因为你对软件的理解还有点偏颇。软件不仅包括你平时玩的游戏,用的文字编辑工具,还有为这些游戏和工具提供底层支持的中间件和底层驱动。
举例来说,你玩个快打的游戏,角色一发招就会有“嗨!”的喊声。那么这个喊声最终是通过音箱发出来的,而控制音箱出声音的是声卡,控制声卡的是总线,对总线发布寄存器配置指令的,就是底层驱动。这个底层驱动代码本身非常无聊,就是你在C++ primer中看到的那些类,继承,方法调用等等。
那么你用C++写的驱动会为中间件middleware提供接口,而游戏引擎会通过自己的框架调用中间件接口。这样下来,游戏就能玩了。
如果你想编制绚丽的游戏或者其他应用软件本身,作出控件和其他动画或者别的效果,就要用上层的编程工具。起码是java,甚至有时候是一些更加上层的封闭引擎。如果你的理想是做上层,那么等你看完C++以后(反正已经看了300页,英文版一共才800页,如果我没记错的话),找本java入门的书看看,立刻就有“写软件”的感觉了。
举例来说,你玩个快打的游戏,角色一发招就会有“嗨!”的喊声。那么这个喊声最终是通过音箱发出来的,而控制音箱出声音的是声卡,控制声卡的是总线,对总线发布寄存器配置指令的,就是底层驱动。这个底层驱动代码本身非常无聊,就是你在C++ primer中看到的那些类,继承,方法调用等等。
那么你用C++写的驱动会为中间件middleware提供接口,而游戏引擎会通过自己的框架调用中间件接口。这样下来,游戏就能玩了。
如果你想编制绚丽的游戏或者其他应用软件本身,作出控件和其他动画或者别的效果,就要用上层的编程工具。起码是java,甚至有时候是一些更加上层的封闭引擎。如果你的理想是做上层,那么等你看完C++以后(反正已经看了300页,英文版一共才800页,如果我没记错的话),找本java入门的书看看,立刻就有“写软件”的感觉了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++是一个功能比较强的语言,就像楼上说先学写字在写作文一样,你要先掌握编程的基础,譬如输入输出、数据结构和一般的有一定逻辑要求的算法,才能编出一些简单的程序(事实上软件哪有那么容易编的就算是易语言你也要学下编程的基础啊)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C++是门功能相当强大的面向对象编程语言,要要真正体会到他的强大之处你必须先要熟练的掌握它,它当然是可以用于软件设计的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-07
展开全部
软件哪有用C++写的,现在的软件都是易语言写的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询