pro*_*eek 36 c# java comparison
我一直在使用C/C++和Python,但我现在看到很多新的编程书籍都使用Java或C#作为示例.
我认为我暂时不会使用Java或C#,但我想我必须学习其中一种语言(或两种语言)才能阅读/理解这些书籍.
Edu*_*ual 44
你一次问几个问题.让我分开处理:
Java和C#有多相似?
C#和Java都来自C/C++(以及Objective C和其他)来定义它们的语法.并且它们都被编译成中间语言.
这种共同的起源使得语言在许多层面上看起来相似,以至于任何一种语言的代码都可能被初学者混淆; 并且还使运行时环境有些可比.然而,两种设计原则以及每种语言的演变方式存在很大差异,这使得每种语言的处理方式各不相同; 这里是最突出的:
在语法层面上,Java受Smalltalk的影响,而C#试图更接近C/C++(例如:比较Java extends和implementsC#的:符号),并从VB 那里得到一个模糊的灵感,那些概念不能映射到C/C++ (例如:属性语法).
在功能级别上,C#1绝对接近Java.在他们遇到的少数差异中,我强调了C#对"不安全"代码(包括指针)和代表的支持; 和Java的争议throws.这是有道理的,因为C#的目标之一是成为Java的替代品.
许多语言功能在实现细节上有很大差异.例如,枚举在C#上非常C'ish,但在Java中是完整的对象; 或者泛型是在C#中的IL级实现的,但在Java中是通过类型擦除来处理的(除了语法之外,它们都没有真正接近C++的模板).
在API级别上,它们是世界分开的.C#依赖于.Net Framework,它基于Microsoft在Visual Studio系列产品上的经验(因此非常注重Windows),而Java的类库是从头开始构建的,IIRC,并且随着时间的推移而大量发展(在这些Swing时代,有没有人记得AWT?我这样做.)
最后,值得一提的是,每种语言都有自己的习语,以及它背后的支持者社区.
如果我学习Java,学习C#几乎是免费的吗?或相反亦然?
都不是.关键的相似之处是基本语法(分号,花括号,数组索引,区分大小写等),你已经有了C/C++的语法.
(免责声明:这个片段完全是有偏见的和主观的)在我的案例中,我在2000年夏天学习了Java; 并且变得像对它的仇恨一样,我不会碰它,除非我被要求将大学项目作为.class文件.我在2006年尝试了C#,并且对它非常满意:它远非完美,但它非常适合我的需求和风格.但是,我必须承认,Java早期很年轻,并且已经有了很大的改进:如果我现在从零学习它,我不会那么讨厌(但我不认为我更喜欢它)它超过C#).
如果我只选择两种语言中的一种,那会更好吗?
简答:翻硬币.答案很长:这取决于您的编码风格以及您最重视的语言的哪些方面.我最好的建议是从尝试学习两者开始,直到你觉得其中一种语言比另一种语言更强烈.
或者,您可以查看http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp.
哪个在编程语言方面有更广泛的覆盖面?
如果你的意思是语言内置功能,我会说C#胜利很小.C#和Java缺少的大部分功能都是语法糖(虽然它们共同对学习曲线和语言使用方式产生了重大影响).我非常重视C#的运算符重载和扩展方法.另外,LINQ非常有趣,特别是在嵌套时,但我更喜欢经典的循环.
希望这可以帮助.