Ruby — это универсальный динамический язык программирования с открытым исходным кодом, ориентированный на простоту и производительность. Язык программирования Ruby часто сравнивают с Python из-за их сходства. Многие разработчики говорят, что изучать Ruby легче, если вы знаете Python из-за их сходства. Однако эти два языка существенно различаются.
Мы создали это базовое введение, чтобы помочь вам перейти с Python на Ruby. Мы рассмотрим их основные различия, а затем погрузимся в синтаксис Ruby, чтобы вы могли быстро освоить код Ruby.
Ruby против Python
Ruby и Python — популярные языки программирования, известные своей скоростью, простотой и удобным синтаксисом. Оба языка являются гибкими, объектно-ориентированными, динамическими и имеют множество полезных фреймворков и библиотек для использования, особенно для веб-приложений и веб-разработки ( Ruby on Rails для Ruby или Django для Python).
Ruby — это интерпретируемый язык программирования высокого уровня, созданный в 1995 году Юкихиро Мацумото. Его целью было создать объектно-ориентированный язык сценариев, который улучшил бы другие языки сценариев того времени.
Ruby также поддерживает функциональное программирование и известен тем, что очень похож на письменные человеческие языки, что упрощает его изучение.
Python — это интерпретируемый язык общего назначения высокого уровня, созданный Гвидо ван Россумом с целью повышения читабельности кода. Python известен своей надежной стандартной библиотекой.
Ruby | Python |
Никаких примитивных типов данных. Все есть объект. | Имеет примитивные типы и объекты |
Менее доступные функции. В основном полагается на методы. | Множество доступных функций |
Невозможно изменить встроенные классы | Может изменять встроенные классы |
Поддерживает кортежи с помощью Ринды. Другие коллекции включают Arrays, Hash, Set и Struct. | Поддерживает кортежи, наборы, словарь (хэш) и списки |
Итераторы встречаются реже | Итераторы очень распространены |
Карьера
Оба языка используют крупные компании. Компании, использующие Python, включают YouTube, Instagram, Spotify, Reddit, Dropbox, а Ruby используется в Hulu, Basecamp, GitHub и Airbnb. Разработчики Ruby также, как правило, получают более высокую зарплату, чем разработчики Python. В опросе StackOverflow за 2020 год указана средняя мировая зарплата Ruby в 71 тысячу долларов, а у Python — 59 тысяч долларов.
И Ruby, и Python предлагают более высокую годовую зарплату, чем другие языки разработки программного обеспечения, включая PHP, JavaScript и Java.
Машинное обучение
В настоящее время Python является популярным языком для машинного обучения (ML) и искусственного интеллекта (AI) благодаря обширным библиотекам и инструментам визуализации. Ruby действительно предлагает некоторые конкурентоспособные варианты, но предстоит пройти долгий путь, прежде чем он станет факелом для Python. Итак, если вы хотите работать в области науки о данных, Python — победитель.
Веб-фреймворки
Основные веб-фреймворки для Ruby и Python, Django и Ruby on Rails довольно похожи. Оба основаны на классическом шаблоне модель-представление-контроллер (MVC), и оба предоставляют аналогичные репозитории (PyPi для Python и RubyGems для Ruby). Оба фреймворка работают хорошо, и их легко изучить.
Тестовая среда
Разработка через тестирование (TDD) довольно стандартна как для Ruby, так и для Python, но Ruby действительно предлагает разработку, управляемую поведением (BDD), а Python — нет, что может быть полезно в некоторых случаях.
Сообщество
У обоих языков есть большие активные сообщества, причем сообщество Python немного больше, а именно потому, что Ruby наиболее популярен благодаря своему инструменту разработки Ruby on Rails. Оба сообщества кажутся одинаково активными и поддерживающими.
Одним из преимуществ Ruby является то, что существуют уникальные форумы Ruby и доски объявлений о вакансиях, поскольку язык более специализирован в некоторых отношениях.
Сводка различий в основном коде
Теперь, когда мы понимаем разницу между Ruby и Python на высоком уровне, давайте погрузимся в основные различия кода между ними. Ниже мы собрали основные отличия от Python.
На языке программирования Ruby:
- Строки изменчивы
- Вы можете сделать константы
- Скобки для большинства вызовов методов необязательны
- Есть только один изменяемый контейнер списка (массив)
- Нет классов «нового стиля» или «старого стиля».
- Только falseи nilоценить как ложь, а все остальное -true
- Вы никогда не получаете прямого доступа к атрибутам. Вместо этого мы используем вызовы методов.
- Мы используем elsifвместоelif
- Мы используем requireвместоimport
- yield выполняет другую функцию, которая передается в качестве последнего аргумента, затем возобновляет
- Мы используем public, privateи protectedдля доступа
Hello World with Ruby
Теперь, когда мы понимаем, чем Ruby и Python различаются на уровне кода, давайте посмотрим на некоторый реальный код Ruby, начиная с классической программы Hello World. Взгляните ниже и обратите внимание, насколько просто здесь синтаксис Ruby.
puts «Hello World!»
Здесь putsключевое слово используется для печати. Помните: код Ruby очень удобен для чтения и предназначен для имитации разговорного английского языка.
Есть даже более простой способ сделать это. Ruby поставляется со встроенной программой, которая будет показывать результаты любых операторов, которые вы ему скармливаете, и называется Interactive Ruby (IRB). Это лучший способ изучить Ruby. Сначала откройте IRB:
- macOS: откройте терминал и введите irb. Нажмите Enter.
- Linux: откройте полку, введите irbи нажмите Enter.
- Windows: откройте Interactive Ruby из меню «Пуск» (см. Раздел «Ruby»).
Если вы наберете:
"Hello World"
Вы получите следующее:
irb(main):001:0> "Hello World" => "Hello World"
Вторая строка сообщает нам результат последнего выражения. Мы можем распечатать это, используя putsкоманду, которую мы узнали ранее.
irb(main):002:0> puts "Hello World" Hello World => nil
Вот => nilрезультат выражения, так как putsвсегда возвращает nil.
Краткое руководство по синтаксису Ruby
Давайте теперь быстро рассмотрим основы синтаксиса Ruby, который может отличаться от того, к которому вы привыкли в Python. Обратите внимание на то, чем отличается Ruby и насколько он похож на то, что вы читаете.
Присвоение переменной
В Ruby вы назначаете имя переменной с помощью оператора присваивания =, например:
puts number = 1
Вот список различных типов переменных в Ruby:
- Локальные переменные ( something)
- Переменные экземпляра ( @something)
- Константы ( Somethingили SOMETHING)
- Глобальные переменные ( $something)
Идентификаторы и ключевые слова
Ключевые слова и идентификаторы похожи на Python. Идентификаторы чувствительны к регистру и могут состоять из буквенно-цифровых символов и подчеркивания _.
Зарезервированные ключевые слова Ruby включают следующее:
Strings
В Ruby строка — это последовательность символов внутри кавычек » «. Мы также можем использовать одинарные кавычки.
Вы можете объединять строки знаком плюса +.
puts «snow» + «ball»
В Ruby умножение String на число будет повторять String много раз.
puts «Ruby» * 3
Некоторые важные методы для строк Ruby включают в себя:
- size
- empty?
- include?
- gsub
- split
Совет от профессионала:% ярлык со знаком процента в Ruby можно использовать со строками и массивами
- %wсоздаст массив строк
- %iс созданием массива символов
- %qсоздаст строку без кавычек
Hashes
В Ruby вы можете создать хэш, назначив ключ значению с помощью =>. Мы разделяем эти пары ключ / значение запятыми и заключаем все в фигурные скобки.
{ "one" => "eins", "two" => "zwei", "three" => "drei" }
Это определяет Hash с тремя парами ключ / значение, поэтому мы можем рассмотреть три значения (строки «eins», «zwei«и «drei») с использованием трех разных ключей (строки «one», «two«и «three»).
Некоторые важные методы для хэшей Ruby включают в себя:
- key?
- fetch
- merge
- new (для значений по умолчанию)
Array
В Ruby мы создаем массив, разделяя значения запятыми и заключая этот список в квадратные скобки, например:
[1, 2, 3]
Примечание: массивы Ruby всегда сохраняют свой порядок
Как и в Python, с массивами можно делать множество вещей. Наиболее важные методы:
- size
- empty?
- push / pop
- join
- flatten
Вот пример оператора пересечения &, который находит пересекающиеся части наших массивов:
puts ([1, 2, 3] & [2, 3, 4])
Parenthesis
В Ruby скобки и точки с запятой не требуются, но мы можем их использовать. Однако мы следуем этим основным правилам:
- Используйте круглые скобки с аргументами метода: def foo(a, b, c)
- Используйте круглые скобки для изменения приоритета операции: (a.size + b.size) * 2
- Не используйте круглые скобки при определении метода без аргументов: def foo
Commenting
Есть три основных способа добавления комментариев к программе Ruby.
# Single line comment
# Multiple # Lines
=begin Block fashion Commenting =end
Methods
В Ruby мы определяем методы с помощью defключевого слова, за которым следует method_name. ОНО заканчивается endключевым словом.
def method_name # Statement # Statement . . end
Мы передаем параметры нашим методам в круглых скобках.
def method_name(var1, var2, var3) # Statement # Statement . . end
Classes
В Ruby мы создаем классы, используя classключевое слово, за которым следует имя класса.
class Class_name end
Примечание: первая буква названия вашего класса должна быть заглавной.
В Ruby объекты создаются с помощью newметода.
object_name = Class_name.new
Conditionals
Условные операторы похожи на большинство других языков с небольшими отличиями. Взгляните на приведенные ниже примеры, чтобы понять, как они выглядят в Ruby.
number = 5if number.between?(1, 10)puts «The number is between 1 and 10»elsif number.between?(11, 20)puts «The number is between 11 and 20»elseputs «The number is bigger than 20»end
Примечание:elsif и elseзаявления не являются обязательными. У вас может быть ifоператор без ветвей elsifили else, ifоператор только с else, или у вас может быть ifоператор с одним или несколькими elsifоператорами.
В Ruby также есть сокращение для работы с условными операторами. Итак, мы могли бы написать этот фрагмент кода:
number = 5 if number.odd? puts "The number is odd." end
Вместо этого:
number = 5 puts "The number is odd." if number.odd?