Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмізація та програмування.doc
Скачиваний:
31
Добавлен:
16.11.2019
Размер:
3.81 Mб
Скачать

Тема 7. Визначення та короткий огляд мов програмування

7.1. Методичні вказівки до самостійного вивчення теми

7.1.1. Визначення мови програмування

Щоб використати ЕОМ для розв’язання задач, необхідно представити алгоритм у такому вигляді, в якому він може бути сприйнятий ЕОМ, тобто описаний на мові, зрозумілій ЕОМ. Цим описом є програма дій для ЕОМ, а процесом опису — програмування. Зараз у поняття «програмування» вкладають більш широкий зміст.

Для подальшого успішного використання ЕОМ необхідно, щоб мова опису була зрозуміла й людям. Природну мову для цього не можна використовувати, бо її фрази мають багатозначний зміст, і можуть бути нарізно інтерпретовані, що не є можливим для алгоритму. Звідси випливає необхідність розробки спеціальних формальних мов програмування.

Формальна мова будується за принципами будь-якої природної мови на базі певної граматики. Як і всі інші мови, вона складається з чотирьох структурних елементів: алфавіт мови, слова, вирази, оператори (речення). Щоб описати мову, треба перелічити припустимі символи алфавіту; сформулювати правила утворення слів (мінімальних структур мови, які мають зміст), правила побудови та опису припустимих у мові виразів (груп слів, пов’язаних між собою); перелічити всі типи й сформулювати правила побудови операторів (мінімальних структур, що висловлюють закінчену думку або дію).

Опис мови містить синтаксичні визначення, семантичні пояснення та граматичні форми.

Синтаксис мови — це сукупність усіх сформульованих правил побудови припустимих структур, створюваних із символів алфавіту.

Семантичні пояснення, або семантика мови, надають кожній структурі певного змісту.

Граматичні форми описують класи операторів та зв’язки між ними.

Формальна мова програмування має позитивні якості машинних та природних мов і у той самий час суттєво відрізняється від них:

— будь-яка синтаксично правильна структура мови має зміст;

— кожний вираз і кожний оператор має тільки один зміст і, отже, завжди однозначно інтерпретується;

— формальна мова має лаконічність машинних мов та наочність природних.

7.1.2. Вимоги до мов програмування

До формальної мови висувається ціла низка вимог та умов, які вона повинна задовольняти, якщо є алгоритмічною. Мова повинна бути:

1. Наочною, отже, має використовувати загальновідому математичну символіку та інші зображувальні засоби, що легко та звично сприймаються.

2. Єдиною, кількість зображувальних засобів не може бути завеликою, одні й ті самі засоби мають застосовуватись для виразу одних і тих самих або поріднених понять у різних частинах запису алгоритму. Це полегшує вивчення мови та її використання.

3. Гнучкою, будь-який поширений метод обчислювальної математики має описуватись без зайвого ускладнення.

4. Багатоступінчастою, тобто дозволяти описувати дуже складні алгоритми у вигляді сполучення порівняно невеликої кількості більш простих алгоритмів, що описуються окремо, можливо, через інші, ще більш прості алгоритми.

5. Однозначною, тобто зберігати якість визначеності алгоритму. Для цього повинна мати місце однозначна відповідність між текстами (текст—алгоритм, записаний мовою) та змістами (зміст або сенс — мета алгоритму). Тут немає взаємно однозначної відповідності, оскільки задачі можна розв’язувати різними способами і, отже, одному змісту може відповідати декілька текстів. (Але не навпаки.)

6. Незалежною від конкретних особливостей ЕОМ, для яких створюється програма. У той самий час мова повинна будуватись так, щоб можна було сформулювати правила, які б дозволили перетворити алгоритм, описаний за допомогою алгоритмічної мови, у програму для конкретної ЕОМ.

Якщо алгоритмічна мова задовольняє усі ці умови, вона може виконувати різні функції:

  • може бути засобом мислення. Логічна недосконалість методу розв’язання задачі визначається у процесі запису цього методу засобами алгоритмічної мови;

  • є засобом спілкування між людьми, бо опис обчислювального процесу, зроблений однією людиною, доступний іншим;

  • є посередником між різними ЕОМ.

Алгоритм, описаний такою мовою, матиме властивість масовості. Вона зручна для зберігання алгоритмів.

Алгоритмічна мова є породженням алгоритмічних систем -формальних граматик. У свою чергу, алгоритмічна мова є алгоритмічною системою, у межах якої будуються алгоритми обробки інформації.

Слід зазначити, що будь-яка мова програмування перебуває у постійному розвитку. Вона має три рівня представлення: еталонний (офіційне повідомлення робочої групи, тобто документ опису мови та її можливостей), рівень публікацій (довільний опис можливостей мови, порівняння з іншими, переваги та недоліки, тлумачення і т.ін.), робочий рівень (рівень використання, тобто робочий варіант або версія).

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

Якщо у мові програмування відсутні якісь можливості, то можна розширити її за рахунок включення нових засобів обробки інформації, або за рахунок втілення нових засобів спілкування з користувачем чи розробником програм, або за рахунок знешкодження помилок, виявлених у процесі користування. Так з’являються нові версії мови — більш досконалі, більш ефективні, пристосовані до нових інформаційних технологій.

7.1.3. Класифікація мов програмування та напрямки їх розвитку

Перші спроби створення мов програмування полягали в тому, щоб зробити більш наочною машинну програму. Для цього замість цифрових кодів операцій записували мнемокоди, а замість реальних адрес полів пам’яті ЕОМ писали умовні адреси. Таке програмування називали адресним. Така адресна команда наочно відображала специфіку машинної команди і для кожного типу ЕОМ створювалась своя система символічного кодування (ССК). Програма не ставала коротшою, але набувала наочності, кількість помилок при її розробці зменшувалась. Це були мови програмування першого покоління або першої генерації (Generation Language) — 1 GL.

Наступним етапом розвитку програмування стало програмування на мовах, близьких до машинних, але вони використовували оператори замість команд. Кожному оператору відповідала одна або декілька машинних команд. Ці мови мали назву автокодів, вони відображали особливості ЕОМ, які реалізували ці програми. Програма на автокоді була більш компактною, більш наочною, що полегшувало візуальний контроль. Однак для успішного програмування необхідно знати, як реалізується той чи інший оператор на відповідній ЕОМ. Це мови типу Assembler або мови другої генерації — 2 GL.

Для успішного розвитку теорії програмування, для обміну досвідом між програмістами, для можливості використання досягнень у засобах та методах програмування розробляють мови, які не залежать від можливостей та особливостей окремих ЕОМ, які можна використовувати, програмуючи для різних типів ЕОМ. Ці мови містять засоби для опису певних типів інформації, тобто відображають особливості алгоритмів окремих класів задач або проблем. Такі мови отримали спільну назву: проблемно орієнтовані або алгоритмічні. Їх відносять до мов програмування третього покоління 3GL. Використання таких мов відкрило можливості широкого обміну програмами, створення фондів алгоритмів та програм на рівні ОЦ, країни.

Програма, написана алгоритмічною мовою, є наочною, компактною, її можна реалізувати на ЕОМ будь-якого типу.

Серед таких мов можна виділити ті, що найчастіше використовувались:

— для розв’язання науково-технічних задач — ALGOL-60, FORTRAN та інші, побудовані на їх основі. Вони мають засоби для обробки числової інформації за складними алгоритмами;

— для розв’язання задач обробки спискових структур — LISP, SLIP, COMIT. Тип інформації тут не має значення, головною є специфіка організації даних у вигляді списків. Тому ці мови мають засоби побудови ланцюжків-списків та послідовної обробки його ланок; вони описують алгоритми, побудовані у межах таких алгоритмічних систем, як рекурсивні функції;

— при розв’язанні задач обробки символьної інформації перш за все використовують такі операції, як порівняння, пошук потрібного слова, вибірка тексту, перетворення тексту, контроль та коригування тексту. Тут використовуються логічні операції і найпростіші арифметичні вирази для індексації слів. Арифметичних перетворень інформації немає. Незважаючи на простоту використовуваних операцій, алгоритми розв’язання цих задач можуть бути достатньо складними і вимагають певних навичок та винахідливості в алгоритмізації. У цих випадках використовуються такі мови, як EPSILON, SNOBOL;

— найбільш зручним засобом для представлення алгоритмів моделювання є абстрактні автомати. Для опису таких алгоритмів широко застосовні такі мови, як SIMULA, SIMSCRIPT, і будь-які мови, що мають засоби об’єктно орієнтованої обробки даних;

— для опису алгоритмів задач обробки економічної інформації — COBOL, АЛГЕК, SIMULA. Ці мови програмування мають засоби для опису та представлення будь-якої складної соціально-економічної інформації;

— до машинно-незалежних мов належать також універсальні мови програмування. Вони призначені для опису алгоритмів будь-яких класів задач і містять засоби обробки інформації всіх типів та способів агрегування. Всі вони мають модульну структуру, причому всі модулі незалежні, кожний із них містить засоби обробки інформації певного типу. До таких мов належать PL/I, PASCAL, C, ADA, IPL, Smalltalk.

Попереднє покоління західних програмістів з усіх мов програмування та їх версій (а їх майже 300) для обробки економічної інформації обрало COBOL (Common Business Oriented Language). Зараз весь комп’ютерний світ шукає вирішення «проблеми 2000 року», і проводить ревізію програмного забезпечення. Це дозволило з’ясу­вати, що 80 % програм (240 млрд. рядків вихідного тексту) написано саме на COBOL. Найдивніше у цьому те, що вони коригувалися багато разів різними програмістами, але досі працюють (КО 31/98).

Якщо ви добре знаєтесь на якійсь мові програмування й у змозі створювати довговічні, надійні, спадкоємні, самодокументовані, керовані, параметризовані, економічні, швидкодійні, платформено незалежні програми, то така мова має право на довговічне життя.

Майже кожна мова має свою нішу. Зовсім не обов’язково кожного року переходити на нову — модну — мову програмування або на її нову версію без крайньої потреби.

Коли народилась ідея баз даних, то, природно, виникли проблеми розвитку мов, які використовуються в системах управління БД, а саме — мов трьох типів: мови опису (визначення) даних, мови маніпулювання даними та мови запитів. Хоча є мови (наприклад, SQL), які містять засоби та виконують функції всіх цих мов.

Необхідно зазначити, що мови та системи програмування, використовувані у СУБД, базуються на відомих мовах програмування. Наприклад, мова PL/I має засоби, що реалізують операції над масивами будь-якої розмірності, а також над перетинами масивів (перетин — виділення будь-якої частини масиву-рядка, стовпчика, площини...). Ці можливості цілком перенесено в табличні мови програмування. Необхідно визначити, що дані в БД можуть бути подані у вигляді таблиць і всі оператори використовують за операнди імена таблиць та умови вибору із них (перетин) рядків та стовпчиків. Вихідна інформація (результати обробки запитів) також подається у вигляді таблиць. Однак треба взяти до уваги, що тут поняття «таблиця» дещо узагальнене.

Робота із СУБД дала новий поштовх розвитку інтерактивних мов програмування — мовам користувачів, основною складовою частиною яких є засоби ведення та реалізації діалогу «людина — комп’ю­тер», що передбачають можливість втручання користувача у процес розробки та виконання прикладних програм, внесення до них змін і т.ін.

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

Третій напрямок розвитку мов програмування — це перерозподіл функцій між програмними та апаратними засобами, тоді як раніше перерозподіл функцій йшов між програмістами та ЕОМ (через ПЗ). Так з’явились видавничі системи, ЕОМ-транслятори, тобто те, що раніше називали спеціалізованими ЕОМ, аналоговими ЕОМ. Отже, з’явились програмно-апаратні комплекси. Мови, що створюються та розвиваються у перелічених напрямках, відносять до четвертого та п’ятого поколінь, але межа між ними визначена недостатньо чітко, ще й досі спричиняє суперечки між спеціалістами, хоча це, взагалі кажучи, не є суттєвим.

7.1.4. Питання стандартизації мов програмування та мобільності програмних продуктів

Враховуючи, що поява, розвиток та вдосконалення інформаційних технологій, апаратних і програмних засобів тісно пов’язані між собою (шляхи їх можуть йти паралельно або перетинатись), а кількість цих засобів — сотні й тисячі виробників, на перше місце висуваються проблеми стандартизації та сумісності, мобільності програмного забезпечення (ПЗ). Навіть поняття мобільності ПЗ змінило свою сутність: якщо раніше це була просто можливість перенесення ПЗ з одного типу ЕОМ на інший, то тепер під мобільністю ПЗ розуміють його здатність до адаптації у новому середовищі використання.

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

Будь-яка мова програмування — це настільки складна система, яка може стандартизуватися по багатьох параметрах, що жодна з мов не може вважатися цілком стандартизованою. Є тільки один виняток з цієї множини — це мова програмування ADA (на ім’я першої програмістки Ади Байрон), створена та використовувана у Міністерстві оборони США та держав НАТО. Стандартизація як головна вимога до всіх прикладних додатків, оболонок, трансляторів і т.ін., закладена первісно, щорічно контрольована, на неї витрачаються мільярди доларів. Рішення щодо розробки мови (за всіма вимогами) та її використання, прийняте до неухильного виконання, дозволило розробити її кращими програмістами найвідоміших компаній. З огляду на специфіку пріоритетів вимог до мови, вона відрізняється від інших зручністю використання, швидкістю, можливістю обробки інформації, отриманої від різноманітних джерел та пристроїв, надійністю, механізмом обробки переривань, неприпустимістю зупинки системи обробки, а також нехтуванням зручностей розробників ПЗ. Використання цієї мови зняло проблему сумісності ПЗ у повністю комп’ютеризованій системі оборони, значно підвищило її надійність.

За прогнозами фахівців, мова ADA інтенсивно використовуватиметься десь до 2005 року, а потім поступиться промисловому синтезу таких самих надійних програм.

Важко прогнозувати долю мови ADA в Україні, бо поки що нею користуються окремі ентузіасти. В той самий час в інших країнах ADA використовується у різних галузях, окрім військової.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]