системи програмування

Тема 4. Системи і мови програмування

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

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

· Транслятори з мов високого рівня;

· Засоби редагування, компонування і завантаження програм;

· Макроассемблера (машинно-орієнтовані мови);

· Отладчики машинних програм.

Системи програмування, як правило, включають в себе

· Завантажувач програм (Load), що дозволяє вибрати з директорія потрібний текстовий файл програми;

· Запускатель програм (Run), який здійснює процес виконання програми;

· Компілятор (Compile), призначений для компіляції або інтерпретації вихідного тексту програми в машинний код з діагностикою синтаксичних і семантичних (логічних) помилок;

· Відладчик (Debug), що виконує сервісні функції з налагодження й тестування програми;

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

Ядро системи програмування становить мову.

Широке поширення серед розробників програм, а також при навчанні програмуванню, отримали системи програмування «Турбо» (Turbo) фірми Borland, ядром яких є транслятори з мов програмування Бейсік, Паскаль, Сі, Пролог і ін. Інтерфейс Турбо-оболонки для будь-яких систем програмування зовні абсолютно однаковий і надає користувачеві стандартний набір функцій і команд.

Технологія розробки програм з використанням популярної системи програмування Турбо-Паскаль 7 буде розглянута пізніше. У подібних інтегрованих системах програмування зроблена спроба надати розробнику програм максимум сервісних можливостей.

Класифікація мов програмування

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

Існуючі мови програмування можна розділити на дві групи: процедурні та непроцедурного (див. Рис. 4.1).

Процедурні (або алгоритмічні) програми являють собою систему приписів для вирішення конкретного завдання. Роль комп'ютера зводиться до механічного виконання цих приписів.

Процедурні мови поділяють на мови низького і високого рівня.

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

Мал. 4.1. Загальна класифікація мов програмування

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

Мовою низького рівня (машинно-орієнтованим) є Асемблер. який просто представляє кожну команду машинного коду, але не у вигляді чисел, а за допомогою умовних символьних позначень, званих мнемониками.

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

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

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

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

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

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

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

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

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

Принципово інший напрямок в програмуванні пов'язано з методологіями (іноді говорять «парадигмами») непроцедурного програмування. До них можна віднести об'єктно-орієнтоване і декларативне програмування. Об'єктно-орієнтована мова створює оточення у вигляді безлічі незалежних об'єктів. Кожен об'єкт поводиться подібно окремого комп'ютера, їх можна використовувати для вирішення завдань як «чорні ящики», не вникаючи у внутрішні механізми їх функціонування. З мов об'єктного програмування, популярних серед професіоналів, слід назвати перш за все Сі ++, для більш широкого кола програмістів переважні середовища типу Delphi і Visual Basic

При використанні декларативного мови програміст вказує вихідні інформаційні структури, взаємозв'язку між ними і те, якими властивостями повинен володіти результат. При цьому процедуру його отримання ( «алгоритм») програміст не будує (по крайней мере, в ідеалі). У цих мовах відсутнє поняття «оператор» ( «команда»). Декларативні мови можна поділити на два сімейства - логічні (типовий представник - Пролог) і функціональні (Лісп).

Охарактеризуємо найбільш відомі мови програмування.

1.Фортран (FORmula TRANslating system - система трансляції формул); найстаріший і донині активно використовується в рішенні задач математичної орієнтації мову. Є класичним мовою для програмування на ЕОМ математичних і інженерних задач

2.Бейсік (Beginner's All-purpose Symbolic Instruction Code - універсальний символічний код інструкцій для початківців); незважаючи на багато недоліків і достаток погано сумісних версій - найпопулярніший за кількістю користувачів. Широко вживається при написанні простих програм.

3.Алгол (ALGOrithmic Language - алгоритмічний мову); відіграв велику роль в теорії, але для практичного програмування зараз майже не використовується.

4.ПЛ / 1 (PL / 1 Programming Language - мова програмування перший); багатоцільовий мову; Зараз майже не використовується.

5.Паскаль (Pascal - названий на честь вченого Блеза Паскаля); надзвичайно популярний як при вивченні програмування, так і серед професіоналів. Створено на початку 70-х років швейцарським ученим Ніклаус Віртом. Мова Паскаль спочатку розроблявся як навчальний, і, дійсно, зараз він є одним з основних мов навчання програмуванню в школах і вузах. Однак, якості його в сукупності виявилися настільки високі, що їм охоче користуються і професійні програмісти. Не менш вражаючою, в тому числі і фінансової, удачі домігся Філіп Кан, француз, який розробив систему Турбо-Паскаль. Суть його ідеї полягала в об'єднанні послідовних етапів обробки програми - компіляції, редагування зв'язків, налагодження та діагностики помилок - в єдиному інтерфейсі. Версії Турбо-Паскаля заполонили практично всі освітні установи, програмістські центри та приватні фірми. На базі мови Паскаль створені кілька більш потужних мов (Модула, Ада, Дельфі).

6.Кобол (COmmon Business Oriented Language - мова, орієнтований на спільний бізнес); значною мірою вийшов з ужитку. Був задуманий як основна мова для масової обробки даних в сферах управління і бізнесу.

8.Сі (С - «сі»); широко використовується при створенні системного програмного забезпечення. Наклав великий відбиток на сучасне програмування (перша версія - 1972 г.), є дуже популярним в середовищі розробників систем програмного забезпечення (включаючи операційні системи). Сі поєднує в собі риси як мови високого рівня, так і машинно-орієнтованої мови, допускаючи програміста до всіх машинних ресурсів, чого не забезпечують такі мови, як Бейсік і Паскаль.

9.Сі ++ (С ++); об'єктно-орієнтоване розширення мови Сі, створене Бьярном Страуструпом в 1980 році. Безліч нових потужних можливостей, що дозволили різко підвищити продуктивність програмістів, наклалося на успадковану від мови Сі певну низькорівневими.

10.Дельфі (Delphi); мова об'єктно-орієнтованого «візуального» програмування; в даний момент надзвичайно популярний. Створений на базі мови Паскаль фахівцями фірми Borland мова Delphi, володіючи потужністю і гнучкістю мов Сі і Сі ++, перевершує їх по зручності і простоті інтерфейсу при розробці додатків, що забезпечують взаємодію з базами даних і підтримку різного роду робіт в рамках корпоративних мереж і мережі Інтернет .

11.Ява (Java); переносних незалежний мова об'єктно-орієнтованого програмування, надзвичайно ефективний для створення інтерактивних веб-сторінок. Ця мова була створена компанією Sun на початку 90-х років на основі СІ ++. Він покликаний спростити розробку додатків на основі Сі ++ шляхом виключення з нього всіх низькорівневих можливостей.

12.Лісп (Lisp) - функціональна мова програмування. Орієнтований на структуру даних в формі списку і дозволяє організувати ефективну обробку великих обсягів текстової інформації.

13.Пролог (PROgramming in LOGic - логічне програмування). Головне призначення мови - розробка інтелектуальних програм і систем. Пролог - це мова програмування, створена спеціально для роботи з базами знань, заснованими на фактах і правилах (одного з елементів систем штучного інтелекту). У мові реалізований механізм повернення для виконання зворотного ланцюжка міркувань, при якому передбачається, що деякі висновки або укладення істинні, а потім ці припущення перевіряються в базі знань, що містить факти і правила логічного висновку. Якщо припущення не підтверджується, виконується повернення і висувається нове припущення. В основу мови покладено математичну модель теорії числення предикатів.

Мови програмування для Інтернету:

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

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

3. Tcl / Tk. Ця мова орієнтований на автоматизацію рутинних процесів і складається з потужних команд. Він незалежний від системи і при цьому дозволяє створювати програми з графічним інтерфейсом.

4. VRML. Створено для організації віртуальних тривимірних інтерфейсів в Інтернеті. Він дозволяє описувати в текстовому вигляді різні тривимірні сцени, освітлення і тіні, текстури.

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

1. Що таке системи програмування і до якого класу програм вони відносяться?

2. Що входить до складу систем програмування?

3. Якою мовою програмування створювалися перші програми?

4. На які мови поділяються процедурні мови?

5. Охарактеризуйте мови низького рівня.

6. Яку мову відноситься до мови низького рівня?

7. Переваги мов низького рівня.

8. Охарактеризуйте мови високого рівня.

9. Переваги мов високого рівня.

10. Наведіть приклади мов високого рівня.

11. Для чого призначені транслятори?

12. Чим відрізняється компілятор від інтерпретатора?

13. Недоліки інтерпретації (як вид транслятора).

14. Що являє собою процес компіляції програми?

15. Які дії виконуються при компіляції?

16. Чим відрізняється завантажувальний модуль від об'єктного?

17. Чим відрізняється процедурне програмування від непроцедурного?

18. Які види програмування відносяться до Непроцедурного програмування?

19. Особливість декларативних мов?

20. Охарактеризуйте коротко мови програмування: Фортран, Бейсік, Паскаль, Кобол.

21. Охарактеризуйте коротко мови програмування Ада, Сі, Сі ++, Delphi, Java.

22. Наведіть приклади об'єктно-орієнтованих мов.

23. До якого класу мов відноситься мова Лісп?

24. До якого класу мов відноситься мова Пролог?


Генерація сторінки за: 0.009 сек.

Схожі статті