Записки по технология и методология на програмирането

Антон Зиновиев

http://www.fmi.uni-sofia.bg/fmi/logic/zinoviev/TMP/

.

Внимание! Това е незавършен вариант, който засега съдържа само началните глави.

Промени
Издание 315 април 2003г.

Добавени са някои допълнителни сведения за междупроцедурните оптимизации.

Нов раздел „Работа с паметта“.

Издание 215 март 2003г.

Нов раздел „Модификаторите const и restrict“. Разделът „Проблеми“ е съкратен, като част от него е прехвърлена в новия раздел.

Издание 110 март 2003г.
Пръв вариант

Анотация

В курса се обсъжда правилното използване на средствата, предоставяни от езиците за програмиране. Той започва с обсъждане на по-простите елементи като имена и оператори и преминава към по-сложни и абстрактни конструкции като подпрограма, модул, обект. Теоретичните понятия се илюстрират с конкретни примери.


Съдържание

1. Избор на имена
Локални променливи
Функции и методи
Поправяне на грешки
Класове
2. Автоматични оптимизационни преобразования
Локална оптимизация
Глобална оптимизация
Проблеми
Модификаторите const и restrict
Междупроцедурна оптимизация
3. Работа с паметта
Използване на статичната и стекова памет
„Кръговрат“ на данните при обектноориентираните езици
По-прости начини за работа с динамична памет при Си и Си++
I начин — притежателни и непритежателни указатели
II начин — пулове от непритежавани обекти
III начин — пул с броячи
IV начин — брояч за всеки от обектите
Технология, използвана при ОупънСтеп и МакОСX
Използването на събирач на боклука
4. Оператори
Предпроцесор
Литература

Списък на примерите

2.1. Обединяване на общи операции
2.2. Еднократно смятане отместването в масив
2.3. Замяна на аритметични операции с по-ефективни
2.4. Общи действия в двата клона на условен оператор
2.5. Изкарване на повтарящи се оператори след цикъл
2.6. Изкарване на повтарящи се оператори пред цикъл
2.7. Комутативност между условен оператор и цикъл
2.8. Ускоряване на рекурсивни функции
2.9. Обединяване на съседни цикли
2.10. Размяна на вложени цикли
2.11. Опростяване на индуктивни операции
3.1. Използване на retain, release и autorelease в контейнерен клас.
3.2. Използване на retain, release и autorelease при при извършването на различни операции върху обектите.