русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


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


Дата додавання: 2014-11-28; переглядів: 1699.


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

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використовується у різних галузях, окрім військової.

7.1.5. Програмні інтерфейси та інструментальні засоби
розробки програмних продуктів

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

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

Інтерфейс модуля складається з двох компонент: статичний інтерфейс та динамічний інтерфейс.

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

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

Позамовні засоби називають оточенням мови програмування або системою підтримки розробок програмного забезпечення (ПЗ).

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

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

БД призначена для централізованого збереження всіх даних, пов’язаних з проектом (дані контрольних прикладів, обмеження, умови...)

Інтерфейсами є сукупність уніфікованих засобів, які забезпечують взаємодію з БД, інструментальними засобами та користувачами.

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

Повний набір інструментальних засобів програмування містить:

— компілятор;

— редактор текстів;

— редактор зв’язків;

— процесор візуального виводу;

— формувач перехресних посилань;

— аналізатор передач управління в програмному комплексі;

— інтерактивний динамічний налагоджувач;

— користувацький інтерфейс;

— засоби конфігураційного управління проектом;

— мовно орієнтований редактор;

— розвинутий мовний інтерфейс;

— засоби автоматизації верифікаціїПЗ;

— засоби автоматизації проектування ПЗ;

— оптимізатори та кодогенератори для різних ЕОМ;

— засоби обліку та контролю процесу розробки ПЗ;

— спеціалізовані проблемно орієнтовані засоби;

— графічні засоби планування та контролю розробки ПЗ.

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

1. Ієрархічне середовище розробки. Кожен рівень середовища відповідає певному користувачу або процесору. Для кожного рівня визначається зміст: атрибути, взаємозв’язки вузлів, базові функції, що забезпечують санкціонований доступ до інформації вузлів.

2. Процеси. Описані функції, пов’язані із запуском та управлінням програми.

3. Ввід/вивід. Визначені функції вводу-виводу на рівні файлів, базовий ввід/вивід на рівні пристроїв та засоби зв’язку між процесами.

4. Програми-утиліти. Визначені допоміжні функції, що допомагають у роботі зі значеннями параметрів та атрибутів.


<== попередня лекція | наступна лекція ==>
Визначення мови програмування | Термінологічний словник


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн