Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка - Основи Програмування C_.doc
Скачиваний:
46
Добавлен:
18.12.2018
Размер:
1.44 Mб
Скачать

2. Історія мов програмування.

Нині відомо більше 8500 мов програмування. Що не дає спокою програмістам, примушуючи їх шукати і створювати «ідеальну» мову програмування, залишаючи за собою за влучним виразом Кріса Касперського «ціле кладовище мов, парадигм, вмерлих концепцій, ідей, що випередили свій час»? Навіщо взагалі потрібні різні мови програмування?

Справа в тому, що комп’ютер здатен розуміти лише команди, записані у двійкових кодах. Тобто кожен символ команди комп’ютера може набувати лише двох значень: 0 або 1. Історичний аспект цього питання полягає в тому, що перші обчислювальні машини сприймали лише наявність або відсутність сигналу у певній комірці. Перші програмісти безпосередньо задавали команди комп’ютерам у вигляді низки двійкових кодів. Вхідна інформація у вигляді таких команд наносилась на так звані «перфострічки» або «перфокарти». На них у певних місцях пробивались дірочки, наявність або відсутність яких і означала відповідно 0 або 1. Можна уявити собі, на який кошмар перетворювався пошук помилок у перших програмах. Тому абсолютно слушною видалась ідея про те, що програма має бути написана якомога більш зрозумілим людині чином, тобто двійкові команди необхідно замінити словами або скороченнями слів і фраз природної мови. Це викликало необхідність у виникненні «посередника» – спеціальної програми, яка б перекладала такий текст у комп’ютерні команди. Такий посередник одержав назву компілятора або транслятора. За своїм призначенням це дещо різні речі, проте ми не будемо зараз заглиблюватись у деталі.

Перші мови програмування були точно зав’язані на вузько спеціальні задачі тієї чи іншої програмної системи. Наприклад, для наукових цілей використовувалась мова ФОРТРАН, для бухгалтерії – переважно мова КОБОЛ. Проте для системних робіт використовувалася мова програмування низького рівня – Асемблер. Мови програмування високого рівня відрізняв певний рівень абстракції в інтерпретації команд та даних, вони доволі наближені до природної людської мови.

Програмування не раз переживало важкі часи. І кожен раз це призводило до створення нових, більш абстрактних, парадигм програмування та мов, що їх реалізовували. Однією з революційних концепцій програмування було структурне програмування, що базувалось на процедурній абстракції. Процедури (або просто підпрограми) дозволяли структурувати текст програми, допускали повторне використання окремих частин програми (реалізоване у вигляді виклику процедури з будь-якого місця програми, в тому числі і з самої процедури). Тим самим ця концепція наводила певний порядок у програмах (які часто порівнювали із спагеті-кодом через багатократні переходи та заплутаність текстів програм), долаючи «демонів складності». Найбільш поширеними мовами програмування високого рівня в межах цієї концепції були мови ПЛ/1, Pascal, C, Modula-2.

Структурні мови програмування дозволяли писати досить складні програми. Проте фатальним для концепції структурного програмування ставав об’єм програми. В той час як важливою підтримкою складних інженерних проектів виступало програмування, написання реально складної та великої програми в межах цієї концепції ставало неможливою.

Один із нових підходів до програмування одержав назву об’єктно-орієнтованого програмування (ООП). Для реалізації цієї концепції були створені нові мови програмування. Одним із найбільш вдалих проектів була мова С++, яка повністю підтримувала весь парк програм, створених для компіляторів з мови С. Саме цей факт і забезпечив мові С++ комерційний успіх. Іншими прикладами об’єктно-орієнтованих мов програмування служать мови Smalltalk, Java та інші.

Концепція об’єктно-орієнтованого програмування базується на трьох основних принципах. По-перше, об’єкт інкапсулює (приховує) у собі дані та методи, які ними оперують, залишаючи назовні лише можливість послати або одержати повідомлення – дозволену інформацію про себе. По-друге, існує можливість створювати нові об’єкти з розширеним списком можливостей шляхом спадкування від існуючих об’єктів. І нарешті, різні об’єкти можуть мати методи з однаковим інтерфейсом, проте різним функціонуванням. Ця властивість реалізує підхід, що одержав назву поліморфізму. Його ідея : один інтерфейс – багато методів.

Сучасні мови програмування, С++ зокрема, доросли таким чином до так званого «метапрограмування», або програмування з допомогою шаблонів – можна створювати програми, які створюють інші програми як результат своєї роботи. Таким чином, мова програмування одержує певну самостійність, яка з одного боку значно спрощує розв’язання багатьох проблем, проте й вносить певний елемент некерованості, незалежності від авторського задуму. Як страшну аналогію можна навести ідеї сучасних авторів-фантастів про війни роботів із людством. Крім того, мова диктує стиль мислення програміста. І доволі часто трапляється, що вся міць і потужність мови використовуються там, де в цьому зовсім мало потреби.