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

Д. Флэнаган, Ю. Мацумото

Эта книга - официальное руководство по динамическому языку программирования Ruby. Авторский состав воистину звездный: Дэвид Флэнаган - известнейший специалист в области программирования, автор ряда бестселлеров по JavaScript и Java; Юкихиро «Matz» Мацумото - создатель и ведущий разработчик Ruby.

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

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

Издательство: Питер, 2011 г.

ISBN 978-5-459-00562-2, 978-0-596-51617-8

Количество страниц: 496.

Содержание книги «Язык программирования Ruby»:

  • 15 Предисловие
    • 15 Благодарности
      • 15 Дэвид Фланаган (David Flanagan)
      • 16 Юкихиро Мацумото (Yukihiro Matsumoto)
    • 16 Способы оформления, принятые в этой книге
  • 17 Глава 1. Введение
    • 18 1.1. Экскурсия по Ruby
      • 19 1.1.1. Объектная ориентированность Ruby
      • 19 1.1.2. Блоки и итераторы
      • 21 1.1.3. Выражения и операторы Ruby
      • 22 1.1.4. Методы
      • 23 1.1.5. Присваивания
      • 24 1.1.6. Суффиксы и префиксы, состоящие из знаков пунктуации
      • 25 1.1.7. Регулярные выражения и числовые диапазоны
      • 26 1.1.8. Классы и модули
    • 29 1.2. Опробование Ruby
      • 29 1.2.1. Интерпретатор Ruby
      • 30 1.2.2. Отображение вывода
      • 31 1.2.3. Интерактивный Ruby с irb
      • 32 1.2.4. Просмотр документации по Ruby с помощью п
      • 32 1.2.5. Управление пакетом программ Ruby с помощью gem
      • 34 1.2.6. Дополнительные учебные пособия по Ruby
      • 34 1.2.7. Источники Ruby
    • 34 1.3. О книге
      • 36 1.3.1. Как читать эту книгу
    • 36 1.4. Решение головоломки Судоку на Ruby
  • 45 Глава 2. Структура и выполнение Ruby-программ
    • 46 2.1. Лексическая структура
      • 46 2.1.1. Комментарии
      • 48 2.1.2. Литералы
      • 49 2.1.3. Знаки пунктуации
      • 49 2.1.4. Идентификаторы
      • 51 2.1.5. Ключевые слова
      • 52 2.1.6. Разделители
    • 55 2.2. Синтаксическая структура
      • 56 2.2.1. Блочные структуры языка Ruby
    • 57 2.3. Структура файла
    • 58 2.4. Кодировка программы
      • 59 2.4.1. Объявление кодировки программы
      • 60 2.4.2. Кодировка исходного кода и установленная по умолчанию внешняя кодировка
    • 61 2.5. Выполнение программы
  • 63 Глава 3. Типы данных и объекты
    • 64 3.1. Числа
      • 65 3.1.1. Целочисленные литералы
      • 66 3.1.2. Литералы чисел с плавающей точкой
      • 66 3.1.3. Арифметика, используемая в Ruby
      • 68 3.1.4. Двоичное представление чисел с плавающей точкой и ошибки округления
    • 69 3.2. Текст
      • 69 3.2.1. Строковые литералы
      • 78 3.2.2. Символьные литералы
      • 79 3.2.3. Строковые операторы
      • 81 3.2.4. Получение доступа к символам и подстрокам
      • 83 3.2.5. Выполнение итераций в отношении строк
      • 84 3.2.6. Кодировка строк и многобайтовые символы
    • 90 3.3. Массивы
    • 93 3.4. Хэши
      • 94 3.4.1. Хэш-литералы
      • 94 3.4.2. Хэш-коды, равенство и изменяющиеся ключи
    • 95 3.5. Диапазоны
      • 97 3.5.1. Проверка принадлежности к диапазону
    • 98 3.6. Обозначения
    • 99 3.7. True, False и Nil
    • 100 3.8. Объекты
      • 100 3.8.1. Ссылки на объекты
      • 101 3.8.2. Продолжительность существования объекта
      • 102 3.8.3. Идентичность объекта
      • 102 3.8.4. Класс объекта и тип объекта
      • 104 3.8.5. Равенство объектов
      • 107 3.8.6. Объект Order
      • 108 3.8.7. Преобразование объектов
      • 112 3.8.8. Копирование объектов
      • 113 3.8.9. Маршализация (Marshaling) объектов
      • 113 3.8.10. Замораживание объектов
      • 114 3.8.11. Пометка объектов
  • 115 Глава 4. Выражения и операторы
    • 116 4.1. Простые литералы и литералы ключевых слов
    • 117 4.2. Ссылки на переменные
      • 117 4.2.1. Неинициализированные переменные
    • 118 4.3. Ссылки на константы
    • 120 4.4. Вызовы методов
    • 123 4.5. Присваивания
      • 124 4.5.1. Присваивание значений переменным
      • 125 4.5.2. Присваивание значений константам
      • 126 4.5.3. Присваивание значений атрибутам и элементам массива
      • 127 4.5.4. Сокращенная запись присваивания
      • 129 4.5.5. Параллельное присваивание
    • 133 4.6. Операторы
      • 135 4.6.1. Унарные операторы + и –
      • 136 4.6.2. Возведение в степень: **
      • 136 4.6.3. Арифметические операторы: +, –, *, / и %
      • 136 4.6.4. Сдвиг и добавление: << и >>
      • 137 4.6.5. Дополнение, объединение, пересечение: –, &, | и ^
      • 138 4.6.6. Сравнение: <, <=, >, >= и <=>
      • 139 4.6.7. Равенство: ==, !=, =– и ===
      • 140 4.6.8. Булевы операторы: &&, ||, !, and, or, not
      • 143 4.6.9. Диапазоны и триггеры:. и
      • 145 4.6.10. Условный оператор: ?
      • 147 4.6.11. Операторы присваивания
      • 147 4.6.12. Оператор defined?
      • 149 4.6.13. Операторы-модификаторы
      • 149 4.6.14. Что не относится к операторам
  • 151 Глава 5. Инструкции и управляющие структуры
    • 152 5.1. Условия
      • 152 5.1.1. If
      • 155 5.1.2. Работа if в качестве модификатора
      • 157 5.1.3. Unless
      • 158 5.1.4. Case
      • 162 5.1.5. Оператор?
    • 162 5.2. Циклы
      • 162 5.2.1. While и until
      • 163 5.2.2. While и until в качестве модификаторов
      • 165 5.2.3. Цикл for-in
    • 166 5.3. Итераторы и перечисляемые объекты
      • 168 5.3.1. Числовые итераторы
      • 168 5.3.2. Перечисляемые объекты
      • 170 5.3.3. Создание собственных итераторов
      • 172 5.3.4. Нумераторы
      • 174 5.3.5. Внешние итераторы
      • 177 5.3.6. Итерация и параллельное изменение
    • 178 5.4. Блоки
      • 178 5.4.1. Синтаксис блока
      • 179 5.4.2. Значение блока
      • 180 5.4.3. Блоки и область видимости переменных
      • 181 5.4.4. Передача аргументов блоку
    • 184 5.5. Изменение хода работы программы
      • 184 5.5.1. Return
      • 186 5.5.2. Break
      • 188 5.5.3. Next
      • 190 5.5.4. Redo
      • 191 5.5.5. Retry
      • 192 5.5.6. Throw и catch
    • 194 5.6. Исключения и их обработка
      • 194 5.6.1. Классы и объекты исключении
      • 197 5.6.2. Выдача исключений с помощью raise
      • 198 5.6.3. Обработка исключений с помощью rescue
      • 203 5.6.4. Предложение else
      • 204 5.6.5. Предложение ensure
      • 206 5.6.6. Rescue в определениях метода, класса и модуля
      • 206 5.6.7. Rescue в качестве модификатора инструкции
    • 207 5.7. BEGIN и END
    • 208 5.8. Потоки, нити (fibers) и продолжения (continuations)
      • 209 5.8.1. Потоки для параллельного выполнения
      • 209 5.8.2. Нити для сопрограмм
      • 215 5.8.3. Продолжения
  • 217 Глава 6. Методы, proc- и lambda-объекты и замкнутые выражения
    • 219 6.1. Определение простых методов
      • 219 6.1.1. Значение, возвращаемое методом
      • 220 6.1.2. Методы и обработка исключений
      • 221 6.1.3. Вызов метода для объекта
      • 221 6.1.4. Определение синглтон-методов
      • 222 6.1.5. Отмена определения методов
    • 223 6.2. Имена методов
      • 224 6.2.1. Методы-операторы
      • 224 6.2.2. Псевдонимы методов
    • 226 6.3. Методы и круглые скобки
      • 226 6.3.1. Необязательные скобки
      • 227 6.3.2. Обязательные скобки
    • 228 6.4. Аргументы метода
      • 229 6.4.1. Параметры по умолчанию
      • 230 6.4.2. Список аргументов переменной длины и массивы
      • 232 6.4.3. Отображение аргументов на параметры
      • 232 6.4.4. Использование хэшей для поименованных аргументов
      • 233 6.4.5. Блоки-аргументы
    • 237 6.5. Proc и lambda
      • 237 6.5.1. Создание Proc -объектов
      • 240 6.5.2. Вызов объектов Proc и Lambda
      • 241 6.5.3. Арность Proc
      • 242 6.5.4. Идентичность Ргос-объектов
      • 242 6.5.5. Чем lambda-объекты отличаются от proc -объектов
    • 246 6.6. Замкнутые выражения
      • 247 6.6.1. Замкнутые выражения и совместно используемые переменные
      • 249 6.6.2. Замкнутые выражения и связывания
    • 250 6.7. Объекты класса Method
      • 251 6.7.1. Несвязанные объекты метода
    • 252 6.8. Функциональное программирование
      • 252 6.8.1. Применение функции к перечисляемым объектам
      • 254 6.8.2. Составление функций
      • 255 6.8.3. Частично применяемые функции
      • 256 6.8.4. Функции, обладающие мемоизацией
      • 257 6.8.5. Классы Symbol, Method и Proc
  • 261 Глава 7. Классы и модули
    • 262 7.1. Определение элементарного класса
      • 263 7.1.1. Создание класса
      • 263 7.1.2. Создание экземпляра класса Point
      • 264 7.1.3. Инициализация класса Point
      • 265 7.1.4. Определение метода to_s
      • 266 7.1.5. Методы доступа и атрибуты
      • 268 7.1.6. Определение операторов
      • 271 7.1.7. Доступ к массивам и хэшам с помощью метода [ ]
      • 271 7.1.8. Перечисление координат
      • 272 7.1.9. Равенство точек
      • 274 7.1.10. Упорядочение Point-объектов
      • 275 7.1.11. Изменяющийся Point-объект
      • 276 7.1.12. Быстрое и простое создание изменяющихся классов
      • 278 7.1.13. Метод класса
      • 280 7.1.14. Константы
      • 280 7.1.15. Переменные класса
      • 281 7.1.16. Переменные экземпляра класса
    • 283 7.2. Область видимости методов: открытые» защищенные и закрытые методы
    • 286 7.3. Подклассы и наследование
      • 287 7.3.1. Наследуемые методы
      • 288 7.3.2. Переопределение методов
      • 290 7.3.3. Дополнение поведения путем выстраивания цепочки
      • 291 7.3.4. Наследование методов класса
      • 291 7.3.5. Наследование и переменные экземпляра
      • 292 7.3.6. Наследование и переменные класса
      • 293 7.3.7. Наследование констант
    • 294 7.4. Создание и инициализация объектов
      • 294 7.4.1. New, allocate и initialize
      • 295 7.4.2. Фабричные методы
      • 296 7.4.3. Dup, clone и initialize_copy
      • 298 7.4.4. Marshal_dump и marshal_load
      • 299 7.4.5. Шаблон Синглтон (Singleton)
    • 301 7.5. Модули
      • 301 7.5.1. Модули как пространства имен
      • 304 7.5.2. Использование модулей в качестве миксинов
      • 306 7.5.3. Включаемые модули пространства имен
    • 307 7.6. Загрузка и востребование модулей
      • 308 7.6.1. Путь загрузки
      • 310 7.6.2. Выполнение загруженного кода
      • 311 7.6.3. Автоматически загружаемые модули
    • 312 7.7. Синглтон-методы и обособленные классы (eigenclass)
    • 314 7.8. Поиск метода
      • 315 7.8.1. Поиск метода класса
    • 317 7.9. Поиск констант
  • 319 Глава 8. Отражение и метапрограммирование
    • 321 8.1. Типы, классы и модули
      • 321 8.1.1. Предки и моду ли
      • 323 8.1.2. Определение классов и модулей
    • 323 8.2. Вычисление строк и блоков
      • 323 8.2.1. Связывания и метод eval
      • 324 8.2.2. Instance_eval и class_eval
      • 325 8.2.3. Instance_exec и class_exec
    • 325 8.3. Переменные и константы
      • 326 8.3.1. Запрос, установка и проверка переменных
    • 328 8.4. Методы
      • 328 8.4.1. Вывод имен и проверка наличия методов
      • 329 8.4.2. Получение объектов метода
      • 329 8.4.3. Вызов Method-объектов
      • 330 8.4.4. Методы определения, отмены определения и присвоения псевдонимов
      • 332 8.4.5. Обработка неопределенных методов
      • 333 8.4.6. Установка видимости метода
    • 333 8.5. Перехватчики
    • 335 8.6. Трассировка
    • 337 8.7. Модули ObjectSpace и GC
    • 338 8.8. Создание своих собственных управляющих структур
      • 338 8.8.1. Отложенное и повторяющееся выполнение: after и every
      • 340 8.8.2. Безопасное применение потоков путем синхронизации блоков
    • 341 8.9. Ненайденные методы и константы
      • 341 8.9.1. Работа const_missing с кодовыми константами Юникода
      • 342 8.9.2. Отслеживание вызовов методов с помощью метода method_missing
      • 344 8.9.3. Объекты, синхронизированные благодаря делегированию
    • 345 8.10. Динамически создаваемые методы
      • 346 8.10.1. Определение методов с помощью class_eval
      • 347 8.10.2. Определение методов с помощью define_method
    • 348 8.11. Выстраивание цепочки псевдонимов
      • 349 8.11.1. Отслеживание загрузки файлов и определение новых классов
      • 351 8.11.2. Выстраивание цепочки методов для обеспечения безопасности работы потоков
      • 354 8.11.3. Выстраивание цепочки методов для осуществления отслеживания
    • 356 8.12. Предметно-ориентированные языки
      • 356 8.12.1. Простой вывод XML с помощью метода methodmissing
      • 358 8.12.2. Проверяемый вывод XML-кода с помощью генерации метода
  • 363 Глава 9. Платформа Ruby
    • 364 9.1. Строки
      • 369 9.1.1. Форматирование текста
      • 370 9.1.2. Упаковка и распаковка двоичных строк
      • 371 9.1.3. Строки и кодировки
    • 371 9.2. Регулярные выражения
      • 371 9.2.1. Литералы регулярных выражений
      • 373 9.2.2. Фабричные методы регулярных выражений
      • 374 9.2.3. Синтаксис регулярных выражений
      • 378 9.2.4. Определение соответствия шаблону с использованием регулярных выражений
    • 385 9.3. Числа и математические операции
      • 385 9.3.1. Числовые методы
      • 386 9.3.2. Модуль Math
      • 387 9.3.3. Десятичная арифметика
      • 388 9.3.4. Комплексные числа
      • 388 9.3.5. Рациональные числа
      • 389 9.3.6. Векторы и матрицы
      • 390 9.3.7. Случайные числа
    • 390 9.4. Работа с датой и временем
    • 393 9.5. Коллекции
      • 393 9.5.1. Перечисляемые объекты
      • 401 9.5.2. Массивы
      • 408 9.5.3. Хэши
      • 414 9.5.4. Наборы
    • 419 9.6. Файлы и каталоги
      • 420 9.6.1. Имена файлов и каталогов
      • 422 9.6.2. Вывод содержимого каталогов
      • 423 9.6.3. Проверка файлов
      • 425 9.6.4. Создание, удаление и переименование файлов
    • 426 9.7. Ввод и вывод данных
      • 426 9.7.1. Открытие потоков
      • 429 9.7.2. Потоки и кодировки
      • 431 9.7.3. Чтение из потока
      • 435 9.7.4. Запись в поток
      • 437 9.7.5. Методы произвольного доступа
      • 437 9.7.6. Закрытие, сброс и тестирование потоков
    • 439 9.8. Работа в сети
      • 439 9.8.1. Самый простой клиент
      • 440 9.8.2. Самый простой сервер
      • 441 9.8.3. Датаграммы
      • 442 9.8.4. Более сложный пример клиента
      • 443 9.8.5. Мультиплексированный сервер
      • 445 9.8.6. Извлечение веб-страниц
    • 446 9.9. Потоки и параллельные вычисления
      • 448 9.9.1. Время существования потоков
      • 449 9.9.2. Потоки и переменные
      • 451 9.9.3. Диспетчеризация потоков
      • 452 9.9.4. Состояния потоков
      • 455 9.9.5. Составление списка потоков и их группы
      • 455 9.9.6. Примеры организации потоков
      • 458 9.9.7. Исключение потоков и взаимная блокировка
      • 461 9.9.8. Очередь, и очередь определенного размера
      • 462 9.9.9. Переменные условий и очереди
  • 465 Глава 10. Среда окружения Ruby
    • 466 10.1. Вызов Ruby-интерпретатора
      • 467 10.1.1. Наиболее востребованные ключи
      • 468 10.1.2. Ключи, связанные с предупреждениями и выдачей информации
      • 468 10.1.3. Ключи, относящиеся к кодировке
      • 469 10.1.4. Ключи, связанные с обработкой текста
      • 470 10.1.5. Ключи разного назначения
    • 471 10.2. Высокоуровневое окружение
      • 471 10.2.1. Предопределенные модули и классы
      • 472 10.2.2. Высокоуровневые константы
      • 474 10.2.3. Глобальные переменные
      • 478 10.2.4. Предопределенные глобальные функции
      • 480 10.2.5. Глобальные функции, определенные пользователями
    • 481 10.3. Сокращения для удобства извлечения данных и составления отчетов
      • 481 10.3.1. Функции ввода
      • 482 10.3.2. Нерекомендуемые функции извлечения данных
      • 482 10.3.3. Функции составления отчетов
      • 483 10.3.4. Сокращения, используемые в однострочных сценариях
    • 483 10.4. Обращение к операционной системе
      • 484 10.4.1. Вызов команд операционной системы
      • 485 10.4.2. Процессы и ветвления
      • 487 10.4.3. Отлавливание сигналов
      • 487 10.4.4. Прерывание работы программ
    • 488 10.5. Безопасность
      • 489 10.5.1. Помеченные данные
      • 489 10.5.2. Ограниченное выполнение и уровни безопасности

Инструкция как скачать книгу Д. Флэнаган, Ю. Мацумото: Язык программирования Ruby в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
Язык программирования Ruby
Рейтинг книги:
1 голос
890

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: