Создатель Ruby - Юкихиро Мацумото (Matz) - интересовался языками программирования, ещё будучи студентом, но идея о разработке нового языка появилась позже. Ruby начал разрабатываться 23 февраля 1993 года и вышел в свет в 1995 году.
Название навеяно языком Perl, многие особенности синтаксиса и семантики из которого заимствованы в Ruby: англ. pearl - "жемчужина", ruby - "рубин".
Одним из источников вдохновения для Мацумото для разработки Ruby был научно-фантастический роман "Вавилон-17", основанный на гипотезе Сепира - Уорфа.
Целью разработки было создание "настоящего объектноориентированного", лёгкого в разработке, интерпретируемого языка программирования.
Сейчас Ruby входит в большинство дистрибутивов ОС Linux, поставляется вместе с Mac OS X, доступен пользователям других операционных систем. Одним из основных приложений, связанных с Ruby, продолжает оставаться Ruby on Rails, который продолжает активно развиваться, но использование Ruby значительно шире - на нём разрабатывается большое количество приложений различного назначения, кроме того, он используется в качестве скриптового языка для автоматизации и настройки приложений и написания административных утилит, в частности, в ОС Linux.
Ruby - современный, постоянно развивающийся язык программирования, областей применения ему - масса. Наверняка вы слышали про Chef, Vagrant, Homebrew, но чаще всего все мы слышим о Rails.
Это невероятно выразительный и гибкий язык, который позволяет одну и ту же задачу решить многими способами.
Ruby - интерпретируемый, полностью объектно- ориентированный язык программирования с четкой динамической типизацией. Он сочетает в себе Perl-подобный синтаксис с объектно-ориентированным подходом. Также некоторые черты заимствованы из языков программирования Python, Lisp, Dylan и CLU. Кроссплатформенная реализация интерпретатора языка Ruby распространяется на условиях открытого программного обеспечения. Код, написанный на Ruby, может быть понятен даже человеку, который не разбирается в программировании. На RoR были созданы такие проекты, как Redmine, Twitter, Shopify, Basecamp, GitHub, Kickstarter, Airbnb и другие.
Многочисленное и доброжелательное комьюнити.
Довольно высокий порог входа, что означает, что Ruby-разработчик с большой вероятностью имеет опыт работы как минимум с еще одним языком программирования.
Вы используете только те библиотеки и модули, которые необходимы. Существует большое количество полезных библиотек, которые уже готовы к использованию (Ruby Gems).
В интернете есть много информации по Ruby, в структурированном и отсеянном виде.
В контексте обсуждения Ruby нельзя не упомянуть популярнейший фреймворк Ruby on Rails.
Абсолютно всё (кроме управляющих конструкций) в Руби является объектом, строки, числа, массивы, классы - всё это экземпляры классов Ruby. Например строка экземпляр класса String, а массив экземпляр класса Array.
Интерпретатор Ruby читает вашу писанину как последовательности лексем. Лексемы состоят из ключевых слов, знаком пунктуации, комментариев, литералов и идентификаторов. Идентификатором в руби называют обычное имя, которое присваивается переменным, методам, классам, атрибутам классов и тд. Идентификатор не может начинаться с цифры, и состоит из букв, цифр и символа подчеркивания.
В процессе написания программы, по разным причинам, часто приходится оставлять комментарии к коду. Комментарии могут быть необходимы как для человека так и для среды разработки и даже для самого руби. Комментарии могут быть однострочные и многострочные. Однострочные комментарии начинаются со знака # и продолжаются до конца строки. Когда интерпретатор встречает символ #, он смотрит, не является ли решетка частью строки или регулярного выражения, если не являеться - то считает все символы после решетки комментарием ( кроме символа перехода на новую строку - \n).
Литерал - это запись в исходном коде Ruby представляющая собой фиксированное значение (константа). Это могут быть числа , строки и регулярные выражения
Переменные имеют несколько разновидностей: локальные переменные, переменные класса, переменные экземпляра класса, глобальные переменные, псевдопеременные и константы.
Константами называют идентификаторы, которые имеют фиксированное значение, другими словами это та же переменная, значение которой не изменяется. При попытке изменить значение константы, интерпретатор выдаст предупреждение (но не ошибку, что на мой взгляд "странно"). По соглашению, константы следует писать с заглавной буквы, или же полностью верхним регистром (второй вариант преподчтительнее). Т.к. имена классов и модулей мы пишем с большой буквы - значит эти имена ничто иное как константы.
Что такое вообще переменная? Переменная - это область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной. То есть выражение a = 123 говорит о том, что объявляется переменная a (если она небыла объявлена ранее) и ей присваивается значение 123 . Это значение записывается в оперативную память компьютера, и чтобы извлечь эту информацию в будущем, нам нужно вызвать переменную a которая и является адресом ячейки памяти, где хранится нужное нам значение.
Локальные переменные. Видимость локальных переменных не выходит за пределы области где они объявлены. Обозначаются они с маленькой буквы, первым символом не должна быть цифра, может состоять из букв, цифр и знака подчеркивания (_).
Переменные экземпляра класса. Используются внутри класса, и областью видимости этих переменных является объект (экземпляр класса). Синтаксис написания: первый символ - собака (@), вторым символом не должна быть цифра, может состоять из букв, цифр и знака подчеркивания (_).
Переменные класса. Синтаксис написания: первые два символа - собаки (@@), третьим символом не должна быть цифра, может состоять из букв, цифр и знака подчеркивания (_). Между переменными класса и переменными экземпляра класса разница очень существенная, и заключается она только в области видимости. Область видимости переменной класса - сам класса и ВСЕ, повторюсь ВСЕ экземпляры класса.
Имена глобальных переменны начинаются со знака $. Область видимости глобальных переменных - вся программа. Используя метод global_variables вы можете посмотреть системные глобальные переменные.
Псевдопеременные выглядят также как и локальные переменные. Что это такое понятно из самого названия - это переменные которые не переменные, как "курица что не курица" в Пятом правиле волшебника Терри Гудкайнда. Создавать псевдопеременные самому нельзя. Список псевдопеременных Ruby: self , nil , true , false , __FILE__ и __LINE__.
Строка яляется объектом класса String, а раз так, то она имеет в своем арсенале все доступные экземпляру класса методы по работе со строками.
Строки это ни что иное как набор любых символов заключенный в одинарные или двойные кавычки. Так это у большинства ЯП (языков программирования), но руби такой руби, что и тут сумел выделить себя среди других ЯП. Помимо стандартного синтаксиса литерала строк, у руби есть специальные идентификаторы, среди которых есть и идентификатор строк %q. Он позволяет указывать любую пару символов, внутри которой будет находится строка.
Массивы это своего рода упорядоченный набор данных, который может хранить разные типы данных (разные экземпляры классов чтоб быть точнее) внутри себя, и т.к. массив это экземпляр класса Array, то мы имеем в распоряжении все публичные методы класса Array для работы с ним. Всё это мы рассмотрим в отдельной главе, которая будет посвящена только массивам и хешам, а сейчас мы просто вскользь глянем что это такое и зачем оно нужно.
У каждого значения массива есть свой ключ или как многие называют индекс, по которому происходит доступ к значению индекса, или как правильнее будет сказать - соответствующему элементу массива., т.е. элемент массива связан со своим индексом, а индекс соответственно с элементом. Индексы имеют последовательность от нуля до предела ОЗУ компьютера
Хеши. Под хешами подразумевается ассоциативный массив. Крайне удобная вещь, и очень часто используется на практике. Хеши являются экземплярами класса Hash, и методы для работы с хешами в большинстве своем те же самые что и с массивом.
Разница между массивом и хешем (ассоциативным массивом) заключается в том, что хеши требуют явного определения индекса значения. Индекс может быть строкой, числом или символом.
К булевым типам данных относятся псевдопеременные true (истина), false (ложь) и nil (пустота, вакуум, ничто).
При программировании абсолютно на любом языке, мы часто проверяем что либо на соответствие определенному условию, например такаято переменная пуста? или соответствует ли введенный юзером логин необходимому формату? А передал ли пользователь нам такуюто переменную? В таких случаях используются булевые проверки.
Символ это экземпляр класса Symbol. Синтаксис - двоеточие перед самим идентификатором (:symbol, :user , :qpi). Символ (symbol) имеет кое что общее со строкой, и с числом. Он похож на строку, так как тоже имеет последовательность символов, и похож на число, т.к. хранится в памяти как число.
Ruby реализует идеологию "всё - объект", то есть любая единица данных является объектом - экземпляром некоторого класса, к которому применимы все синтаксические средства, предназначенные для работы с объектами. В этом смысле язык не содержит встроенных примитивных типов данных. Условно таковыми можно считать типы, предоставляемые интерпретатором и системной библиотекой, используемые наиболее часто и не требующие для использования специального указания имени класса.
Представлены типами Fixnum и Bignum. Первый тип используется для чисел, по модулю не превышающих , второй - для чисел более . В арифметических операциях эти числовые типы полностью совместимы и могут свободно использоваться вместе, между ними обеспечивается прозрачная конвертация. Тип Fixnum имеет ограниченную разрядность и использует стандартные арифметические команды процессора; разрядность Bignum ограничена только объёмом доступной оперативной памяти, а операции с ними базируются на алгоритмах вычислений с неограниченной точностью. Это позволяет производить точные вычисления с любым требуемым количеством знаков. Например, для большинства языков программирования написать программу точного вычисления факториала, которая работала бы для аргумента порядка сотни - достаточно сложная задача. В Ruby это делается элементарно, так как проблемы работы с длинными числами берёт на себя интерпретатор.
Тип Float - числа с плавающей запятой, представленные фиксированным числом разрядов. Плавающие числа записываются либо в естественной, либо в экспоненциальной форме. Системная библиотека mathn предоставляет также типы Rational (рациональное число) и Complex (комплексное число). Оба этих типа автоматически преобразуются к целым и плавающим при единичном знаменателе и нулевой мнимой части соответственно.
Строка - изменяемый массив байтов, представляющий символы в кодировке UTF-8. Реализуются классом String, имеющим большой набор методов, обеспечивающих анализ, манипуляции с содержимым, преобразования, поиск.
Строковые литералы ограничиваются апострофами, двойными кавычками, либо заключаются в конструкцию %q[…] или %Q[…]. Ограничители строки влияют на использование внутри неё специальных символов:
Если строка ограничена апострофами, внутри неё распознаются только специальные последовательности "\\" и "\'", обозначающие соответственно, обратный слэш и апостроф.
Если строка ограничена двойными кавычками, то в ней распознаются также управляющие символы "\t" (знак табуляции), "\n" (перенос строки), "\010" (любой символ в восьмеричной кодировке) и другие.
Ограничители %q[…] или %Q[…] (можно использовать круглые, квадратные, фигурные и угловые скобки) позволяют записывать строки с использованием апострофов и кавычек без экранирования. Форма %q[…] также обеспечивает непосредственный вывод управляющих последовательностей.
Символ - это неизменяемая строка. Символьные литералы записываются с префиксом ":" (двоеточие).
Диапазон - это экземпляр класса Range, он представляет собой непрерывную последовательность целых чисел от начального до конечного значения. Диапазон задаётся парой целых чисел, разделённых двумя или тремя точками.
Программа на Ruby представляет собой текстовый файл, содержащий последовательность инструкций - команд и описаний. При запуске программного файла на исполнение интерпретатор последовательно читает файл и выполняет инструкции. В Ruby не требуется организовывать тело главной программы в виде специального программного модуля (подобно функции main() в языке Си), составляющие его команды просто записываются непосредственно в тексте файла программы. Поскольку программный файл обрабатывается интерпретатором последовательно, любые функции, методы, описания должны предшествовать в тексте программы их первому использованию.
Ruby содержит богатый набор управляющих конструкций; многие их варианты являются достаточно редкими. Условный оператор if выглядит традиционно:
if x > 0 then puts "x - положительное число" x ^lt; 0 then puts "x - отрицательное число" else puts "x - нуль" end
Ветвей elsif может быть любое количество, использование ключевого слова then допустимо, но не обязательно, ветви elsif и else могут отсутствовать. Помимо этой "канонической" формы условного оператора, язык поддерживает и несколько других.
Можно использовать сокращённые формы условного оператора как модификаторы инструкций. Они пишутся после инструкции и интерпретируются как условие, при котором данную инструкцию следует выполнять. Ветви else в модификаторах быть не может.
Ruby поддерживает динамические гетерогенные массивы, которые автоматически изменяют размер и могут содержать элементы любых типов. Массив является экземпляром класса Array, который предоставляет мощные средства для работы с хранимыми данными.
Ruby - это язык, который позволяет работать без большого количества неудобств и церемоний, которые приходят со строго типизированными языками. С Ruby легко начать работать, особенно если у вас уже есть опыт разработки на других языках программирования, и вы сможете быстро создавать прототипы с Ruby on Rails. В Японии, откуда он появился, Ruby использовался для создания игр. Ruby лаконичен и читается как английский, что делает код понятным для новичков.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.