Jump to content

Руби (язык программирования)

Руби
Парадигма Мультипарадигмальность : функциональная , императивная , объектно-ориентированная , рефлексивная.
Разработано Юкихиро Мацумото
Разработчик Юкихиро Мацумото и др.
Впервые появился 1995 год ; 29 лет назад ( 1995 )
Стабильная версия
3.3.2  Отредактируйте это в Викиданных[1] / 30 мая 2024 г .; 11 дней назад ( 30 мая 2024 г. )
Дисциплина набора текста Утка , динамичная , сильная
Объем Лексический, иногда динамический
Язык реализации С
ТЫ Кросс-платформенный
Лицензия Рубиновая лицензия
Расширения имен файлов .рб, .ru
Веб-сайт ruby-lang.org
Основные реализации
Ruby MRI , TruffleRuby , YARV , Rubinius , JRuby , RubyMotion , mruby
Под влиянием
Есть , [2] Базовый , [3] С++ , [2] КЛУ , [4] Дилан , [4]
Эйфель , [2] Лисп , [4] Луа , Перл , [4] Питон , [4] Смолток [4]
Под влиянием
Clojure , CoffeeScript , Crystal , D , Elixir , Groovy , Julia , [5] Дешево , Нет , [6] Кольцо , [7] Ржавчина , [8] Быстрый [9]

Ruby это интерпретируемый уровня язык программирования высокого общего назначения . Он был разработан с упором на производительность и простоту программирования. В Ruby все является объектом, включая примитивные типы данных . Он был разработан в середине 1990-х годов Юкихиро «Мац» Мацумото в Японии .

Ruby динамически типизирован и использует сбор мусора и своевременную компиляцию . Он поддерживает несколько парадигм программирования, включая процедурное , объектно-ориентированное и функциональное программирование . По словам создателя, на Ruby повлияли Perl , Smalltalk , Eiffel , Ada , BASIC , Java и Lisp . [10] [3]

История [ править ]

Ранняя концепция

Мацумото сказал, что Ruby был задуман в 1993 году. В сообщении 1999 года в списке рассылки Ruby Talk он описывает некоторые из своих ранних идей о языке: [11]

Я говорил со своим коллегой о возможности объектно-ориентированного языка сценариев. Я знал Perl (Perl4, а не Perl5), но он мне не очень нравился, потому что от него пахло игрушечным языком (он до сих пор есть). Объектно-ориентированный язык казался очень многообещающим. Тогда я знал Python . Но мне это не понравилось, потому что я не думал, что это настоящий объектно-ориентированный язык — объектно-ориентированные функции оказались дополнением к языку. Будучи языковым маньяком и фанатом объектно-ориентированного программирования в течение 15 лет, я действительно хотел настоящий объектно-ориентированный, простой в использовании язык сценариев. Я искал, но не нашел. Поэтому я решил сделать это.

Мацумото описывает дизайн Ruby как простой язык Lisp по своей сути, с объектной системой, такой как Smalltalk, блоками, вдохновленными функциями высшего порядка , и практической полезностью, такой как Perl. [12] Он похвалил язык за его изобретательность и креативность за решение для составления интервалов.

Название «Рубин» возникло во время онлайн-чата между Мацумото и Кейдзю Исицукой 24 февраля 1993 года, еще до того, как для языка был написан какой-либо код. [13] Первоначально предлагалось два названия: « Коралл » и « Рубин ». Мацумото выбрал последнее в более позднем электронном письме Исицуке. [14] Позже Мацумото отметил фактор, повлиявший на выбор имени «Рубин»: это был камень, родной для одного из его коллег. [15] [16]

Ранние выпуски [ править ]

О первом публичном выпуске Ruby 0.95 было объявлено в новостных группах Японии 21 декабря 1995 года. [17] [18] Впоследствии за два дня были выпущены еще три версии Ruby. [13] Релиз совпал с запуском на японском языке списка рассылки Ruby-list , который стал первым списком рассылки для нового языка.

Уже на этом этапе разработки присутствовали многие функции, знакомые по более поздним выпускам Ruby, включая объектно-ориентированный дизайн, классы с наследованием, примеси , итераторы , замыкания , обработку исключений и сборку мусора . [19]

После выпуска Ruby 0.95 в 1995 году в эти годы было выпущено несколько стабильных версий Ruby:

  • Руби 1.0: 25 декабря 1996 г. [13]
  • Руби 1.2: декабрь 1998 г.
  • Руби 1.4: август 1999 г.
  • Руби 1.6: сентябрь 2000 г.

В 1997 году в сети была опубликована первая статья о Ruby. В том же году компания netlab.jp наняла Мацумото для работы над Ruby в качестве штатного разработчика. [13]

В 1998 году Мацумото запустил Архив приложений Ruby вместе с простой домашней страницей Ruby на английском языке. [13]

В 1999 году был запущен первый список рассылки Ruby-talk на английском языке , что сигнализировало о растущем интересе к языку за пределами Японии. [20] В том же году Мацумото и Кейдзю Исицука написали первую книгу по Ruby, « Объектно -ориентированный язык сценариев Ruby», которая была опубликована в Японии в октябре 1999 года. В начале 2000-х годов за ней последовало около 20 книг по Ruby, опубликованных на японском языке. . [13]

К 2000 году Ruby был популярнее Python в Японии. [21] В сентябре 2000 года была напечатана первая книга на английском языке «Программирование Ruby» , которая позже была бесплатно выпущена для широкой публики, что еще больше расширило распространение Ruby среди англоговорящих людей. В начале 2002 года англоязычный список рассылки Ruby-talk получал больше сообщений, чем японоязычный список рассылки Ruby , демонстрируя растущую популярность Ruby в неяпоноязычном мире.

Руби 1.8 и 1.9 [ править ]

Ruby 1.8 был первоначально выпущен в августе 2003 года, долгое время оставался стабильным и был прекращен в июне 2013 года. [22] Несмотря на то, что он устарел, на его основе все еще существует код. Ruby 1.8 лишь частично совместим с Ruby 1.9.

Ruby 1.8 стал предметом нескольких отраслевых стандартов. Спецификации языка для Ruby были разработаны Центром продвижения открытых стандартов Агентства по продвижению информационных технологий ( правительственное учреждение Японии ) для представления в Японский комитет промышленных стандартов (JISC), а затем в Международную организацию по стандартизации (ISO). Он был принят в качестве японского промышленного стандарта (JIS X 3017) в 2011 году. [23] и международный стандарт (ISO/IEC 30170) в 2012 году. [24] [25]

Ruby on Rails Логотип

Примерно в 2005 году интерес к языку Ruby резко возрос вместе с Ruby on Rails , веб-фреймворком, написанным на Ruby. Rails часто приписывают растущей осведомленности о Ruby. [26]

Вступает в силу с Ruby 1.9.3, выпущенным 31 октября 2011 г. [27] Ruby перешел с двойной лицензии по Ruby License и GPL на двойную лицензию по Ruby License и лицензии BSD, состоящей из двух пунктов. [28] многих популярных сторонних драгоценных камней Внедрение версии 1.9 замедлилось из-за изменений по сравнению с версией 1.8, которые потребовали переписывания . Ruby 1.9 вносит множество существенных изменений по сравнению с серией 1.8. Примеры включают в себя: [29]

Рубин 2 [ править ]

Ruby 2.0 должен был быть полностью обратно совместим с Ruby 1.9.3. На момент официального выпуска версии 2.0.0 от 24 февраля 2013 г. было только пять известных (незначительных) несовместимостей. [30] В Ruby 2.0 добавлено несколько новых функций, в том числе:

  • метода Аргументы ключевого слова
  • Новый метод, Module#prepend, чтобы расширить класс
  • Новый литерал для создания массива символов.
  • Новый API для ленивой оценки Enumerables
  • Новое соглашение об использовании #to_h для преобразования объектов в хеши. [31]

Начиная с версии 2.1.0, политика управления версиями Ruby изменилась и стала более похожей на семантическое управление версиями . [32]

Ruby 2.2.0 включает ускорения, исправления ошибок и обновления библиотек, а также удаляет некоторые устаревшие API. В частности, Ruby 2.2.0 вносит изменения в обработку памяти — инкрементный сборщик мусора, поддержку сборки мусора символов и возможность компиляции напрямую с jemalloc. Он также содержит экспериментальную поддержку использования vfork (2) с system() и spawn(), а также добавлена ​​поддержка спецификации Unicode 7.0. Начиная с версии 2.2.1, [33] производительность Ruby MRI на PowerPC64 . Улучшена [34] [35] [36] Функции, которые были устаревшими или удалены, включают callcc, библиотеку DL, Digest::HMAC, lib/rational.rb, lib/complex.rb, GServer, Logger::Application, а также различные функции C API. [37]

Ruby 2.3.0 включает множество улучшений производительности, обновлений и исправлений, включая изменения в использовании ключевых слов исключений Proc#call, Socket и IO, обработке Thread#name, пассивных соединениях Net::FTP по умолчанию и удалении Rake из stdlib. [38] Другие заметные изменения включают в себя:

  • Возможность помечать все строковые литералы как замороженные по умолчанию, что приводит к значительному увеличению производительности строковых операций. [39]
  • Сравнение хэшей, позволяющее напрямую проверять пары ключ/значение, а не только ключи.
  • Новый оператор безопасной навигации &. это может облегчить обработку нуля (например, вместо if obj && obj.foo && obj.foo.bar, мы можем использовать if obj&.foo&.bar).
  • Гем Did_you_mean теперь включен по умолчанию и требуется при запуске, чтобы автоматически предлагать похожие совпадения имен при NameError или NoMethodError .
  • Hash#dig и Array#dig для легкого извлечения глубоко вложенных значений (например, заданных profile = { social: { wikipedia: { name: 'Foo Baz' } } }, значение Foo Baz теперь можно получить с помощью profile.dig(:social, :wikipedia, :name)).
  • .grep_v(regexp) который будет соответствовать всем отрицательным примерам данного регулярного выражения в дополнение к другим новым функциям.

Ruby 2.4.0 включает улучшения производительности для хеш-таблицы, Array#max, Array#min и доступа к переменным экземпляра. [40] Другие заметные изменения включают в себя:

  • Binding#irb: запуск сеанса REPL, аналогичного Biding.pry.
  • Объедините Fixnum и Bignum в Integer . класс
  • String поддерживает сопоставление регистров Unicode, а не только ASCII.
  • Новый метод Regexp#match?, который является более быстрой логической версией Regexp#match.
  • Обнаружение взаимоблокировки потоков теперь показывает потоки с их обратной трассировкой и зависимостями.

Несколько заметных изменений в Ruby 2.5.0 включают в себя операторы спасения и обеспечения, автоматически использующие окружающий блок do-end (меньше необходимости в дополнительных начальных блоках), цепочку методов с помощью yield_self , поддержку покрытия ветвей и измерения покрытия метода, а также упрощение Хэш-преобразования с помощью Hash#slice и Hash#transform_keys. Кроме того, происходит множество улучшений производительности, таких как более быстрая передача блоков (в 3 раза быстрее), более быстрые мьютексы, более быстрые шаблоны ERB и улучшения некоторых методов конкатенации.

Несколько заметных изменений в Ruby 2.6.0 включают экспериментальный JIT- компилятор и RubyVM::AbstractSyntaxTree (экспериментальный).

Несколько заметных изменений в Ruby 2.7.0 включают сопоставление с образцом (экспериментальное), улучшения REPL, сборщик мусора для сжатия и разделение позиционных и ключевых аргументов.

Рубин 3 [ править ]

Ruby 3.0.0 был выпущен на Рождество 2020 года. [41] Он известен как Ruby 3x3, что означает, что программы в Ruby 3.0 будут работать в три раза быстрее по сравнению с Ruby 2.0. [42] а некоторые уже были реализованы в промежуточных выпусках на пути от 2 к 3. Для достижения 3x3 Ruby 3 поставляется с MJIT, а позже и с YJIT, компиляторами Just-In-Time, которые ускоряют работу программ, хотя они описываются как экспериментальные и остаются отключено по умолчанию (включено флагами во время выполнения).

Еще одна цель Ruby 3.0 — улучшить параллелизм , и еще две утилиты Fiber Scheduler и экспериментальный Ractor облегчают эту задачу. [41] Ractor является легким и потокобезопасным, поскольку это достигается за счет обмена сообщениями, а не общими объектами.

В Ruby 3.0 представлен язык RBS для описания типов Ruby-программ для статического анализа . [41] Он отделен от общих программ Ruby.

В Ruby 3.0 также есть некоторые улучшения синтаксиса и изменения библиотеки. [41]

Ruby 3.1 был выпущен 25 декабря 2021 года. [43] Он включает в себя YJIT, новый экспериментальный компилятор Just-In-Time, разработанный Shopify для повышения производительности реальных бизнес-приложений. новый отладчик Также включен . В этом выпуске есть некоторые улучшения синтаксиса и другие улучшения. Сетевые библиотеки для FTP , SMTP , IMAP и POP перемещены из драгоценных камней по умолчанию в связанные драгоценные камни. [44]

Ruby 3.2 был выпущен 25 декабря 2022 года. [45] Он обеспечивает поддержку запуска внутри среды WebAssembly через интерфейс WASI. Регулярные выражения также получили некоторые улучшения, в том числе более быстрый, запоминаемый алгоритм сопоставления для защиты от определенных атак ReDoS , а также настраиваемые тайм-ауты для сопоставления регулярных выражений. В этот выпуск также включены дополнительные функции отладки и синтаксиса, в том числе предложения синтаксиса, а также подсветка ошибок. Компилятор MJIT был повторно реализован как стандартный библиотечный модуль, а YJIT, Rust компилятор на основе JIT- , теперь поддерживает больше архитектур в Linux.

Ruby 3.3 был выпущен 25 декабря 2023 года. [1] Ruby 3.3 вносит в язык значительные улучшения и повышает производительность. Ключевые особенности включают в себя появление парсера Prism для портативного и удобного синтаксического анализа, добавление JIT-компилятора чистого Ruby RJIT и значительное повышение производительности компилятора YJIT. Кроме того, улучшения в использовании памяти, введение планировщика потоков M:N и обновления стандартной библиотеки способствуют более эффективной и удобной для разработчиков экосистеме Ruby.

Семантика и философия [ править ]

Юкихиро Мацумото , создатель Ruby

Мацумото сказал, что Ruby создан для продуктивной работы и развлечения программистов, следуя принципам хорошего дизайна пользовательского интерфейса . [46] На конференции Google Tech Talk в 2008 году он сказал: «Я надеюсь, что Ruby поможет каждому программисту в мире быть продуктивным, получать удовольствие от программирования и быть счастливым. Это основная цель языка Ruby». [47] Он подчеркивает, что при проектировании систем необходимо уделять особое внимание потребностям человека, а не компьютера: [48]

Часто люди, особенно инженеры-компьютерщики, сосредотачивают свое внимание на машинах. Они думают: «Сделав это, машина будет работать быстрее. Сделав это, машина будет работать более эффективно. Сделав это, машина сделает что-то что-то». Они сосредоточены на машинах. Но на самом деле нам нужно сосредоточиться на людях, на том, как люди заботятся о программировании или использовании машин. Мы мастера. Они рабы.

Мацумото сказал, что его основной целью при проектировании было создать язык, который ему самому нравилось бы использовать, сводя к минимуму работу программиста и возможную путаницу. Он сказал, что не применил принцип наименьшего удивления (POLA) к дизайну Ruby; [48] в дискуссии в группе новостей comp.lang.ruby в мае 2005 года Мацумото попытался дистанцировать Руби от POLA, объяснив, что, поскольку любой выбор дизайна будет для кого-то неожиданным, он использует личный стандарт при оценке неожиданности. Если этот личный стандарт останется неизменным, для тех, кто знаком с ним, сюрпризов будет немного. [49]

Мацумото определил это так в интервью: [48]

У каждого индивидуальный бэкграунд. Кто-то может прийти из Python, кто-то из Perl, и они могут быть удивлены различными аспектами языка. Потом ко мне подходят и говорят: «Меня удивила эта особенность языка, значит, Ruby нарушает принцип наименьшего удивления». Ждать. Ждать. Принцип наименьшего удивления касается не только вас. Принцип наименьшего удивления означает принцип наименьшего моего удивления. И это означает принцип наименьшего удивления после того, как вы хорошо изучите Ruby. Например, до того, как я начал разрабатывать Ruby, я был программистом на C++. Я программировал исключительно на C++ два или три года. И после двух лет программирования на C++ это меня все еще удивляет.

Ruby объектно-ориентирован : каждое значение является объектом, включая классы и экземпляры типов, которые во многих других языках обозначаются как примитивы (например, целые числа , логические значения и « ноль »). Поскольку все в Ruby является объектом, все в Ruby имеет определенные встроенные возможности, называемые методами. Каждая функция является методом , и методы всегда вызываются для объекта. Методы, определенные в области видимости верхнего уровня, становятся методами класса Object. Поскольку этот класс является предком любого другого класса, такие методы можно вызывать для любого объекта. Они также видны во всех областях и фактически служат «глобальными» процедурами. Ruby поддерживает наследование с динамической диспетчеризацией , миксинами и одноэлементными методами (принадлежащими и определенными для одного экземпляра , а не определяемыми в классе). Хотя Ruby не поддерживает множественное наследование , классы могут импортировать модули как примеси.

Ruby описывается как многопарадигмальный язык программирования : он позволяет процедурное программирование (определение функций/переменных вне классов делает их частью корня, «собственного» объекта), с объектной ориентацией (все является объектом) или функциональное программирование (все является объектом). имеет анонимные функции , замыкания и продолжения ; все они имеют значения, а функции возвращают последнюю оценку). Он поддерживает самоанализ , рефлексивное программирование , метапрограммирование на основе интерпретатора и потоки . Ruby поддерживает динамическую типизацию и параметрический полиморфизм .

Согласно FAQ по Ruby, синтаксис аналогичен Perl , а семантика аналогична Smalltalk , но философия дизайна сильно отличается от Python . [50]

Особенности [ править ]

Синтаксис [ править ]

Синтаксис Ruby во многом аналогичен синтаксису Perl и Python . Определения классов и методов обозначаются ключевыми словами, тогда как блоки кода могут определяться либо ключевыми словами, либо фигурными скобками. В отличие от Perl, переменные не обязательно имеют префикс сигилы . При использовании символ меняет семантику области действия переменной. Для практических целей нет различия между выражениями и утверждениями . [58] [59] Разрывы строк значимы и считаются концом оператора; эквивалентно может быть использована точка с запятой. В отличие от Python, отступы не имеют значения.

Одним из отличий от Python и Perl является то, что Ruby сохраняет все свои переменные экземпляра полностью закрытыми для класса и предоставляет их только через методы доступа ( attr_writer, attr_reader, и т. д.). В отличие от методов «getter» и «setter» других языков, таких как C++ или Java , методы доступа в Ruby могут быть созданы с помощью одной строки кода посредством метапрограммирования ; однако методы доступа также можно создавать традиционным способом C++ и Java. Поскольку вызов этих методов не требует использования круглых скобок, изменить переменную экземпляра на полную функцию очень просто, не изменяя ни одной строки вызывающего кода или не проводя какого-либо рефакторинга, обеспечивая функциональность, аналогичную C# и VB.NET. свойствам члены.

Дескрипторы свойств Python похожи, но в процессе разработки приходится идти на компромисс. Если кто-то начинает работать с Python с использования общедоступной переменной экземпляра, а затем изменяет реализацию, чтобы использовать частную переменную экземпляра, предоставляемую через дескриптор свойства, возможно, потребуется скорректировать внутренний код класса для использования частной переменной, а не публичного свойства. . Дизайн Ruby требует, чтобы все переменные экземпляра были закрытыми, но также предоставляет простой способ объявления set и get методы. Это соответствует идее, что в Ruby никогда не осуществляется прямой доступ к внутренним членам класса извне класса; скорее, каждый передает сообщение классу и получает ответ.

Реализации [ править ]

Интерпретатор Ruby от Matz [ править ]

Оригинальный интерпретатор Ruby часто называют Ruby Interpreter Матца или MRI. Эта реализация написана на C и использует собственную виртуальную машину , специфичную для Ruby .

Стандартизированная и устаревшая реализация Ruby 1.8 была написана на C как однопроходном интерпретируемом языке . [22]

Начиная с Ruby 1.9 и продолжая Ruby 2.x и выше, официальным интерпретатором Ruby был YARV («Еще одна виртуальная машина Ruby»), и эта реализация заменила более медленную виртуальную машину, использовавшуюся в предыдущих выпусках MRI.

Альтернативные реализации [ править ]

По состоянию на 2018 год существует ряд альтернативных реализаций Ruby, включая JRuby , Rubinius и mruby . Каждый из них использует свой подход: JRuby и Rubinius обеспечивают компиляцию «точно в срок» , а mruby также обеспечивает компиляцию с опережением времени .

Ruby имеет три основные альтернативные реализации:

Другие реализации Ruby включают:

Другими ныне несуществующими реализациями Ruby были:

Зрелость реализаций Ruby обычно измеряется их способностью запускать среду Ruby on Rails (Rails), поскольку ее сложно реализовать и она использует множество специфичных для Ruby функций. Момент, когда конкретная реализация достигает этой цели, называется «сингулярностью Rails». Эталонная реализация, JRuby и Rubinius [61] все могут запускать Rails без изменений в производственной среде.

Поддержка платформы [ править ]

Первоначально Мацумото разработал Ruby для 4.3BSD 3.x на базе Sony NEWS-OS , но позже перенес свою работу на SunOS 4.x и, наконец, на Linux . [62] [63] К 1999 году было известно, что Ruby работает во многих различных операционных системах . Современные версии и реализации Ruby доступны во всех основных настольных, мобильных и серверных операционных системах. Ruby также поддерживается на ряде платформ облачного хостинга, таких как Jelastic , Heroku , Google Cloud Platform и других.

Такие инструменты, как RVM и RBEnv , облегчают установку и разбиение на разделы нескольких версий Ruby и нескольких «гемсетов» на одной машине.

Репозитории и библиотеки [ править ]

RubyGems — менеджер пакетов Ruby. Пакет Ruby называется «gem» и может быть установлен через командную строку. Большинство драгоценных камней представляют собой библиотеки, хотя существуют некоторые из них, которые представляют собой приложения, например IDE . [64] размещено более 100 000 драгоценных камней Ruby На RubyGems.org . [65]

Многие новые и существующие библиотеки Ruby размещены на GitHub — сервисе, который предлагает контроля версий размещение репозитория для Git .

Архив приложений Ruby, в котором размещались приложения, документация и библиотеки для программирования Ruby, сохранялся до 2013 года, когда его функции были переданы RubyGems. [66]

См. также [ править ]

Ссылки [ править ]

  1. ^ Jump up to: Перейти обратно: а б «Выпущен Ruby 3.3.0» . Архивировано из оригинала 25 декабря 2023 г. Проверено 25 декабря 2023 г.
  2. ^ Jump up to: Перейти обратно: а б с Купер, Питер (2009). Начало Ruby: от новичка до профессионала . От новичка к профессионалу (2-е изд.). Беркли: APress. п. 101. ИСБН  978-1-4302-2363-4 . В меньшей степени на Ruby также повлияли Python, LISP, Eiffel, Ada и C++.
  3. ^ Jump up to: Перейти обратно: а б «Причины Руби» . Рубиновая конференция 2008 . Телевидение «Конфрикс». Архивировано из оригинала 15 января 2020 г. Проверено 25 июня 2019 г.
  4. ^ Jump up to: Перейти обратно: а б с д и ж Бини, Ола (2007). Практические проекты JRuby on Rails Web 2.0: перенос Ruby on Rails на Java . Беркли: APress. п. 3 . ISBN  978-1-59059-881-8 . Он опирается в первую очередь на функции Perl, Smalltalk, Python, Lisp, Dylan и CLU.
  5. ^ «Документация Джулии 1.0: Введение» . Архивировано из оригинала 16 августа 2018 года . Проверено 6 октября 2018 г.
  6. ^ Беркс, Тим. «О Ню™» . Программирование Nu™ . Neon Design Technology, Inc. Архивировано из оригинала 25 декабря 2018 г. Проверено 21 июля 2011 г.
  7. ^ Команда Ринг (3 декабря 2017 г.). «Кольцо и другие языки» . Ring-lang.net . язык звонка . Архивировано из оригинала 25 декабря 2018 года . Проверено 3 декабря 2017 г.
  8. ^ «Влияния — Справочник по ржавчине» . Справочник по ржавчине . Архивировано из оригинала 26 января 2019 г. Проверено 18 апреля 2023 г.
  9. ^ Латтнер, Крис (3 июня 2014 г.). «Домашняя страница Криса Лэттнера» . Крис Лэттнер. Архивировано из оригинала 25 декабря 2018 г. Проверено 3 июня 2014 г. Язык Swift — это продукт неустанных усилий команды языковых экспертов, гуру документации, ниндзя по оптимизации компиляторов и невероятно важной внутренней экспериментальной группы, которая предоставляла отзывы, помогающие совершенствовать и проверять идеи. Конечно, он также получил большую пользу от опыта, с трудом полученного многими другими языками в этой области, черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C#, CLU и многих других, чтобы их перечислять.
  10. ^ «О Рубине» . Архивировано из оригинала 9 октября 2014 года . Проверено 15 февраля 2020 г.
  11. ^ Сюго Маэда (17 декабря 2002 г.). «Часто задаваемые вопросы по языку Ruby» . Архивировано из оригинала 27 февраля 2014 года . Проверено 2 марта 2014 г.
  12. ^ Мацумото, Юкихиро (13 февраля 2006 г.). «Re: Возможности Ruby lisp» . Архивировано из оригинала 27 октября 2018 г. Проверено 15 февраля 2020 г.
  13. ^ Jump up to: Перейти обратно: а б с д и ж «История Рубина» . Архивировано из оригинала 14 июля 2011 г. Проверено 14 августа 2008 г.
  14. ^ «[К вашему сведению: исторический] Решающий момент названия языка Ruby. (Re: [ANN] Ruby 1.8.1)» (электронное письмо от Хироши Сугихары на Ruby-talk). Архивировано из оригинала 17 июля 2011 г. Проверено 14 августа 2008 г.
  15. ^ «1.3 Почему такое название «Рубин»?» . Часто задаваемые вопросы по языку Ruby . Руби-Док.org. Архивировано из оригинала 28 мая 2012 года . Проверено 10 апреля 2012 г.
  16. ^ Юкихиро Мацумото (11 июня 1999 г.). «Re: имя Руби?» . Ruby-Talk (список рассылки). Архивировано из оригинала 25 декабря 2018 года . Проверено 10 апреля 2012 г.
  17. ^ «Больше археолингвистики: раскопки прото-Рубина» . Архивировано из оригинала 6 ноября 2015 года . Проверено 2 мая 2015 г.
  18. ^ "[ruby-talk:00382] Re: история рубина" . Архивировано из оригинала 16 июля 2011 года . Проверено 2 мая 2015 г.
  19. ^ "[ruby-list:124] РУКОВОДСТВО — возможности Ruby" . Архивировано из оригинала 24 мая 2003 года . Проверено 2 мая 2015 г.
  20. ^ «Интервью с создателем Ruby» . Архивировано из оригинала 8 февраля 2008 г. Проверено 11 июля 2007 г.
  21. ^ Юкихиро Мацумото (октябрь 2000 г.). «Программирование Ruby: вперед» . Архивировано из оригинала 25 декабря 2018 года . Проверено 5 марта 2014 г.
  22. ^ Jump up to: Перейти обратно: а б «Мы прекращаем поддержку Ruby 1.8.7» . Архивировано из оригинала 6 июня 2015 года . Проверено 2 мая 2015 г.
  23. ^ «IPA, Агентство по продвижению информационных технологий: Сообщение для прессы об установлении стандарта JIS (JIS X 3017) для языка программирования Ruby» . Архивировано из оригинала 2 февраля 2015 г. Проверено 2 мая 2015 г. .
  24. ^ «IPA, Агентство по продвижению информационных технологий: Объявление для прессы: язык программирования Ruby утвержден в качестве международного стандарта» . Архивировано из оригинала 1 февраля 2015 года. Проверено 2 мая 2015 года .
  25. ^ «ИСО/МЭК 30170:2012» . Архивировано из оригинала 12 марта 2017 г. Проверено 10 марта 2017 г.
  26. ^ Веб-разработка: Ruby on Rails. Архивировано 24 февраля 2009 г. в Wayback Machine . Devarticles.com (22 марта 2007 г.). Проверено 17 июля 2013 г.
  27. ^ «Выпущен Ruby 1.9.3 p0» . руби-lang.org. 31 октября 2011. Архивировано из оригинала 14 января 2013 года . Проверено 20 февраля 2013 г.
  28. ^ "v1_9_3_0/НОВОСТИ" . Ruby Subversion Репозиторий исходного кода . руби-lang.org. 17 сентября 2011 года. Архивировано из оригинала 6 ноября 2015 года . Проверено 20 февраля 2013 г.
  29. ^ Ruby 1.9: чего ожидать. Архивировано 4 марта 2016 г. в Wayback Machine . Slideshow.rubyforge.org. Проверено 17 июля 2013 г.
  30. ^ Эндо, Юске. (24 февраля 2013 г.) Выпущен Ruby 2.0.0-p0. Архивировано 27 февраля 2013 г. на Wayback Machine . Ruby-lang.org. Проверено 17 июля 2013 г.
  31. ^ Эндо, Юске. (24 февраля 2013 г.) Выпущен Ruby 2.0.0-p0. Архивировано 17 января 2016 г. на Wayback Machine . Ruby-lang.org. Проверено 17 июля 2013 г.
  32. ^ «Семантическое управление версиями, начиная с Ruby 2.1.0» . 21 декабря 2013. Архивировано из оригинала 13 февраля 2014 года . Проверено 27 декабря 2013 г.
  33. ^ Густаво Фредерико Темпл Педроса, Витор де Лима, Леонардо Бьянкони (2015). «Выпущен Ruby 2.2.1» . Архивировано из оригинала 16 мая 2016 года . Проверено 12 июля 2016 г. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  34. ^ Густаво Фредерико Темпл Педроса, Витор де Лима, Леонардо Бьянкони (2015). «Журнал изменений v2.2.1» . Архивировано из оригинала 26 февраля 2017 года . Проверено 12 июля 2016 г. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  35. ^ Густаво Фредерико Темпл Педроса, Витор де Лима, Леонардо Бьянкони (2014). «Указание энергонезависимых регистров для повышения производительности в ppc64» . Архивировано из оригинала 17 сентября 2016 года . Проверено 12 июля 2016 г. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  36. ^ Густаво Фредерико Темпл Педроса, Витор де Лима, Леонардо Бьянкони (2014). «Указание МАКРОСА для повышения производительности в ppc64» . Архивировано из оригинала 17 сентября 2016 года . Проверено 12 июля 2016 г. {{cite web}}: CS1 maint: несколько имен: список авторов ( ссылка )
  37. ^ «ruby/NEWS at v2_2_0 · Ruby/Ruby · GitHub» . Гитхаб . Архивировано из оригинала 1 января 2015 года . Проверено 2 мая 2015 г.
  38. ^ "Ruby/NEWS at v.2_3_0 - Ruby/Ruby" . Гитхаб . Архивировано из оригинала 1 марта 2017 года . Проверено 25 декабря 2015 г.
  39. ^ «Изменения и возможности Ruby 2.3.0» . Бег с Руби . dev.mensfeld.pl. 14 ноября 2015 года. Архивировано из оригинала 5 января 2016 года . Проверено 27 декабря 2015 г.
  40. ^ «Выпущен Ruby 2.4.0» . www.ruby-lang.org . Архивировано из оригинала 17 февраля 2017 г. Проверено 30 декабря 2016 г.
  41. ^ Jump up to: Перейти обратно: а б с д «Выпущен Ruby 3.0.0» . Язык программирования Ruby . 2020-12-25. Архивировано из оригинала 25 декабря 2020 г. Проверено 25 декабря 2020 г.
  42. ^ Шеффлер, Джонан (10 ноября 2016 г.). «Ruby 3x3: Мац, Коичи и Тендерлав о будущем Ruby Performance» . Руби . Архивировано из оригинала 10 мая 2019 года . Проверено 18 мая 2019 г.
  43. ^ «Выпущен Ruby 3.1.0» . Ruby-lang.org . Архивировано из оригинала 25 декабря 2021 года . Проверено 25 декабря 2021 г.
  44. ^ «Выпущен Ruby 3.1.0» . Архивировано из оригинала 26 декабря 2021 г. Проверено 26 декабря 2021 г.
  45. ^ «Выпущен Ruby 3.2.0» . Архивировано из оригинала 25 декабря 2022 г. Проверено 25 декабря 2022 г.
  46. ^ «Язык программирования Ruby» . Архивировано из оригинала 18 января 2020 года . Проверено 2 мая 2015 г.
  47. ^ Google Tech Talks - Ruby 1.9 на YouTube
  48. ^ Jump up to: Перейти обратно: а б с Билл Веннерс. «Философия Рубина» . Архивировано из оригинала 5 июля 2019 года . Проверено 2 мая 2015 г.
  49. ^ «Добро пожаловать на RUBYWEEKLYNEWS.ORG» . 4 июля 2017 г. Архивировано из оригинала 4 июля 2017 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  50. ^ «Часто задаваемые вопросы по языку Ruby: как Ruby противостоит…?» . Архивировано из оригинала 8 мая 2015 года . Проверено 2 мая 2015 г.
  51. ^ Брюс Стюарт (29 ноября 2001 г.). «Интервью с создателем Ruby» . О'Рейли Медиа. Архивировано из оригинала 6 мая 2015 года . Проверено 2 мая 2015 г.
  52. ^ Билл Веннерс. «Динамическая продуктивность с Ruby» . Архивировано из оригинала 5 сентября 2015 года . Проверено 2 мая 2015 г.
  53. ^ «Языковые инструменты: приложение-убийца для языков, специфичных для предметной области?» . martinfowler.com . Архивировано из оригинала 2 мая 2021 года . Проверено 2 мая 2015 г.
  54. ^ «Ruby — добавление методов класса во время выполнения» . Архивировано из оригинала 22 сентября 2007 г. Проверено 1 ноября 2007 г.
  55. ^ Билл Веннерс. «Блоки и замыкания в Ruby» . Архивировано из оригинала 18 апреля 2015 года . Проверено 2 мая 2015 г.
  56. ^ «Методы» . Официальный FAQ по Ruby . Архивировано из оригинала 28 июня 2022 г. Проверено 20 июня 2021 г.
  57. ^ Бритт, Джеймс. «Документация стандартной библиотеки Ruby 2.0.0» . Архивировано из оригинала 13 ноября 2013 г. Проверено 9 декабря 2013 г.
  58. ^ «[ruby-talk:01120] Re: Значение while...» Архивировано из оригинала 17 июля 2011 г. Проверено 6 декабря 2008 г. В синтаксисе Ruby оператор — это всего лишь частный случай выражения, которое не может выступать в качестве аргумента (например, множественное присваивание).
  59. ^ "[ruby-talk:02460] Re: Вопрос о приоритете" . Архивировано из оригинала 22 июля 2004 г. Проверено 6 декабря 2008 г. оператор [...] не может быть частью выражения, если он не сгруппирован в круглые скобки.
  60. ^ «remove/virtual_module: Создан для того, чтобы сделать ваш Ruby-код более чем в 3 раза быстрее. Надеюсь» . Гитхаб . 21 февраля 2020 года. Архивировано из оригинала 1 марта 2017 года . Проверено 29 августа 2016 г.
  61. ^ Питер Купер (18 мая 2010 г.). «Почему, что и как был выпущен Rubinius 1.0» . Архивировано из оригинала 24 мая 2010 г. Проверено 23 мая 2010 г.
  62. ^ Майя Стодте (февраль 2000 г.). «IBM DeveloperWorks – Ruby: новый язык» . Архивировано из оригинала 18 августа 2000 года . Проверено 3 марта 2014 г.
  63. ^ Юкихиро Мацумото (август 2002 г.). "lang-ruby-general: Re: вопрос о начальной разработке Ruby" . Архивировано из оригинала 3 марта 2014 года . Проверено 3 марта 2014 г.
  64. ^ «Набор инструментов Ruby» . Архивировано из оригинала 3 апреля 2015 г. Проверено 4 апреля 2015 г.
  65. ^ «Статистика RubyGems.org — ваш хостинг драгоценных камней сообщества» . Rubygems.org . Архивировано из оригинала 10 декабря 2021 года . Проверено 10 декабря 2021 г.
  66. ^ «Мы удаляем raa.ruby-lang.org» . 08.08.2013. Архивировано из оригинала 31 декабря 2015 г. Проверено 3 января 2016 г.

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 21112f1603233346eb040dfe0948bf60__1716202320
URL1:https://arc.ask3.ru/arc/aa/21/60/21112f1603233346eb040dfe0948bf60.html
Заголовок, (Title) документа по адресу, URL1:
Ruby (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)