D - это язык программирования, цель которого - помочь программистам справиться с непростыми современными проблемами разработки программного обеспечения. Он создает все условия для организации взаимодействия модулей через точные интерфейсы, поддерживает целую федерацию тесно взаимосвязанных парадигм программирования (императивное, объектно-ориентированное, функциональное и метапрограммирование), обеспечивает изоляцию потоков, модульную безопасность типов, предоставляет рациональную модель памяти и многое другое.
Название: Язык программирования D Автор: Александреску А. Издательство: Символ-Плюс Год: 2012 Страниц: 536 Формат: PDF Размер: 13,5 МБ ISBN: 976-5-93286-205-6 Качество: Отличное
Содержание:
Об авторе Предисловие Уолтера Брайта Предисловие Скотта Мейерса Предисловие научных редакторов перевода Введение 1. Знакомство с языком D 1.1. Числа и выражения 1.2. Инструкции 1.3. Основы работы с функциями 1.4. Массивы и ассоциативные массивы 1.5. Основные структуры данных 1.6. Интерфейсы и классы 1.7. Значения против ссылок 1.8. Итоги 2. Основные типы данных. Выражения 2.1. Идентификаторы 2.2. Литералы 2.3. Операции 2.4. Итоги и справочник 3. Инструкции 3.1. Инструкция-выражение 3.2. Составная инструкция 3.3. Инструкция if 3.4. Инструкция static if 3.5. Инструкция switch 3.6. Инструкция final switch 3.7. Циклы 3.8. Инструкция goto (безусловный переход) 3.9. Инструкция with 3.10. Инструкция return 3.11. Обработка исключительных ситуаций 3.12. Инструкция mixin 3.13. Инструкция scope 3.14. Инструкция synchronized 3.15. Конструкция asm 3.16. Итоги и справочник 4. Массивы, ассоциативные массивы и строки 4.1. Динамические массивы 4.2. Массивы фиксированной длины 4.3. Многомерные массивы 4.4. Ассоциативные массивы 4.5. Строки 4.7. Итоги и справочник 5. Данные и функции. Функциональный стиль 5.1. Написание и модульное тестирование простой функции 5.2. Соглашения о передаче аргументов и классы памяти 5.3. Параметры типов 5.4. Ограничения сигнатуры 5.5. Перегрузка 5.6. Функции высокого порядка. Функциональные литералы 5.7. Вложенные функции 5.8. Замыкания 5.10. Функции с переменным числом аргументов Альтернативный подход 5.11. Атрибуты функций 5.12. Вычисления во время компиляции 6. Классы. Объектно-ориентированный стиль 6.1. Классы 6.2. Имена объектов - это ссылки 6.3. Жизненный цикл объекта 6.4. Методы и наследование 6.5. Инкапсуляция на уровне классов с помощью статических членов 6.6. Сдерживание расширяемости с помощью финальных методов 6.7. Инкапсуляция 6.8. Основа безраздельной власти 6.9. Интерфейсы 6.10. Абстрактные классы 6.11. Вложенные классы 6.12. Множественное наследование 6.13. Множественное порождение подтипов 6.14. Параметризированные классы и интерфейсы 6.15. Переопределение аллокаторов и деаллокаторов 6.16. Объекты scope 6.17. Итоги 7. Другие пользовательские типы 7.1. Структуры 7.2. Объединение 7.3. Перечисляемые значения 7.4. alias 7.5. Параметриэированные контексты (конструкция template) 7.6. Инъекции кода с помощью конструкции mixin template 7.7. Итоги 8. Квалификаторы типа 8.1. Квалификатор immutable 8.2. Составление типов с помощью immutable 8.3. Неизменяемые параметры и методы 8.4. Неизменяемые конструкторы 8.5. Преобразования с участием immutable 8.6. Квалификатор const 8.7. Взаимодействие между const и immutable 8.8. Распространение квалификатора с параметра на результат 8.9. Итоги 9. Обработка ошибок 9.1. Порождение и обработка исключительных ситуаций 9.2. Типы 9.3. Блоки finally 9.4. Функции, не порождающие исключения (nothrow), и особая природа класса Throwable 9.5. Вторичные исключения 9.6. Раскрутка стека и код, защищенный от исключений 9.7. Неперехваченные исключения 10. Контрактное программирование 10.1. Контракты 10.2. Утверждения 10.3. Предусловия 10.4. Постусловия 10.5. Инварианты 10.6. Пропуск проверок контрактов. Итоговые сборки 10.7. Контракты - не для очистки входных данных 10.8. Наследование 10.9. Контракты и интерфейсы 11. Расширение масштаба 11.1. Пакеты и модули 11.2. Безопасность 11.3. Конструкторы и деструкторы модулей 11.4. Документирующие комментарии 11.5. Взаимодействие с C и C++ 11.6. Ключевое слово deprecated 11.7. Объявления версий 11.8. Отладочные объявления 11.9. Стандартная библиотека D 11.10. Встроенный ассемблер 12. Перегрузка операторов 12.1. Перегрузка операторов в D 12.2. Перегрузка унарных операторов 12.3. Перегрузка бинарных операторов 12.4. Перегрузка операторов сравнения 12.5. Перегрузка операторов присваивания 12.6. Перегрузка операторов индексации 12.7. Перегрузка операторов среза 12.8. Оператор $ 12.9. Перегрузка foreach 12.10. Определение перегруженных операторов в классах 12.11. Кое-что из другой оперы: opDispatch 12.12. Итоги и справочник 13. Параллельные вычисления 13.1. Революция в области параллельных вычислений 13.2. Краткая история механизмов разделения данных 13.3. Смотри, мам, никакого разделения (по умолчанию) 13.4. Запускаем поток 13.5. Обмен сообщениями между потоками 13.6. Сопоставление по шаблону с помощью receive 13.7. Копирование файлов - с выкрутасом 13.8. Останов потока 13.9. Передача нештатных сообщений 13.10. Переполнение почтового ящика 13.11. Квалификатор типа shared 13.12. Операции с разделяемыми данными и их применение 13.13. Синхронизация на основе блокировок через синхронизированные классы 13.14. Типизация полей в синхронизированных классах 13.15. Взаимоблокировки и инструкция synchronized 13.16. Кодирование без блокировок с помощью разделяемых классов 13.17. Статические конструкторы и потоки 13.18. Итоги Литература Алфавитный указатель