Парадигми та мови програмування


Вступ

Цей конспект виник в результаті викладання автором продовження курсу програмування студентам, що вже не були початківцями, а мали досвід програмування принаймні в Паскалі. Це дозволило не зупинятися на традиційних проблемах початкового курсу програмування. Будемо виходити з того, що традиційні структури керування і структури даних добре відомі, так само як техніка програмування рекурентних співвідношень, індуктивних функцій, дослідження інваріантів. Повинні бути відомі також засоби алгоритмічної декомпозиції, наприклад, на рівні розробки алгоритмів сортування і пошуку, обробки дерев, списків, інших структур даних. Для розуміння курсу цілком достатньо підготовки в обсязі двох відомих книг Н.Вірта[1,2 ].

Головна мета курсу — оволодіння технікою об'єктно-орієнтованого програмування на прикладі найбільш поширеної мови програмування С++. Мова С++ багатопарадигменна, а тому її вивчення служить доброю базою для порівняльного аналізу парадигм імперативного програмування. Практика спілкування з студентами дозволила виділити найважчі для розуміння конструкції, підібрати прозоріші приклади.

Конспект лекцій з об'єктно-орієнтованого програмування не замінить посібників з мови програмування С++. Він покликаний допомогти у встановленні послідовності вивчення матеріалу, виділити найважливіші з точки зору розробки програмного забезпечення моменти, дати змістовні приклади. Передбачається, що деталі синтаксису і семантики мовних конструкцій вивчатимуться самостійно за наведеною літературою.

Серйозною виявилася проблема української термінології. В програмуванні вона, на жаль, ще не склалася. Доступні книги російськомовні, термінологія російською мовою в основному склалася, хоча теж не завжди встигає за розвитком галузі. Деякі терміни, як наприклад, frame work , tool kit , design pattern ще чекають на влучні переклади, інші перекладаються дослівно навіть в тих випадках, коли можна вживати більш звичні терміни, наприклад, довизначення або розширення замість “ перегрузки функций ”. Значну допомогу в перекладі термінології надають англо-українські та російсько-українські словники з інформатики та обчислювальної техніки, зокрема підготовлені в Національному університеті ім. Тараса Шевченка. Але самі слоники ще не норма, а швидше експеримент, а тому проблему термінології вони повністю не розв'язують. Підбираючи власний варіант перекладу терміну, я керувався здоровим глуздом та академічним виданням словника української мови.

При роботі над рукописом були використані книги розробників С++ [3,4] , які я рекомендую студентам для поглибленого вивчення, а також як довідковий матеріал. Значний вплив на зміст і будову конспекту справила на жаль мало відома у нас книга Д.Марка [5] , визначивши загальний стиль пояснення проблем на прикладах.

Автор буде глибоко вдячний кожному, хто висловить свої зауваження до конспекту, які можна надіслати автору на адресу vlad@unicyb.kiev.ua