Что собой представляет язык программирования Ruby

Содержание
  1. О ruby
  2. Идеалы создателя Ruby
  3. Рост популярности Ruby
  4. Всё в Ruby – объекты
  5. Гибкость Ruby
  6. Блоки — по-настоящему выразительная конструкция
  7. Ruby и примеси
  8. Визуальное представление Ruby
  9. Помимо основ
  10. Другие реализации Ruby
  11. Ссылки
  12. Почему Ruby — идеальный язык для начинающего разработчика
  13. Как я пришёл в IT
  14. О трудностях, которые возникли при входе
  15. Про Open source и сообщество
  16. Плюсы Ruby для новичка
  17. Почему Ruby и Ruby on Rails перспективны
  18. Как расти в профессии
  19. Ruby, язык программирования
  20. История развития Ruby
  21. Примеры программы на Ruby
  22. Язык программирования Ruby и выбор курсов для его изучения
  23. Как выбрать курс
  24. Кому пригодятся курсы
  25. Что изучают на курсах
  26. Как и где можно применить полученные знания
  27. Отзывы тех, кто прошел курсы
  28. Знакомство с языком ruby
  29. Преимущества ruby
  30. Философия ruby
  31. Ruby – что это за язык программирования, что пишут на Руби, для чего нужен и зачем используется, возможности языка, достоинства и недостатки
  32. Что такое Ruby?
  33. Где используется язык программирования?
  34. Что пишут на Ruby?
  35. Достоинства и недостатки
  36. Возможности
  37. Язык Ruby: история становления и перспективы развития
  38. 1
  39. 2
  40. 3.
  41. 4

О ruby

Что собой представляет язык программирования Ruby

Удивляетесь, почему Ruby так популярен? Его поклонники называют его красивым,искусным языком. И в то же время они говорят, что он удобный и практичный.Что же перевешивает?

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

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

Он часто повторял, что «пытается сделать 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) endend 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 Enumerableend

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

Визуальное представление 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 — это реализация «тесно интегрированная с .NETFramework».
  • MagLev — это «быстрая, стабильная реализация Ruby синтегрированным долговременным хранением объектов и распределенным открытымкешем”.
  • Cardinal — это «компилятор Ruby для виртуальной машины Parrot»(Perl 6).

Ссылки

1 Matz, сообщение в списке рассылок Ruby-Talk, 12 мая2000 года.

2 Matz, в Интервью с Создателем Ruby, 29 ноября 2001года.

3 Matz, в Блоки и Замыкания в Ruby, 22 декабря 2003года.

Почему Ruby — идеальный язык для начинающего разработчика

Что собой представляет язык программирования Ruby

Марат Хуснетдинов, основатель консалтингового проекта HowToHireMe, рассказал блогу Нетологии о своём пути в IT и о том, почему начинающим разработчикам стоит выбрать Ruby.

В разработке я около 5 лет. Начинал с фронтенда: вёрстка, стили и JavaScript, затем попробовал Ruby, немного поигрался с Python.

В последнее время работаю с Elixir — это новый язык на erlang virtual machine — и с базами данных, и как технический специалист, кроме того управляю, продаю, выступаю как ментор.

Есть опыт управления проектами, лидирование и продаж в IT. Сейчас у меня на двоих с партнёром консалтинговое агентство HowToHireMe.

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

Программа обучения: «Профессия Ruby on Rails разработчик»

Мы стараемся развивать наш проект в Open source — я очень активно пишу в open source Github-проекты, чтоб поддерживать опыт на уровне, не смотря на то, что уже ушел на управленческие позиции. За пять лет накопилось много багажа, о котором рассказываем ребятам, когда они приходят к нам на стажировку.

Сегодня расскажу, как эффективно построить карьеру в роли Ruby-разработчика и почему это более эффективно, чем в других языках. Расскажу, почему я пришёл в IT, какие были трудности, почему выбрал Ruby — выбор был непростой, но очень интересный.

Как я пришёл в IT

Хотел бы начать с простой идеи: у меня нет АК-47 с серебряными пулями — есть только опыт и путь, который я прошёл.

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

Начинал с HTML и CSS. Пытался писать на 4-й версии PHP по книгам Котерова, после чего это всё успешно забросил. В аспирантуре, когда уже работал с оборудованием, меня познакомили с Python — я даже пытался писать на нём интерпретатор истории станков, чтобы нашим руководителям можно было отслеживать историю нажатия клавиш.

О трудностях, которые возникли при входе

Основная проблема — у меня не было знакомых разработчиков, не было наставника. Я примерно полгода изучал HTML и CSS, чтобы дойти до какого-то уровня в разработке. Были простые проекты, но они были маловостребованны для работодателя. В тот момент я не знал, у кого молодому разработчику спросить совета.

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

Самое трудное в карьере — это выбрать свой язык, свой стек.

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

В то время не было такого многообразия, как сейчас, но тоже было трудно выбрать набор скиллов. Сейчас же очень разросся стек фронтенда и молодым разработчикам всё труднее выбирать.

Я через это прошёл и предлагаю в качестве решения молодым начинающим разработчикам написать одну задачу на разных языках, на разных препроцессорах стилей — так поймете, что вам нравится.

Дальше будет стоять вопрос поиска работы. Для меня самым трудным в первой работе было понять, чего от меня хотят и как мне это сделать. Обычно здесь начинаются первые трудности, когда начинающий разработчик просто не знает, что ему говорить, что учить и что делать.

Когда ищете работу, работодателям важно увидеть ваши знания, портфолио, какой-то бекграунд — подойдут даже сертификаты и дипломные проекты.

Первая работа в компании была для меня самой сложной — стало понятно, что предстоит многое выучить, многое попробовать и очень многое прочитать.

Читать ещё: «Найти работу в новой сфере: резюме, поиск контактов, самопрезентация»

Про Open source и сообщество

Ruby on Rails сам по себе был написан как opensource-проект, где каждый может поучаствовать в разработке этого проекта. Когда входил в Ruby-мир, то работал с тремя ребятами, которые на тот момент находились в core team разработки Ruby on Rails. Сейчас они уехали работать за границу или же работают удалённо на иностранные компании — в этом им как раз очень помог open source.

У меня не было open source-портфолио. Всем молодым разработчикам я всегда говорю: если вас нет Github-аккаунта, то заводите как можно быстрее.

Не важно, сколько вы напишете опыта в резюме, работодатель всё равно пойдёт смотреть на ваш Github-аккаунт и дату его регистрации — это и будет считаться официальным стартом вашей IT-карьеры.

И сейчас вам советую: просто возьмите и зарегистрируйтесь на Github.

Поработав с Python и Pyramid, я понял, что есть более развитые языки, с более развитой инфраструктурой и более отзывчивым сообществом разработчиков. Например, у Ruby сейчас самое развитое комьюнити: его можно сравнить только с JavaScript. Можно сказать, что Ruby-сообщество создало стандарты для тестирования приложений и многие решения мигрировали потом в JavaScript, Python и другие языки.

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

Плюсы Ruby для новичка

Когда я входил в Ruby-мир, на Ruby уже было реализовано достаточно большое количество решений: были написаны , Aviasales, OneTwoTrip, Onlinetours. Множество решений для выкатки приложений тоже написаны на Ruby, например Puppet, Chef — это инструменты, с помощью которых приложения выкатывают на сервер, или Vagrant — виртуализация приложений — написана тоже на Ruby.

Некоторые государственные компании начали использовать язык Ruby, потому что он занял свою нишу как язык быстрого прототипирования проектов. Если вы сейчас хотите запустить свой стартап, то в 99% лучше использовать Ruby — как язык, который поможет вам очень быстро писать, двигаться по проекту и выкатывать его. На слайде пример синтаксиса.

Многие воспринимают Ruby как кукольный, детский язык, но это только начальное восприятие. Первое моё ощущение от Ruby — язык показался магически простым, потому что очень многое происходит за кадром.

Он читается, как обычный текст. Меня подкупило, что можно опускать какие-то скобочки, какие-то вещи можно было писать более нативно.

Когда вы понимаете язык, вы понимаете, что там нет никакой магии и всё достаточно предсказуемо работает.

Когда узнаёшь этот язык, начинаешь его любить, потому что вещи, которые делаются очень долго на других языках, здесь можно сделать очень быстро. В среднем скорость разработки на Ruby на 30−50% выше, чем на других языках. В два раза, если мы говорим о Java и .NET. Язык действительно очень красивый и простой для понимания, что привлекает всё большее количество разработчиков.

Я вошёл в Ruby-мир как фронтендер. После чистого фронтенда для Pyramid меня пригласили работать в компанию, которая занимается разработкой на Ruby on Rails.

В компанию зашёл как фронтенд-разработчик на Ruby и именно в это время и познакомился с самим фреймворком Ruby on Rails. Очень часто ребята начинают сразу учить сам фреймворк с минимальными знаниями языка.

Моё мнение, что это ошибка и надо знать язык, потому что понимание языка даст вам большее понимание фреймворка Ruby on Rails.

Читать ещё: «Как стать суперпрограммистом?»

Не будем забывать, что у Ruby on Rails тоже есть свои проблемы, которые сейчас пытаются решить. Нет ни одного языка, который мог бы решить все задачи: каждый язык берётся под определённое решение, идеального языка нет.

Ruby on Rails и Ruby заняли свою нишу как стандарт разработки веб-приложений.

Есть библиотеки, которые помогают писать JavaScript, такие как Opal, компилируются из Ruby в JavaScript; есть фреймворки, которые помогают писать приложения для мобильной разработки, например, RubyMotion.

Почему Ruby и Ruby on Rails перспективны

Быстрый вход в индустрию. Ruby — один из наиболее простых для изучения языков. Существует множество обучающих ресурсов, а вся нужная информация содержится в open source, поэтому не требует дополнительных трат с вашей стороны — только если понадобится какое-то очень специфичное решение, но это вряд ли случится на начальном этапе.

Качественный вход. На Ruby очень просто изучать объектно-ориентированное программирование.

Здесь проще читается код, проще приводятся примеры и проще само понимание кода — для новичка это плюс.

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

Высокая конкурентная мотивация. Я могу судить по Воронежу, где годовалый джуниор-разработчик на Ruby может просить зарплату в районе 90 тыс. руб. в месяц. Это достаточно серьёзные деньги. А на входе можно получать от 30 до 40 тыс. руб.

Если вы будете искать работу, то вы должны понимать, что Ruby on Rails — это комьюнити, где люди привыкли работать в стартапах. В 80% это будут небольшие компании, зарубежные или нет, и в меньшей степени — большие компании.

Государственные компании также в последнее время переходят на разработку на Ruby on Rails. Они понимают, что платить джависту или дотнетчику за то, что он будет писать год — это очень дорого.

Проще заплатить Ruby-разработчику, который стоит чуть подороже, но напишет решение за 2−3 месяца.

Возможность релокации. Здесь речь идёт о знании английского языка: если знаете английский на разговорном уровне или хотя бы можете переписываться, то ваша цена сразу растёт.

Есть компании, которые работают на российский рынок и ограничения у таких русскоязычных компаний где-то в районе 3000 долларов. Если вы выйдете на уровень зарубежных компаний, то зарплата будет варьироваться от 2500 до 5000 долларов в американских компаниях.

Поэтому советую как можно скорее начинать учить английский язык.

Читать ещё: «Где лучше всего жить и работать разработчику»

Opensource-головорезы. Open source — это не инхаус-разработка, а разработка на комьюнити: любой человек сможет прийти и оценить ваши наработки, а работодатели и заказчики очень часто требуют показать Github-профиль. Поэтому я советую не только завести аккаунт на Github, но и начать прокачивать его.

Как расти в профессии

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

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

Пригодится любой предыдущий опыт работы. Например, если вы до этого занимались ремонтом или продажей машин, то наиболее перспективно реализовать себя сможете скорее всего именно в тех проектах, где используется эта тематика.

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

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

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

Программа обучения: «Профессия frontend-разработчик»

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

Потому что зачастую проблемы начинаются с фронтенда и уже потом заканчиваются на бекенде.

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

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

Моё мнение: чтобы стать современным разработчиком, надо знать фронтенд — хотя бы чуть-чуть, затем изучить бекенд, если это основное направление, а после этого ещё и получить базовые знания DevOps и QA.

Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.

Ruby, язык программирования

Что собой представляет язык программирования Ruby

Ruby — язык программирования (ЯП), обладающий следующими особенностями:

  • строгая динамическая типизация;
  • поддержка прямых системных вызовов;
  • эффективная работа со строками и регулярными выражениями;
  • возможность быстро отслеживать изменение поведения создаваемой программы в процессе разработки;
  • простой синтаксис.

Ruby относится к категориям высокоуровневых, рефлективных и интерпретируемых языков. В нем реализована концепция объектно-ориентированного программирования (классы с полями и методами, наследование, полиморфизм, инкапсуляция, примеси, методы-одиночки, итераторы, замыкания и т.д.).

К уникальным свойствам языка можно отнести:

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

В то же время специалисты указывают на следующие недостатки языка:

  • невозможность непосредственного управления памятью;
  • трудности работы с низкоуровневыми структурами;
  • отсутствие механизмов оптимизации программ, а также компиляции.

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

В настоящее время Ruby поддерживается во всех популярных операционных системах для персональных компьютеров (Windows, Linux, MacOS). Он применяется не только для веб-разработки, но и в качестве скриптового языка для создания административных утилит и настройки приложений.

В качестве скриптового языка Ruby также задействован в таких продуктах, как

  • RPG Maker (RPG Maker XP);
  • RGSS (Ruby Game Scripting System);
  • Amarok;
  • SketchUp;
  • KOffice;
  • WATIR (англ. Web Application Testing in Ruby);
  • Google SketchUp ;
  • XChat.

История развития Ruby

Автором Ruby является японский программист Юкихиро Мацумото, начавший работу над этим проектом в 1993 г.

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

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

Рисунок 1. Юкихиро Мацумото. Автор24 — интернет-биржа студенческих работ

Ruby быстро стал популярным языком. Во второй половине 1990-х и начале 2000-х вышло несколько десятков учебников по нему.

В Японии он стал более востребованным, чем даже набравший в то же время огромную популярность Python. С середины 2000-х Ruby приобретает множество приверженцев в США и Европе.

С появлением фреймворка Ruby-On-Rails (RoR), пригодного для разработки веб-приложений, язык становится одним из лидеров отрасли.

В начале 2010-х гг. количество программистов, пишущих на Ruby, утроилось по сравнению в концом 1990-х. Учебники и руководства по нему в это время были переведены на основные национальные языки, в том числе русский.

В это же время в развитии Ruby произошла некоторая заминка: до версии 1.8 Ruby сохранял совместимость с собственным ранее написанном кодом. Затем разработка разделилась на ветвь, поддерживающую прежний стандарт и версию 1.9.

*, (предтеча Ruby 2), где было решено отказаться от устаревшего наследия.

В 2013 г. вышла версия Ruby 2.0. В 2018 г. в версии 2.6 была предпринята попытка повысить скорость работы программ за счет внедрения JIT-компиляции.

Ruby используется в правительственных организациях США (NASA, NOAA – наблюдения за океаном и атмосферой), корпорации Motorola, Toronto Rehab, в крупных веб-порталах, таких, как GitHub, SoundCloud, Groupon, Twitch.tv и т.д.

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

Рисунок 2. Популярность языков для веб-разработки. Автор24 — интернет-биржа студенческих работ

Примеры программы на Ruby

Ruby — объектно-ориентированный язык. В нём даже примитивы (строки, числа) выражены как объекты. Каждая функция является методом того или иного объекта.

Переменные в Ruby представляют собой ссылки на объекты, а присваивание представляет собой копирование ссылок. Особенностью Ruby является то, что методы можно добавлять динамически в любые классы и объекты.

Например, типичная программа-приветствие может выглядеть так:

Язык программирования Ruby и выбор курсов для его изучения

Что собой представляет язык программирования Ruby
ПОДОБРАТЬ КУРС

Язык программирования ruby – один из самых молодых и перспективных. По словам специалистов, работать на нем удобно и легко.

Как выбрать курс

Курсы, обучающие ruby, предлагают многие учебные заведения. На занятиях вы освоите азы программирования. Но независимо от того, планируется учить язык с нуля или освежить уже имеющиеся знания, важно правильно выбрать курсы. Они должны отвечать таким критериям:

  1. У заведения должна быть лицензия на проведение обучения.
  2. Наличие государственной аккредитации. Чтобы после окончания студент получил сертификат о прохождении курса. Это актуально для тех, кто в дальнейшем использует полученные знания для поиска работы или обучается с целью повышения квалификации.
  3. Стоимость курса. Цены зависят от содержания программы обучения. Сначала проанализируйте стоимость похожих занятий, которые предлагают школы.
  4. Программа. В разных учебных заведениях она отличается. Стоит убедиться, что на выбранных курсах действительно преподают то, что вам нужно. Обучение должно базироваться на актуальных технологиях.
  5. Материально-техническая база и преподавательский состав. Человек, который обучает работе с ruby, должен быть сам знаком с языком. Хорошо, если преподаватель имеет опыт ведения проектов. На качество полученных знаний влияет и материально-техническая база учебного заведения. Студенты должны слушать лекции и выполнять практические задания, которые помогут закрепить материал.
  6. Наполняемость групп. Если количество студентов в группе окажется больше 15-20, преподаватель не обеспечит индивидуальный подход.
  7. Интенсивность. Время и периодичность занятий должны быть удобными.
  8. Результат. После окончания курса ученик получает документ, подтверждающий квалификацию. Идеально, если, закончив курсы, помимо сертификата останется готовый проект, сделанный во время обучения. Его используют в портфолио.
  9. Некоторые курсы предлагают студентам трудоустройство.

Популярные курсы Bubolab

Основы разработки баз данных на платформе Microsoft SQL Server

27 075 руб.

На страницу курса

Обработка и анализ информации в Microsoft Access

12 160 руб.

На страницу курса

Основы программирования на языке Java

от 13 680 руб.

На страницу курса

Ищете курсы? Хотите получить новый навык?

Мы собрали лучшие курсы с сертификатами для начинающих и продолжающих

подобрать курс

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

Кому пригодятся курсы

Записаться на курсы стоит:

  1. Новичкам, которые еще не писали на языке ruby, но хотят стать профессионалами.
  2. Выпускникам ВУЗов, которые повышают профессиональный уровень.
  3. Редакторам, которые составляют веб-сценарии.
  4. Стартаперам, желающим разобраться в ядре веб-продукта.

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

Что изучают на курсах

Учебная программа включает темы:

  1. Введение в основы языка ruby.
  2. Настройка проекта Rails.
  3. Обучение управлению структур баз данных.
  4. Постраничный вывод записей и загрузка изображений.
  5. MVC в Rails.
  6. Основы отладки приложений.

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

Как и где можно применить полученные знания

С ruby рекомендуют начинать изучение программирования. Разработчики сделали его интуитивно понятным. Он широко применяется в веб-разработках. Его используют для расширения возможностей некоторых программ:

  • RPG Maker;
  • программы для воспроизведения аудиофайлов Amarok;
  • программы моделирования трехмерных объектов SketchUp;
  • скриптов, обрабатывающих векторные изображения Inkscape;
  • проектах информационной безопасности – Metasploit;
  • системах управления конфигурациями – Puppet или Chef;
  • багтрекере Redmine;
  • средстве для тестирования веб-приложений WATIR.

Ruby используют в своей деятельности крупные организации – Motorola, NASA и другие.

Отзывы тех, кто прошел курсы

Виктор

После окончания университета я никак не мог найти с работу. Помогли курсы языка ruby. Теперь я работаю в крупной иностранной IT-компании, о чем очень мечтал.

Оксана

Я уже давно хотела бросить работу в офисе и перейти на фриланс. Востребованной областью оказалась IT, но необходимых знаний у меня не было. Решила пойти на курсы и выбрала ruby. Теперь имею отличную работу с достойным заработком.

Кирилл

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

Знакомство с языком ruby

Ruby – новый развивающийся язык программирования, который используется повсеместно. Он объединил в себе объектно-ориентированный подход с синтаксисом подобным Perl. Некоторые черты позаимствованы у CLU, Python, Dylan и других языков.

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

Преимущества ruby

У этого языка масса преимуществ. К ним относят:

  1. Скорость разработки. Решение задачи с его использованием происходит в разы быстрее в сравнении с другими похожими фреймворками.
  2. Средства кеширования данных. При работе над любым масштабным проектом кеширование становится ключевым моментом. В основе языка есть штатные средства для кеширования. Поэтому можно с легкостью обрабатывать не только отдельные блоки, но и комплексные страницы.
  3. Дополнительные средства для тестировщиков. Сравнивая тестирование приложений при помощи других программ, можно увидеть множество готовых решений. В проекте ruby код не пропишется, пока под него не будет написан тест.
  4. Общепринятые стандарты разработки. Работы ведутся по общепринятым стандартам и правилам, что упрощает процесс. Благодаря таким соглашениям каждый проект структурирован. Поэтому новый разработчик способен быстро войти в курс дела. При необходимости проект закончит другая команда без потери времени и качества готового продукта.
  5. Решения для многоязычных проектов. Поддержка нескольких языков внедряется как в самом начале работы с проектом, так и на другом этапе. Здесь есть отдельные файлы с терминами и переводом.
  6. Высокая защита. Разработчики ruby позаботились о защите данных. Здесь изначально происходит шифрование личных данных, паролей и другой информации. Они по умолчанию экранируются.

Руби подходит новичкам для изучения программирования. Но отказываться от знакомства с другими языками не стоит.

Философия ruby

Язык разработан для создания понятных приложений. Здесь делается акцент на скорости работы, простоте и читабельности написанных слов в коде. Поэтому ruby выбирают в качестве основы при углубленном изучении программирования.

Основным принципом, которым руководствовался создатель руби, стала «минимальная неожиданность». Поэтому программа ведет себя так, как нужно программисту. Еще одной составляющей ruby стала вариативность языка. Благодаря этому веб-мастер решает задачу так, как ему выгодно и удобно.

Стив Джобс: «Если ты сегодня сделаешь код, то завтра он сделает тебе деньги».

в telegram-канале

Ruby – что это за язык программирования, что пишут на Руби, для чего нужен и зачем используется, возможности языка, достоинства и недостатки

Что собой представляет язык программирования Ruby

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

Что такое Ruby?

Высокоуровневый язык программирования Ruby в переводе на русский известен, как Руби или Рубин. Его создателем является Юкихиро Мацумото. Мысль о разработке собственного языка пришла к нему в студенческие годы. Главной целью было создать настоящий объектно-ориентированный язык, который был бы удобен в использовании.

Разработка началась в 1993 году. Датой выхода можно назвать 1995 году, спустя два года после начала работы. Юкихиро Мацумото разместил его в новостных группах, но только на японском. Посетители распространяли информацию и язык начал обретать популярность на территории Японии.

Для дальнейшего развития, требовалось наличие документации на английском. Она была разработана только в 1997 году. Спустя год появился специальный форум «ruby-talk». Благодаря этому язык стал популярнее и в остальной части мира.

Необходимость в создании нового языка возникла в тот момент, когда Юкихиро Мацумото искал наиболее удобный для использования.

Perl был недостаточно мощным, а Python не настолько объектно-ориентированным. Юкихиро Мацумото взял основные моменты и создал собственный проект.

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

Где используется язык программирования?

Ruby применяется программистами во многих сферах. Так, на этом языке были написаны различные программы. Он используется в веб-программировании и для разработки приложений крупными компаниями, например, Motorola или NASA.

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

  Что такое «Тихая установка» и как ее использовать

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

Что пишут на Ruby?

На Ruby была полностью разработана система багтрекинга с названием Redmine. Также, он использовался для создания программы, которая занимается редактированием векторной графики Inkscape. На Руби была переписана система, которая занимается исследованием информационной безопасности — Metasploit.

В 2004 году был выпущен Ruby on Rails. После этого программисты стали чаще его использовать. Так, на данной платформе были разработаны следующие проекты:

  • ;
  • GitHub;
  • Kickstarter;
  • Diaspora.

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

Часто Руби применяют для стартапов. Платформа позволяет создать проект в сжатые сроки. Если в последующем возникает необходимость добавить системе мощности, то ее переписывают на другом, более подходящем языке.

Достоинства и недостатки

Ruby достаточно простой в изучении. Очень часто рекомендуют начинать программировать именно на нем. Но перед изучением основ, рекомендуется ознакомиться с достоинствами и недостатками.

https://www.youtube.com/watch?v=LF-ozJfqpuEu0026t=33s

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

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

Наличие сообщества означает не только поиск единомышленников. Здесь же находятся готовые решения для многих задач. Это позволяет позаимствовать часть работающего кода, а не заново создавать простую систему.

  Что за процесс Taskmgr и за что отвечает

Программист, который знает данный язык, будет обеспечен постоянной работой и высокой зарплатой. Но, здесь же есть и недостаток. Дело в том, что требуются часто специалисты Ruby on Rails. Для стандартной платформы вакансий будет значительно меньше.

К другим недостатком системы можно отнести то, что она разрабатывалась для Linux. Из-за этого могут возникнуть проблемы с написанием программ для операционной системы Windows. Потребуется установка дополнительных компонентов.

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

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

Возможности

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

  • обрабатывание исключений, как в Java и Python;
  • предопределение операторов;
  • автоматическое собирание мусора;
  • поддержка различных платформ;
  • динамическая загрузка расширений и т.д.

Язык Ruby: история становления и перспективы развития

Что собой представляет язык программирования Ruby

Человек создан для творчества, и я всегда знал, что люблю творить. Увы, я обделён талантом художника или музыканта. Зато умею писать программы. Я хочу, чтобы компьютер был моим слугой, а не господином, поэтому должен уметь быстро и эффективно объяснить ему, что делать.

Юкихиро Мацумото, создатель языка Ruby Перед каждым, кто желает идти по пути программиста, рано или поздно встаёт вопрос выбора сферы разработки ПО (web, desktop, mobile, игровое, системное,..) и соответствующих инструментов (языков программирования, framework'ов, сред разработки…). Причём здесь, как и в строительстве, важную роль играют материалы и орудия, которые вы используете.

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

В то же время каменщик может действовать куда быстрее, пользуясь при этом электроинструментом и компенсируя некоторые неточности с помощью лишнего мастерка раствора :) Ну а бетонщик-монолитчик вообще не заморачивается, его задача — сделать всё максимально просто и надёжно в кратчайшие сроки, а кто уже там будет годами заниматься отделкой и дизайном помещений — его не интересует.

Так и с языками программирования: в каждой из сфер разработки ПО обычно есть минимум два-три языка, способных в принципе справиться с поставленной задачей. Однако подход к решению у этих языков обычно несколько отличается, и тут встаёт вопрос приоритетов в разработке и индивидуальных предпочтений программиста.

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

Эта статья призвана ответить на вопрос, стоит ли потратить этот месяц на Ruby, или имеет смысл посмотреть в сторону других языков.

Сам я сейчас также стою перед выбором: улучшать свои знания в PHP (пока я работал с ним самостоятельно во freelance'е — и на довольно простом уровне, сейчас же есть желание расти дальше) или попробовать «с нуля» в Ruby (сразу освоив с его помощью последние тренды в web-программировании и при этом получив, как я надеюсь, довольно современный и удобный инструмент для работы). Попробовав разобраться, есть ли у Ruby будущее, и есть ли мне место в нём :), я перечитал несколько сотен статей, обсуждений, сравнений и т.д. Попробую привести мои мысли в более-менее системном виде:

1

Ruby был задуман в 1993-м году японцем Юкихиро Мацумото, стремившимся создать язык, вобравший из других языков самые лучше подходы, облегчающие труд программиста. Он действовал во многом согласно постулату Абельсона и Сассмана: «Программы должны быть написаны так, чтобы их могли читать люди, и лишь иногда так, чтобы их могли выполнять машины».

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

Язык следует принципу «наименьшей неожиданности»: программа должна вести себя так, как ожидает программист. Он также унаследовал идеологию языка Perl в части предоставления программисту возможностей достижения одного и того же результата несколькими способами.

Люди различны, и им для свободы необходима возможность выбирать: «Я предпочитаю обеспечить много путей, если это возможно, но поощрять или вести пользователей, чтобы те выбирали лучший путь, если это возможно».

2

В Японии 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 получил сейчас признание во всем мире.

3.

Настоящий скачок в развитии и интерес к использованию языка для серьёзных коммерческих проектов начался после выхода Ruby 1.8.0 в 2003-м и новой версии framework'а Ruby on Rails 2.0 в 2007-м году, что вывело программирование на Ruby на новый уровень.

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

К сожалению, скорость работы самого приложения оставалась ещё довольно низкой, и это было одной из причин того, что популярность языка росла довольно медленно. Как заявлял в 2007-м году один из российских разработчиков: «Если говорить о рельсах, то это естественно прорыв.

Всё, что я делал для себя на коленке 5 лет, вдруг преподнесли в рамках единого отличного фреймворка. Расстраивает производительность. Причем масштабируемость вполне себе приличная, но наращивать серверы для рельсовых приложений приходится чаще, чем для пайтоновских и перловых аналогов. Если бы не это, мы бы уже перешли на рельсы.

Пока используем в целях обучения новых разработчиков правильным подходам к разработке и для прототипирования». К тому же ещё было проблематично найти хостинг (тем более бесплатный), на котором можно было бы разместить приложение на Ruby.

4

Если до версии 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 проектов.

По статистике компании Black Duck Software, в январе-мае 2011 года на Github было опубликовано 1 153 059 коммитов (записей), на Sourceforge — 624 989, на Google Code — 287 901 и на CodePlex — 49 839. Вот статистика по языкам программирования:

  • C++ (362 077 коммитов)
  • Java (335 992 коммитов)
  • Python (296 896 коммитов)
  • C (264 468 коммитов)
  • JavaScript (251 557 коммитов)
  • Ruby (234 980 коммитов)
  • PHP (154 250 коммитов)
  • C# (125 848 коммитов)
  • Perl (89 720 коммитов)

К тому же Ruby/Rails на данный момент представляют реализацию практически всех наиболее перспективных технологий и подходов к программированию, таких как разработка через тестирование (TDD), полноценная модель реализации концепции MVC, работа с базами данных через ORM (ActiveRecord), шаблоны проектирования (Design Patterns), использование удобного JavaScript-framework'а Prototype (для простой работы с AJAX), работа с распределённой системой контроля версий Git (Github.com), ну и, конечно, его применение в разработке SaaS (Cloud computing), к примеру, на таких проектах, как Heroku.com, Engineyard.com, Basecamphq.com.

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

Конечно, новые cutting-edge-технологии — это всегда какие-то риски, какими бы хорошими словами ни расписывались такие технологии и какими бы качествами они ни обладали. Это риски, связанные со сроками, с кадрами на рынке, с их опытом и уровнем и много других проблем.

Однако в качестве заключения я хотел бы привести слова Yehuda Katz (главный разработчик и архитектор Ruby on Rails в EngineYard), сказанные им на RailsConf в 2010-м: «I don't know any Ruby developers who are unemployed» ;)

  • ruby
  • ruby on rails
  • web-разработка
  • web 2.0
  • развитие
  • перспективы

Хабы:

Комп-мастер
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: