Головна » Інформатика

Означення основних понять програмування. Модуль "Алгоритмізація та програмування"

МОДУЛЬ “АЛГОРИТМІЗАЦІЯ ТА ПРОГРАМУВАННЯ”

Процедурне програмування подає програму у вигляді набору алгоритмів, для оформлення яких можуть застосовуватися іменовані програмні блоки — процедури і функції. В останньому випадку передбачається наявність механізмів передачі параметрів і поверненні результату. Спочатку процедурне програмування користувалося довільними засобами керування, в тому числі, переходом за міткою — одним з найбільш вживаних операторів керування в Фортрані. До мов процедурного програмування відносяться Fortran, Cobol, Pascal, Basic, та інші. В 1968 році голландський вчений Е. Дейкстра вперше звернув увагу на проблеми, що виникають у програмах з неконтрольованими переходами, в 1970 році проголосив новий напрямок, який він назвав структур(ова)ним програмуванням. Структурне програмування — це варіант процедурного, що вживає три типи структур керування: послідовне виконання дій, розгалуження і цикл. Не дивно, що Фортран не підтримував цю парадигму — в наборі його засобів не було циклів за умовами. Починаючи з Алголу, а особливо в Паскалі, цикли стають основним засобом організації обчислень в програмі. Автор Паскалю, професор Н. Вірт, відібрав до створюваної ним мови програмування лише прості в поясненні і легкі в реалізації конструкції. Завдяки сильній типізації програми в Паскалі відзначаються високою надійністю, вони мобільні завдяки закладеній в них концепції Паскаль-машини, їх легко читати і розуміти завдяки дисципліні програмування, продиктованої вжитою парадигмою. Але разом з цим застосування Паскалю гальмувалося саме складністю виходу за межі віртуальної машини, потребою ефективного використання наявної апаратури. Головним критерієм, вжитим Б.Керніганом і Д.Річі до створеної ними мови С, стала саме гнучкість використання особливостей конкретної апаратури і ефективність виконання програм.   

Процедурна парадигма віддала належне алгоритмічній компоненті програмування. Але з ростом обсягу програм і складності даних з'явилася нова проблема структурної організації даних, найбільш ємко висловлена Віртовською формулою “алгоритми + структури даних = програми”.   

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

Об'єктно-орієнтована парадигма наділила класи ієрархією. Об'єктно-орієнтоване програмування за метафорою Б.Страуструпа, автора С++ — однієї з найпопулярніших мов об'єктно-орієнтованого програмування, — це високоінтелектуальний синонім доброго програмування. Дійсно, нові парадигми програмування з'являються не так часто, не частіше однієї в десятиліття. Той факт, що об'єктно-орієнтована парадигма успішно використовується протягом 20 років, сам по собі служить вагомим підтвердженням її життєздатності.    Бьярн Страуструп

Алгоритми, реалізовані в процедурному програмуванні, надто конкретні. Будь-яка модифікація — це вже новий алгоритм і таким чином кількість процедур і функцій, що знаходяться у використанні, надмірно зростає. Модульне програмування групує алгоритми в модулі, одночасно інкапсулюючи структури даних. Тепер залишається зробити наступний крок — побудувати ієрархію модулів або класів. Таких ієрархій може бути дві. 1). Перша з них — бути частиною чогось. Наприклад, грань є частиною многогранника, ребро — частиною грані, вершина — частиною ребра. 2). Інша ієрархія — бути узагальненням або конкретизацією. Наприклад, овал і многокутник служать конкретизацією плоскої фігури, коло — конкретизацією овалу, чотирикутник — конкретизацією многокутника, подальшими конкретизаціями чотирикутника можуть служити паралелограм, прямокутник, ромб, квадрат. Той факт, що квадрат, ромб, прямокутник є повноцінними паралелограмами дозволяє їм користуватися усіма програмними засобами, створеними для паралелограма, паралелограм в свою чергу є повноцінним чотирикутником і так далі. Цей принцип, відомий під назвою reusable — знову вживаний — став одним з найважливіших досягнень об'єктно-орієнтованої парадигми. Знову вживаючи вже існуюче програмне забезпечення в більш конкретизованих умовах, ми дописуємо лише ту його частину, яка стосується особливостей наявної конкретизації. Цей принцип дістав назву programming by difference або дописування програм. І, нарешті, об'єктно-орієнтована парадигма доводить до логічної завершеності принцип моделювання реального світу, а точніше тієї його частини, абстракцією якої служить програма. При цьому підході програма складається з об'єктів, що відповідають реальним поняттям або предметам. Виконання програми зводиться до взаємодії об'єктів, яке служить абстракцією реальної взаємодії їх прототипів. Все це разом забезпечило об'єктно-орієнтованому підходу беззаперечне лідерство в галузі розробки програм.   

Сьогодні в сімействі мов об'єктно-орієнтованого програмування три найбільш відомих представника: С++, Java і C # ( читається Сі шарп ). С++ і сьогодні залишається визнаним лідером в розробці великих і складних програмних систем. Java і C # виросли з С++.    

СТВОРЕННЯ ООП І C++ До кінця 1970-х розмір проектів став наближатися до критичного, при перевищенні якого методика структурного програмування і мова С "опускали руки". Тому стали з'являтися нові підходи до програмування, що дозволяють вирішити цю проблему. Один з них отримав назву об'єктно-орієнтованого програмування (ООП). Використовуючи ООП, програміст міг справлятися з програмами набагато більшого розміру, ніж раніше. Але проблема полягала у тому, що С, найпопулярніша на той час мова, не підтримувала ООП. Бажання працювати з об'єктно-орієнтованою версією мови С врешті-решт і привело до створення C++. Мова C++ була розроблена Бьорном Страуструпом (Bjarne Stroustrup) в компанії Bell Laboratories (Нью-Джерсі), роком створення вважається 1979-й. Спочатку творець нової мови назвав її "С з класами", але в 1983 році це ім'я було змінене на C++. C++ повністю включає елементи мови С. Таким чином, С можна вважати фундаментом, на якому побудований C++. Більшість доповнень, які Страуструп вніс до С, були призначені для підтримки об'єктно-орієнтованого програмування. По суті, C++ - це об'єктно-орієнтована версія мови С. Створюючи С++ на основі С Страуструп забезпечив плавний перехід багатьох програмістів на ООП. Замість необхідності вивчати абсолютно нову мову, С-програмістові досить було освоїти лише нові засоби, що дозволяють використовувати переваги об'єктно-орієнтованої методики. Впродовж 1980-х років C++ інтенсивно розвивалася і на початок 1990-х вже була готова для широкого використання. Зростання її популярності носило вибухоподібний характер, і до кінця цього десятиліття вона стала найбільш використовуваною мовою програмування. В наші дні мова C++ як і раніше має безперечну перевагу при розробці високопродуктивних програм системного рівня.   

Наступним рівнем на сходах прогресу мов програмування стала мова Java, яка спочатку називалася Oak (у перекладі з англ. "дуб"). Робота над її створенням почалася в 1991 році в компанії Sun Microsystems. Основною рушійною силою розробки Java був Джеймс Гослінг (James Gosling).    Джеймс Гослінг

Java - це структурна об'єктно-орієнтована мова програмування, синтаксис і принципи якої "родом" з C++. Своїми новаторськими аспектами Java зобов'язана не стільки прогресу в мистецтві програмування, скільки змінам в комп'ютерному середовищі. Ще до настання ери Internet більшість програм писалися, компілювалися і призначалися для виконання з використанням певного процесора і під управлінням конкретної операційної системи. Не дивлячись на те що програмісти завжди прагнули робити свої програми так, щоб їх можна було застосовувати неодноразово, можливість легко переносити програму з одного середовища в іншу не була ще досягнута, до того ж проблеми переносимості постійно відкладалися, вирішувалися ж більш насущні проблеми. Проте з появою всесвітньої мережі Internet, в якій виявилися зв'язаними різні типи процесорів і операційних систем, стара проблема портативності заявила про себе вже в повний голос. Для її вирішення знадобилася нова мова програмування, і нею стала Java   

Розробники Java успішно вирішили багато проблем, пов'язаних з переносимістю в середовищі Internet, але далеко не всі. Одна з них - міжмовна можливість взаємодії (cross-language interoperability) програмних і апаратних виробів різних постачальників, або багатомовне програмування (mixed-language programming). В разі вирішення цієї проблеми програми, написані на різних мовах, могли б успішно працювати одна з іншою. Така взаємодія необхідна для створення великих систем з розподіленим програмним забезпеченням (ПЗ), а також для програмування компонентів ПЗ, оскільки найціннішим є компонент, який можна використовувати у широкому діапазоні комп'ютерних мов і операційних середовищ. Крім того, в Java не досягнута повна інтеграція з платформою Windows. Хоча Java-програми можуть виконуватися в середовищі Windows (за умови встанолення віртуальної машини Java), Java і Windows не є міцно зв'язаними середовищами. А оскільки Windows - це найбільш широко використовувана операційна система в світі, відсутність прямої підтримки Windows - серйозний недолік Java. Аби задовольнити ці потреби, Microsoft розробила мову С#.   

С# була створена в кінці 1990-х років і стала частиною спільної .NET-стратегії Microsoft. Вперше вона побачила світло як альфа-версія в середині 2000 року. Головним архітектором С# був Андерс Хейлсберг (Anders Hejlsberg) - один з провідних фахівців в області мов програмування, що отримав визнання у всьому світі. Досить сказати, що в 1980-х він був автором успішного продукту Turbo Pascal, витончена реалізація якого встановила стандарт для всіх майбутніх компіляторів.    Андерс Хейлсберг

С# безпосередньо пов'язаний із С, C++ і Java. І це не випадково. Ці три мови - найпопулярніші і найулюбленіші мови програмування в світі. Більш того, майже всі професійні програмісти сьогодні знають С і C++, і більшість знає Java. Оскільки С# побудований на міцному, зрозумілому фундаменті, то перехід від цих "фундаментальних" мов до "надбудови" відбувається без особливих зусиль з боку програмістів. Оскільки Андерс Хейлсберг не збирався винаходити нову мову, він зосередився на введенні удосконалень. Прамовою С# є мова С. Від С мова С# успадкувала синтаксис, багато ключових слів і оператори. Крім того, С# побудований на покращеній об'єктній моделі, визначеній в C++. С# і Java зв'язані між собою дещо складніше. Java також є нащадком С і C++. У неї теж загальний з нею синтаксис і схожа об'єктна модель. Подібно Java C# призначений для створення переносимого коду. Проте С# - не нащадок Java. Швидше С# і Java можна вважати двоюрідними братами, що мають загальних предків, але що отримали від батьків різні набори "генів".   


Теги: Програмування, Кравчук Г.Т.
Навчальний предмет: Інформатика
Переглядів/завантажень: 703/146


Схожі навчальні матеріали:
Всього коментарів: 0
avatar