java和ruby的主要区别和相似之处是什么?

java和ruby的主要区别和相似之处是什么?,java,ruby,Java,Ruby,我现在是java专业人士,我喜欢ruby。这两种语言有什么相似之处吗?主要的区别是什么?因为这两种语言都是面向对象的。除了面向对象之外,这两种语言之间几乎没有什么相似之处。Java是一种静态类型的编译语言,而ruby是一种动态类型的解释语言。语法也非常不同。Java使用以分号终止行的c约定,而ruby使用返回字符 虽然Java确实有一些内置的对迭代器的支持,但ruby对迭代器的使用在整个语言中非常普遍 这显然只涉及到两者的比较 Ruby中的面向对象特性实际上与Java非常不同。 在Ruby中,一

我现在是java专业人士,我喜欢ruby。这两种语言有什么相似之处吗?主要的区别是什么?因为这两种语言都是面向对象的。

除了面向对象之外,这两种语言之间几乎没有什么相似之处。Java是一种静态类型的编译语言,而ruby是一种动态类型的解释语言。语法也非常不同。Java使用以分号终止行的c约定,而ruby使用返回字符

虽然Java确实有一些内置的对迭代器的支持,但ruby对迭代器的使用在整个语言中非常普遍

这显然只涉及到两者的比较

  • Ruby中的面向对象特性实际上与Java非常不同。 在Ruby中,一切都是一个对象,包括一个类似于原语类型(在Java中)的整数
  • 在Ruby中,new就像一个属性,而不是一个关键字。因此,要实例化一个对象,您可以在Ruby中执行以下操作:

    animal=animal.new

  • Ruby是强类型的,但也是动态的。由于其dynamicsm,Ruby使您能够进行duck键入

  • Ruby对多重继承的回答是mixin(这是一种语言特性),在Java中可以实现许多接口
  • Ruby有一个block,您可以使用匿名类在Java中实现同样的功能。但是IMHO Ruby块更强大
  • 所以我可以说Java和Ruby没有太多相似之处。直到今天,我还找不到这两种语言之间的任何相似之处,因为Ruby已经走上了自己的道路,不像其他许多源于C语言的语言。

    这些呢:

    相似性

    与Java一样,在Ruby中

    • 内存是通过垃圾收集器为您管理的
    • 对象是强类型的
    • 有公共、私有和受保护的方法
    • 有嵌入式文档工具(Ruby称为RDoc)。rdoc生成的文档看起来与javadoc生成的文档非常相似
    差异

    与Java不同,在Ruby中

    • 您不需要编译代码。你直接运行它
    • 所有成员变量都是私有的。从外部,您可以通过各种方法访问所有内容
    • 一切都是一个对象,包括像2和3.14159这样的数字
    • 没有静态类型检查
    • 变量名只是标签。它们没有与之关联的类型
    • 没有类型声明。您只需根据需要分配新的变量名,它们就会“突然出现”(即a=[1,2,3],而不是int[]a={1,2,3};)
    • 没有演员。只需调用方法
    • 构造函数的名称总是“initialize”,而不是类的名称
    • 你有“mixin”而不是接口
    • ==和equals()在Ruby中的处理方式不同。当您想在Ruby中测试等价性时,使用==(equals()是Java)。当您想知道两个对象是否相同(=在Java中)时,请使用equal?()

    摘自:

    你在问一个非常广泛的问题。我喜欢比较脚本语言,就像比较口语一样,所以在这种情况下;西班牙语和意大利语的主要区别和相似之处是什么

    如果你问这个问题,你会得到各种各样或很长的答案。解释语言之间的差异充其量也很困难,因为很难找出关键因素

    到目前为止,这里的回复以及其他人与之相关的链接都证明了这一点。它们要么多种多样,要么很长

    回到西班牙语和意大利语的类比,我可以说这两种语言是相似的,但仍然非常不同。如果你(只)知道其中一个,你也许能够理解另一个的情况,尽管你可能无法很好地使用它。了解其中一个肯定会让你更容易学习另一个。一个是由更多的人使用,所以你可能会从学习中受益更多

    前面的所有段落也可以应用于Java和Ruby。说两者都是面向对象的就像说西班牙语和意大利语都是罗马语系的成员一样

    当然,所有这些都无关紧要。最有可能的是,您潜在的问题是,学习Ruby而不是Java或Java之外的东西是否“值得”。不幸的是,也没有简单的答案。你必须权衡每种语言的优缺点,如受欢迎程度、需求和职业机会。当然还有一个问题,你更喜欢哪种语言。你可能更喜欢一种语言而不是另一种,因为它有更好的语法。(同样,你可能更喜欢意大利语,因为你认为意大利语比西班牙语更“漂亮”,尽管后者更为广泛,你会对它有更多的“用途”。)


    就个人而言,我更喜欢Ruby。出于许多不同的原因。就像我更喜欢意大利语一样。

    我打赌你可以在网上找到很好的比较……你看过Groovy吗?这是Java和Ruby之间的一个很好的折衷方案。您会发现它比Ruby更容易学习。Groovy比Ruby更粗糙。Ruby也使用分号行终止,尽管它们是可选的;-)