#777 Год выпуска: 2014 Производитель: Технопарк Сайт производителя: https://tech-mail.ru Автор: Алексей Петров Продолжительность: 24 часа Тип раздаваемого материала: Видеоурок Язык: Русский Описание: Цель курса — формирование практических навыков и умений, необходимых специалистам по разработке программного обеспечения (ПО) UNIX-подобных операционных систем для участия в проектах промышленной разработки среднего уровня сложности на языках C и C++, в том числе для замещения стажерских должностей разработчиков серверной части высоконагруженных приложений.
Содержание
[*]Лекция 1. Язык С. Основы организации и использования оперативной и сверхоперативной памяти
Описание
Лекция начинается с введения в язык С: рассказывается об истории его появления, особенностях, преимуществах и недостатках, о сферах применения. Описываются основы препроцессорной обработки, рассматриваются вопросы управления памятью (модели управления памятью, области видимости объектов хранения) и производительность программ на языке С. Обсуждается связывание объектов хранения и их инициализация. Затем рассказывается о классах памяти в языке С. Следующая часть лекции посвящена проблематике указателей, а также работе с одномерными массивами. В заключение рассматривается стандарт POSIX и вопросы переносимости.
[*]Лекция 2. Дополнительные вопросы организации и использования оперативной и сверхоперативной памяти
Описание Лекция начинается с рассмотрения многомерных массивов. На примере двумерного массива показывается эффективный обход. Разбирается пример задачи об умножении матриц, обсуждаются векторы векторов. Далее рассматривается ряд вопросов, посвящённых указателям:
[*]указатели и двумерные массивы;
[*]совместимость указателей;
[*]указатели на константы и константные указатели;
[*]указатели и квалификатор restrict.
Затем рассказывается об использовании функций применительно к многомерным массивам, о массивах переменной длины. Далее обсуждается выравнивание и упаковка переменных составных типов, в том числе реорганизация структур данных. Рассматривается оптимизация загрузки кэш-памяти: асимметрия условий, встраивание функций. Заключительная часть лекции посвящена системным аспектам выделения и освобождения памяти. В частности, рассказывается о четырёх частях структуры памяти данных.
[*]Лекция 3. Специальные вопросы инкапсуляции
Описание
Инкапсуляция — один из трёх базовых принципов объектно-ориентированного проектирования. В первую очередь описывается, что представляет собой инкапсуляция. Даётся определение класса, разбирается его состав, перечисляются существующие виды классов. Подробно рассматриваются объекты класса, в том числе константные, атрибуты и методы класса, битовые поля и вложенные классы. Далее описываются разные виды методов класса (статические и нестатические, встроенные, константные, неустойчивые), а также указатели на них. Затем рассматриваются так называемые дружественные классы и функции. Ближе к концу лекции рассказывается про классы-объединения, анонимные и безымянные объединения, битовые поля в определении классов. Финальная часть лекции посвящена конструкторам и деструкторам.
[*]Лекция 4. Специальные вопросы наследования и полиморфизма. Множественное и виртуальное наследование. Динамическая идентификация типов (RTTI)
Описание
В начале лекции обсуждаются инициализация без конструктора, конструкторы по умолчанию, конструкторы с параметрами, закрытые и защищённые конструкторы. Далее рассказывается о механизмах почленной инициализации и присваивания, о конструкторах копирования, операциях преобразования, а также о деструкторах, в том числе виртуальных. Обсуждается идиома RAII (Resource acquisition is initialization), явный вызов деструкторов и список инициализации в конструкторе. Рассказывается о переносе в языке С++11, в том числе о семантике и конструкторе переноса. Далее обсуждаются такие базовые принципы ООП, как наследование (раннее и позднее связывание, базовые и производные классы) и полиморфизм (защищённые и закрытые члены класса, перегрузка и перекрытие членов класса). Затем говорится о вызове конструкторов и деструкторов производных классов, списке инициализации при наследовании, виртуальных функциях и абстрактных классах. Рассказывается о виртуальном и множественном наследовании. В завершение лекции обсуждаются такие вопросы, как динамическая идентификация типов времени выполнения (RTTI) и операции приведения типов, производительность и безопасность полиморфизма и средств поддержки RTTI.
[*]Лекция 5. Шаблоны классов и методов. Обработка исключительных ситуаций. Обобщённое и безопасное программирование
Описание
В начале лекции даётся определение шаблонов классов и рассматриваются их параметры. Объясняется механизм конкретизации шаблонов классов. Рассказывается о методах шаблонов, о дружественных объектах в шаблонах, о статических членах, о специализации шаблонов, в том числе о полной и частичной. В качестве примера метапрограммирования рассматривается рекурсивное определение шаблонов. Объясняется суть новой идиомы, SFINAE (Substitution failure is not an error), в том числе применительно к интроспекции времени компиляции. Солидная часть лекции посвящена всевозможным характеристикам типов. Рассказывается о технологии обработки исключительных ситуаций. Следующий блок информации посвящён безопасному программированию: безопасности классов, методов, конструкторов и деструкторов, критериям безопасности и нейтральности кода. В конце лекции обсуждаются различные исключения в стандартной библиотеке.
[*]Лекция 6. Практическое введение в STL. Функциональное программирование в С++
Описание Сначала рассказывается об истории создания стандартной библиотеки шаблонов (STL): о предпосылках, о предназначении STL и гарантиях производительности. Далее подробно рассказывается обо всех компонентах, входящих в состав STL:
[*]упорядоченных ассоциативных контейнерах (множествах и мультимножествах, отображениях и мультиотображениях);
[*]последовательных алгоритмах;
[*]алгоритмах упорядочения;
[*]алгоритмах на числах;
[*]копирующих, предикатных алгоритмах;
[*]алгоритмах, работающих на месте;
[*]алгоритмах сортировки.
Рассматриваются отношения сравнения в алгоритмах, обратные отношения, операции над множествами и хипами. Затем говорится об итераторах STL, об их видах (в том числе об итераторах вставки и потоковых итераторах), о поддерживаемых итераторами диапазонах и операциях. Ближе к концу лекции обсуждаются стандартные функциональные объекты STL и их базовые классы. Даётся информация об адаптерах (контейнерных, функциональных). В конце затрагивается вопрос применения контейнеров в STL.
[*]Лекция 7. Практическое введение в Boost
Описание
Лекция начинается с рассказа о лямбда-функциях, основных правилах их оформления, ключевых преимуществах и применении замыканий. Затем обсуждается Boost (набор из нескольких десятков автономных библиотек), его состав и назначение. Основная часть лекции посвящена рассмотрению примеров использования Boost: проверке времени компиляции, характеристикам типов, вариантным контейнерам, «умным» указателям. В заключение рассказывается об использовании средств Boost для повышения производительности и безопасности кода.
Описание Лекция открывается длительным обсуждением целей, проблем и принципов объектно-ориентированного проектирования. Далее рассказывается о шаблонах проектирования: что это такое, какие бывают виды шаблонов, каковы их преимущества. Рассматриваются базовые шаблоны и их реализации:
[*]наследование и композиция;
[*]делегирование;
[*]неизменяемые объекты;
[*]интерфейс.
После этого разбираются три группы шаблонов GoF. Порождающие шаблоны:
[*]абстрактная фабрика;
[*]строитель;
[*]фабричный метод;
[*]прототип;
[*]класс с единственным экземпляром.
Структурные шаблоны:
[*]адаптер;
[*]декоратор;
[*]мост;
[*]компоновщик;
[*]фасад;
[*]приспособленец;
[*]заместитель.
Поведенческие шаблоны:
[*]интерпретатор;
[*]команда;
[*]цепочка ответственности;
[*]итератор;
[*]хранитель;
[*]состояние;
[*]наблюдатель;
[*]стратегия;
[*]посредник;
[*]посетитель;
[*]шаблонный метод.
И в заключение рассказывается о принципах S.O.L.I.D.
[*]Лекция 9. Идиоматика языка С++. Основы рефакторинга и качество исходного кода. Стандарты кодирования и методология разработки ПО
Описание Завершающая лекция в рамках данного курса. Сначала даётся определение термина «идиома языка программирования». Рассказывается об идиомах процедурного программирования, об объектно-ориентированных идиомах. Обсуждаются методы управления памятью, относящиеся к идиомам повышенного уровня сложности:
[*]«автоматическая» сборка мусора и подсчёт ссылок;
[*]управление памятью заменой операций new и delete;
[*]идиома «конверт/письмо» и делегированный полиморфизм.
Следующая часть лекции посвящена рефакторингу и статическому анализу исходного кода: даются определения, рассказывается о возможном применении, рассматриваются преимущества, недостатки и сопутствующие риски. Далее разбираются типовые анти-шаблоны, «грязные техники», логико-семантические ошибки. Обсуждаются вопросы оптимизации программ с точки зрения производительности, размера объектного кода и объёма памяти данных. Затем рассматривается понятие «качественного ПО», описываются функциональные и структурные показатели качества кода. Рассказывается о моделях и факторах качества ПО, в том числе о модели МакКола. Далее говорится о сложности кода как об атрибуте качества ПО, о способах управления сложностью и о влиянии на неё модульности. Затем рассматриваются понятие «технического долга», стандарты и стили кода, методологии промышленной разработки (правила организации и способы записи, комментирование и документирование, жизненный цикл разработки ПО, его модели). И в завершение курса даётся обзор SWEBoK (Software engineering body of knowledge).
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
Ресурс не предоставляет электронные версии произведений, а занимается лишь коллекционированием и каталогизацией ссылок, присылаемых и публикуемых на форуме нашими читателями. Если вы являетесь правообладателем какого-либо представленного материала и не желаете чтобы ссылка на него находилась в нашем каталоге, свяжитесь с нами и мы незамедлительно удалим её. Файлы для обмена на трекере предоставлены пользователями сайта, и администрация не несёт ответственности за их содержание. Просьба не заливать файлы, защищенные авторскими правами, а также файлы нелегального содержания!