Программирование на языке OCaml

Мински Ярон, Мадхавапедди Анил, Хикки Джейсон

Код товара: 2738331
(0 оценок)Оценить
ОтзывНаписать отзыв
ВопросЗадать вопрос
1 / 3
PDF
2 284
3 625
Доставим в
г. Москва
Планируемая дата
29 марта (Пт)
Курьером
Л-Пост
бесплатно от 3 500 ₽
В пункт выдачи
от 77 ₽
бесплатно от 2 000 ₽
Точная стоимость доставки рассчитывается при оформлении заказа
Издательство:
ДМК-Пресс
Оригинальное название:
Real World OCalm
Год издания:
2014 г.
Может быть отгружен товар указанного или более позднего года
Редактор:
Переводчик:

Описание

Характеристики

Эта книга введет вас в мир OCaml, надежный язык программирования, обладающий большой выразительностью, безопасностью и быстродействием. Пройдя через множество примеров, вы быстро поймете, что OCaml - это превосходный инструмент, позволяющий писать быстрый, компактный и надежный системный код.
Вы познакомитесь с основными понятиями языка, узнаете о приемах и инструментах, помогающих превратить OCaml в эффективное средство разработки практических приложений. В конце книги вы сможете углубиться в изучение тонких особенностей инструментов компилятора и среды выполнения OCaml.
количество томов
1
количество страниц
536 стр.
переплет
Мягкая обложка
размеры
220x160x30 мм
страна изготовления
Россия
цвет
Оранжевый
тип бумаги
офсетная (60-220 г/м2)
наличие иллюстраций
рисунки
тип иллюстраций
черно-белые
формат
70x100/16 (170x240 мм)
ISBN
978-5-97060-102-0, 978-5-97060-561-5
тираж
100 экз.
стандарт
возрастная категория
18+ (нет данных)
вес
код в Майшоп
2738331
язык
русский

Содержание

Вступление
Часть I. Основы языка
Глава 1. Введение
OCaml как калькулятор
Функции и автоматический вывод типов
Автоматический вывод типов
Автоматический вывод обобщенных типов
Кортежи, списки, необязательные значения и
сопоставление с образцом
Кортежи
Списки
Необязательные значения
Записи и варианты
Императивное программирование
Массивы
Изменяемые поля записей
Ссылки
Циклы for и while
Законченная программа
Компиляция и запуск
Что дальше
Глава 2. Переменные и функции
Переменные
Сопоставление с образцом и let
Функции
Анонимные функции
Функции нескольких аргументов
Рекурсивные функции
Префиксные и инфиксные операторы
Объявление функций с помощью ключевого слова
function
Аргументы с метками
Необязательные аргументы
Глава 3. Списки и образцы
Основы списков
Использование сопоставления с образцом для
извлечения данных из списка Ограничения (и
благословения) сопоставления с образцом
Производительность
Определение ошибок
Эффективное использование модуля List
Другие полезные функции из модуля List
Хвостовая рекурсия
Компактность и скорость сопоставления с образцом
Глава 4. Файлы, модули программы
Программы в единственном файле
Программы и модули из нескольких файлов
Сигнатуры и абстрактные типы
Конкретные типы в сигнатурах
Вложенные модули
Открытие модулей
Подключение модулей
Типичные ошибки при работе с модулями
Несовпадение типов
Отсутствие определений
Несоответствие определений типов
Циклические зависимости
Проектирование с применением модулей
Старайтесь не экспортировать конкретные типы
Продумывайте синтаксис вызовов
Создавайте однородные интерфейсы
Определяйте интерфейсы до реализации
Глава 5. Записи
Сопоставление с образцом и полнота
Уплотнение полей
Повторное использование имен полей
Функциональные обновления
Изменяемые поля
Поля первого порядка
Глава 6. Варианты
Универсальные образцы и рефакторинг
Объединение записей и вариантов
Варианты и рекурсивные структуры данных
Полиморфные варианты
Пример: и снова о цветных терминалах
Когда следует использовать полиморфные
варианты
Глава 7. Обработка ошибок
Типы возвращаемых значений с признаком ошибки
Кодирование ошибок в результате
Error и Or_error
Функция bind и другие идиомы обработки ошибок
Исключения
Вспомогательные функции для возбуждения
исключений
Обработчики исключений
Восстановление работоспособности после
исключений
Перехват определенных исключений
Трассировка стека
От исключений к типам с информацией об ошибках
и обратно
Выбор стратегии обработки ошибок
Глава 8. Императивное программирование
Пример: императивные словари
Элементарные изменяемые данные
Данные в формах, подобных массивам
Изменяемые поля записей и объектов и ссылочные
ячейки
Внешние функции
Циклы for и while
Пример: двусвязные списки
Изменение списка
Итеративные функции
Отложенные вычисления и другие благоприятные
эффекты
Мемоизация и динамическое программирование
Ввод и вывод
Терминальный ввод/вывод
Форматированный вывод с помощью printf
Файловый ввод/вывод
Порядок вычислений
Побочные эффекты и слабый полиморфизм
Ограничение значений
Частичное применение и ограничение значения
Ослабление ограничения значений
В заключение
Глава 9. Функторы
Простейший пример
Более практичный пример: вычисления с
применением интервалов
Создание абстрактных функторов
Совместно используемые ограничения
Деструктивная подстановка
Использование нескольких интерфейсов
Расширение модулей
Глава 10. Модули первого порядка
Приемы работы с модулями первого порядка
Пример: фреймворк обработки запросов
Реализация обработчика запросов
Диспетчеризация запросов по нескольким
обработчикам
Загрузка и выгрузка обработчиков запросов
Жизнь без модулей первого порядка
Глава 11. Объекты
Объекты OCaml
Полиморфизм объектов
Неизменяемые объекты
Когда следует использовать объекты
Подтипизация
Подтипизация в ширину
Подтипизация в глубину
Вариантность
Сужение
Подтипизация и рядный полиморфизм
Глава 12. Классы
Классы в OCaml
Параметры класса и полиморфизм
Типы объектов и интерфейсы
Функциональные итераторы
Наследование
Типы классов
Открытая рекурсия
Скрытые методы
Бинарные методы
Виртуальные классы и методы
Создание простых фигур
Инициализаторы
Множественное наследование
Как выполняется разрешение имен
Примеси
Отображение анимированных фигур
Часть II. Инструменты и технологии
Глава 13. Отображения и хэш-таблицы
Отображения
Создание отображений с компараторами
Деревья
Полиморфные компараторы
Множества
Соответствие интерфейсу Comparablc.S
Хэш-таблицы
Соответствие интерфейсу Hashable.S
Выбор между отображениями и хэш-таблицами
Глава 14. Анализ командной строки
Простейший анализ командной строки
Анонимные аргументы
Определение простых команд
Выполнение простых команд
Типы аргументов
Определение собственных типов аргументов
Необязательные аргументы и аргументы по
умолчанию
Последовательности аргументов
Добавление поддержки передачи именованных
флагов в командной строке
Группировка подкоманд
Расширенное управление парсингом
Типы в основе Command.Spec
Объединение фрагментов спецификаций
Интерактивный запрос ввода
Добавление аргументов с метками в функции
обратного вызова
Автодополнение командной строки средствами
Bash
Создание фрагментов автодополнения
Установка фрагмента автодополнения
Альтернативные парсеры командной строки
Глава 15. Обработка данных JSON
Основы JSON
Парсинг данных в формате JSON с помощью Yojson
Выборка значений из структур JSON
Конструирование значений JSON
Использование нестандартных расширений JSON
Автоматическое отображение JSON в типы OCaml
Основы ATD
Аннотации ATD
Компиляция спецификаций ATD в код на OCaml
Пример: запрос информации об организации в GitHub
Глава 16. Парсинг с помощью OCamllex и Menhir
Лексический анализ и парсинг
Определение парсера
Описание грамматики
Парсинг последовательностей
Определение лексического анализатора
Вступление
Регулярные выражения
Лексические правила
Рекурсивные правила
Объединяем все вместе
Глава 17. Сериализация данных с применением
s-выражений
Основы использования
Преобразование типов OCaml в s-выражения
Формат Sexp
Сохранение инвариантов
Вывод информативных сообщений об ошибках
Директивы sexp-преобразоваиий
sexp_opaque
sexp_list
sexp_option
Определение значений по умолчанию
Глава 18. Конкурентное программирование с
помощью Async
Основы Async
Ivar и upon
Примеры: эхо-сервер
Усовершенствование эхо-сервера
Пример: поиск определений с помощью DuckDuckGo
Обработка URI
Парсинг строк J SON
Выполнение запроса HTTP
Обработка исключений
Мониторы
Пример: обработка исключений при работе с
DuckDuckGo
Тайм-ауты, отмена и выбор
Работа с системными потоками
Защищенность данных в потоках и блокировки
Насть III. Система времени выполнения
Глава 19. Интерфейс внешних функций
Пример: интерфейс к терминалу
Простые скалярные типы языка С
Указатели и массивы
Выделение памяти для указателей
Использование представлений для отображения
составных значений
Структуры и объединения
Определение структуры
Добавление полей в структуры
Незавершенные определения структур
Определение массивов
Передача функций в код на С
Пример: быстрая сортировка в командной строке
Дополнительная информация о взаимодействии с
кодом на С
Организация структур в памяти
Глава 20. Представление значений в памяти
Блоки и значения OCaml
Различение целых чисел и указателей во время
выполнения
Блоки и значения
Целые числа, символы и другие простые типы
Кортежи, записи и массивы
Вещественные числа и массивы
Варианты и списки
Полиморфные варианты
Строковые значения
Нестандартные блоки памяти
Управление внешней памятью средствами Bigarray
Глава 21. Сборка мусора
Алгоритм сборки мусора
Сборка мусора с разделением на поколения
Быстрая вспомогательная куча
Выделение памяти во вспомогательной куче
Основная куча долгоживущих блоков
Выделение памяти в основной куче
Стратегии распределения памяти
Маркировка и сканирование кучи
Компактификация кучи
Указатели между поколениями
Подключение функций-финализаторов к значениям
Глава 22. Компиляторы: парсинги контроль типов
Обзор инструментов компилятора
Парсинг исходного кода
Синтаксические ошибки
Автоматическое оформление отступов в исходном
коде
Автоматическое создание документации на основе
интерфейсов
Препроцессинг исходного кода
Использование Camlp4 в интерактивной оболочке
Запуск Camlp4 из командной строки
Препроцессинг сигнатур модулей
Дополнительные источники информации о Camlp4
Статическая проверка типов
Демонстрация типов, выводимых компилятором
Вывод типов
Модули и раздельная компиляция
Упаковка модулей вместе
Сокращение путей к модулям в сообщениях об
ошибках
Типизированное синтаксическое дерево
Использование ocp-index для поддержки
автодополнения
Непосредственное исследование типизированного
синтаксического дерева
Глава 23. Компиляторы: байт-код и машинный код
Нетипизированная lambda-форма
Оптимизация сопоставлений с образцом
Оценка производительности сопоставления с
образцом
Переносимый байт-код
Компиляция и компоновка байт-кода
Выполнение байт-кода
Встраивание байт-кода OCaml в программы на С
Компиляция быстрого машинного кода
Исследование ассемблерного кода
Отладка двоичных выполняемых файлов
Профилирование машинного кода
Встраивание машинного кода в программы на С
Сводка по расширениям имен файлов
Алфавитный указатель

Отзывы

Вопросы

Поделитесь своим мнением об этом товаре с другими покупателями — будьте первыми!

Дарим бонусы за отзывы!

За какие отзывы можно получить бонусы?
  • За уникальные, информативные отзывы, прошедшие модерацию
Как получить больше бонусов за отзыв?
  • Публикуйте фото или видео к отзыву
  • Пишите отзывы на товары с меткой "Бонусы за отзыв"
Правила начисления бонусов
Задайте вопрос, чтобы узнать больше о товаре
Если вы обнаружили ошибку в описании товара «Программирование на языке OCaml» (авторы: Мински Ярон, Мадхавапедди Анил, Хикки Джейсон), то выделите её мышкой и нажмите Ctrl+Enter. Спасибо, что помогаете нам стать лучше!
Ваш населённый пункт:
г. Москва
Выбор населённого пункта