技术讨论:C#与Java之争

原创 2004年07月08日 12:56:00

Builder.com邀请了几个CNET的程序员Dan Seewer、Norris Shelton和Kevin Cobb来参加关于C#与Java的辩论。这两门语言以及它们各自的开发平台之间真的存在巨大的鸿沟吗?

Builder.com:好吧,现在谁准备到“我喜欢Java”一边,谁到“我喜欢C#”一边?

Kevin:首先必须说明的是我们都是Java的使用者。因此从三个Java使用者的观点出发来看C#,我们只是给出我们对C#的意见——好的或坏的。

Norris:我们可以证明我们的观点,它们的确是对的。C#与Java非常相像,它们之间的差别比起C#与C++来要小得多。如果Java中有某个东西,在C#中也会有相似的某个东西,反之亦然。

Dan:我想,微软的说词在于C++,以及他们对C++的发展。

Kevin:那我们能拿出什么呢?

Dan:对,我们能够拿出其它的什么来吸引和说服C++用户呢?

Kevin:我学习C#过程中它对我的打击是,加入其中的是一些浮华的东西,只是吸引了人们的眼球,却没有真正使它成为一门更好的语言。也许这样说有些不公……

Dan:不,我想的却是这样。

Norris:我想,他们有了C++,然后又有了Java。于是C++的某些特性被拿掉以使Java更简。单。

Dan:很对。如果C++的爱好者不喜欢这样,他们会把这种改变视为障碍。

Norris:应该说这对于Java的使用者并不成立,因为如果一开始就使用Java,你就不会感到任何的不便。

Dan:对

Norris:但是那些并不适用Java的人却看得到所有的限制。如果我是一个C++程序员,而且我并不想学习Java,于是我开始学习C#。微软为C#添加了许多内容,但是在某些情况下,他们加入的只会变得更复杂。比如索引器——它并没有使你得到新的东西。Java程序员对此不会感到损失,但是我相信这会增加程序的复杂性。

Dan:对于运算符重载也是同一个道理。

Norris:是的。
 
Dan:你将运算符重载和以前弄混了,那可是C++的重要组成部分。在用C++编程时我用过它,我总是觉得它使得事情变得更复杂了,而其本身并不需要这样复杂。比如对于加号或减号,你必须注意变量是什么类型。“那些变量是对象吗?”它们是对象。那就继续找真正的方法,重载即在此发生。但如果并没有重载,那你就搁浅了。

Norris:是的。这有一个此问题的例子:我正在阅读Programming C#(Second Edition),里面说到:“如果你在C#中这样做,而你想别人能在VB中使用这个库,你就得用其它的方法,其效果是相同的。”那是因为VB,甚至新的VB.NET并不支持运算符重载。如果真的有人要使用你的库,而VB.NET并不会支持,那可真是一个问题。

Builder.com:所以,你们说微软向C#中加入了与VB.NET以及其它.NET语言不兼容的特性?

Norris:是的。它们好像都遵循公共语言运行时(CLR),但是C#却有它自己的运算符重载,在VB.NET中又不能这样做。你能够使用那些对象是因为它在CLR中,VB.NET允许你这么做,但是你在这儿却无法使用那个库,那个功能,它不会起作用。

Dan:你的C#函数是这样的吗?

Norris:噢,是的。

Dan:我正在读.NET Development for Java Programmers,里面有一章比较了Java和C#,但却没有涵盖这样与VB有关的问题。

Builder.com:既然你们都是Java程序员。那你们为什么要学习C#呢?

Norris:这并不是因为我们是Java程序员,而是因为我们是开曼群岛路易斯维尔的Java程序员,在路易斯维尔可没有那么多Java职位。

[笑]

Builder.com:但是除了仅仅因为“其他人都用它”和“工作的需要”以外,应该有一个合理的解释。

Kevin:这取决于我们看待它的方式,因为我们是Web程序员。我们已经选择了这行。因此我对学习与Web开发有关的任何工具都感兴趣,包括C#、.NET、Java、JSP等等。如果我离开这里,我希望到另一个Web开发职位上,因此我要使自己更有竞争力,那就至少要熟悉C#,.NET和其他的东西。

Kafka相关技术文档

目录索引: Kafka使用场景 1.为何使用消息系统 2.我们为何需要搭建Apache Kafka分布式系统 3.消息队列中点对点与发布订阅区别 Kafka设计与原理分析 1)a...
  • u014091123
  • u014091123
  • 2017年06月28日 14:38
  • 299

JAVA、C#语言之争

Java和.Net选哪个?这是每一个菜鸟都必须要面对的问题。Java 可能是大多数程序员学习的第一个面向对象的编程语言。它最大的优势就是跨平台性。其实,在国内小型机当道的时代,Java 是唯一可以选择...
  • foreverhuylee
  • foreverhuylee
  • 2014年12月26日 17:18
  • 996

从 .NET 和 Java 之争谈 IT 行业

 一、有些事情难以回头 开篇我先表明自己的立场:同时使用 .Net 和 JAVA,但更加偏爱.Net。原因很简单: .Net语言更具开放性,从开源协议和规范可以看出;语言更具优势严谨;开...
  • ls_kevin
  • ls_kevin
  • 2016年11月22日 17:51
  • 1464

JAVA和C#,武当少林之争!

关于JAVA和C#的比较,从C#的诞生之日开始就没有停止过。其实比较JAVA和C#,有点不是Apple-to-Apple的比较。我认为更确切的说法是JAVA和.NET的比较,而C#是.NET阵营里的得...
  • Guitaristr
  • Guitaristr
  • 2014年03月08日 12:35
  • 865

一起来讨论讨论Java多线程技术-20170704

一起来讨论讨论Java多线程技术-20170704本系列文章是给那些学过但是不精通的学者进行学习的,所以本系列文章不适合初学者,初学者请看视频教程(2016年版 JavaSE): 链接:http:/...
  • ClAndEllen
  • ClAndEllen
  • 2017年07月04日 10:37
  • 207

一起来讨论讨论Java多线程技术-20170701

一起来讨论讨论Java多线程技术-20170701本系列文章是给那些学过但是不精通的学者进行学习的,所以本系列文章不适合初学者,初学者请看视频教程(2016年版 JavaSE): 链接:http:/...
  • ClAndEllen
  • ClAndEllen
  • 2017年07月01日 16:38
  • 372

一起来讨论讨论Java多线程技术-20170628

第1章 Java多线程技能本系列文章是给那些学过但是不精通的学者进行学习的,所以本系列文章不适合初学者,初学者请看视频教程: 本片文章带你理解以下几个问题: 线程的启动 如何使线程暂停 如何使...
  • ClAndEllen
  • ClAndEllen
  • 2017年06月28日 22:31
  • 206

一起来讨论讨论Java多线程技术-20170710

一起来讨论讨论Java多线程技术-20170710本系列文章是给那些学过但是不精通的学者进行学习的,所以本系列文章不适合初学者,初学者请看视频教程(2016年版 JavaSE): 链接:http:/...
  • ClAndEllen
  • ClAndEllen
  • 2017年07月10日 16:09
  • 184

一起来讨论讨论Java多线程技术-20170716

一起来讨论讨论Java多线程技术-20170716本系列文章是给那些学过但是不精通的学者进行学习的,所以本系列文章不适合初学者,初学者请看视频教程(2016年版 JavaSE): 链接:http:/...
  • ClAndEllen
  • ClAndEllen
  • 2017年07月16日 20:35
  • 190

一起来讨论讨论Java多线程技术-20170707

一起来讨论讨论Java多线程技术-20170707本系列文章是给那些学过但是不精通的学者进行学习的,所以本系列文章不适合初学者,初学者请看视频教程(2016年版 JavaSE): 链接:http:/...
  • ClAndEllen
  • ClAndEllen
  • 2017年07月07日 16:06
  • 153
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:技术讨论:C#与Java之争
举报原因:
原因补充:

(最多只允许输入30个字)