Для чего используют язык ruby. PHP, Ruby, Python – краткая характеристика трёх языков программирования

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

История языка Ruby

Ruby как язык программирования существует уже очень давно. Работа над первой редакцией этого невероятно популярного сегодня языка началась в далеком 1993 году, а первая официальная версия датируется 1995 годом. Создатель языка, Юкихиро Мацумото, был энтузиастом программирования еще со времен студенчества, однако идея создания собственного инструмента появилась у него гораздо позже. Так что же такого примечательного в этом языке программирования, что сегодня он занимает одну из лидирующих позиций на мировой арене разработки программного обеспечения?

Язык программирования Ruby - это высокого уровня, с и независимой от исполняющей среды реализацией многопоточности. В нем есть свой сборщик мусора, а по особенностям синтаксиса он наиболее приближен к таким языкам как Perl. С развитием экосистемы эта платформа много позаимствовала также у Smalltalk, Python, Lisp и других языков программирования. Очень важным для существования и непрерывного развития является также то, что язык "Руби" и его реализация являются полностью свободной. Это означает, что любой желающий может предложить свои изменения, и если они будут приняты сообществом, то войдут в следующую версию языка.

Философия Ruby

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

Поэтому эту платформу очень часто выбирает как входную для обучения программированию. Главным принципом, на котором базируется этот язык, является так называемый принцип “наименьшей неожиданности” - это означает, что программа должна вести себя так, как того от нее ожидает автор (программист). Другой важной частью идеологии языка, которую привнес создатель, является большая его вариативность. Одного и того же результата можно добиться различными путями и функциями. Благодаря этому каждый программист может решать задачу так, как считает наиболее корректно и удобно. Это во многом повлияло на популярность языка среди профессионалов в сфере информационных технологий.

Основные характеристики языка

Что такое "Руби" как язык программирования? Это прежде всего объектно-ориентированный язык. В нем нет примитивных типов - все структуры и единицы данных являются объектами (в отличие от того же языка Java, его есть примитивные структуры данных). Каждая функция в "Руби" является методом. Многие свойства и возможности привнесены создателями из других языков программирования, поэтому можно смело сказать, что Ruby (язык) вобрал в себя лучшее от множества других языков и технологий.

Так, к примеру, в экосистеме "Руби" есть свой собственный сборщик мусора, идея которого была перенята из Smalltalk и Java, и который может работать со всеми объектами в системе. Этот механизм позволяет незаметно для пользователя приложения и разработчика выполнять очистку памяти от объектов, которые уже не будут востребованы. Сборщик мусора позволяет разработчику в большинстве случаем не отвлекаться на управление памятью приложения, а сосредоточиться на функциональности и удобстве пользования.

Парадигмы языка

Отвечая на вопрос о том, что такое "Руби" как мультипарадигменный язык, можно неожиданно для себя оказаться в пылу спора. Ведь этот язык позволяет использовать любую из парадигм программирования одинаково успешно: процедурный стиль программирования, объектно-ориентированный или Разработчик волен выбрать для себя ту парадигму, которая ему ближе, и его набор инструментов от этого не станет ограниченнее или слабее. Язык программирования "Руби" только поощряет этот выбор.

Причины популярности

Во многом этот язык стал популярен благодаря простоте разработке различных дополнений к нему. Поэтому количество фреймворков и библиотек постоянно растет, и задачи, которые они решают самостоятельно, позволяют разработчикам в кратчайшие сроки довести продукт до состояния готовности. Очень часто "Руби"-программирование ассоциируется с разработкой веб-приложений и поддержкой функционирования различных сайтов и интернет-платформ. Эту нишу язык занял благодаря своей простоте и скорости разработки. Ведь альтернативные платформы (например, Java), требуют гораздо большего багажа знаний и опыта для решения тех же задач.

Популярные фреймворки

Если говорить о популярных фреймворках, которые существуют на рынке сегодня, то среди них стоит выделить Rails. Много людей, отвечая на вопрос о том, что такое "Руби", интуитивно подразумевают RubyOnRails. Этот набор программных компонентов стал промышленным стандартом среди разработчиков. Он постоянно поддерживается, развивается и дополняется сообществом программистов, оставаясь при этом бесплатным. Этот фреймворк описывает компоненты веб-приложения в рамках шаблона MVC (Model-View-Controller), а также предоставляет готовую интеграцию с и интерфейс для доступа к базе данных. Эти 3 компонента, по сути, позволяют в считанные часы написать и запустить в интернет простой блог или частную веб-страничку.

На языке программирования Ruby можно создавать даже нативные мобильные приложения, благодаря библиотеке RubyMotion. Она позволяет исполнять код Ruby на платформах iOS, OS X и Android. Она создана частной группой разработчиков, поэтому за ее использование необходимо платить, но она лишний раз подтверждает богатые возможности языка.

Важность написания тестов

Другой важной составляющей экосистемы языка Ruby, и его веб-ориентированной части, являются фреймоврки и библиотеки для написания тестов. RubyOnRails проповедует философию BDD (behavior-driven development), что означается, что сначала программист создает последовательность тестов, описывающих ожидаемое поведение программы, а потом уже создает код, который должен успешно пройти эти тесты. Негласным стандартом в этой сфере является RSpec - это фреймворк позволяет писать тест-кейсы на понятном даже неопытным в разработке пользователям.

Ruby Gems

Благодаря детально описанному стандарту, которому должны соответствовать все пакеты и библиотеки на Ruby, разработка дополнений не составляет особого труда. Поэтому среди так называемых gems (от англ. - драгоценный камень) можно найти модули для решения практически любых задач - от интеграции с социальными сетями и сторонними сервисами до готовых платформ для электронной коммерции. Все, что нужно для использования сторонней библиотеки - это описать зависимость своего проекта от какой-то библиотеки, находящейся в удаленном или локальном репозитории, и при следующей сборке эта библиотека автоматически загрузится в приложение. Это также упрощает миграцию проекта между разработчиками, так как нет необходимости вручную делиться зависимостями для сборки проекта.

Поэтому если вас снова спросят о том, что такое "Руби", то вы с уверенностью сможете заявить, что это мощный и универсальный язык программирования, который наверняка подойдет как для опытных разработчиков, так и для новичков, которые хотят освоить нелегкое ремесло программирования. В нем найдутся средства для создания любых приложений - от настольных программ до мобильных сервисов и веб-платформ.

Программисты Ruby — это специалисты, которые обладают богатым опытом, техническими знаниями, используют динамический язык программирования. Разработчики применяют этот язык для создания сайтов, веб-интерфейсов, корпоративных приложений, программного обеспечения. Профессия подходит тем, кого интересует информатика (см. выбор профессии по интересу к школьным предметам).

Краткое описание

Язык Ruby, который отличается открытым исходным кодом, был создан в начале 90-х годов японским разработчиком, в открытый доступ он попал в 1995 году. За пределы Японии Ruby вышел не сразу, ведь в первые годы его существования ни один документ не был переведен на европейские языки. Лишь в конце 90-х годов появилась тех. документация на английском, а рассматриваемым языком программирования заинтересовались многие разработчики.

Заметим, что до сих пор существует очень мало технической литературы, переведенной на русский, поэтому разработчик обязательно должен знать английский или японский язык. Сегодня этот язык программирования входит в Топ-5 самых популярных, уступая лидирующие позиции Java, JavaScript и PHP.

Ruby человеку без профильного образования будет сложно освоить. Работать с ним смогут лишь те программисты, которые в течение нескольких лет использовали C#, C++ или Java. Ruby отличается простым синтаксисом, многопоточным программированием, поддержкой обработки исключений, в нем данные — это объекты.

Особенности профессии

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

  • совершенствование и доработка функционала интернет-магазинов, приложений и т. д.;
  • техническая поддержка плагинов в различных системах;
  • создание приложений для Android, веб-приложений, игр, платформ и других продуктов;
  • проектирование архитектуры баз данных;
  • тестирование и отладка созданного ПО;
  • взаимодействие с дизайнерами, разработчиками и другими членами команды;
  • управление проектом.

Плюсы и минусы профессии

Плюсы

  1. Простой и понятный динамический язык программирования.
  2. Небольшое количество опытных Ruby-разработчиков, что повышает ценность профессии в глазах работодателя.
  3. При наличии профессиональных знаний освоить Ruby можно достаточно быстро.
  4. Стабильная и высокая заработная плата, получение бонусов при условии успешной работы.
  5. Трудиться можно в офисе или удаленно, самостоятельно планируя рабочий день.
  6. Постоянный карьерный рост.
  7. Разработчики добиваются успеха очень быстро, ведь можно стать Ruby Senior в возрасте 25-30 лет.
  8. Начинать работать можно еще во время обучения, что принесет и прибыль, и опыт.
  9. Большое количество онлайн-курсов и свободных программистов, готовых обучать студентов.

Минусы

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

    1. Спокойствие, ведь часто приходится выполнять работу в авральном режиме.
    2. Полная самоотдача и терпеливость, что особенно касается отсутствия графика рабочего дня, внесения бесконечных изменений, исправления ошибок.
    3. Коммуникабельность, ведь необходимо находить общий язык с дизайнерами, заказчиками, сторонними программистами.
    4. Скромность и интеллектуальность.
    5. Честность и техническая грамотность.
    6. Творческий поход.
    7. Добросовестность.
    8. Отсутствие вредных привычек.
    9. Находчивость.

    Обучение на программиста Ruby

    Вузы

    Место работы

    1. IT-компании.
    2. Рекламные агентства.
    3. Частные разработчики ПО.
    4. Банковская система.
    5. Другие организации, которым для работы необходим программист.

    Карьера

    Ruby-разработчика, как и любого другого программиста, ожидает стабильный профессиональный рост, но его скорость зависит от знаний, умений и личных амбиций человека. В первые 3 месяца работы программист является учеником, после чего каждый год опыта будет приносить ему новый статус:

    • Junior (до 18 месяцев опыта);
    • Middle (до 3-4 лет опыта);
    • Senior (более 4 лет опыта).

    Классификация может быть иной, но принцип остается неизменным: больше опыта — лучше должность и выше заработная плата.

    Зарплата Программиста Ruby

    Зарплата на 03.02.2020

    Россия 30000—120000 ₽

    Москва 50000—230000 ₽

    Профессиональные навыки

    1. Знание Ruby и Ruby on Rails.
    2. Опыт работы с PHP, Java, C++ и т. д.
    3. Желателен опыт работы в сфере программирования не менее 2-3 лет.
    4. Обязательное знание иностранных языков.
    5. Знание MySQL, PostgreSQL, JSP, HTML, UnitTest, Grails, CSS.
    6. Git, Subversion или Mercurial.
    7. Разработка технической документации.

    Полезные материалы

    1. Русскоязычный форум о Ruby: onrails.club.
    2. Сайт с переводами для Ruby: rusrails.ru.
    3. Крис Пайн «Учись программировать».
    4. Майкл Фитцджеральд «Изучаем Ruby».
    5. Giovanni Sakti, Nia Mutiara, Хафис Бари Лубис «Learning Devise for Rails».

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


    История языка Ruby

    Ruby в качестве языка программирования существует довольно давно. Впервые работа над редакцией этого известного на сегодня языка началась в 1993 году. Первая первая официальная версия вышла в 1995 году. Создателем языка является Юкихиро Мацумото. Его энтузиазм в области программирования был замечен еще в студенчестве, но идея создания своего инструмента появилась намного позже. Итак, в чем же особенности примечательного в этом языке программирования? Благодаря чему была достигнута популярность на мировой арене?

    Язык программирования Ruby – достаточно интерпретируемый. Это язык высокого уровня, имеющий динамическую типизациею и независимую от исполняющей среды реализацию многопоточности. В нем существует собственный сборщик мусора. В области особенностей синтаксиса он больше всего приближен к языкам Perl. В результате широкого развития экосистемы данная платформа много взяла у Smalltalk, Python, Lisp и прочих языков программирования. Большую важность представляет и то, что язык Руби и его реализация полностью свободны. Из этого следует, что каждый желающий имеет возможность предложить собственные изменения. В случае, если они будут приняты сообществом, войдут в последующую версию языка.

    Философия Ruby

    В процессе создания собственного детища Мацумото, будучи преданным фанатом и энтузиастом объектно-ориентированного программирования, стал автором определенной философией для программистов, которые предпочитают изучить его язык. Таким образом, язык программирования Ruby предусмотрен для создания простых и понятных приложений. Главный упор был сделан на простоту и читабельность кода, а не на скорость программы. Именно в этом состоит причина того, что данную платформу зачастую выбирают как входную, необходимую для обучения программистов. Основная суть, на которой основан этот язык, состоит в принципе «наименьшей неожиданности». Что это означает?

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

    Основные характеристики

    Что означает Руби при его рассмотрении в качестве языка программирования? В первую очередь это объектно-ориентированный язык. В нем отсутствуют примитивные типы, так как все структуры и единицы данных считаются объектами. Это и отличает его от того же языка Java, где присутствуют примитивные структуры данных. Все функции в Руби являются методом. Большая часть свойств и возможностей привнесены авторами из других языков программирования. Таким образом, можно смело утверждать, что Ruby содержит в себе лучшие качества множества других языков и технологий. Например, в экосистеме Руби существует собственный сборщик мусора.

    Его идея была перенята из Smalltalk и Java. Он способен работать со всеми объектами в системе. Данный механизм дает возможность осуществлять очистку памяти от объектов, в которых утрачена востребованность, что происходит незаметно для пользователя приложения и разработчика. Сборщик мусора помогает разработчику не отвлекаться на управление памятью приложения. Таким образом, он может полностью сосредоточить свое внимание на функциональности и удобстве использования.

    Парадигмы языка

    Некоторые программисты, которые отвечали на вопрос о том, что представляет собой Руби в качестве мультипарадигменного языка, невольно оказывались в пылу спора. Данный язык дает возможность применить любую из парадигм программирования с одинаковым успехом. Из них стоит выделить следующее:

    Процедурный стиль программирования;
    объектно-ориентированный подход;
    функциональный подход.

    Разработчику дозволено выбрать ту парадигму, которая ему более близка. При этом следует учитывать, что его набор инструментов от этого будет становиться ограниченнее или слабее. Язык программирования Руби придерживается только такого выбора.

    Причины известности

    В большинстве случаев данный язык получил известность за счет простоты разработки всевозможных дополнений к нему. Таким образом, число фреймворков и библиотек неизменно возрастает, а задачи, решаемые ними самостоятельно, дают возможность разработчикам в самые короткие сроки довести продукт до готового состояния. Зачастую программирование Руби ассоциируется с созданием веб-приложений, а также поддержкой функционирования всевозможных сайтов и интернет-платформ. Данную нишу язык смог занять за счет собственной простоты и скорости разработки. Стоит отметить, что альтернативные платформы (к примеру, Java), нуждаются в значительно большем багаже знаний и опыте, предназначенных для решения аналогичных задач.

    Известные фреймворки

    Говоря об известных фреймворках, существующих на рынке на сегодняшний день, стоит отметить среди них Rails. Большинство пользователей, которые отвечают на вопрос о том, что представляет собой Руби, на уровне интуиции подразумевают RubyOnRails. Данный набор программных элементов является промышленным стандартом у разработчиков. Он регулярно поддерживается, находится в постоянном развитии, пополняется сообществом программистов. Стоит отметить, что при всем этом он остается бесплатным.

    Представленный фреймворк способен описывать компоненты веб-приложения в границах шаблона MVC (Model-View-Controller). Кроме того, он готов предоставить готовую интеграцию с сервером приложения, а также интерфейс, позволяющий открыть доступ к базе данных. Такие три компонента дают возможность буквально в считанные часы написать и произвести запуск в интернет простого блог или частной веб-страницы. Существует возможность создавать на языке программирования Ruby даже нативные мобильные приложения. Это достигается при использовании библиотеки RubyMotion. С ней можно исполнять код Ruby на платформах iOS, OS X и Android. Эта библиотека разработана частной группой производителей. Это означает, что за использование придется платить, однако она является очередным подтверждением широких возможностей языка.

    Важность написания тестов

    Еще одна немаловажная составляющая экосистемы языка Ruby, а также его веб-ориентированной части, состоит в фреймоврках и библиотеках, предназначенных для написания тестов. RubyOnRails использует философию BDD (behavior-driven development). Это значит, что сначала программист разрабатывает последовательность тестов, которые описывают ожидаемое поведение программы. Затем он создает код, необходимый для успешного прохождения этих тестов. Негласным стандартом в данной области считается RSpec. Он представляет собой фреймворк, который дает возможность писать тест-кейсы на языке, понятном даже неопытным пользователям.

    Ruby Gems

    За счет подробно описанного стандарта, которому должны соответствовать пакеты и библиотеки на Ruby, создание дополнений не вызывает сложностей. Таким образом, среди gems существует возможность отыскать модули, предназначенные для решения почти любых задач, начиная от интеграции с социальными сетями и сторонними ресурсами и заканчивая готовыми платформами для электронной коммерции. Чтобы использовать стороннюю библиотеку, достаточно описать зависимость собственного проекта от определенной библиотеки, которая находится в удаленном или локальном репозитории. При последующей сборке данная библиотека загружается в приложение в автоматическом режиме. Такое решение значительно упрощает миграцию проекта между создателями, ведь необходимость делиться зависимостями для сборки проекта ручным способом отсутствует.

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

    Ruby - мощный и популярный язык программирования. Помимо своей популярности на нём основывается известный фреймворк , который позволяет создавать крутые и динамические веб сайты различной тематики. Если взглянуть на рейтинг TIOBE , то язык входит в двадцатку самых популярных языков мира.

    Язык появился в 1995 году и считается молодым языком в сравнении с Си или же C++, которые появились в 1972 и 1983 году соответсвенно. Язык имеет ряд преимуществ и специфичных возможностей, которые реализованы исключительно в нем, если брать в сравнение другие популярные языки программирования.

    План курса

    В ходе видеокурса вы изучите язык Ruby без использования дополнительных фреймворков. Дополнительные курсы по Ruby вы можете найти на .

    За курс мы изучим как установить и работать с языком, изучим синтаксис Руби (переменные, циклы, условные операторы), а также более сложные вещи: ООП, работа с файлами, исключения, методы и затронем еще множество других тем.


    Установка Ruby на Windows

    Для установки Руби на Виндовс используйте RubyInstaller , который можно скачать на официальном сайте по этой ссылке . Скачивайте последнюю версию и устанавливайте её как обычную программу. После завершения установки перед вами будет похожее окно:

    На этом окне проследите чтобы галочка обязательно была проставлена, тогда далее откроется другое приложения для установки Ruby в систему.

    В открывшемся окне введите поочередно 1 и нажмите Enter , дождавшись конца установки нажмите 2 и Enter и в конце выполните третью команду нажав 3 и Enter .

    Установка Руби на Мак

    На маке Руби установлен по-умолчанию, поэтому вам не нужно ничего дополнительно делать. Вы можете проверить версию языка в терминале при помощи следующей команды:

    Если версия устаревшая, то можно выполнить загрузку новой. Для начала необходимо загрузить менеджер версий Ruby. Это делается через терминал при помощи команды:

    Curl -L https://get.rvm.io | bash -s stable

    После установки менеджера необходимо перезапустить терминал. Выполните следующую команду:

    Rvm list known

    После перезапуска вы можете установить ту версию, которую пожелаете. В нашем случае была установлена версия 2.4.2:

    Rvm install ruby-2.4.2

    В конце вы можете еще раз проверить версию и если она по прежнему старая, то просто установите по-умолчанию новую версию.

    Ruby — один из самых молодых языков программирования. Его создатель Юкихиро Мацумото (Yukihiro Matsumoto, также известный под псевдонимом Matz), профессиональный японский программист, рассказывает: <<Я начал разработку Ruby 24 февраля 1993 года. Первая hello world программа на Ruby заработала летом того же года, а aльфа-версия была готова к декабрю 1994.>> Название языка происходит от имени драгоценного камня рубина (по аналогии с другим широко распространенным языком программирования Perl: pearl — жемчуг).

    Вот как характеризует Ruby его автор: <<Это мощный и динамический объектно-ориентированный язык с открытыми исходниками. Ruby работает на многих платформах, включая Linux и другие реализации Unix, MS-DOS, Windows 9x/2000/NT, BeOS и MacOS. Главная цель Ruby — эффективность разработки программ, и пользователи найдут, что программирование на нем эффективно и даже забавно>> .

    В Японии Ruby стал популярным с момента появления первой общедоступной версии в 1995 году, однако наличие документации только на японском языке сдерживало его дальнейшее распространение. Лишь в 1997 году появилось описание Ruby на английском языке, а в 1998 году открылся форум ruby-talk. С этого момента Ruby начал свое шествие по всему миру. За последний год появились три англоязычные книги, посвященные ему (см. ), хотя на русский язык, к сожалению, ни одна из них еще не переведена. Сейчас Ruby входит в большинство дистрибутивов ОС Linux, доступен он и пользователям других операционных систем.

    Заметим, что данная статья не является справочным руководством по языку. С кратким введением можно познакомиться в электронном учебнике , а более полная информация может быть найдена в и , а также на уже упомянутых выше сайтах сети интернет. Основная цель статьи — дать людям, уже знакомым с различными языками программирования, общее представление об особенностях Ruby, показать его мощь и красоту, объяснить, что он одинаково хорош и как первый язык программирования, и как средство для работы профессионального программиста и системного администратора.

    Программисты говорят о Ruby

    В этом разделе мы изложим собранные из различных источников высказывания о языке Ruby, отложив на некоторое время рассмотрение примеров, иллюстрирующих их. Большая часть вопросов, которые будут затронуты, предполагает наличие определенных знаний у читателя в области теории языков и объектно-ориентированного программирования. Легче всего понять Ruby тем, кто знает Smalltalk, Lisp, C, C++ и Perl. <<Джентльменский>> набор из Perl, Java и C++ тоже является весьма хорошей стартовой позицией для изучения Ruby.

    Тем же, кто не может похвастаться подобными знаниями, весьма приятно будет узнать, что

    * <<если для изучения языка Perl Вам нужно потратить, скажем, три недели, то Python Вы изучите за неделю, а Ruby — за один день!>>

    * <>.

    Во введении мы уже цитировали Юкихиро Мацумото — создателя Ruby. Вот что еще он сам говорит об этом языке. Итак, Ruby

    * имеет простой синтаксис;

    * поддерживает обработку исключений;

    * позволяет переопределять операторы;

    * является чисто объектно-ориентированным языком (complete, full, pure object oriented language), в котором, в отличие от Java или Perl, все — объекты;

    * позволяет работать с целыми числами произвольной величины;

    * не требует объявления переменных;

    * использует префиксы (@, $, @@) для задания области видимости (scope) переменных;

    * поддерживает многопоточное программирование.

    Одной из первых работ, привлекших внимание к Ruby, была уже несколько устаревшая статья Хала Фултона (Hal Fulton) <<Тридцать семь причин, по которым мне нравится Ruby>>. Вот некоторые из них.

    Ruby является динамическим языком. В отличие от статических языков, подобных C++ или Java, методы и переменные в Ruby могут быть добавлены или переопределены во время выполнения программы. Это позволяет, например, обойтись без директив условной компиляции #ifdef, необходимых для языка C. Здесь проявляется сходство Ruby с такими языками, как Lisp и Smalltalk.

    Ruby — интерпретируемый язык. Так как это свойство отрицательно сказывается на производительности, то хочется дать некоторые комментарии. Во-первых (и это самое главное), быстрый цикл разработки является важнейшим достоинством, которое <<перевешивает>> некоторые недостатки. Во-вторых, хотя Ruby и не является катастрофически медленным, в тех случаях, когда скорость абсолютно необходима, можно написать часть кода на языке C. Наконец, в-третьих, никто не сказал, что когда-нибудь не будет написан компилятор с языка Ruby.

    В Ruby имеется возможность работы с регулярными выражениями. Когда-то они использовались только в некоторых утилитах UNIX-систем (grep, sed, vi). Затем, благодаря языку Perl, значительное число людей признало их мощь при обработке текстов. Ruby дает возможность использовать эту силу с еще большей легкостью.

    Помните известную фразу Исаака Ньютона <<Если я видел дальше, чем другие, то только потому, что стоял на плечах гигантов>>? Ruby, безусловно, <<стоит на плечах гигантов>>, среди которых Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell и другие языки. В Ruby собрано все лучшее, что накоплено человечеством в области языков программирования. При этом соблюдены следующие три принципа: не изобретать колесо, не чинить не сломанное, использовать имеющиеся у программистов знания и опыт. В Ruby пригодятся и знания о файлах и потоках из ОС UNIX, и спецификации функции printf из стандартной библиотеки ввода/вывода языка C, и умение работать с регулярными выражениями в Perl.

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

    Ruby — универсальный и гибкий язык. С его помощью можно одинаково изящно реализовать как то, что традиционно делается с помощью интерпретатора Kornshell, так и то, что пишется обычно на C.

    По простоте и богатству возможностей работы со строками и массивами языку Ruby нет конкурентов. Массивы являются динамическими, с ними можно оперировать как с множествами, стеками и очередями. Есть и ассоциативные массивы, работа с которыми также чрезвычайно проста и удобна.

    Для языка Ruby уже написано большое число библиотек. Потоки, сокеты, объекты, сохраняемые между запусками программ, CGI-программы, базы данных, GUI — все это можно использовать, программируя на Ruby.

    Дэйв Томас (Dave Thomas) и Энди Хант (Andy Hunt), соавторы первой книги по Ruby, вышедшей на английском языке, в интервью журналу «Dr. Dobb’s Journal» (январь 2001) говорят: <<Возьмите чисто объектно-ориентированный язык Smalltalk и избавьтесь от его причудливого синтаксиса. Добавьте комфорт и мощь языка Perl, но без всяких специальных случаев и магических преобразований. Заверните получившееся в ясный синтаксис, основанный частично на языке Eiffel, и добавьте понемногу от Scheme, CLU, Sather и Common Lisp. У вас получится Ruby.>> Фактически это означает, что Ruby — естественный и практически неизбежный результат эволюции современных языков программирования. Авторы данной статьи согласны с такой точкой зрения.

    Хочется подчеркнуть, что Ruby не является панацеей для решения всех проблем программистов. Не следует отказываться от использования языков Java и C++ там, где их применение оправдано. С другой стороны, не разумно недооценивать возможности практического применения Ruby в реальных проектах.

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

    Начнем с языка Java:

    * Ruby — интерпретируемый язык;
    * в Ruby все является объектом (в Java есть типы int и Integer, что создает определенные неудобства);
    * переменные в Ruby не являются статически типизированными и не требуют объявления;
    * модули (modules) в Ruby позволяют с помощью <<миксинов>> (mixins) конструировать подобие интерфейсов (interfaces) языка Java, допуская при этом в них реализацию методов.

    Теперь сравним с языком Perl:

    * Ruby значительно легче освоить, на нем легче программировать, а написанные программы проще сопровождать;
    * в Ruby префиксы (@, $, @@) описывают область видимости (scope), а не тип переменной;
    * Ruby позаимствовал из языка Perl регулярные выражения, переменную $_ и многое другое.

    Завершим сопоставление Ruby с другими языками рассмотрением одного из ближайших <<конкурентов>> — языка Python. Это сравнение особенно интересно потому, что именно Python рассматривается сейчас многими, как хороший кандидат на роль первого языка программирования. Итак, сравним Ruby с языком Python:

    * управляющие конструкции и методы в языке Ruby завершаются ключевым словом end, в то время как Python использует так называемый <<двумерный>> синтаксис, когда признаком завершения является изменение количества лидирующих пробелов в очередной строке программы;
    * вместо self в Ruby для обозначения переменных экземпляра используется префикс @;
    * в Ruby, в отличие от языка Python, понятия типа и класса являются синонимами;
    * Python не поддерживает наследования и не позволяет добавлять методы к существующим типам;
    * используемый в Ruby алгоритм сборки мусора позволяет проще писать реализации методов на языке C;
    * расширения для Ruby, написанные на C/C++ позволяют определять новые классы;
    * зачастую Ruby быстрее, чем Python.

    И вновь дадим слово создателю языка. Его высказывание о планах дальнейшей работы над Ruby, выраженное в виде одной из управляющих конструкций языка, позволит нам плавно перейти к рассмотрению примеров реальных программ.

    loop do read and reply mails write code write document/article/book write code end

    Программисты пишут на Ruby

    Начнем с примеров, показывающих, что знание библиотек ввода/вывода языков C и C++ пригодится и в Ruby.

    printf "Число: %5.2f; Строка: %s", 1.23, "Привет!" endl = "n"; $stdout << 17 << " красных шариков" << endl line = gets; print line

    Специальная глобальная переменная $_ всегда содержит результат последней операции чтения. Она же используется как аргумент по умолчанию во многих конструкциях. Следующая программа, например, печатает все строки из входного потока, которые содержат слово Ruby.

    while gets # присваивание очередной строки переменной $_ if /Ruby/ # сопоставление ее с образцом Ruby print # печать $_ end end

    ARGF.each { |line| print line if line =~ /Ruby/ }

    ARGF в Ruby — это объект, который представляет собой конкатенацию содержимого всех файлов, имена которых заданы в командной строке, либо просто стандартный поток ввода (в случае отсутствия аргументов).

    Вот как выглядит на Ruby программа вычисления факториала числа, указываемого в качестве аргумента командной строки:

    def fact(n) return 1 if n == 0 f = 1 while n>0 f *= n n -= 1 end return f end print fact(ARGV.to_i), "n"

    Для вычисления с помощью этой программы, размещенной в файле fact.rb, значения 100! достаточно выполнить команду ruby fact.rb 100.

    Три программы, рекурсивно вычисляющие 30-е число Фибоначчи, приведенные ниже, позволяют сравнить производительность интерпретаторов Ruby, Python и Perl.

    # Ruby def fib(n) if n<2 n else fib(n-2)+fib(n-1) end end print fib(30), "n" # Python def fib(n): if n<2: return n else: return fib(n-2)+fib(n-1) print fib(30) # Perl sub fib { my($n)=@_; if ($n<2) { return $n; } else { return fib($n-2)+fib($n-1); } } print fib(30), "n";

    Еще одна классическая задача — определение с помощью решета Эратосфена списка всех простых чисел, не превосходящих заданного (100 по умолчанию).

    max = Integer(ARGV.shift || 100) sieve = for i in 2 .. max sieve[i] = i end for i in 2 .. Math.sqrt(max) next unless sieve[i] (i*i).step(max, i) do |j| sieve[j] = nil end end puts sieve.compact.join ", "

    В качестве следующего примера рассмотрим решение на языке Ruby задачи, которая часто предлагается студентам первого курса, изучающим языки C/C++: для заданного текстового файла определить число вхождений в него каждого из встречающихся в нем слов. Использование ассоциативных массивов и ряда стандартных методов работы с файлами и строками позволяет написать чрезвычайно краткую и ясную программу.

    freq = Hash.new(0) while gets() for word in $_.split(/W+/) freq += 1 end end for word in freq.keys.sort! print word, " -- ", freq, "n" end

    Приведем два простых примера использования стандартной библиотеки классов. В результате выполнения первой программы будет найдено, что 7/8+1/8=1, а 7/8*1/8=7/64; вторая из них вычислит (1 + i)64.

    require "rational" a = Rational(7,8) b = Rational(1,8) print a, "+", b, "=", a+b, "; ", a, "*", b, "=", a*b, "n" require "complex" a = Complex(1,1); print a**64

    Без подробных объяснений приведем две эквивалентные программы, иллюстрирующие переопределение оператора для класса SongList. Ассоциативный массив (associative array, hash или dictionary) допускает индексирование произвольными объектами, а не только целыми числами. В данном случае оператор позволяет находить нужную песню не только по номеру, но и по ее названию.

    class SongList def (key) if key.kind_of?(Integer) return @songs else for i in [email protected] return @songs[i] if key == @songs[i].name end end return nil end end class SongList def (key) return @songs if key.kind_of?(Integer) return @songs.find { |aSong| aSong.name == key } end end

    Так как Ruby унаследовал лучшие особенности многих языков, то для выполнения достаточно стандартных действий обычно имеется несколько разных возможностей. Вот 13 (!) различных способов напечатать числа от 0 до 9:

    i = 0 i = 0 while i < 10 begin print i , " " print i , " " i += 1 i += 1 end end while i < 10 i = 0 i = 0 until i >= 10 begin print i , " " print i, " " i += 1 i += 1 end end until i >= 10 for i in for i in (0..9) print i, " " print i, " " end end for i in (0...10) 10.times do |i| print i, " " print i, " " end end 0.upto(9) do |i| 9.downto(0) do |i| print i, " " print i, " " end end (0..9).each do |i| (0...10).each do |i| print i, " " print i, " " end end i = 0 loop do if i < 10 then print i, " " else break end i += 1 end

    В заключение вопрос для тех, кто не знает языка Ruby: что напечатает следующая программа?

    print ["L", "R", "H", "T"].collect { |x| x.succ }

    Если вы сумеете угадать ответ, то это будет лучшим подтверждением тому факту, что Ruby интуитивно ясный язык. Если же не угадаете, то у вас будет еще одна причина изучить его.

    Ruby и новички

    Этот язык, несомненно, является одним из лучших в качестве первого языка программирования. Быстрый цикл разработки (редактирование — запуск — редактирование), использование интерпретатора, изначальная объектно-ориентированность, нетипизированные переменные, которые не требуют объявления, — все это позволяет учащимся сконцентрировать свое внимание на общих принципах программирования.

    Не менее важны мультиплатформенность Ruby и его принадлежность к миру свободно распространяемого ПО. Еще один весомый аргумент в его пользу — возможность практического использования языка в самых разных областях, что не позволит впоследствии профессионалу, который вырастет из новичка, пожалеть о напрасно потраченном времени.

    Можно заметить, что значительному числу перечисленных выше требований удовлетворяют и Python, и Java, и C++ и даже (в меньшей степени) Delphi. Последний из них, правда, является коммерческим продуктом, что автоматически должно было бы повлечь исключение его из рассмотрения. Однако в России даже среди организаторов олимпиад по программированию для школьников находятся люди, утверждающие, что стоимость дистрибутива Delphi составляет около 70 рублей!

    Попробуем сначала сравнить языки Ruby и Java, посмотрев на них глазами человека, только начинающего знакомиться с миром программирования. Для такого человека чрезвычайно важна ясность и краткость программ, отсутствие в них странных и непонятных <<магических>> слов. А именно из них и состоит в основном Java-вариант традиционной первой программы!

    public class Hello { public static void main(String args) { System.out.println("Здравствуй, мир!"); } }

    Аналогичную программу на Ruby долго объяснять не придется:

    puts "Здравствуй, мир!"

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

    В отличие от языка Java в Ruby нет проблемы <<больших>> чисел. Приведенные выше программы вычисления факториала числа или чисел Фибоначчи, будучи написанными на Ruby, всегда дают верный результат. В случае же языка Java ограничения на диапазон представимых целых чисел приводят к нелепым (с точки зрения ученика школы или студента первого курса) равенствам типа

    Неприятная неожиданность для человека, только приступающего к изучению программирования!

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

    Компактность дистрибутива Ruby и простота его установки в любой операционной системе позволяют школьнику или студенту без проблем работать на домашнем компьютере. Опять сравнение не в пользу Java!

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

    Ruby и профессионалы

    Чем же хорош Ruby для профессионального программиста и системного администратора? Многое уже было сказано выше, но вот еще несколько интересных примеров и кратких комментариев.

    Публикации по теме