К курсам
AI035 Professional

Программирование на Ruby: Практическое руководство для разработчиков (второе издание)

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

4.9
45.0h
515 учеников
0 лайки
Искусственный интеллект
Начать обучение

Обзор курса

📚 Краткое содержание

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

Освойте искусство элегантного и мощного программирования с определённым руководством по языку Ruby.

Авторы: Дэйв Томас, Чад Фаулер, Энди Хант

Благодарности: Рецензенты из списка рассылки Ruby, Юкихиро Матсумото (Мац), Чад Фаулер, Ким Вимпсетт и сообщество Прагматичных программистов.

🎯 Цели обучения

  1. Установить и настроить среду разработки Ruby различными способами (бинарная сборка, исходный код или CVS) и использовать интерактивные инструменты, такие как irb и ri.
  2. Применять соглашения об именовании и принципы объектно-ориентированного программирования для определения методов и управления переменными.
  3. Обрабатывать данные с помощью простых массивов, хешей и регулярных выражений.
  4. Определять и реализовывать иерархии классов с использованием одиночного наследования, ключевого слова super и миксинов.
  5. Управлять видимостью объектов и целостностью данных с помощью контроля доступа (Public, Private, Protected) и атрибутов.
  6. Создавать надёжные контейнерные классы (например, SongList), интегрированные с тестированием единиц.
  7. Реализовывать числовую логику с использованием различных систем счисления (шестнадцатеричной, восьмеричной, двоичной) и применять числовые итераторы для управления потоком выполнения.
  8. Создавать сложные строки с использованием интерполяции, heredocs и различных форматов разделителей.
  9. Использовать диапазоны как "переключатели" в условной логике и как проверяющие инструменты для интервалов.
  10. Определять и вызывать методы с гибкими списками аргументов (оператор splat), аргументами на основе хешей ("ключевые слова") и преобразованием блоков в процедуры.

🔹 Урок 1: Гл. 1–2: Основы и начало работы с Ruby.new

Обзор: Этот урок даёт всестороннее введение в экосистему Ruby, охватывая способы установки — от бинарных дистрибутивов до сборки из исходного кода и использования систем управления исходным кодом. Студенты исследуют основной синтаксис языка Ruby, уделяя особое внимание его чисто объектно-ориентированному характеру, правилам именования и основным конструкциям программирования, таким как контейнеры, структуры управления и блоки.

Результаты обучения:

  • Установить и настроить среду разработки Ruby различными способами (бинарная сборка, исходный код или CVS) и использовать интерактивные инструменты, такие как irb и ri.
  • Применять правила именования и принципы объектно-ориентированного программирования для определения методов и управления переменными.
  • Обрабатывать данные с помощью простых массивов, хешей и регулярных выражений.

🔹 Урок 2: Гл. 3–4: Классы, объекты, переменные и контейнеры

Обзор: Этот урок исследует фундаментальные механизмы объектно-ориентированной системы Ruby, акцентируя внимание на том, как объекты сохраняют состояние через наследование, и как работает цепочка поиска методов. Затем переход к практической реализации контейнеров с использованием массивов и логики, подобной хешам, завершается глубоким погружением в уникальную архитектуру блоков в Ruby — итераторы, замыкания и управление ресурсами.

Результаты обучения:

  • Определять и реализовывать иерархии классов с использованием одиночного наследования, ключевого слова super и миксинов.
  • Управлять видимостью объектов и целостностью данных с помощью контроля доступа (Public, Private, Protected) и атрибутов.
  • Создавать надёжные контейнерные классы (например, SongList), интегрированные с тестированием единиц.

🔹 Урок 3: Гл. 5: Освоение стандартных типов и регулярных выражений

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

Результаты обучения:

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

🔹 Урок 4: Гл. 6–7: Логика методов и управление выражениями

Обзор: Этот урок раскрывает гибкость методов в Ruby и силу выражений в программировании. Студенты осваивают определение методов с переменным количеством аргументов, динамическую интеграцию блоков и использование продвинутых конструкций управления, таких как параллельное присваивание и выражения сопоставления с образцом (case). Важно подчеркнуть, что в Ruby почти всё является выражением, которое возвращает значение, что позволяет создавать компактную и понятную логику.

Результаты обучения:

  • Определять и вызывать методы с гибкими списками аргументов (оператор splat), аргументами на основе хешей ("ключевые слова") и преобразованием блоков в процедуры.
  • Выполнять сложную логику с помощью параллельных/вложенных присваиваний и сложных булевых выражений.
  • Реализовывать управление потоком с помощью выражений-условий (if, unless, case) и продвинутых модификаторов циклов (break, redo, next).

🔹 Урок 5: Гл. 8–9: Обработка ошибок и модульная архитектура

Обзор: Этот урок охватывает надёжное управление ошибками и структурное проектирование в Ruby. Изучается иерархия исключений и механизмы обработки ошибок (rescue, retry) или управления потоком между областями видимости (catch, throw). Также подробно рассматриваются модули, которые обеспечивают повторное использование кода через пространства имён и миксины, интеграция модуля Enumerable и механика подключения внешних файлов.

Результаты обучения:

  • Реализовывать отказоустойчивую обработку ошибок с использованием иерархии классов исключений и не-локальных структур управления.
  • Создавать модульные кодовые базы с помощью модулей для пространств имён и миксинов для функциональности между классами.
  • Применять модуль Enumerable к пользовательским классам и разрешать неоднозначности имён методов в средах с несколькими модулями.

🔹 Урок 6: Гл. 10–11: Операции ввода-вывода и конкурентность

Обзор: Этот урок охватывает основы системы ввода-вывода (I/O) Ruby и её модель многопоточности. Студенты научатся управлять внешними ресурсами через объекты IO — файлами, строками и сетевыми сокетами — при этом исследуя многопоточное программирование. Программа переходит от базовой работы с файлами к сложным техникам синхронизации (мониторы, очереди) и управлению внешними процессами для эффективной обработки параллельных задач.

Результаты обучения:

  • Выполнять операции с файлами с использованием ручного и блочного управления ресурсами для обеспечения целостности данных.
  • Обрабатывать потоки данных с помощью итераторов и библиотеки StringIO для гибкой работы с вводом-выводом.
  • Устанавливать сетевое взаимодействие через сокеты TCP и более высокие уровни протоколов, такие как HTTP.

🔹 Урок 7: Гл. 12–13: Тестирование, отладка и оптимизация

Обзор: Этот урок предоставляет всестороннее руководство по обеспечению качества и производительности кода в Ruby. Рассматриваются принципы юнит-тестирования с использованием фреймворка Test::Unit, техники систематической отладки с помощью отладчика Ruby, а также методы выявления узких мест производительности с помощью бенчмаркинга и профилирования. Студенты узнают, как структурировать тесты, устранять распространённые логические "ловушки" и оптимизировать код на основе эмпирических данных.

Результаты обучения:

  • Реализовывать автоматизированное юнит-тестирование с использованием фреймворка Test::Unit и различных типов утверждений.
  • Диагностировать и устранять дефекты кода с помощью командной строки отладчика Ruby и общих стратегий устранения неполадок.
  • Анализировать производительность кода с помощью модуля Benchmark и профайлера для выявления и устранения узких мест исполнения.

🔹 Урок 8: Гл. 14–16: Экосистема Ruby и рабочий процесс

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

Результаты обучения:

  • Управлять поведением программ на Ruby с помощью аргументов командной строки, переменных среды и методов завершения.
  • Оптимизировать рабочий процесс интерактивного Ruby (irb) с помощью пользовательских подсказок, автодополнения и управления подсессиями.
  • Создавать структурированную документацию с использованием разметки RDoc, логики гиперссылок и модификаторов для получения HTML и данных ri.

🔹 Урок 9: Гл. 17–18: Распространение и веб-сервисы

Обзор: Этот урок охватывает основные механизмы распространения кода на языке Ruby и построения веб-приложений. Исследуется система RubyGems для управления пакетами и контроля версий, реализация веб-интерфейсов через CGI и системы шаблонов, а также интеграция распределённых систем с использованием SOAP и веб-сервисов.

Результаты обучения:

  • Определять и упаковывать библиотеки на языке Ruby с использованием спецификации Gem и Rake.
  • Разрабатывать динамические веб-приложения с использованием cgi.rb для обработки параметров запроса, куки и сессий.
  • Реализовывать системы шаблонов (ERB, Amrita) для отделения логики приложения от представления.

🔹 Урок 10: Гл. 19–20: Графический интерфейс и интеграция с платформой

Обзор: Этот урок описывает создание графических пользовательских интерфейсов (GUI) на языке Ruby с использованием библиотеки Tk — от базовой настройки элементов управления до продвинутого управления холстом и прокрутки. Кроме того, рассматривается интеграция с платформой Windows, включая производительностную оценку для автоматизации и использование библиотеки DL для прямого взаимодействия с DLL-библиотеками Windows.

Результаты обучения:

  • Создавать функциональные приложения на основе Tk с использованием элементов управления и различных менеджеров геометрии (pack, place, grid).
  • Реализовывать интерактивные элементы через привязку событий и двустороннюю коммуникацию прокрутки.
  • Переводить существующую документацию по Perl/Tk в корректный код на языке Ruby и использовать библиотеку DL для низкоуровневых вызовов API Windows.

🔹 Урок 11: Гл. 21: Расширение Ruby (C API)

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

Результаты обучения:

  • Понимать и манипулировать типом VALUE и немедленными объектами в среде на языке C.
  • Реализовывать многоступенчатый протокол выделения и инициализации для пользовательских классов на языке C.
  • Автоматизировать процесс сборки расширений для Ruby с помощью mkmf и extconf.rb.

🔹 Урок 12: Гл. 22: Полное описание языка

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

Результаты обучения:

  • Различать различные базовые типы (целые числа, строки, символы) и применять сокращённые обозначения, такие как %w и %q.
  • Управлять областью видимости переменных и видимостью констант на уровнях глобальной, классовой, экземплярной и локальной.
  • Реализовывать сложный поток управления с помощью булевых выражений, операторов выбора и модификаторов циклов.

🔹 Урок 13: Гл. 23–24: Утиная типизация и вызов объектов

Обзор: Этот урок исследует механику выполнения кода в Ruby через вызов методов, определение объектов и обработку ошибок, завершаясь философией "Утиная типизация". Студенты узнают, как определять гибкие интерфейсы с помощью блоков и объектов Proc, и как реализовывать надёжные системы с использованием протоколов исключений и приведения типов языка Ruby.

Результаты обучения:

  • Выполнять сложные поиски методов и изменять поведение методов с помощью ключевых слов super и alias.
  • Создавать структурированные кодовые базы с помощью определений классов/модулей и объявлений атрибутов.
  • Реализовывать паттерны функционального программирования с помощью блоков, замыканий и объектов Proc.

🔹 Урок 14: Гл. 24–25: Продвинутые объекты и безопасность

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

Результаты обучения:

  • Отображать внутреннюю структуру указателей (klass и super), которая определяет взаимодействие между классами и объектами.
  • Реализовывать поведение, специфичное для объекта, с помощью одноэлементных классов и управлять состоянием через переменные экземпляров класса.
  • Применять метапрограммирование и замораживание объектов для создания надёжного, неизменяемого или динамически генерируемого кода.

🔹 Урок 15: Гл. 26–28: Отражение и стандартная библиотека

Обзор: Этот модуль исследует мощные возможности интроспекции в Ruby, позволяя разработчикам заглядывать внутрь объектов и классов, динамически вызывать методы и управлять сериализацией объектов с помощью механизмов Marshaling и YAML. Также предоставляется полная справочная документация и руководство по применению стандартной библиотеки Ruby, охватывающая основные классы, сетевые протоколы, хранение данных и системные утилиты.

Результаты обучения:

  • Реализовать отражение: использовать ObjectSpace, respond_to? и send для анализа и манипулирования объектами во время выполнения.
  • Освоить сериализацию: применять стратегии Marshaling и YAML для сохранения состояний объектов и обеспечения общения в распределённом Ruby (DRb).
  • Использовать стандартную библиотеку: ориентироваться и применять специализированные модули для сетей (Net::HTTP), XML/веб (REXML, CGI) и хранения данных (PStore, CSV, SDBM).