Java和C#,它们有多接近?
我一直在使用C/C++和Python,但现在我看到很多新的编程书籍都使用Java或C#作为示例 我认为我暂时不会使用Java或C语言,但我想我必须学习其中一种(或两种)语言才能阅读/理解这些书Java和C#,它们有多接近?,c#,java,comparison,C#,Java,Comparison,我一直在使用C/C++和Python,但现在我看到很多新的编程书籍都使用Java或C#作为示例 我认为我暂时不会使用Java或C语言,但我想我必须学习其中一种(或两种)语言才能阅读/理解这些书 Java和C有多相似?如果我学习Java,学习C#几乎是免费的吗?反之亦然 如果我只能选择这两种语言中的一种,哪种更好?在编程语言方面,哪个有更广泛的覆盖范围 自C#1.0以来不是1:1映射。C#添加了许多在Java中没有模拟功能的东西(LINQ、闭包等)。您一次问了几个问题。让我分别谈谈: Java
- Java和C有多相似?如果我学习Java,学习C#几乎是免费的吗?反之亦然李>
- 如果我只能选择这两种语言中的一种,哪种更好?在编程语言方面,哪个有更广泛的覆盖范围李>
Java和C有多相似 C#和Java都从C/C++(以及Objective C和其他语言)中汲取经验来定义它们的语法。它们都被编译成一种中间语言 这种共同的起源使两种语言在许多层面上看起来相似,以至于初学者可能会将两种语言中的代码混淆;同时也使运行时环境具有一定的可比性。然而,这两种设计原则以及每种语言的演变方式存在着实质性的差异,这使得使用每种语言的方式大不相同;以下是最突出的例子: 在语法层面上,Java受到Smalltalk的影响,而C#则试图更接近C/C++(例如:将Java的
扩展和实现与C#的:
符号进行比较),并从VB那里获得了一些不可映射到C/C++的概念的模糊启示(例如:属性语法)
在特性级别上,C#1绝对接近Java。在他们之间的一些差异中,我要强调C#对“不安全”代码(包括指针)和委托的支持;Java备受争议的抛出了。这是有道理的,因为C#的目标之一是成为Java的替代品
许多语言特性在实现细节上存在很大差异。例如,枚举在C#上非常C'ish,但在Java中是完整对象;或者泛型是在C#中的IL级别上实现的,但是在Java中是通过类型擦除来处理的(除了语法之外,这两种方法都不接近C++的模板)
在API级别上,它们是天壤之别。C#依赖于.Net框架,该框架是基于微软在Visual Studio系列产品(因此明显面向Windows)方面的经验而构建的,而Java的类库是从零开始构建的IIRC,并且随着时间的推移而不断发展(在这个摇摆的日子里,有人记得AWT吗?我记得)
最后,值得一提的是,每种语言都有自己的习语,背后都有自己的支持者群体
如果我学习Java,学习C#差不多了吗
自由的反之亦然
都不是。关键的相似性是基本语法(分号、大括号、数组索引、大小写敏感度等),您已经从C/C++中获得了这些语法
如果我只能选择这两种语言中的一种,哪种更好
简短回答:掷硬币。
详细回答:这取决于您的编码风格以及您最重视语言的哪些方面。我最好的建议是从两种语言开始学习,直到你觉得其中一种语言比另一种更能吸引你
或者,您可以查看
在编程语言方面,哪个有更广泛的覆盖范围
如果你指的是语言内置功能,我会说C#以微弱优势获胜。C#和Java所缺乏的大部分特性都是语法糖(尽管它们共同在学习曲线和语言使用方式上产生了显著的差异)。我非常重视C#的运算符重载和扩展方法。此外,LINQ是一个非常有趣的概念,但它本质上是循环的声明性语法
希望这能有所帮助。这些库非常不同,文档的方法也非常不同。我发现C#方法更容易实现
为了说明我的意思,在这两种语言中,您要处理的某些对象可以通过从“object”到“generic object”再到“specific object”的继承来实现。在Java中,如果您想了解“generic object”的属性,您必须访问文档,而在C#documentation中,列出了“特定对象”的所有属性
至少在几年前我做Java的时候是这样的 如果你想要一个非常主观的答案。
我刚刚在英国完成了计算机科学的学位,我选择了一所教授C#而不是Java的大学……原因是,我可以很容易地直接进入一个高薪的工作,作为一名软件开发人员,在一家只需要了解“新”技术的人的公司工作
这些公司包括投资银行、科技初创公司、IT咨询公司等
所以如果你想挑一个来学习。。。。。。
想想最终目标……如果是现金和现代知识……遵循C
…如果有其他问题,请按照C#
p.S.Java很糟糕——我不得不说。这里有一个很好的差异分解:这个问题很好,直到你问哪个更好。它们基本上就像是编程语言的郊区。拥挤,没有乐趣……除非他在说“更好”之后马上解释说,他真正的意思是覆盖范围更广,这是可以衡量的,而不是基于意见的(即:我应该选择收费高速公路还是高速公路,哪个更好?哪个车道的空间更大。)车道数或总宽度取决于意见??Java/C比C/C++有更多的共同点。@BlueRaja:Finally…:)@BlueRaja:你的意思是Java 7最终发布时会有闭包,这显然不会持续一年的大部分时间。我预测会有很多安全漏洞。@Goober只是一个问题