Изменения

Перейти к: навигация, поиск

Курс C++

3864 байта добавлено, 01:04, 16 апреля 2011
м
Добавил текущую версию курса
Текущая версия курса выглядит так:

=== Механика компилятора ===
* центральный процессор, команды процессора;
* данные, память и глобальные переменные;
* ОС и процесс;
* функции, стек, локальные переменные;
* куча, ссылки и указатели;
* CRT, куча, инициализация глобальных переменных;
* сборка проекта:
** предобработка, boost/preprocessor;
** компиляция, генерация кода функций, сбор имен, объектный файл;
** компоновка;
** заголовочные файлы и единицы трансляции;
** выравнивание;
* отладка программы.

=== Требования к программе ===
* программы пишутся для решения задач;
* программа с точки зрения пользователя;
* программа с точки зрения разработчика;
* отсюда требования:
** функциональность;
** устойчивость;
** минимизация затрат на решение задачи пользователя (удобство);
** скорость разработки;
* что дает С++:
** функциональность и удобство: множество библиотек и фреймворков;
** устойчивость: механизмы обработки нештатных ситуаций; тестирование (boost/test; google_test);
** скорость разработки.

=== Начало разработки программы ===
* выделение интерфейса программы;
* важность прототипирования;
* алгоритмы обработки интерфейса и структуры, в которых хранятся согласованные данные; состояние, инварианты;
* декомпозиция => масштабирование;
* состояние и интерфейс сущностей; граф связей между сущностями;
* важность инкапусляции;
* глобальные переменные, функции и классы как сущности с интерфейсом и состоянием;

=== Простой пример. Длинное число ===
* интерфейс, алгоритмы, состояние; код на С++;
* добавим оптимизацию по короткому числу;
* контейнер, интерфейс контейнера;
* как реализовать копирование, swap;
* pImpl;

=== Исключения ===
* механика процесса;
* бросание и обработка исключений;
* идеология разработки безопасного в смысле исключений кода (Саттер);

=== RAII ===
* умные указатели;
* взаимодействие с исключениями;

=== Статический и динамический полиморфизм ===
* наследование, область применения, явное выделение интерфейса;
* механика;
* шаблоны, область применения;
* механика;
* этюды на шаблонах, мини-введение в метапрограммирование;

=== Стандартные библиотеки ===
* stl;
* boost;
* qt;

=== Тестирование ===
* boost/test;
* google/test;

=== Сериализация ===
* пример;
* идея реализации;
* реализация;

Навигация