FreeOZ论坛

标题: C++会被C#取代吗? [打印本页]

作者: dark008    时间: 30-11-2009 02:33
标题: C++会被C#取代吗?
各路强人好!在编程方面我是很菜的新手,平时只会玩玩嵌入式系统的C,还是很菜的那种,现在在补习windows编程,学的是C++,但是发现好像C++相对C#来说太复杂了,各种函数+乱七八糟的调用简直就是天花乱坠,C#好像简单了很多,毕竟C#剽窃了C++和JAVA的精华

我不要求学得很牛,能编出大型系统软件,我只想能编出一些界面美观的控制软件,可以控制后面的硬件就可以了。我现在想直接从C#起步了,因为好像要实现同一个功能的话,C#需要的代码能少一大半。就像以前费了很大劲学汇编语言,到后面用的还是C,而且一看到汇编就头疼~~

诸位行家有什么建议吗?
作者: ubuntuhk    时间: 30-11-2009 03:21
标题: 回复 #1 dark008 的帖子
我觉得不会,C#局限在Windows平台上(至少目前如此),而C++可以移植到各种平台(当然还是Java可移植性最强,但是运行效率打了一定的折扣),我觉得C/C++会和C#/Java长期共存,不过应用层面的占有率可能会被C#和Java渐渐蚕食掉大部分份额。
作者: procoder    时间: 30-11-2009 08:54
原帖由 dark008 于 30-11-2009 02:33 发表
C#好像简单了很多,毕竟C#剽窃了C++和JAVA的精华 ...

互相抄袭,不是谁抄袭谁。java 5的特性 很多来自.net
作者: 四香油饼    时间: 30-11-2009 09:01
你怎么跟我一样啊,我连嵌入式都谈不上啊,只会单片机。哈哈,共同努力,我也在学c++,争取早日写出3000行代码!

我觉得还是c++好,现在很多单片机都有c++了,c#不知道,如果像ub说的,只能windows,那还是让他见鬼去吧。
作者: procoder    时间: 30-11-2009 09:02
标题: 回复 #2 ubuntuhk 的帖子
有道理。web和desktop会使用.net 和java多,而且dynamic language也多。
作者: yuba    时间: 30-11-2009 10:28
原帖由 ubuntuhk 于 30-11-2009 03:21 发表
C#局限在Windows平台上(至少目前如此)


已经有很多Linux下的软件是C#开发的了

Ubuntu 10.4会没有GIMP,但是还会有Mono
作者: jfding    时间: 30-11-2009 10:56
no way.
you can not expect everything based on .net platform.
作者: dark008    时间: 30-11-2009 11:55
原帖由 四香油饼 于 30-11-2009 09:01 发表
你怎么跟我一样啊,我连嵌入式都谈不上啊,只会单片机。哈哈,共同努力,我也在学c++,争取早日写出3000行代码!

我觉得还是c++好,现在很多单片机都有c++了,c#不知道,如果像ub说的,只能windows,那还是让他见鬼 ...


呵呵呵,我竟然能和饼叔这样的强人差不多,先自我陶醉一番先

不过嵌入式我其实最多算是入门吧,实打实来说的话,我也只会单片机~~,我其实想学windows编程主要是为了串联一堆仪器及后面的很多硬件等等,也为了到澳洲之后多一门技术更容易找工作。所以学C#不是为了直接用在硬件上,只是为了写出windows上的控制软件,这样的话当然哪一个语言方便我学哪一个,剩下的硬件部分好像只用C就够了。
作者: ubuntuhk    时间: 30-11-2009 17:57
原帖由 yuba 于 30-11-2009 10:28 发表


已经有很多Linux下的软件是C#开发的了

Ubuntu 10.4会没有GIMP,但是还会有Mono


Mono的身份比较尴尬,除非获得MS授权,我想不会有什么关键或重要的应用会用Mono来编译:

http://zh.wikipedia.org/wiki/Mono
Mono与微软的专利

人们对于微软能否采用专利摧毁Mono项目进行了大量的争论。其实,专利问题不在于已被提交到ECMA组织的核心技术或Unix/Gnome的专有部分,而在于由微软基于.NET Framework创建的技术,例如ASP.NET,ADO.NET和Windows Forms。这些技术在Mono中至今还没有被完全地实现,事实上,在开发Mono应用程序时也不需要用到,然而,在开发基于Windows平台的程序时却是不可缺少的。Mono团队将目标定为将这些技术纳入到项目中,并制订了一个三步走策略来处理它们:

   1. 采用其它实现方式来实现从而绕过专利问题
   2. 把包含专利的代码清除出项目
   3. 找出“现有技术(prior art)”从而将专利变为非专利

显然,第一个选项并不总是可行的。对于一些问题,例如那些与协同工作和交互相关的,可能就只有一种解决方案。由于这个相同的原因,尽管第二个选项总是可行的,它却可能导致一个开发出来的产品并不能作为.NET的替代品。第三个选项则是昂贵的,甚至不可能的,这需要一定程度的运气。

作者: yuba    时间: 30-11-2009 18:20
只想说C#不会局限在Windows平台

不探讨关键或重要应用会不会怎么样
作者: coredump    时间: 30-11-2009 18:22
C#有可能取代Java,不可能取代C++。即使C++消亡,也不会是C#的原因
作者: fishyoyo    时间: 30-11-2009 18:39
原帖由 coredump 于 30-11-2009 18:22 发表
C#有可能取代Java,不可能取代C++。即使C++消亡,也不会是C#的原因


同意,JAVA前景堪忧,等微软推出LINUX上的.NET运行平台,恐怕.NET要统天下了
作者: someonehappy    时间: 30-11-2009 18:46
有免费的.net平台和开发软件么。
作者: yuba    时间: 30-11-2009 20:12
原帖由 someonehappy 于 30-11-2009 18:46 发表
有免费的.net平台和开发软件么。


http://www.microsoft.com/exPress/

http://monodevelop.com/
作者: dark008    时间: 1-12-2009 02:14
原帖由 花蕾般的钟声 于 1-12-2009 02:02 发表
控制仪器,用LabVIEW,这家伙,,,便宜,实惠,量又大,,,,俺们都用它

熟悉C可以用CVI


呵呵呵,多谢!!我知道labview会方便很多,不过windows编程总要学的呀,而且学完windows编程之后再弄labview简直就是一马平川

主要也因为我现在labview都不会,不过我同学都告诉我Labview不难,等我搞定windows编程了再搞定它
作者: key    时间: 2-12-2009 00:45
看看我周围一群“仇视”M$的人,我就觉得.net对Java的威胁不大了。

Java在Swing时期出现过一个重大的发展问题,后来有了JSP,好一些;
RoR的出现让大量的Java/JSP开发人员流失,让Java开发出现了又一次低潮;
不过Java 1.5的语法改变,的确做出很大的改进,也引领了高级编程技术的发展(可能别的语言有更多这方面的特性,恕我见识不广)。
现在Java 7出来了,不知道能带来什么?

再看开发平台,NetBeans的确不错,可惜NetBeans的成功的同时,Sun倒下了。
再说,现在流行的Web开发方面,NetBeans和Dreamweaver的差距还很远。而Spring等提出的IoC架构,多少有点学究,
对于程序员来说,这种东西当然是好;但对于入门级的开发人员来说,这种晦涩的结构可能会带来很大的问题。
Web开发也在这个时候进入一个全面性的动态开发时期,现在还写几行JSP响应,都不好意思出来见人了。
象 GWT 这样的大规模改变Web开发模式的开发平台,是否会大行其道?如果能,Java的地位会进一步得到巩固。
因为,个人认为,没有哪个语言比Java更适用于纯服务器的开发(不要和我说C++,这东西先简化一下语法吧,连我都头痛)。

Java应该怎样发展,我个人的看法还是:进一步简化,进一步进化。比如 try { fileReader.close(); } catch(IOException e){ e.printStack(); }
这类代码应该尽量减少。Java到目前为止都不能做到安全析构,这是一个重大的问题。听说Java 7有改进,但我记不真切。
另外,Java编译出来的bytecode是否应该考虑一下提高反编译的难度呢?任何人都知道java反编译存在安全问题。

Anyway,即使Java倒了,对我的影响也不大。
语言而已,工具而已。我来澳之前本来就是写C的,现在C不写了,
也不见得是什么大不了的问题。哈哈

原帖由 fishyoyo 于 30-11-2009 18:39 发表


同意,JAVA前景堪忧,等微软推出LINUX上的.NET运行平台,恐怕.NET要统天下了

作者: dark008    时间: 2-12-2009 01:09
原帖由 .........(不要和我说C++,这东西先简化一下语法吧,连我都头痛)........


兄台是牛人 , 多谢指点,就冲着你那句话,我肯定选择C#,不学C++了。

不过目前我又调整策略了,先搞定labview,再学C#,倒不是我又道听途说悟出了什么道理,只是现在公司一个项目需要急用到labview提供的迅速构建控制测量系统的功能,等我把这个项目搞定了,labview也就熟了,到时候再学C#。
作者: key    时间: 2-12-2009 07:12
你的标题有点标题党的意思。
你要不要学C++和C++会不会被取代是两回事。

你说的各种函数和乱七八糟的调用,只是一些低层的API库的问题,
如果你有一些合适的高层API库,C++也可以在三两个语句中实现你要实现的东西。

学一种语言,就要认认真真的学习其编程理论、应用方法。如果C#你用起来顺手,起步快,这当然是好,
但你还是需要好好把C#相关的理论掌握好,至少包括C#面向对象编程的概念、算法、设计模式,这是一方面;
另一方面,你应用在Windows上,就需要把相关的界面API、控制API掌握好。

你有C语言的基础,学其他语言都不应该觉得难。我之前给饼叔说过3k行程序的问题,你可以参考一下。



原帖由 dark008 于 30-11-2009 02:33 发表
各路强人好!在编程方面我是很菜的新手,平时只会玩玩嵌入式系统的C,还是很菜的那种,现在在补习windows编程,学的是C++,但是发现好像C++相对C#来说太复杂了,各种函数+乱七八糟的调用简直就是天花乱坠,C#好像简单 ...

作者: xblues    时间: 2-12-2009 08:56
提示: 作者被禁止或删除, 无法发言 本着学习的目的,都看一点,有啥机会就用啥。不同的语言,重要的是思想。
看程序员,3 5 年转换一次平台,2 3年款一个语言都是正常的,有什么机会用什么。

自己练习编程的话,C#相对容易一些,而且真的可以写出来可以使用的程序啊。
作者: dark008    时间: 2-12-2009 11:57
标题: 回复 #19 key 的帖子
多谢多谢!!!兄台和饼叔说的3000行程序在哪?有链接吗?
作者: 浪沧孤客    时间: 2-12-2009 12:10
貌似,偶当年学C怎么学都学不会
现在学JAVA感觉貌似比C相对容易点
JAVA是我学的第2种语言,
第一种是汇编,完全不会编,纯为了应付考试
JAVA会被C#取代么?
作者: chenyi1976    时间: 2-12-2009 12:56
提示: 作者被禁止或删除, 无法发言 什么时候C#移植到其他平台比如Linux,或者Windows把其他操作系统全部赶尽杀绝,才具有这种可能性。。。
作者: 四香油饼    时间: 2-12-2009 13:58
原帖由 dark008 于 2-12-2009 01:09 发表


兄台是牛人 , 多谢指点,就冲着你那句话,我肯定选择C#,不学C++了。

不过目前我又调整策略了,先搞定labview,再学C#,倒不是我又道听途说悟出了什么道理,只是现在公司一个项目需要急用到labview提供 ...


靠,立场不坚定啊,我坚定不移地学c++
作者: 四香油饼    时间: 2-12-2009 14:11
原帖由 dark008 于 2-12-2009 11:57 发表
多谢多谢!!!兄台和饼叔说的3000行程序在哪?有链接吗?


3000行:http://www.freeoz.org/bbs/thread-869187-1-2.html
作者: woodheadz    时间: 2-12-2009 20:31
即便是在windows平台上开发,也有C++能做而C#不能做的事,比如开发DirectShow的SourceFilter。
我用C#这么多年,还是时不时要回去用C++做点COM接口什么的。 多数时候不是C#做不了,而是C#在某些场合确实不大方便,比如调用某些复杂的非托管代码什么的。
C++会用得越来越少,也许有一天会消亡,但引用下楼上的话“即使C++消亡,也不会是C#的原因”
作者: ingeer    时间: 3-12-2009 09:27
即便是在windows平台上开发,也有C++能做而C#不能做的事,比如开发DirectShow的SourceFilter。
我用C#这么多年,还是时不时要回去用C++做点COM接口什么的。 多数时候不是C#做不了,而是C#在某些场合确实不大方便,比如调用某些复杂的非托管代码什么的。
C++会用得越来越少,也许有一天会消亡,但引用下楼上的话“即使C++消亡,也不会是C#的原因”


放心C++不會消失,除非CPU能直接執行CLR的代碼。。
作者: 大杨树    时间: 25-1-2010 17:20
原帖由 ingeer 于 3-12-2009 09:27 发表


除非CPU能直接執行CLR的代碼。。

这个好像不是什么难事
作者: ubuntuhk    时间: 25-1-2010 21:30
原帖由 大杨树 于 25-1-2010 17:20 发表

这个好像不是什么难事


M$经常改框架,如果真要这样的话,很不环保的,大批CPU要经常无法升级而被抛弃
作者: allosaurus    时间: 25-1-2010 23:26
原帖由 大杨树 于 25-1-2010 17:20 发表

这个好像不是什么难事


技术上不是难事,不过商业上难度很大。

另外说到语言,如果一定要评价的话,必须放到具体的应用领域里去讨论,否则这种讨论会演变成类似宗教信仰的争执,没什么意义。以下是我对各种语言的一点浅见:

总的来说,我倒是觉得C++将来的情况将会和现在C很类似,到了一定程度降不下去也升不上来,理由是:

1)对存储容量、低功耗的应用,比如工业控制中的大规模传感器网络,这些设备主要通过电池供电,在工作时需要保持低功耗,C和汇编还是无法取代的

2)对工业现场总线的管理集成或者借口设备,比如BACnet设备,C++和嵌入式Java将会长期保持均衡,因为这些设备具备更大的存储空间和更高的处理能力,但是系统更加复杂,所以更多的会使用面向对象特性的语言进行设计,使用C++的好处是执行效率更高(不要和我说啥啥证明Java的执行效率有时候比C++更快什么的,在直接面向硬件的层面,Java的效率和C++还是有很大差别的),但必须自己编写更多的底层代码,Java的好处就是开发效率会更高,但必须捆绑Java平台部署到设备上,另外对设备的硬件要求也更高一点

3)在Windows桌面业务应用层面,C#和C++将保持主流,理由如下:

  (1)C#:我个人感觉.net平台就是一个升级版的COM+平台,而C#语言表面上看是一个模仿Java的面向对象语言,但实际上更应该是摆脱了ATL那种复杂C++库的用于开发基于组件(以前是COM/DCOM,现在可能是.net组件)的专用系统语言,从微软对ATL的演化中,也能看出这种迹象,比如说attribute的使用,曾经在ATL中一度支持过,但后来不再投入,转而开始打造.net系统,并最终在C#中很好地实现了这个特性,还有微软的API演化中也能看出这种走向(比如一开始仅仅提供C接口的DLL,后来尝试使用C++做代码级的包装,如MFC,再后来的很多库,比如DirectX等,都以COM的方式提供,现在在vista和Windows7中更是集成到了system名字空间中);现在尤其是WPF和WCF等新一代标准和.net默认在vista和Windows7中集成以后,更是表明了微软对.net和C#的定位;

  (2)C++:在编写一些硬件贴近的项目时,C++还是很难替代的,比如说:游戏引擎、系统驱动(这方面的应用,C也是一个可替代的选择),另外一些需要维护Windows和Linux两个平台的项目(比如Firefox)C++也会保持一定份额。

  (3)特别提及:Python。其实不管是当年的VB+COM还是后来的ASP+ActiveX,还是后来失败的HTA还是,现在正在使用的WinForm/WPF+C#(利用委托和事件连接UI和后台),其核心的编程思想就是前台易变部分,使用一种类脚本语言来编写,后台使用系统语言,划分成二进制模块(dll、系统服务或者.net组件)编写,这种思想在Unix和开源体系中则是使用脚本语言来实现的。所以我在这里特别提一下Python,其背后的思想则是,类似VB,使用Python编写界面和一些易变的高端业务,但是性能相关或者核心业务模块,使用C++编写,然后通过Python和C++的通讯机制(比如使用Boost库的Python库)来连接。鉴于此,Python在本地开发(不仅仅是Windows)中也会占据一定的位置。另外,使用Python的另一个好处是,可移植到Linux平台,并且Python在一定程度上也弥补了C++系统库不足的缺点。

4)在基于数据库的商业应用领域,Java还将保持统治地位,但这和语言本身关系不大,决定因素是因为Java在这方面的成熟框架比较完备,另外Java的发展已经让它非常适合Web服务端开发,而基于数据库的商业应用大多数是BS结构的,所以这也进一步增强Java的市场份额。不过这主要是对大型项目来说,对中小型项目的话,PHP(for Linux,基于Apache+MySQL)和ASP.net(for Windows,基于IIS+SQL Server+.net)可能份额比Java还高一点(个人观点,未经证实)
作者: uniwg    时间: 25-1-2010 23:43
标题: 回复 #30 allosaurus 的帖子
FACEBOOK用PHP的,你说这个算中小型项目。腾讯也用PHP,算中小型吗‘
作者: allosaurus    时间: 26-1-2010 00:01
原帖由 uniwg 于 25-1-2010 23:43 发表
FACEBOOK用PHP的,你说这个算中小型项目。腾讯也用PHP,算中小型吗‘


你怎么理解的?我哪句说“PHP”---只能---做中小型?

[ 本帖最后由 allosaurus 于 26-1-2010 00:07 编辑 ]
作者: flyspirit    时间: 5-2-2010 11:23
我C++和C#都用过,发表下自己看法。

以LZ的情况,绝对应该用C#,而不是去学C++。C++的优点在于:

1。速度快
2。灵活
3。可进行底层操作

但是缺点很明显

1。难学,就一个指针够你学半天。
2。难用,你会经常发现自己满地找牙一般找哪里忘记调用Delete,而导致内存溢出。
3。开发周期长

如果你做嵌入式开发或大型系统开发,而且自己熟悉Unix/Linux环境,可考虑C++。

否则绝对放弃,Windows环境下用C++做界面开发,应用开发是没有希望的。
作者: flyspirit    时间: 5-2-2010 15:41
晕,你不是问C++和C#么?怎么又转到Java去了?
作者: uniwg    时间: 5-2-2010 15:51
现有的技术如果浪费了,就是对不住自己。上杆子去学什么新的东西,到这就是浪费。你应该推销自己会的东西,否则就在国内呆着吧。AU不是一个重新开始的地方,10年前也许可以。
作者: dark008    时间: 5-2-2010 16:14
原帖由 flyspirit 于 5-2-2010 15:41 发表
晕,你不是问C++和C#么?怎么又转到Java去了?


呵呵呵呵呵,那是之前的问题了,在开始学东西的时候需要知道方向,所以需要全方位了解很多东西才能选择正确的途径。就比如我如果没有睁开眼睛接触更多信息的话,我现在还在心甘情愿的为和谐社会做一颗螺丝钉。

其实我最开始用的是labview,之后做了一个项目之后发现labview还是有很多不足(虽然很多功能还是非常吸引人),而且太贵了一点。

之后在选择C#和Java的时候犹豫了一段时间,选择C#就注定跟着M$走了,从小到大就被party牵着鼻子走,让我对这种前景感到恶心,再加上我对linux也很感兴趣(即使从技术上说,Linux的稳定性也比M$的东西好很多),所以最后选择了Java。C#和Java比较接近,以后即使M$统一江湖,转到C#也不会很难。

C++不考虑学了,太复杂了,如果不是玩硬件操作的话,完全是在折腾自己。

其实语言都只是工具,工具再灵巧,根本想不出要做的东西也没用啊,所以我现在只需要挑一个顺手一点的,更重要的是知道怎么用这个工具去做出东西来。
作者: dark008    时间: 5-2-2010 16:31
原帖由 uniwg 于 5-2-2010 15:51 发表
现有的技术如果浪费了,就是对不住自己。上杆子去学什么新的东西,到这就是浪费。你应该推销自己会的东西,否则就在国内呆着吧。AU不是一个重新开始的地方,10年前也许可以。


学习应该是终身的过程吧?就像Bill Gates现在在研究生物学和医学,就是为了更好的管理他的基金会,将钱投到更有用的领域。

我觉得只推销自己会的东西应该不是一个好的idea,对我来说,未来的老板花钱购买我的脑力为他劳动,他就是我的客户,客户永远是对的。所以我不会跟客户说我只会这项技术,你要不要随便吧,这样我的市场会小很多很多。即使退一步来说,现在的弱项,也要努力让它变成强项,而不是做不好就算了。
作者: atelier    时间: 5-2-2010 17:00
做C后台编程的飘过!
也接触过Java,C++和C#,比较喜欢java和C#,写起来相对容易。
作者: flyspirit    时间: 5-2-2010 18:39
原帖由 dark008 于 5-2-2010 16:14 发表


呵呵呵呵呵,那是之前的问题了,在开始学东西的时候需要知道方向,所以需要全方位了解很多东西才能选择正确的途径。就比如我如果没有睁开眼睛接触更多信息的话,我现在还在心甘情愿的为和谐社会做一颗螺丝钉。
...


思路很清晰, Java+Linux也很不错的
作者: dark008    时间: 5-2-2010 18:49
原帖由 flyspirit 于 5-2-2010 18:39 发表


思路很清晰, Java+Linux也很不错的


呵呵呵呵,多谢鼓励,其实我的本行是控制方面的工程师,用Java+Linux只是为了做出Linux平台下的控制系统(比windows稳定+便宜很多,可靠性应该不如PLC,但是功能不是PLC能比的),所以现在主要精力投入在软件上面了。但是Java的水真的不是一般的深呀 ,这也从另一方面证明了Java的强大。

不过去澳洲之后真正做哪一行就不好说了,也许做软件的机会多一点就专门做软件,做工程的机会多的话就专心做工程,不过多学一些有用的东西不是坏处,活到老,学到老嘛。
作者: flyspirit    时间: 5-2-2010 22:37
我也相信"活到老,学到老“。各行各业都是这样。

Java经过10多年发展,已经非常成熟了,需求量也大,是个很不错的方向。有很多框架要学习,不过对你来说应该不是问题。

希望早日登陆澳洲。




欢迎光临 FreeOZ论坛 (https://www.freeoz.org/ibbs/) Powered by Discuz! X3.2