C#/C++/Java之间的本质对比讨论

qq_30575321 2015-08-13 02:56:15

我在网上看过很多关于才C#/C++/Java三门语言之间的优劣对战,有人说C#,Java比C++强大 应用稳定在开发领域有着无与伦比

的稳定性,但回过头看一下很多古董公司 用的都是C++,我们能从软件直接开发角度来说 确实是Java,C++比较稳定,但跟多人在

比较的时候忽略的了一个很重要的问题,从包容性,以及工具的全面性考虑,c++有着绝对的优势,虽说很多源有着模糊性只是不

明确性,但包含范围确实比那些明确的源广泛了,但如果从确切的开发某一程序来说,这个有程序着明确的目的性以及程序的应用

方面的指示性,用比较稳定的Java或者C++比较好。
...全文
183 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
winnowc 2015-08-13
抛开需求/场景单谈语言/平台没什么意义。要说本质,这些图灵完全的语言本质是没有区别的,就算是8条指令的Brainfuck,本质上都相同。 更多的时候,谈论的不是本质,而是生态系统的未来方向。就我看到的近20年的编程语言的发展来说,其中最不可能改变的规律就是语言/平台都必然向更高级化发展,进一步降低开发门槛,解放生产力。 然后,有三个趋势,一是由于物联网化发展,设备越来越多样,可移植能力会非常重要;二是因为CPU频率瓶颈十年没有突破,并且可见的未来貌似也没戏,多线程能力也是一个重要指标;三是指令式与函数式融合,静态类型与动态类型融合,函数式编程更适合数据处理、多线程场景,静态类型语言可以通过工具静态分析,动态类型语言开发的效率更高,二者结合能更好的提高生产力。 C/C++的生产力明显不如C#/Java这些更高级的语言/平台,这就决定了它今后会继续丧失地盘,集中于一些特定领域,但是由于它是基础设施的一部分,仍然会很活跃,会越来越多的被作为制造工具的工具,而不是用来生产的工具。虽然跨平台能力C/C++应该说最好,但是跨平台不等于可移植,一般来说,编译时或运行时进行翻译的语言/平台更容易移植。 论多线程能力,再说细点就是并发能力和同步能力,C/C++在语言层面没有提供帮助,但是极端性能的场景下还是它胜出。C#/Java做的也并不好,C# 5添加了async/await可以说是一个进步,Java貌似也在继续学C#,但是因为生态系统问题,Java的开发人员大多熟悉服务端编程,对多线程的掌握水平比C#生态系统要高。这一点是像Erlang和Go这些拥有语言内置的并发/同步能力的语言做的更好,可以减少很多人为的错误。 论指令式与函数式融合,应该说除了C/C++(函数指针太原始),其它主流语言基本都融合了一定函数式编程机制,C# 在这方面还可以,从匿名delegate、lambda、LINQ,到6.0的进一步表达式化,后面还有提案可能要加入函数式编程的一个标志性的特征:模式匹配。Java现在在语言方面的发展一直比C#慢,不过JVM平台上还有Scala这类语言一定程度上进行了弥补。 论静态与动态融合,一般不是通过语言本身能实现的,对于C/C++,可以通过嵌入Lua/Javascript这类语言来获得一定动态能力,C#/Java也类似,C#虽然添加了dynamic,但是用途有限。这方面还是原本的动态语言比如Javascript发展的比较好,Typescript变种可以增加静态特征。 对于第一集团的其它语言,PHP基本被局限在了web开发,不如其它主流语言使用面广;Python和Ruby各个方面都不弱,个人感觉Ruby的生产力略高一点;Obj-C完全是渣,替代品Swift因为有后发优势,还算可以,估计能很快进入第一集团,不过它的问题是现在还太依赖Apple,生态系统比较单一。 最后,还是说下C#,02年的时候我经过一番对比,最后选择了C#作为主技能。它的语言、类库和开发工具都相当不错,但是弱点就是跨平台/可移植的能力,Mono作为其跨平台实现解决了一部分问题,但是直到微软近几年开始转型,才让我真正看到了希望,现在CoreCLR已经可以试用,效果不错,等它正式发布,C#就能有更大的发展空间。当然,这还需要开发人员的努力,因为生态系统问题,C#/.NET平台的开发人员更多的是活跃在基于Windows系统的PC桌面领域和中小型企业内部系统的领域。业务熟练,但是技术水平,尤其是服务端技术不容易提高,希望使用C#的开发人员能多磨炼服务端技术,在新的空间里有所作为。
回复
C#和JAVA是同一级别的,C++掺和进来干嘛……
回复
bigbaldy 2015-08-13
只从语法和基础类库角度来看,C#优势太大了
回复
ajianchina 2015-08-13
送分我是要的,其实谈论稳定性的对比没有意义。 谁用C++觉得不稳定,那是因为功力没到家,我只能说那个语言要先死,那么C++肯定排在最后。 .net跟java所谓的稳定,那是被框在“框子”里面用。
回复
相关推荐
发帖
非技术区
创建于2007-09-28

7707

社区成员

.NET技术 非技术区
申请成为版主
帖子事件
创建了帖子
2015-08-13 02:56
社区公告
暂无公告