Реферат на тему:
Мови програмування, їх класифікація та розвиток
ЗМІСТ.
1.Вступ
1.1. Інтерпретатори
1.2. Компілятори
2. Класифікація мов програмування
2.1. Машинно - орієнтовані мови
2.1.1. Машинні мови
2.1.2. Мови символічного кодування
2.1.3. Автокодом
2.1.4. Макрос
2.2. Машинно - незалежні мови
2.2.1. Машинно - незалежні мови
2.2.2. Універсальні мови
2.2.3. Діалогові мови
2.2.4. Непроцедурного мови
3. Розвиток мов програмування
3.1. Асемблер
3.2. Лісп
3.4. Бейсік
3.5. Рефаїл
3.6. Пролог і Пролог + +
3.7. Лекс
3.8. Сі
3.8.1. Особливості мови Сі
3.8.2. Недоліки мови Сі
3.9. Сі + +
3.9.1. Зауваження за проектом мови Сі + +
4. Висновок
5. Бібліографія
1. ВСТУП
Мова формує наш спосіб
мислення і визначає те,
про що ми можемо мислити.
Б.Л Ворф
Прогрес комп'ютерних технологій визначив процес появи нових
разнообразнихзнакових систем для запису алгоритмів - мов програмування.
Сенс появи такої мови - оснащений набір обчислювальних формул
дополнітельнойінформаціі, перетворює даний набір в алгоритм.
Мова програмування служить двом пов'язаних між собою цілям: він дає
програмісту апарат для завдання дій, коториедолжни бути виконані, і
формує концепції, якими користується програміст, розмірковуючи про те, що
робити. Першої мети ідеально відповідає мову, которийнастолько "близький до машини",
що всіма основними машинними аспектами можна легко і просто оперувати
досить очевидним для програміста образом.Второй цілі ідеально відповідає
мова, яка настільки "близький до розв'язуваної задачі", щоб концепції її рішення
можна було виражати прямо і коротко.
Зв'язок між мовою, на якому ми думаємо/програмуємо, і завданнями та рішеннями,
які ми можемо представляти в своїй уяві, дуже близька. Тому причин
обмежувати властивості мови тільки цілями виключення помилок програміста в
кращому випадку небезпечно. Як і у випадку з природними мовами, є величезна
користь бути, принаймні, двомовним. Мова надає програмісту набір
концептуальних інструментів, якщо вони не відповідають завданню, тоіх просто
ігнорують. Наприклад, серйозні обмеження концепції покажчика змушують
програміста застосовувати вектора і цілу арифметику, щоб реалізоватьструктури,
покажчики і т.п. Гарне проектування і відсутність помилок не може
гарантуватися чисто за рахунок мовних засобів.
Може здатися дивним, але конкретний комп'ютер здатний працювати з
програмами, написаними на його рідному машинному мовою. Існує почтістолько
ж різних машинних мов, скільки і комп'ютерів, але всі вони суть різновиди
однієї ідей прості операції здійснюються зі швидкістю блискавки надвоічних числах.
Персональні комп'ютери IBM використовують машинний мова мікропроцесорів сімейства
8086, тому що їх апаратна частина грунтується іменнона даних мікропроцесори.
Можна писати програми безпосередньо на машинній мові, хоча це й складно. На
зорі комп'ютеризації (на початку 1950-х р.р.), машинний мова биледінственним
мовою, більшого людина до того часу не придумав. Для порятунку програмістів
від суворого машинної мови програмування, були створені язиківисокого рівня
(тобто немашінние мови), які стали своєрідною сполучною мостом між
людиною і машинним мовою комп'ютера. Мови високогоуровня працюють через
трансляційні програми, які вводять "вихідний код" (гібрид англійських слів
і математичних виразів, який счітиваетмашіна), і в остаточному підсумку
змушує комп'ютер виконувати відповідні команди, які даються на
машинному мовою. Існує два основних відатрансляторов: інтерпретатори,
які сканують і перевіряють вихідний код у один крок, і компілятори, які
сканують вихідний код для виробництва текстапрограмми на машинній мові,
яка потім виконується окремо.
1.1. Інтерпретатори
Одне, часто згадується перевага інтерпретаторной реалізації полягає в тому,
що вона допускає "безпосередній режим". Непосредственнийрежім дозволяє вам
задавати комп'ютера завдання на зразок PRINT 3.14159 * 3/2.1 і повертає вам слово, як
тільки ви натиснете клавішу ENTER (це позволяетіспользовать комп'ютер вартістю
3000 доларів в якості калькулятора вартістю 10 доларів). Крім того,
інтерпретатори мають спеціальні атрибути, які спрощують налагодження. Можна,
наприклад, перервати обробку інтерпретаторной програми, відобразити вміст
визначених перемінних, побіжно просмотретьпрограмму, а потім продовжити
виконання.
Найбільше програмістам подобається в інтерпретатора можливість отримання
швидкої відповіді. Тут немає необхідності в компілювання, так какінтерпретатор
завжди готовий для втручання у вашу програму. Введіть RUN і результат вашого
самого останнього зміни виявляється на екрані.
Однак інтерпретаторние мови мають недоліки. Необхідно, наприклад, мати
копію інтерпретатора в пам'яті весь час, тоді як багато
возможностіінтерпретатора, а отже і його можливості можуть не бути
необхідними для виконання конкретної програми.
Слабо помітним недоліком інтерпретаторів є те, що вони мають
тенденцію відбивати охоту до хорошого стилю програмування. Оскільки
коментарі інших формалiзуються, деталі займають значне місце програмної
пам'яті, люди прагнуть ними не користуватися. Диявол менше люті, ніж
програміст, який працює на інтерпретаторном Бейсіку, який намагається отримати
програму в 120К в пам'яті ємністю 60К. але найгірше те, що інтерпретатори
тихохідні. Імізатрачівается занадто багато часу на розгадування того, що
робити, замість того щоб займатися дійсно справою.
При виконанні програмних операторів, інтерпретатор повинен спочатку сканувати
кожен оператор з метою прочитання його вмісту (що цей человекпросіт мене
зробити?), а потім виконати потрібну операцію. Оператори в циклах
скануються надто багато.
Розглянемо програму: на інтерпретаторном Бейсік 10 FOR N = 1 TO 1000 20 PRINT
N, SQR (N) 30
NEXT N при першому переході по цій програмі Бейсік-Інтерпретатор повинен
розгадати що означає рядок 20:
1.преобразовать числову змінну N в рядок
2.послать рядок на екран
3.переместіть в наступну зону друку
4.вичісліть квадратний корінь з N
5.преобразовать результат в рядок
6.послать рядок на екран
При другому проході циклу все це розгадування повторюється знову, так як
абсолютно забуті всі результати вивчення цього рядка якусь мілісекунди
томуназад. І так у всіх наступних 998 проходах. Цілком очевидно, що якщо
вам вдалося якимось чином відокремити фазу сканування/розуміння від
фазиісполненія ви мали б більш швидку програму. І це саме те, для чого
існують компілятори.
1.2. Компілятори
Компілятор-це транслятор тексту на машинний мова, яка зчитує вихідний
текст. Він оцінює його відповідно до синтаксичної конструкціейязика і
перекладає на машинний мова. Іншими словами, компілятор не виконує програми,
він їх будує. Інтерпретатори неможливо відокремити від програм, які ними
проганяються, компілятори роблять свою справу і йдуть зі сцени. При роботі з
компілюються мовою, таким як Турбо-Бейсік, ви прийдете кнеобходімості мислити
про ваших програмах в ознаках двох головних фаз їх життя: періоду компілювання
і періоду прогону. Більшість програм будутпрогоняться в чотири - десять разів
швидше їх інтерпретаторних еквівалентів. Якщо ви попрацюєте над поліпшенням, то
зможете досягти 100-кратного повишеніябистродействія. Зворотний бік монети
полягає в тому, що програми, які витрачають велику частину часу на метушню з
файлами на дисках або ожіданіеввода, не зможуть продемонструвати якесь
вражаюче збільшення швидкості.
2. КЛАСИФІКАЦІЯ МОВ ПРОГРАМУВАННЯ
2.1. Машинно - орієнтовані мови
Машинно - орієнтовані мови - це мови, набори операторів і
образотворчі засоби которихсущественно залежать від особливостей ЕОМ
(внутрішнього мови, структури пам'яті і т.д.). Машинно-орієнтовані мови
дозволяють використовувати всі можливості іособенності Машинно - залежних мов:
- Висока якість створюваних програм (компактність і швидкість виконання);
- Можливість використання конкретних апаратних ресурсів;
- Передбачуваність об'єктного коду та замовлень пам'яті;
- Для складання ефективних програм необхідно знати систему команд і
особенностіфункціонірованія даної ЕОМ;
- Трудомісткість процесу складання програм (особливо на машинних мовах і
ЯСК), погано захищеного отпоявленія помилок;
- Низька швидкість програмування;
- Неможливість безпосереднього використання програм, складених на цих
мовами, на ЕВМдругіх типів.
Машинно-орієнтовані мови за ступенем автоматичного програмування
підрозділяються на класи.
2.1.1. Машинна мова
Як я вже згадував, у введенні, окремий комп'ютер має свій певний
Машіннийязик (далі МЯ), йому наказують виконання згаданих операцій над
обумовленими ними операндами, тому МЯ є командним. Однак, деякі
сімейства ЕОМ (наприклад, ЄС ЕОМ, IBM/370/тощо) мають єдиний МЯ для ЕОМ різної
мощності.В команделюбого з них повідомляється інформація про місцезнаходження
операндів і тип виконуваної операції.
У нових моднлях ЕОМ намічається тенденція до підвищення внутрішніх мов машинно -
апаратним шляхом реалізовувати більш складні команди, прібліжающіесяпо своїм
функціональним дій до операторів алгоритмічних мов програмування.
2.1.2. Мови Символічного Кодування
Продовжимо розповідь про командні мовами, Мови Символічного Кодування (далі
ЯСК), так само, як і МЯ, є командними. Однак коди операцій та адреси в
машинних командах, що представляють собою послідовність двійкових (під
внутрішньому коді) або вісімкових (частоіспользуемих при написанні програм)
цифр, в ЯСК заміщені знаком (ідентифікатори), форма написання яких
допомагає програмісту легчезапомінать смисловий зміст операції. Це
забезпечує суттєве зменшення кількості помилок при складанні програм.
Використання символічних адрес - перший крок до створення ЯСК. Команди ЕОМ
вместоістінних (фізичних) адрес містять символічні адреси. За
результатами складеної програми визначається необхідна кількість осередків для
храненіяісходних проміжних і результуючих значень. Призначення адрес,
що виконується окремо від складання програми в символічних адресах,
можетпроводіться менш кваліфікованим програмістом або спеціальної
програмою, що в значній мірі полегшує працю програміста.
2.1.3. Автокодом
Є також мови, що включають у себе всі можливості ЯСК, за допомогою
расшіренноговведенія макрокоманд - вони називаються автокодом.
У різних програмах зустрічаються деякі досить часто використовуються
командниепоследовательності, які відповідають певним процедурам
перетворення інформації. Ефективна реалізація таких процедур
обеспечіваетсяоформленіем їх у вигляді спеціальних макрокоманд і включенням
останніх в мову програмування, доступний программісту.Макрокоманди
переводяться в машинні команди двома шляхами - розстановкою і генеруванням. В
постановочної системі містяться «кістяки» - серії команд, реалізующіхтребуемую
функцію, позначену дії. Дії забезпечують передачу
фактичних параметрів, які в процесі трансляції вставляються в «кістяк»
програми, перетворюючи її в реальну машинну програму.
В системі з генерацією є спеціальні програми, що аналізують
дії, які визначають, яку функцію необхідно виконати і формують
необхідну послідовність команд, що реалізують цю функцію.
Обидві зазначених системи використовують транслятори з ЯСК і набір макросів, які
також являютсяоператорамі автокодом.
Розвинені автокодом отримали назву Асемблер. Сервісні програми тощо, як
правило, составленина мовах типу Асемблер. Більш повна інформація про мову
Асемблера див. нижче.
2.1.4. Макрос
Мова, що є засобом для заміни послідовності символів описують
виконання необхідних дій ЕОМ наболее стислу форму - називається Макрос
(засіб заміни).
В основному, Макрос призначений для того, щоб скоротити запис вихідної
програми. Компонент програмного забезпечення, обеспечівающійфункціонірованіе
макросів, називається Макропорцесори. На Макропорцесори надходить
макроопределяющій і початковий текст. Реакціямакропроцессора на виклик-видача
вихідного тексту.
Макрос однаково може працювати, як з програмами, так і з даними.
2.2. Машинно - незалежні мови
Машинно - незалежні мови - це засіб опису алгоритмів вирішення завдань і
інформації, що підлягає обробці. Оніудобни у використанні для широкого кола
користувачів і не вимагають від них знання особливостей організації
функціонування ЕОМ і нд
Подібні мови отримали назву високорівневих мов програмування.
Програми, составляемиена таких мовах, являють собою послідовності
операторів, структуровані відповідно до правил розглядання мови (завдання,
сегменти, блоки і т.д.). Оператори мови описують дії, які повинна
виконувати система після трансляції програми на МЯ.
Т.ч., командні послідовності (процедури, підпрограми), часто використовувані
в машіннихпрограммах, представлені в високорівневих мовах окремими
операторами. Програміст отримав можливість не розписувати в деталях
обчислювальний процесно рівні машинних команд, а зосередитися на основних
особливості алгоритму.
2.2.1. Проблемно - орієнтовані мови
З розширенням областей застосування обчислювальної техніки виникла необхідність
формалізувати уявлення постановки і рішення нових классовзадач. Необхідно
було створити такі мови програмування, які, використовуючи в даній області
позначення та термінологію, дозволили б описувати требуемиеалгорітми рішення
для поставлених завдань, ними стали проблемно - орієнтовані мови. Ці мови,
мови орієнтовані на решеніеопределенних проблем, повинні забезпечити
програміста засобами, що дозволяють коротко і чітко формулювати завдання і
отримувати результати у необхідній формі.
Проблемних мов дуже багато, наприклад:
Фортран, Алгол - мови, створені для вирішення математичних завдань;
Simula, слензі - для моделювання;
Лісп, Снобол - для роботи з обліковим структурами.
Про ці мовах я розповім далі.
2.2.2. Універсальні мови
Універсальні мови були створені для широкого кола завдань: комерційних,
наукових, моделювання і т.д. Перший універсальний язикбил розроблений фірмою
IBM, що став в послідовності мов Пл/1. Другий за потужністю універсальний
язикназивается Алгол-68. Він дозволяє працювати з символами, розрядами, числами з
фіксованою та плаваючою комою. Пл/1 має розвинену сістемуоператоров для
управління форматами, для роботи з полями змінної довжини, з даними
організованими в складні структури, і для ефективного іспользованіяканалов
зв'язку. Мова враховує включені в багато машини можливості переривання і має
відповідні оператори. Передбачена возможностьпараллельного виконання
ділянок програм.
Програми в Пл/1 компілюються за допомогою автоматичних процедур. Мова
використовує многіесвойства Фортран, Алгол, Кобол. Проте він допускає не
тільки динамічне, але і кероване і статистичне розподілу пам'яті.
2.2.3. Діалогові мови
Поява нових технічних можливостей поставило завдання перед системними
програмістам?? -Створити програмні засоби, що забезпечують оперативне
взаємодія людини з ЕОМ їх назвали діалоговими мовами.
Ці роботи велися в двох напрямках. Створювалися спеціальні керуючі мови
дляобеспеченія оперативного впливу на проходження завдань, які
складалися на будь-яких раннє неопрацьованих (не діалогових) мовами.
Розроблялися такжеязикі, які крім цілей управління забезпечували б
опис алгоритмів вирішення завдань.
Необхідність забезпечення оперативної взаємодії з користувачем
зажадала сохраненіяв пам'яті ЕОМ копії вихідної програми навіть після отримання
об'єктної програми в машинних кодах. При внесенні змін до програми з
іспользованіемдіалогового мови система програмування за допомогою спеціальних
таблиць встановлює взаємозв'язок структур вихідної та об'єктної програм. Це
позволяетосуществіть необхідні редакційні зміни до об'єктної програмі.
Одним із прикладів діалогових мов є Бейсік.
Бейсік використовує позначення подібні звичайним математичним виразами. Багато
оператори є спрощеними варіантаміоператоров мови Фортран. Тому цей
мова дозволяє вирішувати досить широке коло завдань.
2.2.4. Непроцедурного мови
Непроцедурного мови складають групу мов, що описують організацію даних,
оброблюваних за фіксованими алгоритмами (табличні мови і генератори
звітів), і мов зв'язку з операційними системами.
Дозволяючи чітко описувати як завдання, так і необхідні для її вирішення дії,
табліцирешеній дають змогу в наочній формі визначити, які умови
повинні бути виконані перш ніж переходити до якого-небудь дії. Одна
табліцарешеній, що описує деяку ситуацію, містить всі можливі
блок-схеми реалізацій алгоритмів рішення.
Табличні методи легко освоюються фахівцями будь-яких професій.
Програми, складені на табличному мовою, зручно описують складні ситуації,
вознікающіепрі системному аналізі.
3. РОЗВИТОК МОВ ПРОГРАМУВАННЯ
3.1 Асемблер
Мова Асемблера - це символічне подання машинної мови. Він полегшує
процес програмування в порівнянні з програмуванням вмашінних кодах.
Програмістові не обов'язково вживати справжні адреси комірок пам'яті з
розміщеними в них даними, що беруть участь в операції, і обчислювані результати, а
також адреси тих команд, до яких програма не звертається.
Деякі завдання, наприклад, обмін з нестандартними пристроями обробки даних
складних структур неможливо решітьс допомогою мов програмування високого
рівня. Це під силу асемблеру.
В принципі, мова Асемблер є машинним мовою. І програміст реалізує
яку-небудь завдання на мовах високого рівня, за допомогою Ассемблераможет
визначити осмислено чи рішення даного завдання, з точки зору використання ЕОМ.
Уміючи розібратися в роздруківці мови асемблера, дає можливість полегшити пошук
помилок в програмах, тому що деякі мови являютсякомпіляторамі (див. п. 1.2.).
3.2. Лісп
Один з найстаріших язиковпрограммірованія Фортран був створений в 50-х рр.. нашого
століття. Фортран іподобние йому мови програмування (Алгол, ПЛ/1) призначалися
длярешенія обчислювальних задач, що виникають в математиці, фізиці,
інженернихрасчетах, економіку тощо Ці мови в основному працюють з числами.
Другий найстаріший мова програмування Лісп (List Information Symbol
Processing), Дж. Маккарті у 1962 р. скоріше для роботи сострокамі символів,
ніж для роботи з числами. Це особливе призначення Ліспу відкрило для
програмістів нову галузь діяльності, відому нині, як «штучний
інтелект ». В даний час Лісп успішно застосовується в експертних системах,
системах аналітичних обчислень і т.п.
Великі області можливих додатків Ліспу викликала появу безлічі
разлічнихдіалектов Ліспу. Це легко пояснити: застосування Ліспу для розуміння
природної мови вимагає певного набору базисних функцій, відмінних,
наприклад, від використовуваного в задачах медичної діагностики.
Існування безлічі різних діалектів Ліспу призвело до створення на початку
80-х гг.Common LISP Комітету, який повинен був вибрати найбільш підходящий
діалект Ліспу і запропонувати його в якості основного. Етотдіалект, вибраний
Комітетом в 1985р., Отримав назву Common LISP. Надалі він був прийнятий в
університетах США, атакож багатьма розробниками систем штучного
інтелекту, як основний діалекту мови Лісп.
Мова програмування Лісп істотно відрізняється від інших мов
програмування, таких, як Паскаль, Сі і т.п. Робота ссімволамі і робота з
числами як з основними елементами вимагає різних способів мислення.
Спочатку Лісп билзадуман як теоретичний засіб для рекурсивних
побудов, а сьогодні онпревратілся в могутній засіб, що забезпечує
програміста різноманітної підтримкою, що дозволяє йому швидко будувати прототипи
вельми і вельми серьезнихсістем.
Професор Массачусетського технологічного інституту Дж. Саммай зауважив, що
математична ясність і гранична чіткість Ліспу - це ще не все.Главное -
Лісп дозволяє сформулювати і запам'ятати «ідіоми», настільки характерні для
проектів з штучного інтелекту.
3.3.Фортран
Одним з перших і найбільш вдалих компіляторів стала мова Фортран, розроблений
фірмою IBM. Професор Дж. Букс і группаамеріканскіх фахівців в області
програмування в 1954 році опублікувало перше повідомлення про мову. Дослівно,
назва мови FORmulae TRANslation-перетворення формул.
Серед причин довголіття Фортрану (а він один з найпоширеніших мов в
світі), можна відзначити просту структуру, як самогоФортрана, так і
призначених для нього трансляторів. Програма на Фортране записується
впоследовательності пропозицій або операторів (опис якогось перетворення
інформації), і оформляється за певними стандартами. Ці стандартинакладивают
обмеження, зокрема, на форму запису і розташування частин оператора в
рядку бланка для запису операторів. Програма, записана наФортране,
являє собою один чи кілька сегментів (підпрограм) з операторів.
Сегмент, що керує роботою всієї програми в цілому, називаетсяосновной
програмою.
Фортран був задуманий для використання у сфері наукових і
інженерно-техніческіхвичісленій. Однак на цій мові легко описуються завдання з
розгалуженою логікою (моделювання виробничих процесів, рішення ігрових
ситуацій і т.д.), деякі економічні завдання і особливо завдання редагування
(складання таблиць, зведень, відомостей і т.д.).
Модифікація мови Фортран, що з'явилися в 1958 році, отримала назву Фортран II
і містила понятіеподпрограмми і загальних змінних для забезпечення зв'язку між
сегментами.
До 1962 року відноситься поява мови, відомого під ім'ям Фортран IV
тане найбільш вживаною в даний час. До цього ж часу
відноситься і початок діяльності комісії при Американській Асоціації
Стандартів (ASA), яка виробила до 1966 року два стандарти - мови Фортран
ібазісний (основний) Фортран (Basic FORTRAN). Ці мови
пріблізітельносоответствуют модифікаціям IV і II, однак базисний Фортран
є підмножиною Фортрану, у той час, як Фортран IIтаковим для Фортрану
IV не є. Мова Фортран до сих пір продовжує розвиватися і
удосконалюватися, впливаючи насозданіе і розвиток інших мов.
Наприклад, Фортран закладений в основу Basic - діалогового мови, дуже популярного
для вирішення невеликих завдань, превосходногоязика для навчання навичкам
використання алгоритмічних мов в практиці програмування. Розроблено
ця мова - Beginner's All-purpose Symbolic Instruction Code-групою
співробітників Обчислювального центру Дармутского коледжу, штат Нью-Гемпшир
створений в 19 .... . Але це вже наступний мова.
3.4. Бейсік
Як знамениті гамбургери, бейсбол і баскетбол, Бейсік - це продукт Нової
Англії. Як я говорив, створений у 1964р., Як мова обученіяпрограммірованію.
Бейсік є загальноприйнятим акронімом від "Beginner's All-purpose Symbolic
Insruction Code "(BASIC) - Багатоцільовий Символічний Навчальний Код для
Початківців ".
Незабаром як учні, так і автори програм виявили, що Бейсік може робити
практично все те, що робить нудний незграбний Фортран. Атак як Бейсік було
легко навчитися і легко з ним працювати, програми на ньому писалися звичайно
швидше, ніж на Фортране. Бейсік було такжедоступен на персональних комп'ютерах,
зазвичай він вбудований в ПЗУ. Так Бейсік завоював популярність. Цікаво, що через
20 років після винаходу Бейсіка, він і сьогодні самий простий для освоєння з
десятків мов общецелевого програмування, що є в розпорядженні
любителів програмування. Хворіє, він чудово справляється з роботою.
Незважаючи на висловлювання снобів - прихильників мов Сі і Паскаля, Бейсік
вважається діловою мовою, забезпеченим потужними засобами вирішення специфічних
завдань, які зазвичай більшість користувачів вирішують за помощінебольшіх
комп'ютерів, а саме: працюючи з файлами і виводячи текстове і графічне
зображення на екрані дисплея.
Незважаючи на окремі недоліки Бейсіка, ніхто не буде заперечувати, що Кемені і
Куртс досягли основної мети: зробити програмування доступнеедля більшого
кількості людей.
Історично Бейсік зазвичай реалізувався як інтерпретатор (знайомим ізомером
є сам інтерпретаторний Бейсік). Причинами переходу від аматорського рівня
до професійного є численні розширення класичної версії
мови: можливість отключеніянумераціі рядків, многостроковие структуровані
програмні конструкції, структури типу "запис", що входять в імена підпрограми з
параметрами ілокальние змінні.
Більше того, з появою транслятора QuickBasic фірми Microsoftразработчікі
отримали можливість будувати на Бейсіку програми з роздільно
компільованих модулів, деякі з яких можуть бути напісанина інших
мовах. Тепер, як і у випадку інших провідних мов програмування,
розробник має вибір з кількох промислових бібліотекподпрограмм, які
містять готові рішення для поширених завдань програмування.
3.5.Рефал
Безсумнівно треба розповісти і про деяких мовах програмування створених у нас
на родіне.Одін з таких мов є Рефаїл, розроблений у нас в Росії
(СРСР), в 1966р. ІПМ АН СРСР. Ця мова простий і зручний для опису маніпуляцій
надпроізвольнимі текстовими об'єктами.
Рефаїл широко застосовується при розробці трансляторів з алгоритмічних мов
як універсальних і проблемно - орієнтованих, так іавтокодов. Крім
використання в задачах трансляції, Рефаїл має такі важливі сфери застосування,
як машинне виконання громіздких аналітіческіхвикладок в теоретичній фізиці
та прикладної математики; проектування «розумних» інформаційних систем,
здійснюють нетривіальну логічну обработкуінформаціі; машинне
доказ теорем; моделювання цілеспрямованої поведінки; розробка
діалогових навчальних систем; дослідження в областііскусственного інтелекту і
тощо
Програмування на Рефале має специфіку, пов'язану, насамперед, з тим, що
Рефаїл являетсяязиком функціонального типу на відміну від звичайних операторних
мов типу Алгол, Фортран, тощо. Якщо програма на операторних мовами - ні що
інше, каксовокупность наказів-операторів, то програма на Рефале представляє
собою по суті опис зв'язків і відносин між певними поняттями.
Внаслідок того, що в Рефале програміст сам визначає структуру
обрабативаемойінформаціі, ефективність програми істотно залежить від
вдалого або невдалого вибору цієї структури. Для завдання структур в
Рефалеіспользуются дужки, а специфіка усіх реалізацій мови така, що
використання дужок різко підвищує ефективність виконання програми.
Етодостігается за допомогою адресного з'єднання дужок.
Певною специфікою володіють і змінні типу «вираження» - мається на увазі
іхспособность подовжуватися при ототожненні. Правильне використання змінних
цього типу також дозволяє значно підвищити ефективність Рефаїл-програми.
3.6. Пролог і Пролог + +
Пролог - це мова, призначена для пошуку рішень. Це декларативний мову,
тобто формальна постановка задачі може битьіспользована для її вирішення.
Пролог визначає логічні відносини в задачі, як відмінні від покрокового
вирішення цього завдання.
Центральною частиною Прологу є кошти логічного висновку, що вирішують
запити, використовуючи заданий безліч фактова правил, до яких звертаються як до
твердженнями. Пролог також не має поділу змінних на типи і може
динамічно додавати правила і факти ксредствам виводу. Таким чином, це
гнучка мова, і він більш придатний для об'єктно-орієнтованого розширення, ніж
мова зі строго заданими типами, наприклад, Паскаль. Пролог + + є
додаток до стандартного Прологу.
Всі властивості мови як і раніше доступні програмістам. Отже, Пролог
+ + можна віднести до групи гібридних мов, представниками якої вважаються
Object Pascal і C + +. Розширення Пролог + + підтримує всі властивості, притаманні
звичайно об'єктно-орієнтованим мовам: концепції об'єктів і класів, одиничне
і багаторазове успадкування, розбивка на підкласи і передачусообщеній.
Підтримуються також деякі вдосконалені властивості, що існують в
таких мовах, як C + + і Smalltalk, включаючи загальні ічастние методи.
Цікавою властивістю є підтримка в мові програмування з керуванням
даними. Ця техніка, яка може бути ещеназвана програмуванням,
"керованим подіями", використовується в більшості мов
об'єктно-орієнтованого програмування, особливо в тих, які розроблені
для машин з інтерфейсом, керованим "мишею".
Об'єктно-орієнтована програма реагує на події, які визначають
потік управління. У Пролозі + + програмування суправленіем даними досягається
за допомогою концепції демонів. Демон являє собою об'єкт, методи якого
викликаються у разі определеннихсобитій і можуть бути таким чином використані
для підтримки програмування з управлінням даними.
Сам мова заснований на концепції передачі повідомлень. Програма на Пролозі + +
строітсявокруг багатьох об'єктів Прологу + +, що обмінюються повідомленнями.
У цьому сенсі Пролог + + ближче до чістомуоб'ектно-орієнтованого мови, такому,
як Smalltalk, ніж C + + або Object Pascal. Визначення об'єктів будуються виходячи
з викликів
Open_Object [імя_об'екта] і Close_Object [імя_об'екта], а методи
определяютсяпрактіческі так само, як в інших об'єктно-орієнтованих мовах.
Для завдання наслідування можна явно вказати, який метод якого об'єкта
долженнаследоваться, що є необхідним для багаторазового успадкування.
3.7. Лекс
Лекс - генератор програм лексичного аналізу. Лексичний аналіз - це
розпізнавання лексем у вхідному потоці символів. Припустимо, чтозадано
деяке кінцеве безліч слів (лексем) в деякому мовою і деякий вхідна
слово. Необхідно встановити, який елемент безлічі (якщо онсуществует)
збігається з даними вхідним словом. Зазвичай лексичний аналіз виконується так
званим лексичним аналізатором. Лексичний аналізатор-це програма.
Лексичний аналіз застосовується в багатьох випадках, наприклад, для побудови
пакетного редактора або як розпізнавача директив вдіалоговой програмі
і т.д. Однак, найбільш важливе застосування лексичного аналізатора - це
використання його в компіляторі. Тут лексичний аналізатор виполняетфункцію
програми введення даних.
Лексичний аналізатор виконує першу стадію компіля?? ії - читає рядки
модульна програми, виділяє лексеми і передає їх на дальнейшіестадіі
компіляції (граматичний розбір, кодогенерацію і т.д.).
Лексичний аналізатор розпізнає тип кожної лексеми і відповідним чином
позначає її. Наприклад, при компіляції Сі-программимогут бути виділені наступні
типи лексем: число, ідентифікатор, оператор, обмежувач і т.д.
Лексичний аналізатор повинен не тільки виділити лексему, але і виконати
деякі перетворення. Наприклад, якщо лексема - число, то егонеобходімо
перевести у внутрішню (двійкову) форму запису як число з плаваючою або
фіксованою комою. А якщо лексема - ідентифікатор, то його
необходіморазместіть в таблиці, щоб в подальшому звертатися до нього не по
імені, а за адресою у таблиці.
Хоча лексичний аналіз по своїй ідеї простий, проте, ця фаза роботи
компілятора часто займає більше часу, ніж будь-яка другая.Частічно це
відбувається через необхідність переглядати та аналізувати вихідний текст
символ за символом. Іноді навіть буває необхідно вернутьпрочітанний символ під
вхідний потік з тим, щоб повторити перегляд і аналіз.
3.8. Cи
Сі - це мова програмування загального призначення, добре відомий своєю
ефективністю, економічністю, і переносимістю. Зазначені переваги Сі
забезпечують добру якість розробки майже будь-якого виду програмного
продукта.Іспользованіе Сі як інструментального мови дозволяє отримувати
швидкі і компактні програми. У багатьох випадках програми, написані на
Сі, порівнянні за швидкості з програмами, написаними на мові асемблера. При цьому
вони мають кращу наочність і їх більш просто супроводжувати. Сі
сочетаетеффектівность і потужність у відносно малому за розміром мовою.
Сі - це чудовий мову, і хоча деяким він не подобається, але все ж таки
большінствопрограммістов його люблять. На Сі ви можете створювати програми, які
роблять все, що ви побажаєте. Немає іншого такого мови, який би так
жестімуліровал до програмування. Створюється враження, що інші мови
програмування ставлять штучні перешкоди для творчості, а Сі-ні.
Використання цієї мови дозволяє скоротити витрати часу на створення
працюючих програм. Сі дозволяє програмувати швидко, ефективно і
передбачувано. Ще одна перевага Сі полягає в тому, що він дозволяє
використовувати всі можливості вашої ЕОМ. Ця мова созданпрограммістом для
використання іншими програмістами, чого про інших мовах програмування
сказати не можна.
3.8.1. Особливості мови Сі
Мова Сі має свої суттєві особливості, давайте перерахуємо деякі з
них:
Сі забезпечує повний набір операторів структурного програмування. Сі
пропонує незвично великий набороперацій. Багато операції Сі відповідають
машинним командам, і тому допускають пряму трансляцію в машинний до