C ,C++和C#

 没有什么语言能比C++更加贴近Windows自己了,这一点也是不能否认的。若是哪一天C#也能写驱动的时候,那么C++就真的会淘汰了(这天可能不会太远又或者很遥远)。

  C#能作的,C++不必定都能作,C++能作的,C#也不必定都好作,因此常常看到有人拿这2个语言对比,我以为确实没什么必要。

  C#繁杂的调用Win32 API的方式,确实让人很不舒服,C++这一点作得比它好。可是,C#强大的网络操做,代码量大大地低于C++,咱们抛弃不用Socket,改用WinInet或是MFC中的封装好的网络类,好比CHttpFile,仍是没C#简单。C#的傻瓜式的类库操做和面向对象编程的完美特性,确实让其成为了Windows平台上最受欢迎的语言。也许,是微软想将Win32 API渐渐地所有封装到C#的类库中去,我感受微软有这个意图,也许未来C#就不须要调用那些繁杂的Win32 API了,类库中均有提供也说不定。

  咱们为何学VC?这点我曾经也问过本身。圣经上说:你必须知道真相,真相会使你自由。咱们学VC是为了自由,不受微软的框制。微软经过种种的FrameWork让你陷于其中,你以为,哇,原来编程是这么容易啊,几句话就能搞定。你想知道微软在内部干了些什么呢?你不知道,固然,你若是认为你不必知道,这个我彻底赞同,我后面会说。就说杀进程吧,C#中不经过Win32 API就那么一种方式,经过System.Diagnostics.Process找到进程,而后Kill之(若是我说的不对,使用C#的朋友请指正),而C++中,咱们彻底有无数种选择,就说不邪恶的,TerminateProcess,邪恶点的呢?不可胜数。进程内存填0,卸载模块,消息洪水,句柄强制关闭,强制释放它的堆,太多太多了,甚至我注入进去,内部Raise一个异常,它也就挂掉了。保护进程, 无论内核下仍是应用层,C#确定是作不了的,C++有本身高端的地方,其余语言没法涉足。你见过C#作的杀毒软件吗?

  C#,极其简易的界面操做,使人看着很舒服的编码,他有太多的地方,C++根本没法涉足。拿C++作Web Services除非是大脑进水,用C++作网络蜘蛛,也根本是无聊之举,要么就C#,要么就拿Python来干(我的漏见),超级大量的数据,拿垃圾回收基本上为0的C++去作,简直就是自找麻烦。C#的WebForm,和Jsp占据着Web的大片江山,C++能吗?不能。C#是一门博大精深的语言,类库强大到变态,基本上能够这么讲,因此用C++的朋友也不能随便贬低C#程序员,C#的程序员的层次分得比C++多不少,高层的也是象牙塔级别的。C#的架构师,那种恐怖的实力,C++中级程序员是没法想象的。C#更加注重于软件工程的应用,各类设计模式的使用,C++则注重于实现功能。

  C#的前景是不错的,我我的很看好它,MSDN 杂志每期的文章可能有8成是C#,C++不算不少,微软的重心可能在C#上,但愿C#逐渐能取代C++。可是C++会这么容易被取代?不可能。就像一个搞管理的,你让他接管搞开发的人,让他从干同样到同时兼干这二样,会有这么简单么?c++的生命力至少还要7-8年,以后才会渐渐的淡出,可是只要追求自由的人存在,C++就不会消失;只要操做系统一天是用C++写的,C++就不会消失。

  选什么语言,随本身高兴,须要哪一个用哪一个,这是不矛盾的。开发数据库,我倾向于用C#,作Windows底层,我确定是C++,都掌握下没有坏处。VS2010中C++的新特性各位同胞能够关注下,不知道会加入什么,VC2008的特性我探索了这么久,尚未探索结束。C#是愈来愈好用了,Linq to Sql让不懂数据库的人都能去操作数据库了,辅助一些第三方类库,能发挥强大的威力。彻底取代C++,等操做系统是C#写的,C#能开发系统中的一切组件的时候再说吧,至少如今C#还不能开发API,驱动吧?c++

 

 

 

C与C++的区别
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何经过一个过程,对输入(或环境条件)进行运算处理获得输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型可以契合与之对应的问题域,这样就能够经过获取对象的状态信息获得输出或实现过程(事务)控制。
因此C与C++的最大区别在于它们的用于解决问题的思想方法不同。之因此说C++比C更先进,是由于“ 设计这个概念已经被融入到C++之中 ”,而就语言自己而言,在C中更多的是算法的概念。那么是否是C就不重要了,错!算法是程序设计的基础,好的设计若是没有好的算法,同样不行。并且,“C加上好的设计”也能写出很是好的东西。
对语言自己而言,C是C++的子集,那么是什么样的一个子集?从上文能够看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所增强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。
再提升一点,在C++中,数据封装、类型这些东东已不是什么新鲜事了,须要考虑的是诸如:对象粒度的选择、对象接口的设计和继承、组合与继承的使用等等问题。
因此相对于C,C++包含了更丰富的“设计”的概念,但C是C++的一个自洽子集,也具备强大的功能,一样值得学习。


几点学习建议:
1.基本概念很重要。不管学C,仍是学C++,基本概念都是第一位的,也是比较困难的,但只有把握了基本概念才能把握总体脉络,才能居高临下。
2.C是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。
3.若是要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),从头作起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很。在我看来,学好C/C++是成为VC,BCB高手的必由之路。
4.不要妄想速成,必须得一个byte,一个bit的去抠,尽可能搞清楚每个问题。
5.几本好书:
机械工业出版社的那套“计算机科学丛书”从C到C++,到面向对象设计,包罗万象,都TMD是经典中的经典,并且价格公道,童叟无欺。
国内也有几本好书,谭老爷子的书好却是好,就是程序错误太多。强烈推荐清华周之英的《现代软件工程》(上、中、下),它是我所见到的国内少有的一本好书,精华的精华,要点的要点,细细品来,至少也属降龙十八掌等级的东东。


若是仍是有人想学习C/C++的话, 有一些小问题我仍是乐意解答的. 可是我认为学习C/C++是不重要的, 重要的是如何锻炼你的思路. 不要找一些连本身都搞不清的问题去作.

我认为虽然 "潭浩强" 同志有骗钱的嫌疑( 我手头就有一本几乎如出一辙的英文书 ), 可是, 是他把这本入门手册引入中国, 使无数程序员了解了C语言, 我想他的功劳也是不可磨灭的. 在< C语言程序设计 >这本书中全部的例子均可以用作锻炼思路的基石, 他对你们的编程是颇有帮助的. 我认为是值得一买的. 去思考课后的例子对你的编程颇有帮助. 不要小看一个一个简单的例子, 他们是你通往成功的道路.

当你基本可以掌握了上一本书中例子后, 你就要本身找一些例子程序去看. 开始多是看不懂, 可是只要努力就没有什么问题. 当你看过几个较大的例子以后, 你会茅塞顿开, ( 大量阅读例子程序是学习C/C++的捷径 ). 你会发现, 你的水平有了显著的提升. 你看的例子越多, 你对 Windows/DOS 了解的越多. 最好可以再看一些关于系统知识的书籍. 他会对你的编程颇有帮助的.

这是我学习C/C++的一点心得, 但愿对没有被我吓到而要继续学习C/C++的朋友们有一些帮助. 省得有些同志说我破坏中国软件人才的发展.

在最后我祝愿全部坚持学习C/C++的朋友们成功! 同时感谢阅读过我文章的同志们.

想学好C++,非学C不可!!!

今天我这么确定的在这里讲这番话,是不想初学者陷入到语言越新越好的误区,原本这个题目就不是很严谨,可是我有几句话必须讲讲,为C平反!!

C++与C有什么不一样呢?咱们如今一步步地来分析一下
1、类,类我并不说它有什么很差,可是对于初学者,它是一个累赘。类的封装使得初学者对程序产生厌倦,感到不适和麻烦。
2、引用,引用是C++中最臭屁的东西了,最好尽可能不要用它,我就是历来不用引用,除非万不得已。引用对于初学者就更容易产生混淆,不知道哪一个是引用,哪一个是变量。
3、函数的重载,初学者学函数的重载好像没什么坏处,可是,这会使初学者潜意识里对C语言的变量类型的重要性产生淡化,要记住C语言是对变量类型最敏感了的,变量的类型在C语言里的重要性是不言而喻的。
4、流操做符,和上面一样的道理,使得对变量类型的重要性产生淡化,何况,cin这个东东有点儿不怎么方便,有时会产生使初学者莫名其妙的结果。
5、操做符重载,典型的高级应用,初学者可能根本用不着,这个东东会让他们以为C++很难,门槛高,看不懂…………。
6、继承,以及虚函数,典型的模仿四不象,这种狗屁东西除了看起来深奥,实用价值很低………………。我怎么可能把某个类的类型的指针去指向另外一个不一样类型可是是继承关系的类,来实现什么动态联编,晕…………
………………还有些东东我就不发表评论了,如:new,delete操做符等…………

7、误区:以问答形式:
问:C++是面向对象化的而C是面向过程化的?
答:第二对,第一问错,C++并不是彻底面向对象化,真正的面向对象化的语言恐怕只有Java才算得上。
问:C++能实现C所不能的功能吗?
答:至少我尚未发现……
问:学了C再学C++有障碍吗?好比程序设计思想……
答:至少我尚未看见谁有此症状。
问:学了C再学C++又要重头开始吗?
答:不,C++下能够实现C语言的一切功能。
问:我学完了C必定还要学C++才能编程吗?
答:彻底不必。
问:C++比C好在哪里?
答:更加符合软件工程学
问:学完了C再学C++是否是很容易?
答:那要看你是否是真正的学完了C语言,我从C到C++就一个星期的睡觉前的时间看两眼书,而后就大彻大悟。再跑到这里来发表些狗屁文章了。


最近在网上看到了不少人的学习方法,本人很是不赞同。不少人都想一口吃个胖子,要学就想学最新的,好象没有人愿意再去学那些老的,旧的编程语言了。但大家能学的懂吗?不学TC2。0等那些较早的优秀编程语言,大家能理解的了VC6。0?若是你真的能,我宁愿作你的徒弟!真是奇怪,那些最基本的语言都不懂的人,怎么可能去理解那些最新的编程语言?我学编程有三年了吧。成绩也不算多,只有一个计算机四级证和一个高程证,但我以为我在学VC的时候还有不少的不明白的地方。没有人来教我,只能靠我本身,包括全部的成绩在内,我都是靠本身,我从不报班。学VC的半年多来,我想我已经基本入门,但依然有不少的困惑。刚开始学VC,就面临一个项目,我真的犹如笨蛋通常,四处吓摸,毫无头绪,最后勉勉强强才算作个差很少。学好VC再去学其余的高级WINDOWS编程,我想那真是垂手可得,毕竟WINDOWS的内部的不少东西都能直接被VC调用,你首先就能够对WINDOWS有个全新的认识,再去学其余的语言岂能不简单?

个人感受是,面向过程和面向对象,其实都很重要的,在VC里也依然须要面向过程,不少东西都是一环扣一环,没有面向过程的思想,怎么可能去编程呢?建议多去看看有关WINDOWS编程的书,但多数都是比较老的书呦!我依然记得当年成天进行TC编程的辛苦,但我依然很怀念当年的劳动付出,毕竟我得到了我想得到的一切——编程思想。我以为一个好的编程思想,绝对比你去学一门计算机语言好重要的多。要造成本身的编程风格。一个好的编程思想在你的头脑中一旦造成,学习什么语言都会很垂手可得,由于此时的你不在是简简单单的学习,而是来验证!程序员

 

 

C,C++,C#三者区别
继承关系是C->C++->C# C++彻底向C兼容,C程序几乎不用修改便可在C++的编译器上运行.C++也称为带类的C,在C的基础上增长了许多面向对象的概念.虽然是C的扩展,但 并不意味着C功能不如C++,最牛的操做系统是用C写的(不是C++哦).
C#是微软弄的一个东东,继承了C和C++的许多东西,但和二者基本上 已彻底不同了.你能够把它看成一种全新的语言来学.



发疯ing
[大师]
C语言是一种结构化编程语言。 它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不只具备丰富的运算符和数据类型,便于实现各种复杂的数据结 构。它还能够直接访问内存的物理地址,进行位(bit)一级的操做。因为C语言实现了对硬件的编程操做,所以C语言集高级语言和低级语言的功能于一体。既 可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具备效率高,可移植性强等特色。所以普遍地移植到了各种各型计算机上,从而造成了多种版本 的C语言。
下面是C语言教程的地址,想学的话能够去看看。
http://www.bc-cn.net/Article/kfyy/cyy/jc/

C++ 是在C的基础上改进后的一种编程语言,主要是增添了许多新的功能,难度也比C大,和C同样侧重于计算机底层操做,也就是系统软件的开发。 C#是在C++的基础上再一次改进后的编程语言,相比C++而言难度有所减少(微软是这么说的),侧重于网络和数据库编程。这3种都是编程语言,语法基本 上是同样的,不过具体的内容差异仍是挺大的。
VC++是一种编程软件,就至关于一个做业本,你学习了C++语言之后,就须要把这种编程语言写在一 个做业本上,也就是写在VC这种编程软件上,来实现你须要的效果。


C++是C语言的升级版
c是c++的子集,c是面向 过程的,c++是面向对象的

By:zhuzhumm

C 语言与 C++ 的区别有不少:

1,全新的程序 程序思惟,C 语言是面向过程的,而 C++ 是面向对象的。
2,C 语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而 C++ 对于大多数的函数都是有集成的很紧密,特别是 C 语言中没有的 C++ 中的 API 是对 Window 系统的大多数 API 有机的组合,是一个集体。但你也可能单独调用 API。
3,特别是 C++ 中的图形处理,它和语言的图形有很大的区别。C 语言中的图形处理函数基本上是不能用在中 C++ 中的。C 语言标准中不包括图形处理。
4,C 和 C++ 中都有结构的概念,可是在 C 语言中结构只有成员变量,而没成员方法,而在 C++ 中结构中,它能够有本身的成员变量和成员函数。可是在 C 语言中结构的成员是公共的,什么想访问它的均可以访问;而在 VC++ 中它没有加限定符的为私有的。
4,C 语言能够写不少方面的程序,可是 C++ 能够写得更多更好,C++ 能够写基于DOSr程序,写 DLL,写控件,写系统。
5,C 语言对程序的文件的组织是松散的,几乎是全要程序处理;而 C++ 对文件的组织是以工程,各文件分类明确。
6,C++ 中的 IDE 很智能,和 VB 同样,有的功能可能比VB还强。
7,C++ 对能够自动生成你想要的程序结构使你能够省了不少时间。有不少可用的工具如加入 MFC 中的类的时候,加入变量的时候等等。
8,C++ 中的附加工具也有不少,能够进行系统的分析,能够查看 API;能够查看控件。
9,调试功能强大,而且方法多样。

鉴于当下形势, 若是要学的话就学 C#

C# 与 C++ 比较的话,最重要的特性就是 C# 是一种彻底面向对象的语言,而 C++ 不是,另外 C# 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性 和强壮性都比 C++ 有很大的改进

C# 的设计目标是用来开发快速稳定可扩展的应用程序,固然也能够经过 Interop 和 Pinvoke 完成一些底层操做,可是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),仍是建议用 C++ 来写

C++ 不容许在一个构造函数中调用另一个构造函数(称为委派构造函数调用),而 C# 则容许。委派构造函数调用语法上很是天然和易懂,事实上, C++ 不提供这一特性并非出于语法上的考虑,而是出于资源管理的考虑(这样的事情对 C++ 来讲还有不少不少)。

C++ 的构造函数用于分配资源,而析构函数用于释放资源,构造函数和析构函数调用必须匹配,不然就打破了 C++ 的基本规则。若是容许委派构造函数调用,则显然会打破这一规则——构造函数被执行两次,而析构函数只执行一次。固然,对一些类,例如前面的那个 Point 来讲这不是个问题,可是从语言机制的角度讲这个特性可能属于“危险”的特性。注:在最新的 C++ 标准提议草案中,Herb 等人有一个关于容许委派构造函数调用的提案,固然这很大程度上是为了方便 C++ /CLI 绑定。

在 C++ 构造函数中,虚函数调用会被编译器自动转为普通函数调用,而在 C# 构造函数中容许进行虚函数调用。 C++ 这样处理天然有它的缘由——在 C++ 中,构造函数执行完成后对象才初始化好,对于多态对象来讲,也就意味着构造函数在背后执行了很重要的一件事情——初始化对象的虚函数表。

如 果咱们在基类的构造函数中调用了虚函数,则由于此时对象的虚函数表仍旧是基类的虚函数表,因此没法进行正确的虚函数调用。
也就是这个缘由,一般我 们应该避免在构造函数中调用虚函数,由于它违背了虚函数的语义。
而在 C# 中,在对象的构造函数执行以前对象的类型信息就已经初始化好了,因此能够进行正常的虚函数调用。

基本上,这些就是二者之间的区别算法

相关文章
相关标签/搜索