Computerworld, США

Взрыв популярности Ruby пришелся на 2004 год, когда была выпущена новая среда программирования, получившая название Rails, основу которой составлял Ruby

Язык программирования Ruby появился примерно в 1993 году. Первоначально ставший популярным в Японии, он постепенно стал применяться и в других странах. Взрыв популярности Ruby пришелся на 2004 год, когда была выпущена новая среда программирования, получившая название Rails, основу которой составлял Ruby. Прежде чем обсуждать Rails, давайте сначала поговорим о Ruby и выясним, в чем его отличие от других языков программирования.

Ruby

Ruby — это объектно-ориентированный, свободно распространяемый язык программирования с очень четким синтаксисом, о котором один из разработчиков сказал, что он «сочетает в себе элегантность Smalltalk, простоту Python и прагматизм Perl». Как интерпретируемый язык сценариев Ruby столь же полезен для создания небольших специализированных скриптов, как и для полномасштабных приложений. Благодаря модели прямого выполнения и динамического контроля типов, Ruby позволяет разрабатывать код поэтапно, причем в большинстве случаев вы можете добавить функцию и сразу же ее опробовать. Программы на Ruby, как правило, короче, чем аналогичные программы на Perl, Python или C++.

Автор Ruby Юкихиро Мацумото сказал, что он хотел создать язык, который позволил бы ему работать более производительно и при этом более интересно. Фактически, наверное, «интересность» — самая важная отличительная особенность Ruby по сравнению с другими языками. Когда вы начинаете читать литературу по Ruby, вы сразу понимаете, что это уникальный язык, предназначенный для почти фанатичных пользователей. Но следует помнить, что изначально Perl, PGP и Python воспринимались точно так же.

Каждый язык предназначен для конкретных целей: простое кодирование, компактность кода, удобочитаемость, скорость выполнения, ориентированность на особые задачи, такие как обработка текста, поддержка базы данных или инженерные расчеты. Несмотря на это, на большинстве языков, которые удовлетворяют требованиям машины Тьюринга, можно писать почти что угодно, причем на практике отличие одного языка от другого сводится к форме, стилю, размеру, удобству использования или поддержке. В одном из интервью Мацумото заметил: «Языки различны, но эти различия ограниченны. Скажем, Python и Ruby предлагают программисту практически равные возможности».

Мацумото создавал Ruby с минимумом «инструментов», но с избытком выразительных средств, таких как заголовки, и пространными требованиями к переменным и декларациям классов. Синтаксис Ruby таков, что, как только вы ознакомились с его словарем и стилем, вы можете читать множество строк кода так, как будто вы читаете на естественном языке, благодаря чему в программах очень просто разбираться и их легко поддерживать.

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

Rails

Rails — это «полностековая», свободно распространяемая среда программирования, реализованная на Ruby и предназначенная для быстрого и удобного создания ориентированных на работу с базами данных Web-приложений

Rails — это «полностековая», свободно распространяемая среда программирования, реализованная на Ruby и предназначенная для быстрого и удобного создания ориентированных на работу с базами данных Web-приложений. Она разработана Дэвидом Хайнмеером Ханссоном, студентом колледжа из Дании, на основе написанного им же инструментария управления проектами, получившего название Basecamp. Появилась Ruby on Rails в июле 2004 года.

Под «полностековостью» своей среды Ханссон понимает то, что все уровни созданы таким образом, чтобы они работали вместе, причем так, чтобы вам не приходилось повторять уже сделанное и можно было использовать один язык сверху донизу. Все в Rails написано на Ruby. Для того чтобы добиться сформулированных Ханссоном требований, он создавал Rails исходя из пары основных принципов.

Во-первых — меньше кода. Благодаря тому что программы невелики по размеру, вы пишете быстрее и делаете меньше ошибок. В итоге полученный код легче понять, поддерживать и совершенствовать. Одна из отличительных особенностей Ruby, позволяющая писать меньше кода, заключается в предположении, что оболочка сама может и должна обрабатывать метаданные.

Второй — принцип соглашения о конфигурации, означающий, что Rails не использует конфигурационные файлы. Вместо этого среда опирается на простые соглашения о программировании, которые позволяют ей «понимать» то, что необходимо, за счет информации, уже содержащейся в коде приложений и в базе данных, которая это приложение использует.

«Это значит, что больше не нужны файлы, описывающие то, что уже и так написано в коде. Это означает отсутствие этапа компиляции. Сделал изменения — и тут же посмотрел, как это работает», — отметил Ханссон.


Структура Rails

Rails состоит из трех частей.

  • Активная запись связывает бизнес-объекты и таблицы базы данных для создания сохраняемой доменной модели вместе с логикой и данными, представленными в едином пакете. В Rails программа будет, как правило, автоматически "понимать", какую таблицу базы данных использовать и какие столбцы в ней есть. Программа указывает взаимосвязи между таблицами с помощью простых команд.
  • Оболочка набора действий выполняет маршрутизацию входящих запросов через контроллеры, используя один метод для каждого действия, и поддерживает выводы представлений с помощью шаблонов Ruby. Контроллеры - это программируемые методы, которые реагируют на пользовательское взаимодействие и используют логику приложения для манипулирования данными и их отображения, обычно в контексте Web-браузера.
  • Почтовая оболочка предназначена для уровней службы электронной почты, которые консолидируют код для отправки уведомлений по электронной почте или для обработки входящих сообщений. Rails поддерживает основные СУБД, в том числе MySQL, PostgreSQL, SQLite, Microsoft SQL Server, IBM DB2 и Oracle. Он предназначен для Web-серверов Apache, LightTPD, собственного сервера для Ruby - WEBrick и может использовать сервлеты, Fast Common Gateway Interface и CGI.