- Язык программирования Ruby
- История создания
- Сферы применения
- Особенности языка
- Преимущества и недостатки
- Перспективы Ruby
- Примеры кода
- Заключение
- Ruby это.
- Конкурс на соискание премии Fukuoka Ruby 2022 — судить участников будет Matz
- CVE-2021-31810: Уязвимость доверия к PASV-ответам FTP в Net::FTP
- CVE-2021-32066: Уязвимость StartTLS stripping в Net::IMAP
- Вышел Ruby 3.0.2
- Другие новости
- Начните сейчас, это легко!
- Исследуйте новый мир…
- Вступайте в дружелюбное и развивающееся сообщество.
- Ruby is.
- CVE-2023-36617: ReDoS vulnerability in URI
- Ruby 3.3.0-preview1 Released
- Ruby 3.2.2 Released
- Ruby 3.1.4 Released
- Other News
- Get Started, it’s easy!
- Explore a new world…
- Participate in a friendly and growing community.
Язык программирования Ruby
Ruby — динамичный, объектно-ориентированный язык программирования общего назначения. На его фреймворке, Ruby on Rails, созданы веб-приложения таких крупных компаний, как AirBnB, Twitter и Netflix. Руби отличается простым синтаксисом и довольно высокой кроссплатформенностью, а также нестрогой типизацией переменных. За эти и другие особенности его полюбили многие программисты.
История создания
Ruby был представлен публике японским программистом Юкихиро Матцумото в 1995 году, и поначалу распространялся в основном среди японских разработчиков. В конце 90-х появилась первая официальная документация Ruby на английском языке, и так началась его всемирная популярность. Версия языка Ruby 1.8.0 вышла в 2005 году, а при релизе версии 1.9 Матцумото решил провести эксперимент и отошел от обратной совместимости с предыдущими итерациями. Такой шаг был необходим, чтобы исправить главный недостаток языка — низкую производительность. В итоге скорость обработки информации возросла в несколько раз, а с тем возрос и интерес к платформе. В 2018 году вышла еще более производительная версия Ruby 2.6, поддерживающая динамическую компиляцию данных. Сейчас язык и его основной фреймворк Ruby on Rails продолжают развиваться. Вокруг платформы уже сложилось широкое сообщество разработчиков, сформировавших свои принципы и “правила хорошего тона” для написания кода на Руби.
Сферы применения
Ruby, за счет своей мультипарадигмальности, используется в разных целях. На нем пишут биржевое ПО, программы для обеспечения безопасности и прочий коммерческий софт. Интерпретатор языка работает на любых платформах — от Windows и MacOS до Linux и Unix. Фреймворки сделали Руби особенно популярным в веб-среде. На этом языке программисты пишут серверную часть веб-приложений. При этом архитектура приложения в Ruby on Rails строится по принципу MVC. Вся система разбивается на три независимые, но взаимодействующие части — модель (общая логика и алгоритмы), представление (пользовательский интерфейс) и контроллер (средство для ввода данных). “Рельсы” (так часто называют фреймворк в русскоязычной среде) задали своего рода стандарт для других веб-сред. В Laravel или Django тоже есть бесшовная интеграция с базами данных, миграции и MVC. В RnR, кроме прочего, реализовано соглашение по конфигурации. Согласно ему, новые конфигурации применяются только в случаях, не предусмотренных официальной спецификацией.
Особенности языка
- Лаконичный синтаксис.
Ruby унаследовал свой синтаксис от языков Perl и Python. Команды в нем выглядят гораздо проще, чем в С++ и C#, и понятны даже начинающим разработчикам. В целом код на Руби не занимает много места и легко оптимизируется. Сокращается и время работы программиста, что немаловажно для заказчиков. - Мультипарадигмальность.
Ruby сочетает объектно-ориентированный, структурный и функциональный подходы программирования. Но основной упор автор языка все же делал на ООП. В языке используются классы, итераторы, замыкания и прочие атрибуты. - Динамическая типизация.
Программист не присваивает переменной конкретный тип вручную. На основе характерных используемых методов Руби сам определяет, числовая или строчная перед ним переменная. В среде программистов это называется принципом duck typing. Этот принцип предполагает, что если объект крякает и плавает как утка, с наибольшей вероятностью это и есть утка. - Интерпретируемость.
У Ruby нет компилятора, который целиком переводит написанную программу в машинный код для обработки. Вместо него используется интерпретатор, который считывает команды последовательно строка за строкой. Такой подход делает язык гибким и полностью кроссплатформенным. - Блочная система.
Блок — это отдельный кусок кода, который можно напрямую встроить в определенный метод или функцию. Передача контроля блоку осуществляется через специальную команду — yield. Блочный подход делает код более читаемым и предсказуемым. За счет блоков код на Ruby легче поддается доработкам. - Многопоточность.
Руби способен выполнять несколько задач параллельно. Это повышает производительность программы. При этом многопоточность не зависит от операционной системы, так как потоки выполняются интерпретатором.
Преимущества и недостатки
У Руби есть несколько общих плюсов в сравнении с другими языками. Все они исходят из особой философии автора проекта.
- Принцип наименьшего удивления.
Юкихиро Матцумото проектировал свой язык так, чтобы программы на нем максимально отвечали ожиданиями разработчиков и выдавали как можно меньше “сюрпризов”. В идеале код на Руби должен быть приближен к обычной инструкции на английском языке. - Широта применения.
Хоть сейчас Ruby чаще всего используется в веб-среде и настройке серверов, это далеко не все, на что он способен. На нем пишут полноценные десктопные приложения и даже мобильное ПО. Ограничения, конечно, есть, но они незначительны. - Поддержка сообщества.
Руби — платформа с открытым кодом. Сами пользователи делают ее лучше. Один из главных принципов “рубистов” — программа должна быть структурированной и понятной с первого прочтения. При этом опытные программисты охотно идут навстречу новичкам и помогают им освоить все тонкости языка.
Все перечисленные плюсы языка, к сожалению, влекут за собой и очевидные недостатки.
- Невысокая производительность.
Первые версии Ruby отличались низкой скоростью обработки данных. Компилированные языки справлялись с этой задачей гораздо быстрее. В последующих релизах производительность Руби была повышена. Но даже сейчас для разработки RTA приложений, где необходима мгновенная реакция на действия пользователя, язык не применяется. - Нет обратной совместимости версий.
На такой шаг создатели языка пошли осознанно, чтобы платформа могла развиваться независимо от своего прошлого. В итоге проект, созданный на более ранних релизах, сложно перевести на новую версию языка без существенных доработок. Проблему представляет также то, что разные библиотеки языка могут быть несовместимы между собой.
Некоторые фреймворки и библиотеки Ruby могут не работать на определенных платформах, хоть сам язык и считается кроссплатформенным. - Ресурсоемкость.
Интерпретатор Руби затрачивает значительное количество ресурсов системы на обработку данных программы. По этой причине разработка на Ruby для маломощных процессоров фактически не практикуется. - Относительная сложность освоения.
Хоть синтаксис языка довольно понятен, новичкам часто бывает непросто освоить саму логику построения программ. Специалисты рекомендуют поработать с другими ООП языками перед изучением Ruby. После этого писать на новой платформе будет на удивление легко и приятно. - Работа с памятью.
Если говорить упрощенно, Ruby разбивает память на участки. Часто случается так, что некоторые из выделенных участков пустуют, и программа занимает больше места, чем могла бы.
Перспективы Ruby
Мем “Ruby мертв” давно распространен среди программистов. Но это лишь шутка. В реальности Руби пользуется спросом как у стартапов, так и у крупных компаний с именем. Первые выбирают технологию из-за относительно быстрой и дешевой разработки. MVP (минимально жизнеспособный продукт) на Руби можно собрать буквально за несколько месяцев. Большие компании делают сайты и приложения на Ruby из-за его стабильности и легкой доработки программ.
Можно предположить, что авторы языка продолжат совершенствовать производительность платформы, чтобы расширить возможности ее применения.
Примеры кода
Стандартная “первая программа” на Ruby выглядит максимально просто и занимает всего одну строку.
Просто и изящно в Ruby выглядит вывод факториалов чисел от 1 до 10.
n = 1 10.times do |i| n *= i + 1 puts n end
Метод *= означает умножение с присваиванием результата правому множителю. То есть x*=y означает то же самое, что x=x*y. В примере строка n *= i + 1 будет равна n =n*( i + 1).
Из примера также видно, что переменная i объявляется прямо в начале цикла, а не до него.
Рассмотрим ввод данных с клавиатуры в Ruby. Для этого напишем код, вычисляющий площадь треугольника с заданными сторонами.
puts "Введите длину:" l=gets.chomp.to_f puts "Введите ширину:" w=gets.chomp.to_f area=l*w puts "Площадь треугольника равна #"
Метод gets принимает значение с клавиатуры. Метод chomp необязателен, он переводит каретку ввода на новую строку.
Попробуем также написать собственные методы на Ruby. В нашем простом примере метод будет выводить на экран два слова. При этом первый раз аргументы метода мы зададим сразу, а во второй — при его вызове.
def demo(a1 = "Привет", a2 = "Мир") puts " #" puts " #" end demo demo "Hello", "World"
Метод всегда начинается с команды def и заканчивается командой end. Пустой вызов в пятой строке примера выводит заранее заданные аргументы из первой строки. В шестой строке мы сами задаем аргументы.
Заключение
Ruby — это язык, который, согласно высказыванию его создателя, “создан, чтобы сделать программистов счастливее”. Многие разработчики согласны с этим высказыванием. Благодаря легко читаемому синтаксису, динамической типизации и встраиваемым блокам код на Руби получается компактным и эффективным.
Фреймворк Ruby on Rails сделал язык популярным средством для разработки серверной части сайтов и задал общий стандарт для подобного рода фреймворков.
В ближайшее время Руби будет продолжать свое развитие, сокращая влияние недостатков и усиливая достоинства.
Ruby это.
динамический язык программирования с открытым исходным кодом с упором на простоту и продуктивность. Он обладает элегантным синтаксисом, который приятно читать и легко писать.
Конкурс на соискание премии Fukuoka Ruby 2022 — судить участников будет Matz
Опубликовал Fukuoka Ruby 03-08-2021
CVE-2021-31810: Уязвимость доверия к PASV-ответам FTP в Net::FTP
В Net::FTP обнаружена уязвимость доверия к PASV-ответам FTP. Этой уязвимости присвоен идентификатор CVE-2021-31810. Мы настоятельно рекомендуем обновить Ruby.
Опубликовал shugo 07-07-2021
CVE-2021-32066: Уязвимость StartTLS stripping в Net::IMAP
В Net::IMAP обнаружена уязвимость StartTLS stripping. Этой уязвимости присвоен идентификатор CVE-2021-32066. Мы настоятельно рекомендуем обновить Ruby.
Опубликовал shugo 07-07-2021
Вышел Ruby 3.0.2
Опубликовал nagachika 07-07-2021
Другие новости
- Вышел Ruby 2.7.4
Опубликовал usa 07-07-2021 - Вышел Ruby 2.6.8
Опубликовал usa 07-07-2021 - CVE-2021-31799: Уязвимость внедрения команды в RDoc
Опубликовал aycabta 02-05-2021 - CVE-2021-28965: Уязвимость round-trip кодирования в REXML
Опубликовал mame 05-04-2021 - CVE-2021-28966: Уязвимость обхода каталога в Tempfile на Windows
Опубликовал mame 05-04-2021 - Вышел Ruby 3.0.1
Опубликовал naruse 05-04-2021
Начните сейчас, это легко!
Исследуйте новый мир…
Вступайте в дружелюбное и развивающееся сообщество.
- Почтовые рассылки: Разговоры о Ruby в кругу программистов со всего мира.
- Группы пользователей: Познакомьтесь с рубистами рядом с вами.
- Блоги: Читайте о том, что происходит в сообществе Ruby прямо сейчас.
- Ядро Ruby: Помощь в полировке последней версии Ruby.
- Решение проблем: Сообщайте или помогайте решать проблемы в Ruby.
Ruby is.
A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
CVE-2023-36617: ReDoS vulnerability in URI
We have released the uri gem version 0.12.2, 0.10.3 that has a security fix for a ReDoS vulnerability. This vulnerability has been assigned the CVE identifier CVE-2023-36617.
Posted by hsbt on 29 Jun 2023
Ruby 3.3.0-preview1 Released
Posted by naruse on 12 May 2023
Ruby 3.2.2 Released
Ruby 3.2.2 has been released.
Posted by naruse on 30 Mar 2023
Ruby 3.1.4 Released
Ruby 3.1.4 has been released.
Posted by nagachika on 30 Mar 2023
Other News
- Ruby 3.0.6 Released
Posted by usa on 30 Mar 2023 - Ruby 2.7.8 Released
Posted by usa on 30 Mar 2023 - CVE-2023-28756: ReDoS vulnerability in Time
Posted by hsbt on 30 Mar 2023 - CVE-2023-28755: ReDoS vulnerability in URI
Posted by hsbt on 28 Mar 2023 - Ruby 3.2.1 Released
Posted by naruse on 8 Feb 2023 - Ruby 3.2.0 Released
Posted by naruse on 25 Dec 2022
Get Started, it’s easy!
Explore a new world…
Participate in a friendly and growing community.
- Mailing Lists: Talk about Ruby with programmers from all around the world.
- User Groups: Get in contact with Rubyists in your area.
- Blogs: Read about what’s happening right now in the Ruby community.
- Ruby Core: Help polish the rough edges of the latest Ruby.
- Issue Tracking: Report or help solve issues in Ruby.