代码之家  ›  专栏  ›  技术社区  ›  Andrew Grimm atk

有没有任何语言可以与Ruby的RubySpec项目相媲美?

  •  2
  • Andrew Grimm atk  · 技术社区  · 14 年前

    Ruby是唯一一种 test suite 描述语言,还是将这种想法传播到其他语言?

    3 回复  |  直到 13 年前
        1
  •  2
  •   tchrist    14 年前

    Ruby是唯一一种拥有描述该语言的测试套件的语言,还是该思想已经传播到了其他语言?

    可以 你知道的,把方向改过来。Perl有两个不同的这样的测试套件,它们都非常广泛,简直难以置信。

    首先,Perl确实执行um,现在让我们看看当您键入 make test . 这些测试包括针对语言本身和Perl附带的标准库的测试。

    % make test
    […]
    All tests successful.
    u=4.39  s=2.85  cu=422.24  cs=59.61  scripts=1853  tests=416172
    433.328u 65.845s 12:19.59 67.4% 0+0k 1587+2563io 4pf+0w
    

    当然,这比Ruby存在的时间要长得多。

    但我觉得你说的可能更像 Perl₆’s test suite ,这是一个基于规范的更为正式的安排。尽管在过去的十年左右时间里,这种安排一直很好。

        2
  •  0
  •   Zac Bowling    14 年前

    Perl和Python都为它们的各种实现提供了测试套件。

        3
  •  0
  •   MentholBonbon    11 年前

    langauges之间有一个重要的区别需要注意:由引用实现定义的语言和由标准定义的语言。许多Langues都有标准:C、C++、Java、Haskell、SimalTalk,仅举几个例子。
    有标准的语言不太可能有像RubySpec这样的项目,因为它们的语言已经被标准充分定义了。

    有些语言主要由引用实现定义。我知道这些语言:Ruby、Python、Perl、PHP

    据我所知,与RubySpec最相似的项目是broast for Perl。

    Python也有很多实现,但是他们没有一个项目来共享他们的语言测试,我相信,所有的项目都有。我认为这可能是因为Python有一个详细的语言引用,它几乎等同于一个标准。

    在Java中至少有一个PHP实现。可能有一些针对PHP的语言规范,但也没有像RubySpec这样的项目。

    RubySpec的特殊情况是,Ruby没有一个标准。它仅由参考实现MRI定义。因此RubySpec的目标是通过测试创建一个规范。不幸的是,MRI的大多数核心开发者没有参与RubySpec。对RubySpec有一些批评,因此MRI不能接受RubySpec。我真的建议你去采访一下 Ruby Design Process

    编辑:

    关于红宝石的标准:
    Ruby在2011年通过了JIS,在2012年通过了ISO/IEC。至少上面是这么说的 this 维基百科页面。不过,我还没读过这个标准,因为你需要 buy it 这样做。 This 也提供了一些关于标准的信息。
    所以事实上我没有正确表达自己。现在有一些标准,但那仍然不是Ruby的各种重新实现所使用的标准。我不能确切地说为什么,因为我看不懂标准,但我认为这是因为标准描述的语言太少了。所有宝石对红宝石的用途都太少了。
    Ruby的一个标准已经丢失了很长一段时间,以至于mr中的许多行为成为了预期的行为,实际上也是用户(即Ruby程序员)期望语言做的事情的一部分。很难说什么属于该语言,什么是实现细节。我也推荐 this Brian Shirai(前福特)在2012年鲁比康夫大会上发表的演讲。 此外,MRI具有许多特点,其发展仍在继续。Ruby 2.0.0已经发布,它有许多新特性。我认为这些功能还不是标准的一部分。
    所以我认为I So/IEC的标准不是Ruby编程语言的合适标准。

    去年,我一直在研究MagLev,一种替代ruby的实现。现在我正在写我的学士论文,这就是为什么我在这个话题上做了很多调查。