Есть ли в каких-либо языках эквивалент RubySpec-проекта Ruby? - PullRequest
2 голосов
/ 19 ноября 2010

Является ли Ruby единственным языком, в котором есть набор тестов , описывающий язык, или идея распространена на другие языки?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2010

Является ли Ruby единственным языком, в котором есть набор тестов, описывающих язык, или эта идея распространяется на другие языки?

Вы можете изменить направление, вы знаете. В Perl есть пара таких наборов тестов, оба невероятно обширные, просто невероятные.

Во-первых, Perl₅ выполняет - давайте посмотрим теперь [... проходит время ...] 416172 (~ 4e5) отдельных тестов при вводе 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

Конечно, это было намного дольше, чем существовала Руби.

Но я думаю, что то, о чем вы говорите, может быть больше похоже на набор тестов Perl , который является более формальным соглашением, основанным на спецификации. Это только вокруг - ну, растет - в течение последнего десятилетия или около того, хотя.

0 голосов
/ 22 июня 2013

Следует отметить одно важное различие между языками: языки, определенные эталонной реализацией, и языки, определенные стандартом. Многие языки имеют стандарты: C, C ++, Java, Haskell, Smalltalk, и это только некоторые из них.
Языки, у которых есть стандарт, с меньшей вероятностью будут иметь проект, такой как RubySpec, потому что их язык уже достаточно определен стандартом.

Есть некоторые языки, которые в основном определяются эталонной реализацией. Я знаю следующие языки: Ruby, Python, Perl, PHP

Насколько мне известно, наиболее похожий проект на RubySpec - это roast для Perl.

В Python также есть много реализаций, но у них нет проекта для совместного использования своих языковых тестов, который, я уверен, есть во всех проектах. Я думаю, что это может быть связано с тем, что в Python есть подробный справочник по языку, который почти равен стандарту.

Существует как минимум одна реализация PHP в Java. Вероятно, существуют некоторые языковые спецификации для PHP, но нет и таких проектов, как RubySpec.

Особый случай для RubySpec заключается в том, что Ruby не имеет стандарта. Он определяется только эталонной реализацией МРТ. Поэтому RubySpec стремится создавать спецификации с помощью тестов. К сожалению, большинство разработчиков ядра MRI не участвуют в RubySpec. Есть некоторые критические замечания по RubySpec, поэтому MRI не принимает RubySpec. Я очень рекомендую Интервью с Брайаном Ширай о Ruby Design Process

EDIT:

Относительно стандарта для Ruby:
Ruby был определен через JIS в 2011 году и ISO / IEC в 2012 году. По крайней мере, так сказано на этой странице Википедии. Я не смог прочитать этот стандарт, так как вам нужно купить его , чтобы сделать это. Этот также дает небольшое количество информации о стандарте.
Так что на самом деле я не выразил себя правильно. Сейчас есть какой-то стандарт, но он все еще не тот, что используется различными переопределениями Ruby. Я не могу сказать, почему именно, потому что я не мог прочитать стандарт, но я думаю, что это потому, что стандарт описывает слишком мало языка. Слишком мало того, что используется всеми драгоценными камнями для Ruby.
Стандарт для Ruby отсутствовал в течение такого долгого времени, что многие действия из MRI стали ожидаемым поведением и фактически частью того, что пользователи (в том числе программисты ruby) ожидают от языка. Сложно сказать, что относится к языку и что такое детализация. Я также рекомендую этот доклад, который Брайан Ширай (ранее Форд) выступил на RubyConf 2012. Более того, МРТ имеет много особенностей, и развитие все еще продолжается. Был выпущен Ruby 2.0.0, который имеет много новых функций. Я не думаю, что эти функции являются частью стандарта.
Поэтому я думаю, что стандарт ISO / IEC не является подходящим стандартом для языка программирования Ruby.

Я работал над MagLev, альтернативной реализацией ruby ​​в прошлом году. Прямо сейчас я пишу свою дипломную работу бакалавра, поэтому я много исследовал в этой теме.

0 голосов
/ 19 ноября 2010

Perl и Python имеют наборы тестов для различных реализаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...