2010-11-19 5 views
2

Является ли Ruby единственным языком, который имеет test suite, описывающим язык, или же идея распространяется на другие языки?У любого языка есть эквивалент Ruby's RubySpec?

+0

В частности, что вы подразумеваете под «набором тестов, описывающим язык»? Большинство языков с открытым исходным кодом, которые я видел, имеют тестовые пакеты, которые проверяют все ожидаемые виды использования и известные угловые случаи. Кроме того, что означает «язык»? Содержит ли стандартная библиотека/встроенный счет? – slebetman

ответ

2

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

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

Для первого, Perl₅ выполняет - um, давайте посмотрим теперь [... время прохождения ...] 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 

Конечно, это было гораздо дольше, чем Ruby.

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

+1

Жаркое является хорошим примером. Не уверен в наборе тестов Perl5. Согласно разговорам Тима Бунца * Perly Myths *, набор тестов Perl5 эквивалентен набору тестов YARV, а не набору тестов RubySpecs. –

0

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

+3

Все реализации Ruby имеют набор тестов для их различных реализаций, но это не отвечает на вопрос. Речь идет о наборе тестов соответствия для спецификации языка, а не наборе тестов регрессии для компилятора. –

0

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

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

Насколько я понял, самый похожий проект RubySpec поджарен для Perl.

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

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

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

EDIT:

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

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

+0

Можете ли вы привести цитату, что Ruby не имеет стандарта? –

+0

Я добавил несколько дополнительных объяснений. Надеюсь, это поможет понять, что я имею в виду. – MentholBonbon

+0

Вы работаете в MagLev в течение года, но ваш университет не может позволить себе 238 швейцарских франков платить за стандарт? –

Смежные вопросы