找回密码
 FreeOZ用户注册
查看: 4945|回复: 39
打印 上一主题 下一主题

[论坛技术] C++会被C#取代吗?

[复制链接]
跳转到指定楼层
1#
发表于 30-11-2009 02:33:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?FreeOZ用户注册

x
各路强人好!在编程方面我是很菜的新手,平时只会玩玩嵌入式系统的C,还是很菜的那种,现在在补习windows编程,学的是C++,但是发现好像C++相对C#来说太复杂了,各种函数+乱七八糟的调用简直就是天花乱坠,C#好像简单了很多,毕竟C#剽窃了C++和JAVA的精华

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

诸位行家有什么建议吗?
回复  

使用道具 举报

2#
发表于 30-11-2009 03:21:41 | 只看该作者

回复 #1 dark008 的帖子

我觉得不会,C#局限在Windows平台上(至少目前如此),而C++可以移植到各种平台(当然还是Java可移植性最强,但是运行效率打了一定的折扣),我觉得C/C++会和C#/Java长期共存,不过应用层面的占有率可能会被C#和Java渐渐蚕食掉大部分份额。
回复  

使用道具 举报

3#
发表于 30-11-2009 08:54:02 | 只看该作者
回复  

使用道具 举报

4#
发表于 30-11-2009 09:01:40 | 只看该作者
你怎么跟我一样啊,我连嵌入式都谈不上啊,只会单片机。哈哈,共同努力,我也在学c++,争取早日写出3000行代码!

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

使用道具 举报

5#
发表于 30-11-2009 09:02:58 | 只看该作者

回复 #2 ubuntuhk 的帖子

有道理。web和desktop会使用.net 和java多,而且dynamic language也多。
回复  

使用道具 举报

6#
发表于 30-11-2009 10:28:38 | 只看该作者
原帖由 ubuntuhk 于 30-11-2009 03:21 发表
C#局限在Windows平台上(至少目前如此)


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

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

使用道具 举报

7#
发表于 30-11-2009 10:56:38 | 只看该作者
no way.
you can not expect everything based on .net platform.
回复  

使用道具 举报

8#
 楼主| 发表于 30-11-2009 11:55:02 | 只看该作者
原帖由 四香油饼 于 30-11-2009 09:01 发表
你怎么跟我一样啊,我连嵌入式都谈不上啊,只会单片机。哈哈,共同努力,我也在学c++,争取早日写出3000行代码!

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


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

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

使用道具 举报

9#
发表于 30-11-2009 17:57:03 | 只看该作者
原帖由 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的替代品。第三个选项则是昂贵的,甚至不可能的,这需要一定程度的运气。
回复  

使用道具 举报

10#
发表于 30-11-2009 18:20:10 | 只看该作者
只想说C#不会局限在Windows平台

不探讨关键或重要应用会不会怎么样
回复  

使用道具 举报

11#
发表于 30-11-2009 18:22:49 | 只看该作者
C#有可能取代Java,不可能取代C++。即使C++消亡,也不会是C#的原因
回复  

使用道具 举报

12#
发表于 30-11-2009 18:39:58 | 只看该作者
原帖由 coredump 于 30-11-2009 18:22 发表
C#有可能取代Java,不可能取代C++。即使C++消亡,也不会是C#的原因


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

使用道具 举报

13#
发表于 30-11-2009 18:46:37 | 只看该作者
有免费的.net平台和开发软件么。
回复  

使用道具 举报

14#
发表于 30-11-2009 20:12:02 | 只看该作者
原帖由 someonehappy 于 30-11-2009 18:46 发表
有免费的.net平台和开发软件么。


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

http://monodevelop.com/
回复  

使用道具 举报

15#
 楼主| 发表于 1-12-2009 02:14:13 | 只看该作者
原帖由 花蕾般的钟声 于 1-12-2009 02:02 发表
控制仪器,用LabVIEW,这家伙,,,便宜,实惠,量又大,,,,俺们都用它

熟悉C可以用CVI


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

主要也因为我现在labview都不会,不过我同学都告诉我Labview不难,等我搞定windows编程了再搞定它
回复  

使用道具 举报

16#
发表于 2-12-2009 00:45:57 | 只看该作者
看看我周围一群“仇视”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要统天下了
回复  

使用道具 举报

17#
 楼主| 发表于 2-12-2009 01:09:54 | 只看该作者
原帖由 .........(不要和我说C++,这东西先简化一下语法吧,连我都头痛)........


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

不过目前我又调整策略了,先搞定labview,再学C#,倒不是我又道听途说悟出了什么道理,只是现在公司一个项目需要急用到labview提供的迅速构建控制测量系统的功能,等我把这个项目搞定了,labview也就熟了,到时候再学C#。
回复  

使用道具 举报

18#
发表于 2-12-2009 07:12:58 | 只看该作者
你的标题有点标题党的意思。
你要不要学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#好像简单 ...
回复  

使用道具 举报

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

自己练习编程的话,C#相对容易一些,而且真的可以写出来可以使用的程序啊。
回复  

使用道具 举报

20#
 楼主| 发表于 2-12-2009 11:57:54 | 只看该作者

回复 #19 key 的帖子

多谢多谢!!!兄台和饼叔说的3000行程序在哪?有链接吗?
回复  

使用道具 举报

21#
发表于 2-12-2009 12:10:06 | 只看该作者
貌似,偶当年学C怎么学都学不会
现在学JAVA感觉貌似比C相对容易点
JAVA是我学的第2种语言,
第一种是汇编,完全不会编,纯为了应付考试
JAVA会被C#取代么?
回复  

使用道具 举报

22#
发表于 2-12-2009 12:56:03 | 只看该作者
提示: 作者被禁止或删除, 无法发言
什么时候C#移植到其他平台比如Linux,或者Windows把其他操作系统全部赶尽杀绝,才具有这种可能性。。。
回复  

使用道具 举报

23#
发表于 2-12-2009 13:58:09 | 只看该作者
原帖由 dark008 于 2-12-2009 01:09 发表


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

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


靠,立场不坚定啊,我坚定不移地学c++

评分

参与人数 1威望 +15 收起 理由
dark008 + 15 呵呵呵,项目要紧~~

查看全部评分

回复  

使用道具 举报

24#
发表于 2-12-2009 14:11:25 | 只看该作者
原帖由 dark008 于 2-12-2009 11:57 发表
多谢多谢!!!兄台和饼叔说的3000行程序在哪?有链接吗?


3000行:http://www.freeoz.org/bbs/thread-869187-1-2.html

评分

参与人数 1威望 +15 收起 理由
dark008 + 15 多谢!!

查看全部评分

回复  

使用道具 举报

25#
发表于 2-12-2009 20:31:37 | 只看该作者
即便是在windows平台上开发,也有C++能做而C#不能做的事,比如开发DirectShow的SourceFilter。
我用C#这么多年,还是时不时要回去用C++做点COM接口什么的。 多数时候不是C#做不了,而是C#在某些场合确实不大方便,比如调用某些复杂的非托管代码什么的。
C++会用得越来越少,也许有一天会消亡,但引用下楼上的话“即使C++消亡,也不会是C#的原因”
回复  

使用道具 举报

26#
发表于 3-12-2009 09:27:21 | 只看该作者
即便是在windows平台上开发,也有C++能做而C#不能做的事,比如开发DirectShow的SourceFilter。
我用C#这么多年,还是时不时要回去用C++做点COM接口什么的。 多数时候不是C#做不了,而是C#在某些场合确实不大方便,比如调用某些复杂的非托管代码什么的。
C++会用得越来越少,也许有一天会消亡,但引用下楼上的话“即使C++消亡,也不会是C#的原因”


放心C++不會消失,除非CPU能直接執行CLR的代碼。。
回复  

使用道具 举报

27#
发表于 25-1-2010 17:20:41 | 只看该作者
原帖由 ingeer 于 3-12-2009 09:27 发表


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

这个好像不是什么难事
回复  

使用道具 举报

28#
发表于 25-1-2010 21:30:38 | 只看该作者
原帖由 大杨树 于 25-1-2010 17:20 发表

这个好像不是什么难事


M$经常改框架,如果真要这样的话,很不环保的,大批CPU要经常无法升级而被抛弃
回复  

使用道具 举报

29#
发表于 25-1-2010 23:26:17 | 只看该作者
原帖由 大杨树 于 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还高一点(个人观点,未经证实)

评分

参与人数 3威望 +41 收起 理由
andyyang + 20 谢谢分享!
大杨树 + 1 谢谢分享!
dark008 + 20 哇~~,强人!!

查看全部评分

回复  

使用道具 举报

30#
发表于 25-1-2010 23:43:18 | 只看该作者

回复 #30 allosaurus 的帖子

FACEBOOK用PHP的,你说这个算中小型项目。腾讯也用PHP,算中小型吗‘
回复  

使用道具 举报

您需要登录后才可以回帖 登录 | FreeOZ用户注册

本版积分规则

小黑屋|手机版|Archiver|FreeOZ论坛

GMT+11, 19-12-2024 05:14 , Processed in 0.041207 second(s), 46 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表