Ruby что это такое
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
Ruby (язык программирования)
Ruby (англ. ruby — рубин, произносится [‘ru:bɪ] — ру́би) — интерпретируемый язык программирования высокого уровня. Обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями, поддерживающими много разных парадигм программирования, прежде всего классово-объектную. Ruby был задуман в 1993 году (24 февраля) японцем Юкихиро Мацумото, стремившимся создать язык, совмещающий все качества других языков, способствующие облегчению труда программиста. По особенностям синтаксиса он близок к языкам Perl и Eiffel, по объектно-ориентированному подходу — к Smalltalk. Также некоторые черты языка взяты из Python, Lisp, Dylan и Клу. Кроссплатформенная реализация интерпретатора языка является полностью свободной.
Содержание
Возможности языка
Философия языка
Юкихиро Мацумото, создателю языка Ruby принадлежат следующие высказывания: «Человек создан для творчества, и я всегда знал, что люблю творить. Увы, я обделён талантом художника или музыканта. Зато умею писать программы.»
«Я хочу, чтобы компьютер был моим слугой, а не господином, поэтому я должен уметь быстро и эффективно объяснить ему, что делать.»
Мацумото, фанат объектно-ориентированного программирования, мечтал о языке более мощном, чем Perl, и более объектно-ориентированном, чем Python. Основное назначение Ruby — создание простых и в то же время понятных программ, где важна не скорость работы программы, а малое время разработки, понятность и простота синтаксиса. Язык следует принципу «наименьшей неожиданности»: программа должна вести себя так, как ожидает программист. Однако в контексте Ruby это означает наименьшее удивление не при знакомстве с языком, а при его основательном изучении. Сам Мацумото утверждает, что целью разработки была минимизация неожиданностей при программировании для него, но после распространения языка он с удивлением узнал, что мышление программистов похоже, и для многих из них принцип «наименьшей неожиданности» совпал с его принципом.
Установка
Три способа установки Ruby
Вы можете получить копию Ruby несколькими способами, и разные люди предпочитают каждый из трех способов по разным причинам. Каждый будет описан в отдельной секции ниже, но вот краткий обзор:
Существует сторонние инструменты для установки Ruby. Они упрощают установку как совсем новичкам, так и продвинутым пользователям. Компиляция из исходников уже долгие годы является проверенным путем установки приложений. Этот способ знаком большому числу разработчиков приложений. Наконец, некоторые менеджеры пакетов поддерживают Ruby. Данный способ будет наиболее знаком людям, которые предпочитают пользоваться средствами операционной системы.
И наконец, если вы хотите использовать несколько версий Ruby на одной машине, посмотрите секцию сторонних приложений и использования RVM. В ней описан лучший на данный момент способ сделать это, если конечно вы знаете зачем вам это надо.
Сторонние инструменты
Многие руби-программисты используют сторонние инструменты для установки Ruby. Эти инструменты предоставляют различные преимущества, но не все из них официально поддерживаются. В любом случае их сообщество может оказать помощь.
Ruby Version Manager (RVM) – популярный инструмент для установки Ruby. Он позволяет устанавливать и управлять несколькими копиями Ruby в вашей системе, также как и несколькими альтернативными имплементациями Ruby.
RVM доступен для Mac OS X, Linux или любой другой UNIX-подобной операционной системы. Пользователи Windows могут обратить внимание на похожий проект pik или использовать RubyInstaller описанный в следующей секции.
RVM устанавливается следующей командой:
Последние инструкции по установке RVM можно найти на странице установки RVM. Данная команда позволяет установить RVM и последнюю версию Ruby. При помощи RVM можно установить большинство имплементаций Ruby перечисленных ниже. Чтобы посмотреть все поддерживаемые версии, наберите rvm list known.
RubyInstaller
RubyInstaller – проект, помогающий установить Ruby на ОС Windows. Он предоставляет всё, что нужно для настройки полноценного окружения.
Если вы устанавливаете Ruby для того, чтобы воспользоваться Rails, вам пригодится RailsInstaller. Он использует RubyInstaller, но предоставляет вам дополнительные инструменты, которые помогут развернуть верное окружение для Rails.
Компиляция из исходного кода
Установка из исходного кода – способ для тех, кто хорошо знаком со своей платформой и кому, возможно, нужны специальные настройки для своего окружения. Это также хорошее решение в случае когда для вашей платформы нет готовых собранных пакетов.
Если у вас возникла сложность с компиляцией Ruby, попробуйте один из сторонних инструментов из следующей секции. Они могут помочь вам.
Исходный код Ruby доступен по всему миру на нескольких зеркальных сайтах.
Системы управления пакетами
Если вы не можете скомпилировать ваш собственный Ruby и не хотите использовать сторонний инструмент для установки – вы можете воспользоваться пакетным менеджером вашей операционной системы.
Некоторые участники сообщества Ruby убеждены, что никогда не стоит пользоваться пакетными менеджерами для установки Ruby. Вместо этого лучше воспользоваться RVM. Оставим все плюсы и минусы данного подхода за границами данного текста, отметим лишь, что основной причиной данной убежденности является то, что в пакетных менеджерах зачастую содержится информация об устаревших версиях Ruby. Если вы хотите использовать новейшую версию Ruby, убедитесь, что вы используете верное имя пакета или воспользуйтесь RVM вместо этого.
Ruby на Linux
Debian GNU/Linux и Ubuntu используют систему управления пакетами apt. Вы можете использовать ее следующим образом:
Да, данная команда установит Ruby 1.9.2 или новее. Это так называемая “совместимая версия библиотеки” для 1.9.1 судя по имени.
Arch Linux использует систему управления пакетами pacman. Чтобы получить Ruby, просто напишите следующее:
На других системах вы можете поискать в репозитории пакетного менеджера вашего дистрибутива. Хотя возможно, верным выбором будет использование RVM.
Ruby на Mac OS X
Ruby 1.8.7 полностью поддерживается в Mac OS X Lion так же, как и многие популярные гемы. За подробностями смотрите вики Ruby на Mac OS Forge.
Mac OS X Tiger поставляется с Ruby версии 1.8.2 и Leopard поставляется с 1.8.6. Но для тех, кто еще не обновился до Leopard, существует множество способов установить последнюю версию Ruby.
Многие люди на Mac OS X используют Homebrew как пакетный менеджер. И это действительно просто – установить Ruby:
А также, так как OS X является UNIX-подобной ОС, скачивание и установка из исходного кода настолько же эффективна, как и другие решения. Чтобы помочь вам с установкой новой версии Ruby на OS X, наилучшей идеей будет воспользоваться RVM. Наберите rvm notes, чтобы получить специфичную информацию для вашей операционной системы.
Подробные инструкции по установке Ruby (и Rails) написал Dan Benjamin: для Tiger, для Leopard, и для Snow Leopard. Данные инструкции помогут вам запустить окружение очень быстро. Для Lion поможет данная инструкция.
Ruby на Solaris и OpenIndiana
Ruby 1.8.7 доступен для Solaris 8-10 на Sunfreeware и Blastwave. Ruby 1.9.2p0 доступен также на Sunfreeware, но это все уже устарело. Использование RVM поможет вам получить последнюю версию Ruby.
Чтобы установить Ruby на OpenIndiana, пожалуйста, используйте клиент Image Packaging System, или IPS. Данная система установит последние бинарные файлы Ruby и RubyGems прямо из сетевого репозитория OpenSolaris для Ruby 1.9. Это просто:
Как и прежде, RVM, это хороший способ получить последнюю версию Ruby.
Язык Ruby: история становления и перспективы развития
Человек создан для творчества, и я всегда знал, что люблю творить. Увы, я обделён талантом художника или музыканта. Зато умею писать программы. Я хочу, чтобы компьютер был моим слугой, а не господином, поэтому должен уметь быстро и эффективно объяснить ему, что делать.
Юкихиро Мацумото, создатель языка Ruby
Перед каждым, кто желает идти по пути программиста, рано или поздно встаёт вопрос выбора сферы разработки ПО (web, desktop, mobile, игровое, системное. ) и соответствующих инструментов (языков программирования, framework’ов, сред разработки. ). Причём здесь, как и в строительстве, важную роль играют материалы и орудия, которые вы используете. По сути, они во многом определяют, что в конечном счёте будет построено, насколько быстро, какими свойствами оно будет обладать и т.д.
К примеру, строитель, работающий с деревом, будет склонен к спокойной и вдумчивой деятельности, кропотливой подгонке деталей, использованию ручного инструмента, индивидуальности в подходе. В то же время каменщик может действовать куда быстрее, пользуясь при этом электроинструментом и компенсируя некоторые неточности с помощью лишнего мастерка раствора 🙂 Ну а бетонщик-монолитчик вообще не заморачивается, его задача — сделать всё максимально просто и надёжно в кратчайшие сроки, а кто уже там будет годами заниматься отделкой и дизайном помещений — его не интересует.
Так и с языками программирования: в каждой из сфер разработки ПО обычно есть минимум два-три языка, способных в принципе справиться с поставленной задачей. Однако подход к решению у этих языков обычно несколько отличается, и тут встаёт вопрос приоритетов в разработке и индивидуальных предпочтений программиста. В конечном итоге важно ваше мышление и понимание того, что нужно сделать и каким образом это потом поддерживать. Так что имеет смысл выбирать именно тот язык, на котором вам будет проще и удобней писать, который даст вам возможность раскрыть свой потенциал.
На то, чтобы более-менее близко познакомиться с новым языком, обычно уходит не менее месяца. Эта статья призвана ответить на вопрос, стоит ли потратить этот месяц на Ruby, или имеет смысл посмотреть в сторону других языков. Сам я сейчас также стою перед выбором: улучшать свои знания в PHP (пока я работал с ним самостоятельно во freelance’е — и на довольно простом уровне, сейчас же есть желание расти дальше) или попробовать «с нуля» в Ruby (сразу освоив с его помощью последние тренды в web-программировании и при этом получив, как я надеюсь, довольно современный и удобный инструмент для работы).
Попробовав разобраться, есть ли у Ruby будущее, и есть ли мне место в нём :), я перечитал несколько сотен статей, обсуждений, сравнений и т.д. Попробую привести мои мысли в более-менее системном виде:
Ruby был задуман в 1993-м году японцем Юкихиро Мацумото, стремившимся создать язык, вобравший из других языков самые лучше подходы, облегчающие труд программиста. Он действовал во многом согласно постулату Абельсона и Сассмана: «Программы должны быть написаны так, чтобы их могли читать люди, и лишь иногда так, чтобы их могли выполнять машины». При этом Мацумото очень хотелось, чтобы это был истинно объектно-ориентированный, простой в использовании высокоуровневый язык. Таким образом, основное назначение Ruby — создание мощных и в то же время понятных программ, где важна не столько скорость работы программы, сколько малое время разработки, понятность и простота синтаксиса. Язык следует принципу «наименьшей неожиданности»: программа должна вести себя так, как ожидает программист. Он также унаследовал идеологию языка Perl в части предоставления программисту возможностей достижения одного и того же результата несколькими способами. Люди различны, и им для свободы необходима возможность выбирать: «Я предпочитаю обеспечить много путей, если это возможно, но поощрять или вести пользователей, чтобы те выбирали лучший путь, если это возможно».
В Японии Ruby стал популярным с момента появления первой общедоступной версии в 1995 году (за период с 1995 по 2002 год в там вышло около двадцати книг о Ruby, и Ruby стал в этой стране более популярным языком, чем Python). Знакомство же международного сообщества началось после перевода его документации на английский язык и создания первых списков рассылки в 1998-м году. После 2000-го года началось распространение Ruby по всему миру, чему способствовало появление англоязычных книг, в первую очередь, «Programming Ruby: The Pragmatic Programmers’ Guide» и «Why’s (Poignant) Guide to Ruby». До 2004-го года Ruby не был широко известен в Европе и США, однако благодаря своим возможностям и большому количеству поддерживаемых платформ Ruby медленно, но верно умножал ряды своих приверженцев. Настоящий же всплеск интереса к Ruby спровоцировало появление Ruby-On-Rails (RoR) — framework’а для разработки web-приложений. RoR стал для Ruby т.н. killer application, катализатором, благодаря которому Ruby получил сейчас признание во всем мире.
Настоящий скачок в развитии и интерес к использованию языка для серьёзных коммерческих проектов начался после выхода Ruby 1.8.0 в 2003-м и новой версии framework’а Ruby on Rails 2.0 в 2007-м году, что вывело программирование на Ruby на новый уровень. Ruby on Rails включает в себя заготовленный функционал для решения практически всех обыденных задач, с которыми сталкиваются современные веб-специалисты. Это значит, что и скорость разработки заметно возрастает. В качестве доказательства можно посмотреть видеоролик, в котором при помощи Ruby on Rails создается полноценный блог всего за пятнадцать минут. К сожалению, скорость работы самого приложения оставалась ещё довольно низкой, и это было одной из причин того, что популярность языка росла довольно медленно. Как заявлял в 2007-м году один из российских разработчиков: «Если говорить о рельсах, то это естественно прорыв. Всё, что я делал для себя на коленке 5 лет, вдруг преподнесли в рамках единого отличного фреймворка. Расстраивает производительность. Причем масштабируемость вполне себе приличная, но наращивать серверы для рельсовых приложений приходится чаще, чем для пайтоновских и перловых аналогов. Если бы не это, мы бы уже перешли на рельсы. Пока используем в целях обучения новых разработчиков правильным подходам к разработке и для прототипирования». К тому же ещё было проблематично найти хостинг (тем более бесплатный), на котором можно было бы разместить приложение на Ruby.
Если до версии 1.8 язык развивался, сохраняя совместимость с предыдущими версиями, то позже разработчики Ruby, во главе с Якихиро Мацумото, решили, что для дальнейшего движения вперёд следует отказаться от 100%-й совместимости. Поэтому разработка Ruby разделилась на две ветви: поддержка версий 1.8.* и создание новых версий 1.9.*, которые являются предтечей следующей версии языка, Ruby 2. Серьёзные изменения к лучшему произошли с выходом Ruby 1.9.1 в 2009-м и Rails 3.0 в 2010-м году, когда большинство упрёков к языку потеряли основание и больше ничего не мешало Ruby занять достойное место среди остальных языков программирования.
Вот пример существенных изменений в скорости выполнения приложений на Ruby:
Согласно рейтингу TIOBE Programming Community Index, на сентябрь 2011-го года Ruby занимает 11-е место (Python — 8-е, PHP — 5-е), а это 1,5% всего рынка, что в мировом масштабе совсем неплохо 😉 К тому же, если обратиться к аналитике Web And Scripting Programming Language Job Trends, то на август 2011-го ситуация будет такой:
Первый график показывает количество предложений работы, и с ним, в принципе, всё понятно, он совпадает с выводами TIOBE Index — спрос на Ruby-программистов есть, и довольно высокий, но он ниже, чем спрос на Python, и значительно ниже, чем на PHP, что и понятно — несравнимы сроки активного использования этих языков.
А вот здесь видно, как растёт интерес к различным языкам, и темпы развития Ruby впечатляют: за последние 2,5 года они возросли в 2,5 раза! Это даёт надежды на то, что у Ruby есть все шансы в скором времени занять свою нишу и в дальнейшем держать довольно большую часть рынка web-разработок. И если ещё в 2009-м году издательство «Питер» сомневалось, есть ли смысл издавать книгу «The Ruby Programming Language» на русском языке, то в начале 2011-го она всё-таки вышла в свет, что говорит о наличии возрастающего интереса к данному языку и среди русскоязычных программистов. Тем более вдохновляют заметки наподобие таких.
Есть и доступная аналитика с репозиториев Open Source проектов.
Однако здесь нужно понимать, что изучение языков и изучение новых технологий — разные вещи. Изучать новые технологии стоит всегда! Изучение технологии даёт знания и опыт (главное, чтобы ваш язык программирования эту технологию поддерживал). А опыт в нашем нелегком деле — ценнее сертификатов. Конечно, новые cutting-edge-технологии — это всегда какие-то риски, какими бы хорошими словами ни расписывались такие технологии и какими бы качествами они ни обладали. Это риски, связанные со сроками, с кадрами на рынке, с их опытом и уровнем и много других проблем. Однако в качестве заключения я хотел бы привести слова Yehuda Katz (главный разработчик и архитектор Ruby on Rails в EngineYard), сказанные им на RailsConf в 2010-м: «I don’t know any Ruby developers who are unemployed» 😉
О Ruby
Удивляетесь, почему Ruby так популярен? Его поклонники называют его красивым, искусным языком. И в то же время они говорят, что он удобный и практичный. Что же перевешивает?
Идеалы создателя Ruby
Ruby – это тщательно сбалансированный язык. Его создатель Юкихиро Мацумото (также известный как “Matz”), объединил части его любимых языков (Perl, Smalltalk, Eiffel, Ada и Lisp) чтобы сформировать новый язык, в котором парадигма функционального программирования сбалансирована принципами императивного программирования.
Он часто повторял, что «пытается сделать Ruby естественным, но не простым» языком, который отражает жизнь.
Основываясь на этом, он добавляет:
Рост популярности Ruby
Со времени выпуска публичной версии в 1995 году, Ruby привлек внимание программистов со всего мира. В 2006 году Ruby завоевал массовое признание. В крупнейших городах по всему миру активно действуют группы пользователей Ruby, а конференции, посвященные Ruby, заполнены до предела.
Ruby-Talk, основная рассылка для обсуждения языка Ruby, содержала в среднем 200 сообщений ежедневно в 2006 году. В последние годы это количество уменьшилось, так как сообщество стало использовать несколько тематических рассылок вместо одной общей.
Индекс TIOBE, который измеряет рост популярности языков программирования, помещает Ruby в десятку общепризнанных языков программирования. Во многом, рост популярности языка приписывается популярности программного обеспечения, написанного на Ruby, в особенности – Ruby on Rails, фреймворку для разработки веб-приложений.
Ruby также абсолютно открыт. Открыт для бесплатного использования, изменений, копирования и распространения.
Всё в Ruby – объекты.
В Ruby всё – объект. Для каждой частицы информации или кода могут быть определены собственные свойства и действия. В объектно-ориентированном программировании свойства называются переменными объекта, а действия – методами. Чистейший объектно-ориентированный подход Ruby может быть продемонстрирован парой строк кода, в которых производится действие над числом.
Во многих языках числа и другие примитивные типы данных не являются объектами. Ruby под влиянием языка Smalltalk позволяет задать методы и переменные объекта всем типам данных. Это упрощает использование Ruby, так как правила применимые к объектам – применимы ко всему Ruby.
Гибкость Ruby
Ruby очень гибкий язык, так как он позволяет его пользователям свободно менять его части. Основные части Ruby могут быть удалены или переопределены по желанию. А существующие части можно изменять. Ruby старается ни в чём не ограничивать пользователя.
Операторы в Ruby – синтаксический сахар для методов. Вы также можете переопределить их.
Блоки — по-настоящему выразительная конструкция
Блоки в Ruby также являются отличным источником гибкости. Программист может добавить замыкание к любому методу, описывая, как этот метод должен действовать. Замыкание — это блок, являющийся одной из наиболее популярных конструкций для пришедших в мир Ruby из мира императивных языков программирования, таких как PHP или Visual Basic.
Ruby и примеси
В отличие от многих объектно-ориентированных языков, Ruby намеренно предоставляет лишь одиночное наследование. Но Ruby также предоставляет концепцию модулей (называемых «категориями» в Objective-C). Модули – это коллекции методов.
В основном, рубисты находят это более прозрачным, нежели множественное наследование, которое может быть довольно сложным и иметь какие-либо ограничения.
Визуальное представление Ruby
Так как в Ruby зачастую пунктуация встречается довольно редко и обычно в качестве ключевых слов используется английский язык, некоторые знаки препинания используются для украшения Ruby. Ruby не нуждается в объявлении переменных. В нем используются простые соглашения по именованию, для того чтобы разделить области видимости переменных.
Данная символика повышает читабельность, позволяя программисту легко идентифицировать роль каждой переменной. Это также позволяет не использовать утомительное self. для каждого объекта.
Помимо основ
Ruby полон другими особенностями и конструкциями, и вот некоторые из них:
В Ruby есть конструкции для обработки исключений, как в Java или Python, которые позволяют проще работать с ошибками.
В Ruby представлен настоящий сборщик мусора типа mark-and-sweep (пометь и отчисти) для всех Ruby0объектов. Не нужно вручную отслеживать количество ссылок в сторонних библиотеках. Как говорит Matz, «Это полезней для вашего здоровья.»
Писать расширения на C в Ruby проще, чем в Perl или Python при помощи очень элегантного API для вызова Ruby из C. Он включает в себя вызовы для встраивания Ruby в программное обеспечение, чтобы использовать его как скриптовый язык. Также доступен интерфейс SWIG.
Ruby может подгружать сторонние библиотеки динамически, если позволяет операционная система.
В Ruby реализованы независимые от операционной системы потоки. Таким образом, на любых платформах, где вы запускаете Ruby, вы также можете использовать многопоточность, не зависимо от того, поддерживает ли данная система потоки или нет. Вы можете использовать возможности многопоточности даже в MS-DOS!
Ruby отличается высокой переносимостью: он был разработан большей частью на GNU/Linux, но работает на многих типах UNIX, macOS, Windows, DOS, BeOS, OS/2, и так далее.
Другие реализации Ruby
Ruby как язык имеет несколько разных реализаций. Данный сайт посвящен реализации MRI (“Matz’s Ruby Interpreter” – Ruby интерпретатор Матца) или CRuby, но также существует несколько других. Они бывают очень полезны в различных ситуациях, предоставляют большую интеграцию с другими языками или окружениями, или имеют возможности, которых нет в MRI.
Ссылки
1 Matz, сообщение в списке рассылок Ruby-Talk, 12 мая 2000 года.
2 Matz, в Интервью с Создателем Ruby, 29 ноября 2001 года.
3 Matz, в Блоки и Замыкания в Ruby, 22 декабря 2003 года.
Ruby что это такое
Человек создан для творчества, и я всегда знал, что люблю творить. Увы, я обделён талантом художника или музыканта. Зато умею писать программы.
Я хочу, чтобы компьютер был моим слугой, а не господином, поэтому я должен уметь быстро и эффективно объяснить ему, что делать.
Программы должны быть написаны так, чтобы их могли читать люди, и лишь иногда так, чтобы их могли выполнять машины.
Абельсон и Сассман
В Википедии имеется статья по теме «Ruby»
Ру́би — интерпретируемый язык программирования высокого уровня. Обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями, поддерживающими много разных парадигм программирования, прежде всего классово-объектную. Ruby был задуман в 1993 году (24 февраля) японцем Юкихиро Мацумото, стремившимся создать язык, совмещающий все качества других языков, способствующие облегчению труда программиста.
Этот учебник намерен осветить все тонкости программирования на Ruby. Повествование идёт «по спирали»: начиная с самых общих понятий, темы рассматриваются по нескольку раз с нарастающей подробностью.
Учебник пока неполон. Читайте иноязычную литературу по Ruby и с новыми знаниями присоединяйтесь к написанию. Да-да, каждый может участвовать: научитесь работать в вики-среде, с остающимися вопросами выступайте на странице обсуждения учебника.