Ruby — Викиучебник
Материал из Викиучебника — открытых книг для открытого мира
Человек создан для творчества, и я всегда знал, что люблю творить. Увы, я обделён талантом художника или музыканта. Зато умею писать программы.
Я хочу, чтобы компьютер был моим слугой, а не господином, поэтому я должен уметь быстро и эффективно объяснить ему, что делать.
Юкихиро Мацумото
Программы должны быть написаны так, чтобы их могли читать люди, и лишь иногда так, чтобы их могли выполнять машины.
Абельсон и Сассман
Ру́би — интерпретируемый язык программирования высокого уровня. Обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» и многими другими возможностями, поддерживающими много разных парадигм программирования, прежде всего классово-объектную. Ruby был задуман в 1993 году (24 февраля) японцем Юкихиро Мацумото, стремившимся создать язык, совмещающий все качества других языков, способствующие облегчению труда программиста.
Этот учебник намерен осветить все тонкости программирования на Ruby. Повествование идёт «по спирали»: начиная с самых общих понятий, темы рассматриваются по нескольку раз с нарастающей подробностью.
Учебник пока неполон. Читайте иноязычную литературу по Ruby и с новыми знаниями присоединяйтесь к написанию. Да-да, каждый может участвовать: научитесь работать в вики-среде, с остающимися вопросами выступайте на странице обсуждения учебника.
- Основные свойства Ruby
- Глава об основных свойствах, возможностях и недостатках языка Ruby.
- Начало работы
- Глава о том, как скачать интерпретатор, запустить свою программу и увидеть хоть какой-то результат выполнения своей программы.
- Переменные
- Глава о правилах именования переменных и специфике их использования в языке Ruby.
- Базовые типы данных
- Глава содержит иерархию базовых типов и описание к ним.
- Подробнее о числах
- Глава о видах чисел, которые присутствуют в языке Ruby, а также подробно описаны методы для работы с ними.
- Подробнее о массивах
- Глава о массивах, методах работы с ними и описана специфика работы с ними в языке Ruby.
- Подробнее об ассоциативных массивах
- Глава об ассоциативных массивах, методах работы с ними и описывает базовые ситуации в которых они применимы.
- Подробнее о строках
- Глава о таком универсальном типе данных, как строки. Раскрывает секрет его универсальности, описывает методы и правила работы с ними.
- Матрицы и векторы
- Глава о представлении матричной алгебры.
- Работа с файлами
- Глава о работе с файловой системой.
- Сети
- Глава по работе с сетью. Приведено несколько листингов сетевых приложений.
- Desktop (Tk)
- Глава по работе с классами Tk для создания GUI-приложений.
- Desktop (Qt4)
- Desktop (wxRuby)
- Глава по работе с классами wxWidgets для создания GUI-приложений.
- Подробнее о методах
- Глава о видах и способах создания методов в языке программирования Ruby.
- Методика самопознания
- Глава о метапрограммировании на языке Ruby.
- Задачник
- Сборник задач.
- Практикум
- Сборник задач с примерами решений.
- /Практикум/Числа
- /Практикум/Массивы
- /Практикум/Итераторы
- /Практикум/Строки
- /Практикум/Правила
- Справочник
- Справочник по базовым классам.
- Перевод Лицензии Ruby.
- Жаргон
- Придумываем слова с рубинами и рельсами.
- Фольклор
- Народное творчество любителей Ruby.
- Избранное с RubyNews
- К разграблению. Полезные статьи перемещаются в основную часть учебника, затем это приложение удалим.
- Идеология
- Программирования вообще и на Ruby в частности.
Дальнейшее чтение[править]
Русскоязычные ресурсы[править]
Русскоязычная литература[править]
Иноязычная литература[править]
ru.wikibooks.org
О Ruby
Удивляетесь, почему Ruby так популярен? Его поклонники называют его красивым, искусным языком. И в то же время они говорят, что он удобный и практичный. Что же перевешивает?
Идеалы создателя Ruby
Он часто повторял, что «пытается сделать Ruby естественным, но не простым» языком, который отражает жизнь.
Основываясь на этом, он добавляет:
Ruby прост на вид, но очень сложен внутри, подобно человеческому телу1.
Рост популярности Ruby
Со времени выпуска публичной версии в 1995 году, Ruby привлек внимание программистов со всего мира. В 2006 году Ruby завоевал массовое признание. В крупнейших городах по всему миру активно действуют группы пользователей Ruby, а конференции, посвященные Ruby, заполнены до предела.
Ruby-Talk, основная рассылка для обсуждения языка Ruby, содержала в среднем 200 сообщений ежедневно в 2006 году. В последние годы это количество уменьшилось, так как сообщество стало использовать несколько тематических рассылок вместо одной общей.
Индекс TIOBE, который измеряет рост популярности языков программирования, помещает Ruby в десятку общепризнанных языков программирования. Во многом, рост популярности языка приписывается популярности программного обеспечения, написанного на Ruby, в особенности – Ruby on Rails, фреймворку для разработки веб-приложений.
Ruby также абсолютно открыт. Открыт для бесплатного использования, изменений, копирования и распространения.
Всё в Ruby – объекты.
Вначале Matz рассматривал другие языки в поисках идеального синтаксиса. Вспоминая свои изыскания, он говорил: «Мне нужен был скриптовый язык, который был бы более мощным, чем Perl, и более объектно-ориентированным, чем Python2.»
В Ruby всё – объект. Для каждой частицы информации или кода могут быть определены собственные свойства и действия. В объектно-ориентированном программировании свойства называются переменными объекта, а действия – методами. Чистейший объектно-ориентированный подход Ruby может быть продемонстрирован парой строк кода, в которых производится действие над числом.
5.times { print "Мы любим Ruby! Ruby – это замечательно!" }
Во многих языках числа и другие примитивные типы данных не являются объектами. Ruby под влиянием языка Smalltalk позволяет задать методы и переменные объекта всем типам данных. Это упрощает использование Ruby, так как правила применимые к объектам – применимы ко всему Ruby.
Гибкость Ruby
Ruby очень гибкий язык, так как он позволяет его пользователям свободно менять его части. Основные части Ruby могут быть удалены или переопределены по желанию. А существующие части можно изменять. Ruby старается ни в чём не ограничивать пользователя.
Например, сложение выполняется операцией плюс (+
). Но, если вы хотите
использовать для этого более читаемое слово plus
– вы можете добавить
такой метод прямо в Numeric
, внутренний класс языка Ruby.
class Numeric
def plus(x)
self.+(x)
end
end
y = 5.plus 6
# y теперь равно 11
Операторы в Ruby – синтаксический сахар для методов. Вы также можете переопределить их.
Блоки — по-настоящему выразительная конструкция
Блоки в Ruby также являются отличным источником гибкости. Программист может добавить замыкание к любому методу, описывая, как этот метод должен действовать. Замыкание — это блок, являющийся одной из наиболее популярных конструкций для пришедших в мир Ruby из мира императивных языков программирования, таких как PHP или Visual Basic.
Создание блоков было вдохновлено функциональными языками программирования. Мац (Matz) говорил, «замыканиями в Ruby я хотел отдать дань уважения культуре языка Lisp3.»
search_engines =
%w[Google Yahoo MSN].map do |engine|
"http://www." + engine.downcase + ".com"
end
В коде выше блок описан внутри конструкции do ... end
.
Метод map
применяет блок кода к представленному списку слов. Многие
другие методы в Ruby оставляют путь, открытый для программиста, чтобы
тот написал собственный блок кода, детально говорящий методу, что тот
должен сделать.
Ruby и примеси
В отличие от многих объектно-ориентированных языков, Ruby намеренно предоставляет лишь одиночное наследование. Но Ruby также предоставляет концепцию модулей (называемых «категориями» в Objective-C). Модули – это коллекции методов.
Классы могут свободно вмешивать модуль и получать все его методы.
Например, любой класс, который реализует метод each
, может подмешать
модуль Enumerable
, который добавит кучу методов использующих each
для создания циклов.
class MyArray
include Enumerable
end
В основном, рубисты находят это более прозрачным, нежели множественное наследование, которое может быть довольно сложным и иметь какие-либо ограничения.
Визуальное представление Ruby
Так как в Ruby зачастую пунктуация встречается довольно редко и обычно в качестве ключевых слов используется английский язык, некоторые знаки препинания используются для украшения Ruby. Ruby не нуждается в объявлении переменных. В нем используются простые соглашения по именованию, для того чтобы разделить области видимости переменных.
var
— может быть локальной переменной.@var
— переменная объекта.$var
— глобальная переменная.
Данная символика повышает читабельность, позволяя программисту легко
идентифицировать роль каждой переменной. Это также позволяет не
использовать утомительное 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.
Список реализаций:
- JRuby — это Ruby, реализованный на JVM (Java Virtual Machine), использует оптимизированный JIT-компилятор, сборщик мусора, нативные потоки, инструментальную экосистему и огромное количество библиотек JVM.
- Rubinius это — «Ruby написанный на Ruby». Реализован на основе LLVM – изящной виртуальной машине, на который созданы и другие известные языки.
- mruby — это легковесная реализация Ruby, которая может быть подключена и встроена в приложение. Возглавляет разработку mruby создатель языка Ruby, Юкихиро Мацумото (Yukihiro Matsumoto), известного под псевдонимом Мац (Matz).
- IronRuby — это реализация «тесно интегрированная с .NET Framework».
- MagLev — это «быстрая, стабильная реализация Ruby с интегрированным долговременным хранением объектов и распределенным открытым кешем”.
- Cardinal — это «компилятор Ruby для виртуальной машины Parrot» (Perl 6).
Ссылки
1 Matz, сообщение в списке рассылок Ruby-Talk, 12 мая 2000 года.
2 Matz, в Интервью с Создателем Ruby, 29 ноября 2001 года.
3 Matz, в Блоки и Замыкания в Ruby, 22 декабря 2003 года.
www.ruby-lang.org
Ruby — Wikipedia
Wikipedia — ирекле энциклопедия проектыннан ([http://tt.wikipedia.org.ttcysuttlart1999.aylandirow.tmf.org.ru/wiki/Ruby latin yazuında])
Ruby (ингл. ruby — рубин, якут; ру́би дип әйтелә) — динамик, интерпретацияләнүче, югары дәрәҗәле һәм объект-юнәлтелгән программалау теле. Әлеге телдә операцион системага бәйсез күпагымлылык гамәлгә ашырылган. Шулай ук тел катгый типизация, чүп җыю һәм башка мөмкинлекләргә ия. Синтаксис үзенчәлекләре белән ruby Perl һәм Eiffel телләренә, обект-юнәлтелү мөнәсәбәте буенча Smalltalk теленә якын. Телдәге кайбер алымнар Python, Lisp һәм Dylan программалаштыру телләреннән алынган.
Rubyны ясаучы — Юкихиро Мацумото (Matz) — студент чагыннан программалау телләре белән кызыксына, ләкин яңа тел ясау фикере соңрак туа. Ruby 1993 елның 23 февралендә эшләнә башлый һәм 1995 елда дөнья күрә.
Яңа телне ясауның масаты «чын» объект-юнәлтелгән, куллануда җиңел, интерпретацияләнүче программалаштыру телен булдыру була.
Телләр белән танышуны башлый торган программа ruby-да
# комментарий - # тамгасыннан башлап юл ахырына кадәр # «"» - тамгасы эчендә тел чаралары белән манипуляцияләнә торган юл # puts - метод, # бирелгән объектта to_s методын чакырып, кайтарылган кыйммәтне экранга чыгара puts "Hello World" #=> Hello World
Ruby-да үзенчəлекле, башка киң таралган телләрдә сәрәк яисә бөтенләй очрамый торган, алымнар аз түгел. Шуларның берсе, теләсә кайсы класска гына түгел, теләсә кайсы объектка да метод өстәү мөмкинлеге. Мәсәлән, алдан билгеләнгән юлга (ингл. string) теләсә ниниди метод өстәп була.
str = "Сәлам" # монда String тибындагы, str үзгәрешлесе ясала # def - функцияне игълан итү өчен def str.bye # str. методның кемнеке икәнен күрсәтә (әйтелмәсә Object) # bye - методның исеме, аның артыннан мәҗбүри булмаган, түгәрәк җәяләр # эчендә, функциянең параметрлары исемлеге килә ала "Хуш!" # методтан соңгы исәпләнелгән кыйммәт кайтарыла end # Ruby-да күпчелек инструкцияләр end сүзе белән тәмамлана # str.bye - str объектының bye методына мөрəҗəгать итү # bye методыннан кайтрылган кыйммәт, puts методына бирелә, puts str.bye #=> Хуш!
tt.wikipedia.org