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

问题描述

我在网上看过很多关于才C#/C++/Java三门语言之间的优劣对战,有人说C#,Java比C++强大应用稳定在开发领域有着无与伦比的稳定性,但回过头看一下很多古董公司用的都是C++,我们能从软件直接开发角度来说确实是Java,C++比较稳定,但跟多人在比较的时候忽略的了一个很重要的问题,从包容性,以及工具的全面性考虑,c++有着绝对的优势,虽说很多源有着模糊性只是不明确性,但包含范围确实比那些明确的源广泛了,但如果从确切的开发某一程序来说,这个有程序着明确的目的性以及程序的应用方面的指示性,用比较稳定的Java或者C++比较好。

解决方案

解决方案二:
送分我是要的,其实谈论稳定性的对比没有意义。谁用C++觉得不稳定,那是因为功力没到家,我只能说那个语言要先死,那么C++肯定排在最后。.net跟java所谓的稳定,那是被框在“框子”里面用。
解决方案三:
只从语法和基础类库角度来看,C#优势太大了
解决方案四:
C#和JAVA是同一级别的,C++掺和进来干嘛……
解决方案五:
抛开需求/场景单谈语言/平台没什么意义。要说本质,这些图灵完全的语言本质是没有区别的,就算是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#的开发人员能多磨炼服务端技术,在新的空间里有所作为。

时间: 2024-09-20 15:49:36

C#/C++/Java之间的本质对比讨论的相关文章

与硬件交互java c # c++ c对比难易度

问题描述 与硬件交互java c # c++ c对比难易度 前段时间开发一个LED控制卡的程序,因为前面已经用java做了后台程序,但是LED控制卡生产商只提供了针对c#和c++的驱动包dll. 那么问题来了在和嵌入式硬件设备交互时,用什么语言更具备优势,希望能有人从实际市场应用角度看,因为我注意到很多嵌入式设备的驱动包只针对c#和C++,java调用要么很难要么根本不支持.那到底java和硬件交互在外面用的多吗? 又有人说java在嵌入式设备上用的多,但我注意到仅仅都是在比较成熟的软硬件平台比

Java, C#, Swift语法对比速查表

原文:Java, C#, Swift语法对比速查表   Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名=初值; var 变量名=初值; 常量 final 类型 常量名=初值; readonly 类型 常量名=初值; let 常量名 : 类型=初值; 基本类型 int short long byte double float boolean char int short long byte double

lua、groovy嵌入到java中的性能对比(转)

lua和groovy都是可以嵌入到java中的脚本语言.lua以高性能著称,与C/C++在游戏开放中有较多使用,groovy是一个基于Java虚拟机(JVM)的敏捷动态语言,在jvm下有着不错的性能. groovy天生与java有着极高的兼容性,两者间对象无缝存取,支持jsr223.而lua是基于C的,需要调用jni,jni的性能是硬伤.这块网上基本都用luajava,好多年不更新了,不支持jsr223,而且很多方法都没有实现,也不能做到对象无缝存取,比如lua传到java的对象,java用不了

servlet-怎样让js和java之间传值?

问题描述 怎样让js和java之间传值? 如下:一个用户登录,怎么消除一开始的alert窗口.能用java代码调用js的函数么?或者用java传一个flag给js. <%@ page language=""java"" import=""java.util.*"" pageEncoding=""UTF-8""%><%String path = request.getCo

请教:json 与 java 之间的数据封装和转换??

问题描述 各位仙,我初学json,不太理解json与java之间的数据封装是如何进行的,想求一些关于这方的资料??给点资料吧%-------- 解决方案 解决方案二:http://hi.baidu.com/wenpan007hot/blog/item/80f15ed3fb8e8f073af3cf9a.html解决方案三:我之前在EXTJS中看到有这个转换的例子,你上网找找关于EXTJS的资料了解一下,希望可以帮到你了~解决方案四:+引用2楼futrueing的回复: 我之前在EXTJS中看到有这

Java布局管理器深入讨论

Java布局管理器深入讨论5/23/2001 16:59:54· 刘之佑·yesky-------------------------------------------------------------------------------- 我们都知道,java的GUI界面定义是由awt类和swing类来完成的.它在布局管理上面采用了容器和布局管理分离的方案.也就是说,容器只管将其他小件放入其中,而不管这些小件是如何放置的.对于布局的管理交给专门的布局管理器类(LayoutManager)来

DB2 9 pureXML与CLOB或分解式XML存储之间的性能对比

和其他数据库一样,DB2 V8 XML Extender提供了两种针对XML的存储和访问模型:XML文档可作为未解析文本完整地存储在CLOB列中,也可以被映射和分解到一套关系表中.这两种选择都有一些已知的性能限制.DB2 9中新的pureXML技术试图通过以其固有的层次格式存储和查询XML的方式来消除这些限制.本文描述了一系列度量方法,这些方法用于确定 pureXML 是否能够提供性能优势,并量化 pureXML和CLOB 或分解式存储之间的性能差异. 简介 DB2 9中的pureXML技术旨在

c++中继承和java中继承的对比

java中: class Parent{ public void test(int a){ System.out.println("Parent:" + a); System.out.println(this.getClass().getName()); } } class Child extends Parent{ public void test(int a, int b){ System.out.println("Child:" + a + " &q

TTL和RS232之间的详细对比

[背景] 之前就听过TTL,一直没搞懂其和RS232的区别. 最近,打算去买个USB转RS232的芯片,结果找到此产品: 六合一多功能USB转UART串口模块CP2102 usb TTL485 232互转自恢复 正面: 背面: 其中的: 以及引脚说明: 都提到了,不仅仅支持RS232,还支持TTL. 所以,再次遇到TTL,需要去搞清楚,TTL和RS232的区别.   [折腾过程] 1.参考: RS-232 vs. TTL Serial Communication 整理如下: 常见的微控制器中,都