Руби язык программирования что на нем пишут. Ruby для начинающих: чем интересен этот язык и как его эффективно изучать. 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)

puts "Hello, World!"

Для выполнения этой программы в командной строке введите

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

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

#!/usr/bin/env ruby

Она обязательно должна начинаться с первой позиции. Затем нужно изменить права доступа файла с программой, сделав его исполняемым: chmod +x 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 \ "И мы обязательно этому научимся!"

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

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

История языка Ruby

Ruby как язык программирования существует уже очень давно. Работа над первой редакцией этого невероятно популярного сегодня языка началась в далеком 1993 году, а первая официальная версия датируется 1995 годом. Создатель языка, Юкихиро Мацумото, был энтузиастом программирования еще со времен студенчества, однако идея создания собственного инструмента появилась у него гораздо позже. Так что же такого примечательного в этом языке программирования, что сегодня он занимает одну из лидирующих позиций на мировой арене разработки программного обеспечения?

Язык программирования Ruby - это высокого уровня, с и независимой от исполняющей среды реализацией многопоточности. В нем есть свой сборщик мусора, а по особенностям синтаксиса он наиболее приближен к таким языкам как Perl. С развитием экосистемы эта платформа много позаимствовала также у Smalltalk, Python, Lisp и других языков программирования. Очень важным для существования и непрерывного развития является также то, что язык "Руби" и его реализация являются полностью свободной. Это означает, что любой желающий может предложить свои изменения, и если они будут приняты сообществом, то войдут в следующую версию языка.

Философия Ruby

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

Поэтому эту платформу очень часто выбирает как входную для обучения программированию. Главным принципом, на котором базируется этот язык, является так называемый принцип “наименьшей неожиданности” - это означает, что программа должна вести себя так, как того от нее ожидает автор (программист). Другой важной частью идеологии языка, которую привнес создатель, является большая его вариативность. Одного и того же результата можно добиться различными путями и функциями. Благодаря этому каждый программист может решать задачу так, как считает наиболее корректно и удобно. Это во многом повлияло на популярность языка среди профессионалов в сфере информационных технологий.

Основные характеристики языка

Что такое "Руби" как язык программирования? Это прежде всего объектно-ориентированный язык. В нем нет примитивных типов - все структуры и единицы данных являются объектами (в отличие от того же языка Java, его есть примитивные структуры данных). Каждая функция в "Руби" является методом. Многие свойства и возможности привнесены создателями из других языков программирования, поэтому можно смело сказать, что Ruby (язык) вобрал в себя лучшее от множества других языков и технологий.

Так, к примеру, в экосистеме "Руби" есть свой собственный сборщик мусора, идея которого была перенята из Smalltalk и Java, и который может работать со всеми объектами в системе. Этот механизм позволяет незаметно для пользователя приложения и разработчика выполнять очистку памяти от объектов, которые уже не будут востребованы. Сборщик мусора позволяет разработчику в большинстве случаем не отвлекаться на управление памятью приложения, а сосредоточиться на функциональности и удобстве пользования.

Парадигмы языка

Отвечая на вопрос о том, что такое "Руби" как мультипарадигменный язык, можно неожиданно для себя оказаться в пылу спора. Ведь этот язык позволяет использовать любую из парадигм программирования одинаково успешно: процедурный стиль программирования, объектно-ориентированный или Разработчик волен выбрать для себя ту парадигму, которая ему ближе, и его набор инструментов от этого не станет ограниченнее или слабее. Язык программирования "Руби" только поощряет этот выбор.

Причины популярности

Во многом этот язык стал популярен благодаря простоте разработке различных дополнений к нему. Поэтому количество фреймворков и библиотек постоянно растет, и задачи, которые они решают самостоятельно, позволяют разработчикам в кратчайшие сроки довести продукт до состояния готовности. Очень часто "Руби"-программирование ассоциируется с разработкой веб-приложений и поддержкой функционирования различных сайтов и интернет-платформ. Эту нишу язык занял благодаря своей простоте и скорости разработки. Ведь альтернативные платформы (например, Java), требуют гораздо большего багажа знаний и опыта для решения тех же задач.

Популярные фреймворки

Если говорить о популярных фреймворках, которые существуют на рынке сегодня, то среди них стоит выделить Rails. Много людей, отвечая на вопрос о том, что такое "Руби", интуитивно подразумевают RubyOnRails. Этот набор программных компонентов стал промышленным стандартом среди разработчиков. Он постоянно поддерживается, развивается и дополняется сообществом программистов, оставаясь при этом бесплатным. Этот фреймворк описывает компоненты веб-приложения в рамках шаблона MVC (Model-View-Controller), а также предоставляет готовую интеграцию с и интерфейс для доступа к базе данных. Эти 3 компонента, по сути, позволяют в считанные часы написать и запустить в интернет простой блог или частную веб-страничку.

На языке программирования Ruby можно создавать даже нативные мобильные приложения, благодаря библиотеке RubyMotion. Она позволяет исполнять код Ruby на платформах iOS, OS X и Android. Она создана частной группой разработчиков, поэтому за ее использование необходимо платить, но она лишний раз подтверждает богатые возможности языка.

Важность написания тестов

Другой важной составляющей экосистемы языка Ruby, и его веб-ориентированной части, являются фреймоврки и библиотеки для написания тестов. RubyOnRails проповедует философию BDD (behavior-driven development), что означается, что сначала программист создает последовательность тестов, описывающих ожидаемое поведение программы, а потом уже создает код, который должен успешно пройти эти тесты. Негласным стандартом в этой сфере является RSpec - это фреймворк позволяет писать тест-кейсы на понятном даже неопытным в разработке пользователям.

Ruby Gems

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

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

Введение

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

С учётом вышеизложенного можно сформировать следующие цели:

Ознакомление с алгоритмами поиска информации

Написание поискового веб-приложения

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

Изучение теории поиска

Изучение языка программирования Ruby

Ознакомление с языком разметки Haml

Ознакомление с метаязыком Sass

Используя Ruby,Haml и Sass, написать код веб-приложения

Произвести отладку получившегося приложения

Теоретическая часть

Теория поиска информации

Для начала необходимо дать определение поисковой системы.

Поисковая система – программно-аппаратный комплекс с веб-интерфейсом, предоставляющий возможность поиска информации в интернете .

По осуществляемым функциям и решаемым задачам поисковые системы классифицируются на:

справочные являются наиболее распространенным типом функций информационных систем, и заключается в предоставлении абонентам системы возможностей получения установочных данных на определённые классы объектов;

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

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

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

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

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

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

Также существует следующая классификация поисковых систем (рис.1.)

Рис.1. Классификация поисковых систем

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

Профессор Зипф заметил, что длинные слова встречаются в текстах любого языка реже, чем короткие. На основе этого наблюдения Зипф вывел два закона:

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

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

Зипф определил, что частота вхождения слов и количество слов, входящих в текст с данной частотой, тоже взаимосвязаны.

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

Законы Зипфа универсальны. Они применимы не только к текстам. В аналогичную форму выливается, например, зависимость между количеством городов и числом проживающих в них жителей. Характеристики популярности ресурсов интернета отвечают законам Зипфа. В законах Зипфа отражается «человеческое» происхождение объектов.

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

Так по длине все запросы делятся на

Однословные(«продвижение»)

Двухсловные(«поисковое продвижение»

Трёхсловные(«профессиональное поисковое продвижение»)

Многословные(«профессиональное поисковое продвижение недорого»)

По чёткости все запросы делятся на:

Чёткий запрос(«цена на iPad 2»)

Нечёткий запрос(«Озон», что может быть и газом и названием магазина и фамилией режиссёра)

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

Осознание проблемы(«не работает сайт»)

Поиск решения(«хостинг сайтов»)

Выбор решения(«какой хостинг выбрать»)

Поиск места транзакции(«тарифы хостинга masterhost»)

Язык программирования RUBY

Ruby – динамический, рефлективный, интерпретируемый высокоуровневый язык программирования для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Ruby близок по особенностям синтаксиса к языкам Perl и Eiffel, по объектно-ориентированному подходу - к Smalltalk. Также некоторые черты языка взяты из Python, Lisp, Dylan и Клу. На сегодняшний день интерпретатор Ruby реализован практически для всех платформ(Unix, Win32, OS X). Создателем языка является Юкихиро Мацумото.

Ruby – полностью объектно-ориентированный язык программирования. Всё является объектами, а функции - методами этих объектов .

Основные свойства Ruby:

Интерпретируемый язык:

Возможность прямых системных вызовов.

Мощная поддержка операций со строками и правилами (регулярными выражениями).

Мгновенное проявление изменений во время разработки.

Отсутствие стадии компиляции.

Простое и быстрое программирование:

Не надо объявлять переменные.

Переменные динамически типизированы.

Простой и последовательный синтаксис.

Автоматическое управление оперативной памятью.

Объектно-ориентированное программирование:

Всё есть объект. Даже имя класса есть экземпляр класса Class.

Классы, методы, наследование, полиморфизм, инкапсуляция и так далее.

Методы-одиночки.

Примеси при помощи модулей (возможность расширить класс без наследования);

Итераторы и замыкания.

Широкие возможности метапрограммирования.

Удобства:

Неограниченный диапазон значений целых чисел.

Модель обработки исключений.

Все операторы возвращают значения, даже управляющие структуры.

Механизм перехвата исключений.

Поддержка потоков; как собственных, так и систем семейства UNIX.

Недостатки:

Неуправляемость некоторых процессов (таких, как выделение памяти), невозможность задания низкоуровневых структур данных или подпрограмм;

Невозможность компиляции и сопутствующей ей оптимизации программы;

Открытость исходного кода даже в готовой программе

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

Также стоит отметить, что для Ruby существует множество модулей (дополнений) практически для любого вида задач (программирование интерфейсов, сложные математические вычисления, работа с аудио, видео, 3D и т.п). Поэтому этот язык программирования был выбран в качестве основного для написания практической части.

1.3. Язык упрощённой разметки HAML

Haml - язык разметки для упрощённой генерации XHTML. HAML компилируется в HTML. Haml намного проще Html"`а так, как позволяет упростить и ускорить написание веб-приложений.

Например, данный кусок кода на Haml"е

%html{ html_attrs("ru") }

%title Мой блог

%meta(http-equiv="Content-Type" content="text/html; charset=utf-8")

Stylesheet_link_tag "main"

%h1 Мой блог

%h2 Записи

- @entries.each do |entry|

%h3.title= entry.title

%p.date= entry.posted.strftime("%A, %B %d, %Y")

%p.body= entry.body

Все права защищены © Иван

Трансформируется Html-код

Мой блог

Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: