Основы ​программирования на Ruby. Что такое Ruby? | by Андрей Шагин | NOP::Nuances of Programming

Published in

·

4 min read

·

Oct 17, 2021

Что такое

Ruby?

Ruby — это чистый объектно-ориентированный язык программирования. Чаще всего он используется для создания веб-приложений. Фреймворк для разработки приложений Ruby on Rails — первая реализация Ruby, которая приходит на ум.

Ruby — это динамичный язык программирования с открытым исходным кодом. Акцент здесь сделан на простоте и производительности.

У Ruby элегантный синтаксис, естественный для чтения и легкий для написания.

Первым делом напишем простую программу на Ruby. Все файлы здесь имеют расширение .rb. Поместим в файл example.rb следующий исходный код:

puts "Hello, I'm learning Ruby Programming!";

Теперь предположим, у нас в каталоге есть интерпретатор Ruby. Попробуем запустить программу:

$ ruby example.rb

Результат выполнения будет такой:

Hello, I'm learning Ruby Programming!

Переменные в Ruby

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

Присвоение значения переменным происходит следующим образом:

для целого числа:
синтаксис: variable_name = value
пример: a = 5для числа с плавающей точкой:
синтаксис: variable_name = value
пример: a = 10.5для строки:
синтаксис: variable_name = "value"
пример: a = "abc"

Типы переменных в Ruby

Существует пять типов переменных:

1. Константы.
2. Глобальная переменная.
3. Переменная класса.
4. Переменная экземпляра.
5. Локальная переменная.
  1. Пример объявления константы:
a = "This is my book."

2. Пример объявления глобальной переменной (используется символ $):

$var = 'I love my-self'

3. Пример объявления переменной класса (используется символ @@):

@@instances = 0

4. Пример объявления переменной экземпляра (используется символ @):

@var = 'Ruby Programming'

5. Пример объявления локальной переменной:

Локальные переменные — самые распространенные, они не выходят за рамки области видимости. Эти переменные объявляются без использования перед именем переменной символов $ или @, при этом имя переменной не должно быть целиком заглавными буквами.

var = 10

Получение данных от пользователя

Один из способов получения информации от пользователя — вызов метода gets.

gets — это сокращение от get string («получить строку»). Когда задействуется этот метод, программа ждет от пользователя 1) ввода информации и 2) нажатия клавиши Enter. Вот пример:

>> a = gets
demo
>> "demo\n"

Ввели код a = gets, дальше компьютер ожидает введения какой-то информации. Вводим demo, затем нажимаем на Enter, и программа возвращает "demo\n".

\n на конце — это символ новой строки, обозначающий клавишу Enter. Но здесь в строке он не нужен. Чтобы от него избавиться, используется chomp, присоединенный к gets с помощью точки. Этот .chomp ставится в конце любой строки для удаления символов возврата каретки.

>> a = gets.chomp
demo
>> "demo"

Пример:

>> puts 'Enter value for a : '
>> a = gets.chomp.to_i
>> puts 'Enter value for b: '
>> b = gets.chomp.to_i
>> c = a + b
>> puts "Sum : #{c}"вывод:
Enter value for a :
10
Enter value for a :
20
Sum = 30

Методы

Что такое метод/функция?

Метод — это набор инструкций, выполняющих задачу. Как и функция. Разница в том, что метод связан с объектом, а функция — нет.

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

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

Синтаксис:

def method_name 
expr..
end

Всякий раз, когда вызывается простой метод, пишется только название метода:

method_name

Пример:

def demo(a1 = "Ruby", a2 = "programming")
puts "This is #{a1}"
puts "This is #{a2}"
end
test "C", "C++"
testвывод:This is C
This is C++
This is Ruby
This is programming

Дата и время в Ruby

В Ruby даты и время представляет класс Time.

Получение текущей даты и времени:

Пример:

time = Time.newputs "Current Time : " + time.inspect
puts time.year # => Год даты
puts time.month # => Месяц даты (с 1 по 12)
puts time.day # => День даты (с 1 по 31)
puts time.wday # => 0: День недели (0 — это воскресенье)
puts time.yday # => 365: День года
puts time. hour # => 23: 24-часовой формат
puts time.min # => 59
puts time.sec # => 59
puts time.usec # => 999999: микросекунды
puts time.zone # => "UTC": название часового поясавывод:Current Time : Mon Jun 02 12:03:08 -0700 2008
2021
7
2
1
154
12
3
8
247476
UTC

Массив

Что такое «массив»?

В программировании массив — это коллекция различных типов данных в одном контейнере или переменной.

Массив создается или инициализируется множеством способов. Один из них — с помощью метода класса new:

names = Array.new

Размер массива задается во время создания массива:

names = Array.new(20)

Каждому элементу массива присваивается значение:

names = Array.new(4, "system")
puts "#{names}"вывод:["system", "system", "system", "system"]

new задействуется также с блоком:

nums = Array. new(10) { |e| e = e * 2 }
puts "#{nums}"вывод:[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

Есть еще один метод массива []. Вот как он работает:

nums = Array.[](1, 2, 3, 4,5)

И еще одна форма создания массива:

nums = Array[1, 2, 3, 4,5]

Здесь для создания массива цифр метод в качестве аргумента принимает диапазон:

digits = Array(0..9)
puts "#{digits}"вывод:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Читайте также:

  • Разбор методов Ruby
  • Создание простого веб-скрейпера на Ruby
  • Google OAuth для реализации на Ruby

Читайте нас в Telegram, VK и Яндекс.Дзен

Язык программирования Ruby | Практическая информатика

Ruby — один из самых молодых языков программирования. Своим именем он обязан драгоценному камню рубину (по аналогии с другим широко распространенным языком программирования Perl — жемчуг). Вот как описывает Ruby его создатель, японский программист Юкихиро Мацумото (Yukihiro Matsumoto): «Это мощный и динамический объектно-ориентированный язык с открытыми исходниками, который я начал разрабатывать в 1993 году. Ruby работает на многих платформах, включая Linux и многие реализации Unix, MS-DOS, Windows 9x/2000/NT, BeOS и MacOS. Главная цель Ruby — эффективность разработки  программ, и пользователи найдут, что программирование на нем эффективно и даже забавно».

В Японии Ruby сильно потеснил такие известные языки как Python и Perl (а книга «Ruby the Object-Oriented Scripting Language» стала бестселлером) и начал распространяться по всему миру. За последний год появились три англоязычных книги, посвященные Ruby (к сожалению, пока не имеющие русского перевода). У этого языка очень неплохие шансы стать действительно популярным — ведь он вобрал в себя достоинства других языков, учтя их недостатки.

Ruby входит в стандартную поставку ОС Linux (начиная с версии 7.2), а пользователям MS Windows для первого знакомства стоит порекомендовать его несколько устаревшую версию, которая включает, помимо интерпретатора языка и библиотек, руководство пользователя, FAQ (ответы на часто задаваемые вопросы) и множество примеров. Ruby является свободно распространяемым продуктом, поэтому вы можете не беспокоиться ни о его стоимости, ни об ограничениях в его использовании.

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

Сначала проверим, установлен ли интерпретатор Ruby в системе или нет. В окне shell введите команду ruby -v (этот ключ требует вывода версии языка). Если следующее сообщение появится, то Ruby установлен (версия, дата и платформа могут отличаться):

ruby 1. 6.4 (2001-06-04) [i386-linux-gnu]

Файлы, содержащие программы на языке Ruby, обычно имеют расширение rb. По давней программистской традиции наша первая программа будет печатать фразу «Hello, World!». При помощи любого редактора plain-текста (emacs, kwrite, notebook и т. п.) создадим файл hello.rb, в который поместим текст

puts "Hello, World!"
Для выполнения этой программы в командной строке введите

ruby hello.rb
В результате выполнения программы в командном окне будет напечатана требуемая фраза.

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

#!/usr/bin/env ruby
Она обязательно должна начинаться с первой позиции. Затем нужно изменить права доступа файла с программой, сделав его исполняемым: chmod +x hello.rb Теперь для запуска программы достаточно ввести команду

.
/hello.rb

Для того чтобы сделать программу более понятной человеку, который ее читает, вставляются комментарии. Однострочные комментарии начинаются с символа # и продолжаются до конца строки. Многострочные комментарии заключают в специальные «скобки» — все, что располагается между строками =begin и =end, считается комментарием. Например,

#!/usr/bin/env ruby
=begin
Это
 комментарий
=end
puts "Hello, World!"
# Это тоже комментарий

Программа на языке Ruby, часто называемая скриптом, есть последовательность инструкций (утверждений, предложений). Каждая инструкция по умолчанию заканчивается концом строки. Если же по каким-либо причинам требуется разместить несколько инструкций на одной строке, то их нужно разделять символом ; (точка с запятой). С другой стороны, иногда инструкция не помещается на одной строке. В этом случае символ \ сигнализирует о том, что ее продолжение располагается в следующей строке.


Пример

#!/usr/bin/env ruby
# Инструкция заканчивается концом строки
puts "Hello, World!"
# Несколько инструкций в одной строке
puts "Это тест, "; puts "демонстрирующий работу Ruby. "
# Незаконченная инструкция, 
# продолжение которой на следующей строке
puts "Программирование на Ruby - " +
 "приятное занятие."
# Утверждение, разделенное на несколько строк
puts \
 "И мы обязательно этому научимся!"

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

(Загрузить файл с примерами)

Далее строка #!/usr/bin/env ruby в тексты программ не включается.

О Ruby

Хотите знать, почему Ruby так популярен? Его поклонники называют его красивым, хитрым язык. А еще говорят, что это удобно и практично. Что дает?

Идеалы создателя Ruby

Ruby — это тщательно сбалансированный язык. Его создатель Юкихиро «Мац». Мацумото смешал части своих любимых языков (Perl, Smalltalk, Eiffel, Ada и Lisp), чтобы сформировать новый язык, сбалансированный функциональным императивное программирование.

Он часто говорил, что «пытается сделать Ruby естественным, а не простым». способом, который отражает жизнь.

Опираясь на это, он добавляет:

Ruby прост на вид, но очень сложен внутри, как и наше человеческое тело 1 .

О росте Ruby

С момента своего публичного выпуска в 1995 году Ruby привлекает преданных программистов Мировой. В 2006 году Ruby добился массового признания. С активным пользователем группы, сформированные в крупных городах мира, и конференции, связанные с Ruby заполнен до отказа.

Ruby-Talk, основной список рассылки для обсуждение языка Ruby, поднялось в среднем до 200 сообщений в день в 2006 году. В последние годы он снизился, поскольку размер сообщество переместило обсуждение из одного центрального списка во множество более мелких группы.

Рубин входит в первую десятку по большинству индексов, измеряющих рост и популярность языков программирования во всем мире (например, индекс TIOBE). Большая часть роста связана с популярность программного обеспечения, написанного на Ruby, особенно Веб-фреймворк Ruby on Rails.

Ruby также полностью бесплатен. Не только бесплатно, но и также бесплатно использовать, копировать, изменять и распространять.

Восприятие всего как объекта

Сначала Мац изучал другие языки, чтобы найти идеальный синтаксис. Вспоминая свои поиски, он сказал: «Я хотел язык сценариев, который более мощный, чем Perl, и более объектно-ориентированный, чем Питон 2 ».

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

 5.times { print "Мы *любим* Ruby -- это возмутительно!" } 

Во многих языках числа и другие примитивные типы не являются объектами. Ruby следует влиянию языка Smalltalk, предоставляя методы и переменные экземпляра для всех его типов. Это облегчает использование Ruby, поскольку правила, применяемые к объектам, применяются ко всему Ruby.

Гибкость Ruby

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

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

 класс Числовой
  защита плюс (х)
    я.+(х)
  конец
конец
у = 5, плюс 6
# y теперь равно 11 

Операторы Ruby — это синтаксический сахар для методов. Вы можете переопределить их также.

Блоки: по-настоящему выразительная функция

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

Закрытие называется блоком и стало одним из самые популярные функции для новичков в Ruby из других императивных таких языков, как PHP или Visual Basic.

Блоки вдохновлены функциональными языками. Мац сказал: «В рубиновом замыкания, я хотел уважать культуру Лиспа 3 ».

 поисковые_движки =
  %w[Google Yahoo MSN].map do |engine|
    "http://www." + engine.downcase + ".com"
  end 

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

Ruby и Mixin

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

Классы могут микшировать модуль и бесплатно получать все его методы. Для Например, любой класс, реализующий метод each , может смешивать Модуль Enumerable , который добавляет кучу методов, использующих каждый для зацикливание.

 класс MyArray
  включить перечисляемый
end 

Как правило, рубисты считают это более ясным способом, чем несколько наследование, которое является сложным и может быть слишком ограничивающим.

Внешний вид Руби

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

  • var может быть локальной переменной.
  • @var — это переменная экземпляра.
  • $var — это глобальная переменная.

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

Beyond the Basics

Ruby имеет множество других функций, среди которых следующие:

  • Ruby имеет функции обработки исключений, такие как Java или Python, чтобы сделать его легко обрабатывать ошибки.

  • Ruby содержит настоящий сборщик мусора с пометкой и очисткой для всех Ruby. объекты. Нет необходимости поддерживать счетчики ссылок в библиотеках расширений. Как говорит Мац: «Это лучше для вашего здоровья».

  • Написание расширений 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 («Ruby Interpreter Матца») или CRuby (поскольку он написан на C), но есть и другие. Они часто бывают полезны в определенных ситуациях, обеспечивают дополнительную интеграция с другими языками или средами или специальные функции этого МРТ нет.

Вот список:

  • JRuby — это Ruby поверх JVM (виртуальная машина Java), использующий JVM оптимизирует JIT-компиляторы, сборщики мусора, параллельные потоки, экосистема инструментов и обширная коллекция библиотек.
  • Рубиний — это «Рубин, написанный на Руби». Построен на основе LLVM, Rubinius использует изящную виртуальную машину, которую используют другие языки. построен сверху тоже.
  • TruffleRuby — это высокопроизводительная реализация Ruby поверх ГраальВМ.
  • mruby — облегченная реализация языка Ruby. которые могут быть связаны и встроены в приложение. Его разработкой руководит создатель Ruby Юкихиро «Мац» Мацумото.
  • IronRuby — это реализация, «тесно интегрированная с .NET Рамки».
  • MagLev — это «быстрая, стабильная реализация Ruby со встроенным постоянство объектов и распределенный общий кеш».
  • Cardinal — это «компилятор Ruby для виртуальной машины Parrot». (перл 6).

Более полный список см. в разделе Удивительные рубины.

Ссылки

1 Мац, выступая в списке рассылки Ruby-Talk, 12 мая, 2000.

2 Мац, в интервью с создателем Ruby, ноябрь. 29-го числа 2001 г.

3 Мац, Блоки и Замыкания на Руби, 22 декабря, 2003.

Скачать Ruby

Здесь вы можете получить последние дистрибутивы Ruby в своей любимой версии. Текущая стабильная версия — 3.2.2. Пожалуйста, обязательно прочитайте Лицензию Ruby.

Способы установки Ruby

У нас есть несколько инструментов для установки Ruby на каждой из основных платформ:

  • В Linux/UNIX вы можете использовать систему управления пакетами вашей дистрибутив или сторонние инструменты (rbenv и RVM).
  • На компьютерах с macOS можно использовать сторонние инструменты (rbenv и RVM).
  • На компьютерах с Windows вы можете использовать RubyInstaller.

Подробнее об использовании см. на странице установки. системы управления пакетами или сторонние инструменты.

Конечно, вы также можете установить Ruby из исходного кода на всех основных платформах.

Компиляция Ruby — исходный код

Установка из исходного кода — отличное решение, когда вы достаточно комфортно с вашей платформой и, возможно, нужны определенные настройки для вашей среды. Это также хорошее решение в том случае, если нет других готовых пакетов для вашей платформы.

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

  • Стабильные версии:
    • Рубин 3.2.2
      sha256: 96c57558871a6748de5bc9f274e93f4b5aad06cd8f37befa0e8d94e7b8a423bc
    • Рубин 3.1.4
      sha256: a3d55879a0dfab1d7141fdf10d22a07dbf8e5cdc4415da1bde06127d5cc3c7b6
  • Предварительные версии:
    • Ruby 3.3.0-preview1
      sha256: c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed
  • На этапе обеспечения безопасности (скоро закончится срок службы!):
    • Рубин 3.0.6
      sha256: 6e6cbd4

      d7910c0ff20edefab4294dfcd1046f0f8f47f78b597987ac683e

  • Больше не поддерживается (EOL):
    • Рубин 2. 7.8
      sha256: c2dab63cbc8f2a05526108ad419efa63a67ed4074dbbcf9fc2b1ca664cb45ba0
  • Снимки:
    • Стабильный снимок ветки ruby_3_2: Это архив последнего снимка текущей ветки ruby_3_2 .
    • Стабильный снимок ветки ruby_3_1: Это архив последнего снимка текущей ветки ruby_3_1 .
    • Стабильный снимок ветки ruby_3_0: Это tarball последнего снапшота текущего ruby_3_0 отделение.
    • Ночной снимок: Это архив всего, что есть в Git, сделанный каждую ночь. Это может содержать ошибки или другие проблемы, используйте на свой страх и риск!

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

Для получения информации о репозиториях Ruby Subversion и Git см.