Является ли Ruby единственным языком, который имеет test suite, описывающим язык, или же идея распространяется на другие языки?У любого языка есть эквивалент Ruby's RubySpec?
ответ
Является ли 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, что является скорее более формальным соглашением, основанным на спецификации. Это было только вокруг - ну, растет - в течение последнего десятилетия или около того.
Жаркое является хорошим примером. Не уверен в наборе тестов Perl5. Согласно разговорам Тима Бунца * Perly Myths *, набор тестов Perl5 эквивалентен набору тестов YARV, а не набору тестов RubySpecs. –
У Perl и Python есть набор тестов для их различных реализаций.
Все реализации Ruby имеют набор тестов для их различных реализаций, но это не отвечает на вопрос. Речь идет о наборе тестов соответствия для спецификации языка, а не наборе тестов регрессии для компилятора. –
Существует одна важная разница между языками: Языки, определенные посредством эталонной реализации, и языки, определенные стандартом. Многие 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, альтернативной реализацией рубина за последний год. Сейчас я пишу диссертацию бакалавра, поэтому я много исследовал эту тему.
Можете ли вы привести цитату, что Ruby не имеет стандарта? –
Я добавил несколько дополнительных объяснений. Надеюсь, это поможет понять, что я имею в виду. – MentholBonbon
Вы работаете в MagLev в течение года, но ваш университет не может позволить себе 238 швейцарских франков платить за стандарт? –
- 1. Существует ли JavaScript-эквивалент последовательностей rubys "# {}"?
- 2. У пользователя есть 3 языка
- 3. У jquery есть эквивалент dojo.hitch()?
- 4. У jquery есть эквивалент dojo.connect()?
- 5. У Angular2 есть эквивалент $ document
- 6. Есть ли Java-эквивалент отображения языка Python?
- 7. У cdb/windbg есть эквивалент autoexp.dat?
- 8. У любого устройства Android есть квадратные экраны?
- 9. Есть ли у Sencha эквивалент радиостанции JQuery?
- 10. Играет! У Framework есть эквивалент phpinfo?
- 11. Есть ли у AngularJS эквивалент $ (document) .ajaxSuccess()?
- 12. Есть ли у JavaScript эквивалент? : оператор?
- 13. У персонажей управления есть эквивалент графического символа?
- 14. У Углового JS есть эквивалент dojo.hitch()
- 15. У emberjs есть эквивалент rails `yield: something`?
- 16. Есть ли у android эквивалент UIScrollView?
- 17. Есть ли у jquery эквивалент dojo.subscribe()?
- 18. У UIImage есть эквивалент myLabel.hidden = ДА?
- 19. Есть ли у python эквивалент Javascript's 'btoa'
- 20. У печенья есть эквивалент первичного ключа?
- 21. Linux - У него есть эквивалент hta?
- 22. У функторов есть эквивалент в C#?
- 23. Есть ли у F # эквивалент Haskell's take?
- 24. У Elm есть эквивалент «Прочитано» Haskell
- 25. Есть ли у StackTraceElement [] эквивалент Throwable.printStackTrace()?
- 26. У списков Python есть эквивалент dict.get?
- 27. Abort Rubys Shoes анимация
- 28. Scala версия Rubys 'each_slice?
- 29. Есть ли эквивалент Ruby WebMock для языка Lua?
- 30. Есть ли эквивалент ruby любого метода в javascript?
В частности, что вы подразумеваете под «набором тестов, описывающим язык»? Большинство языков с открытым исходным кодом, которые я видел, имеют тестовые пакеты, которые проверяют все ожидаемые виды использования и известные угловые случаи. Кроме того, что означает «язык»? Содержит ли стандартная библиотека/встроенный счет? – slebetman