Формалізовані мови програмування. Мови програмування високого рівня. Види програмування Мови програмування - це формальні мови спеціально створені для спілкування людини з комп'ютером. Прикладне програмне забезпечення ЕОМ

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

Сучасні мови програмування високого рівня, такі як Паскаль, Сі, Ада, Java, C++, C# та інші, до сьогодні залишаються найпоширенішим і найпотужнішим інструментом у програмістів, котрі займаються розробкою як системного, і прикладного програмного забезпечення. З появою нових завдань та потреб функціональні можливості цих мов постійно розширюються шляхом створення більш досконалих версій.

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

Як універсальні, так і проблемно-орієнтовані мови програмування мають одну спільну рису - вони є

формальними мовами.Що ж таке формальна мова? У найзагальнішому вигляді це питання можна так: мова -це безліч пропозицій, а формальна мова -це мова, пропозиції якої побудовані за певними правилами.

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

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

Як же поставити правила побудови речень формальної мови? При відповіді на це питання ми відштовхуватимемося від двох важливих понять: синтаксисі семантикамови.

Синтаксисмови визначає структуру правильних речень і слів, а мовах програмування, до всього іншого, і допустимі структури текстів програм.

Існують різні способи опису синтаксису формальних мов (спосібам опису присвячено другий розділ навчального посібника). Найбільш використовуваними у мовах програмування є форма Бекуса - Наура(БНФ) та синтаксичні діаграми.

БНФ була розроблена Бекусом і вперше застосована для суворого опису мови АЛГОЛ-60 в 1963 р. Ця форма використовується як для опису структури мови в цілому, так і для опису окремих мовних конструкцій (підмножин мови) та її елементів - операторів, ідентифікаторів, виразів, чисел та ін.

Нижче наведено приклади БНФ, що визначають синтаксис десяткових цілих чисел та синтаксис арифметичних виразів, що містять операції «+» та «*».

БНФ десяткових цілих чисел:

= 0|1|...|9

БНФ арифметичних виразів:

:= () а

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

У лівій частині БНФ у кутових дужках записуються назви визначених синтаксичних категорій(понять, одиниць), символ ":=" означає "є", "це", "визначається як", символ "|" означає "або".

Права частина БНФ визначає можливі варіанти конструювання конкретних значень цих категорій, у разі - значень десяткових чисел і конкретних арифметичних выражений. БНФ містить також алфавіт символів, з яких складаються ці значення. Для десяткових цілих чисел алфавіт - це безліч (+,-, 0, 1,..., 9), а виразів - це безліч (а, *, +, (,)}.

Процес конструювання значень синтаксичної категорії полягає в висновкуцих значень шляхом послідовних підстановок правих частин правил БНФ до лівих. Нижче наведено висновки числа «- 320» та вирази "а+а*а"з використанням відповідних БНФ:

БНФ мають велику схожість з формальними граматиками, що використовуються в теорії формальних мов (деякі автори їх ототожнюють).

Саме поява БНФ стимулювала швидкий розвиток теорії формальних мов та її застосування до прикладних завдань розробки мов програмування та проектування трансляторів.

Якщо у розглянутих БНФ кожну синтаксичну категорію з лівої частини правил позначити через А, Ві Звідповідно, а замість символу: = використовувати будуть отримані наступні форми:

Для десяткових цілих чисел:

А->В+В-В В^>СВСС-> 0 | 11... | 9

Для арифметичних виразів:

А^А+ВВ

В->В*СС

С^>(А)а

У такому вигляді записуються правила формальних граматик.Символи, що позначають синтаксичні категорії, в даному випадку, В, Су формальних граматиках називаються нетермінальними символами,а символи алфавіту - термінальними.

Насправді після отримання граматики мови програмування у «першому наближенні» необхідно досліджувати її властивості, а деяких випадках і виконати деякі перетворення. В основному це пов'язано з необхідністю приведення граматики до вигляду, зручного для побудови відповідного транслятора. У процесі виконання цих перетворень з формальної точки зору немає значення, які конкретні синтаксичні категорії та символи алфавіту містить БНФ. Тому на цьому етапі зазвичай переходять до формальної граматики та використовують відповідні методи теорії формальних мов. Водночас не слід повністю ототожнювати БНФ із формальними граматиками. Визначення граматики теорії формальних мов має більш загальний характер. Зокрема, за їх допомогою можна описувати контекстні залежності,яких не завжди вдається уникнути розробки мов програмування і які не можна описати за допомогою БНФ.

Характерною рисою граматик мов програмування є у них рекурсії. Рекурсивністьозначає, що у визначенні деякої синтаксичної категорії міститься сама категорія (це так звана явна рекурсія). Наприклад, у розглянутій БНФ визначення для категорій і містять у правій частині самі ці категорії. Рекурсіяпрактично неминуче властивість граматик мов програмування, що дозволяє зробити їх нескінченними. У той самий час деякі види рекурсії, які будуть розглянуті пізніше, значно ускладнюють процес розробки відповідних трансляторів.

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

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

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

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

Так само в мовах програмування синтаксично правильно побудований оператор присвоєння

буде семантично некоректним, якщо має значення 10,5 (а = 10.5), а b - значення брехня (b = false).

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

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

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

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

Інша частина авторів вважає, що з часу опублікування стандартів перших мов програмування – Фортран, Алгол та ін. – у 60-х pp. XX ст., відбулася «стабілізація» мов у тому сенсі, що подібні за призначенням мовні конструкції в різних мовах мають практично одну й ту саму семантичну основу, незважаючи на відмінності в лексиці та синтаксисі. Тому, як тільки вдасться формально визначити цю загальну семантичну базу, можна буде розпочати створення універсальної мови, яка вже не буде мовою програмування у традиційному розумінні, а заготівлями семантичних конструкцій. Програма буде представлятися набором цих конструкцій, а текстовий редактор поступиться місцем структурному редактору. Як приклад часткової реалізації цього підходу наводяться візуальні середовища програмування, подібні до Delphi, C++ Builder та ін.

Кінець

початок

Повторювати

початок

Псевдокоди

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

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

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

алгоритм алгоритм Евкліда;

Бувайперше число не дорівнює другому

якщочисла рівні

тостоп всі;

інакшевизначити більше із двох чисел;

ззмінити більше на різницю більшого і меншого чисел

кінець;

взяти перше число як відповідь

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

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

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


Мова програмування- це формалізована мова, яка є сукупністю алфавіту, правил написання конструкцій (синтаксис) і правил тлумачення конструкцій (семантика).

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

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

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

Перша машинна мова була придумана в 1941 Конрадом Цузе, який є винахідником аналітичної машини. Трохи пізніше, 1943 р., Говард Ейкен створив машину "Марк-1", здатну зчитувати інструкцію лише на рівні машинного коду.

У 1950-х роках почався активний попит на розробку програмного забезпечення, а машинна мова не витримувала великих обсягів коду, тому було створено новий спосіб спілкування з комп'ютерами. "Ассемблер" є першою мнемонічною мовою, що замінила машинні команди. З роками список мов програмування тільки збільшується, адже сфера застосування комп'ютерних технологій стає ширшою.

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

На даний момент існує понад 300 мов програмування. Кожен з них має свої особливості та підходить для одного певного завдання. Всі мови програмування можна умовно поділити на кілька груп:

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

Програмування для початківців

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

  • Basic придуманий у 1964 році, відноситься до сімейства високорівневих мов та використовується для написання прикладних програм.
  • Python ("Пітон") досить легко вивчити завдяки простому читаному синтаксису, перевага ж у тому, що на ньому можна створювати як звичайні десктопні програми, так і веб-додатки.
  • Pascal ("Паскаль") - одна з найдавніших мов (1969 р.), створених для навчання студентів. Його сучасна модифікація має сувору типізацію та структурованість, проте "Паскаль" - цілком логічна мова, яка зрозуміла на інтуїтивному рівні.

Це не повний список мов програмування для початківців. Існує безліч синтаксисів, які доступні для розуміння, і обов'язково будуть затребувані в найближчі роки. Кожен має право самостійно вибрати той напрямок, який буде цікавим для нього.

Новачки мають можливість прискорити вивчення програмування та його основ завдяки спеціальним інструментам. Основний помічник - це інтегроване середовище розробки програм та програм Visual Basic («Візуал Бейсік» одночасно є і мовою програмування, яка успадкувала стиль мови Basic 1970-х років).

Рівні мов програмування

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

Низькорівневі мови призначені для створення машинних команд для процесорів. Головна їхня перевага в тому, що вони використовують мнемонічні позначення, тобто замість послідовності нулів та одиниць (з двійкової системи числення) комп'ютер запам'ятовує осмислене скорочене слово з англійської мови. Найвідоміші мови низького рівня - це "Ассемблер" (є кілька підвидів цієї мови, кожен з яких має багато спільного, а відрізняється лише набором додаткових директив і макросів), CIL (доступний у платформі.Net) і Байт-код JAVA.

Мови програмування високого рівня: список

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

Наступний список мов програмування: C ("Сі"), C# ("Сі-шарп"), "Фортран", "Паскаль", Java ("Ява") - входить до найбільш високорівневих синтаксисів, що використовуються. Він має такі властивості: ці мови працюють з комплексними структурами, підтримують рядкові типи даних та операції з файлами введення-виведення інформації, а також мають перевагу - з ними набагато простіше працювати завдяки читабельності та зрозумілому синтаксису.

Найпопулярніші мови програмування

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

  • мови ООП: Java, C++, Python, PHP, VisualBasic та JavaScript;
  • група структурних мов: Basic, Fortran та Pascal;
  • мультипарадигмальні: C#, Delphi, Curry та Scala.

Область застосування програм та додатків

Вибір мови, якою написана та чи інша програма, багато в чому залежить від галузі її застосування. Так, наприклад, для роботи з самим "залізом" комп'ютера (написання драйверів і програм, що підтримують) кращим варіантом стане C ("Сі") або С++, які входять в основні мови програмування (список дивіться вище). А для розробки мобільних програм, у тому числі ігор, слід вибрати Java або С# ("Сі-шарп").

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

Про залізничну мову "Платформу Червоні Зорі поїзд проїде без зупинки". Звернімо увагу, що машиніст вжив іменник "зупинка", а не дієслово "зупинятися". Зупинка – дуже важливе для залізничників поняття. Потяг може "зупинитися", але не "мати зупинки". Турчин [Тур-чин 2000], наводячи подібний приклад, вказує на формалізацію мови, що вживається у вузьких професійних цілях.

Формалізовану мову можна визначити так [Турчин 2000]. Розглянемо двоповерхову мовну модель дійсності (рис. 4.4). Ситуація кодується мовним об'єктом Li. Об'єкт L1 є ім'я si. Через деякий час ситуація S1 змінюється ситуацією S2. Здійснюючи деяку мовну діяльність, перетворюємо L1 на інший об'єкт - L2. Якщо наша модель правильна, то є L2 ім'я S2. У результаті, не знаючи реальної ситуації S2, ми можемо отримати уявлення неї шляхом декодування мовного об'єкта L2. Виконання перетворення L1->L2 визначає, чи буде мова формалізованою.

    Для формалізованої мови перетворення L1->L2 визначається виключно мовними об'єктами Li, які беруть участь у ньому і не залежать від мовних уявлень si, відповідних їм семантиці мови.

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

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

Щодо формалізації неформалізованого Формалізація неформалізованого - процес неформалізований. Хоча з цим намагаються боротися логіки та військові.

Про формулу кохання Формула кохання не піддається формалізації. У кращому випадку вона може бути представлена ​​тільки у вигляді грубої моделі

Мови моделювання

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

    елементи моделі – фундаментальні концепції моделювання та їх семантику;

    нотацію – візуальне подання елементів моделювання;

    посібник із використання - правила застосування елементів у межах побудови моделей предметної області.

Мови програмування та інтегровані середовища

    За словами творця першого інтегрованого середовища FRAMEWORK, інтегроване середовище - це така прикладна програма, що користувач, запустивши її на початку робочого дня, знаходить у ній всі необхідні для роботи ресурси і тому не виходить з інтегрованого середовища до кінця робочого дня. Звичайно, це визначення не дуже коректне і дещо ідеалізує ситуацію, але його загальний зміст є досить зрозумілим. Основна особливість інтегрованих середовищ - високий ступінь інтерактивності. Вона досягається за рахунок інтеграції в єдине ціле різних програмних ресурсів, звідси і походить назва. Так, інтегроване середовище будь-якого компілятора мови програмування (програми, яка з тексту даної мови програмування створює програму, що виконується) зазвичай містить текстовий редактор і власне компілятор з системою діагностики помилок компіляції. Крім того, в ній зазвичай є також відладчик-інтерпретатор даної мови, що виконує програму рядок за рядком і має ряд інших спеціальних можливостей. Один з напрямків, що активно розвиваються, візуальне проектування -повністю засноване на використанні можливостей інтегрованого середовища. Користувач в інтерактивному режимі вибирає необхідні для програми об'єкти мови програмування і встановлює між ними зв'язки. Популярність таких мов як Visual BASIC (Microsoft), а також Object PASCAL (середовища Delphi та Kylix, Borland), не випадкова. Навіть недосвідчений програміст, який не знає окрім BASIC інших мов програмування і ніколи не програмував під Windows, може за два-три дні за допомогою Visual BASIC створити прикладну програму під Windows. А от програмісту високого класу, який не програмував до того під Windows, за допомогою C++ часто доводиться для створення такої програми витратити тижні, а то й місяці. Щоправда, Visual BASIC має низку істотних обмежень. За допомогою середовищ візуального проектування можна створювати складні програми, не набравши з клавіатури ні рядка коду. Однак у всіх програм, створених на основі традиційних мов програмування процедурного типу, є один і той же недолік. Їх виконуваний код -це одне, а оброблювані програмою дані -зовсім інше. Справді, код програми міститься у файлі з розширенням EXE, а дані - або у спеціальних файлах даних (як правило, у текстовому або двійковому вигляді у внутрішньому поданні комп'ютера), або вводяться з клавіатури або з іншого зовнішнього пристрою. А тепер поставимо запитання: як бути, якщо користувач повинен дати програмі, що виконується, інформацію, яку можна розглядати як "додаток" до тексту програми? Наприклад, ми хочемо, щоб на екрані було збудовано графік функції, і в подібній програмі забезпечуємо всі необхідні сервісні можливості. Однак формулу для функції повинен задати сам користувач, і невідомо, яка вона буде. Цілком очевидно, що подібні завдання можна вирішувати тільки за допомогою системи-інтерпретатора. Але "за все доводиться платити". Компілятор переводить текст програми у виконуваний код, який може працювати без програми-компілятора. Програми, створені з урахуванням мов інтерпретуючого типу, можуть виконуватися лише під керівництвом програми-інтерпретатора. Крім того, вони працюють повільніше за скомпільовані, так як інтерпретація займає додатковий час. Однак у багатьох випадках це несуттєво.

Дата створення: 1963 Вплинув на:ПРОФТ Типізація:безтипова Діалекти:

    Applesoft BASIC

    Commodore BASIC

    Microsoft BASIC

Реалізації та версії:

  • Applesoft BASIC Interpreter in Javascript

    Atari Microsoft BASIC I/II

  • Commodore BASIC

    Galaksija BASIC

    Microsoft Visual Basic

  • Visual Basic for Applications

Бейсік (BASIC – скорочення від англ. Beginner's All-purpose Symbolic Instruction Code – універсальний код символічних інструкцій для початківців; англ. basic – основний, базовий) – сімейство високорівневих мов програмування.

Бейсік був придуманий в 1963 викладачами Дартмутського Коледжу Джоном Кемені і Томасом Куртцом, і під їх керівництвом був реалізований командою студентів коледжу. Згодом, коли почали з'являтися інші діалекти, цей «початковий» діалект почали називати Dartmouth BASIC.

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

При проектуванні мови використовувалися такі вісім принципів:

    бути простим у використанні для початківців;

    бути мовою програмування загального призначення;

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

    бути інтерактивним;

    надавати ясні повідомлення про помилки;

    швидко працювати на невеликих програмах;

    не вимагати розуміння роботи апаратного забезпечення;

    бути посередником меду користувачем та операційною системою.

Мова була заснована частково на Фортран II і частково на Алгол-60, з додаваннями, що роблять його зручним для роботи в режимі розподілу часу, обробки тексту та матричної арифметики. Спочатку Бейсік був реалізований на GE-265 з підтримкою безлічі терміналів. Попри поширене переконання, у момент своєї появи це була компілювана мова. Загальну ж популярність мова отримала з його появи на мікрокомп'ютері Altair 8800. Багато мов програмування були занадто громіздкими, щоб вміщатися у невеликій пам'яті. Для машин з таким повільним носієм як паперова стрічка, аудіокасета і без відповідного текстового редактора така невелика мова як Бейсік була чудовою знахідкою. 1975 року Майкрософт (тоді це були лише двоє - Білл Гейтс і Пол Аллен, за участю Монте Давидова) випустила Altair BASIC. Для операційної системи CP/M було створено діалект BASIC-80, який надовго визначив розвиток мови. У цей час було створено кілька нових версій Бейсика. Майкрософт продавала кілька версій BASIC для MS-DOS/PC-DOS, включаючи BASICA, GWBASIC і Quick BASIC (QBASIC). На домашніх комп'ютерах з'явилися різні розширення Бейсика, які зазвичай включають засоби для роботи з графікою, звуком, виконанням DOS-команд, а також засоби структурного програмування. Деякі інші мови використовували добре відомий синтаксис Бейсіка як основа, на якій будувалася зовсім інша система (див. наприклад, GRASS). Однак, починаючи з кінця 80-х, нові комп'ютери стали набагато складнішими та надавали можливості (такі як графічний інтерфейс користувача), які робили Бейсік вже не настільки зручним для програмування. Бейсік почав здавати свої позиції, незважаючи на те, що величезна кількість його версій ще використовувалася та продавалася. Друге життя Бейсік отримав із появою Visual Basic від Microsoft. Він став однією з найпоширеніших мов на платформі Microsoft Windows. Пізніше був створений варіант під назвою WordBasic, який використовується в MS Word до появи Word 97. Варіант Visual Basic for Applications (VBA) був вбудований в Excel 5.0 у 1993 році, потім у Access 95 у 1995-му, а потім і у всі інші інструменти , що входять до пакету Office - 1997-го. Internet Explorer 3.0 та вище, а також Microsoft Outlook включали інтерпретатор мови VBScript. У повний варіант пакету OpenOffice.org також включений інтерпретатор Бейсік.

Hello, World!: приклад для версій QBasic 1.1, QuickBasic 4.50

PRINT " Hello , World !"

Факторіал: приклад для версій QBasic 1.1, QuickBasic 4.50

Використовується ітеративне визначення факторіалу. При обчисленні 13! виникає арифметичне переповнення, і поведінка різних реалізацій відрізняється: QBasic повідомляє про переповнення, а QuickBasic просто виводить негативні значення. Крім того, команда PRINT за замовчуванням виводить по одному пропуску перед числом та після нього.

DIM f AS LONG f = 1 PRINT "0! ="; f FOR i = 1 TO 16:

f = f * i:

PRINT i; "!="; f

ФОРМАЛІЗОВАНА МОВА- Штучна знакова система, призначена для представлення деякої теорії. Формалізована мова відрізняється від природних (національних) мов людського спілкування та мислення, від штучних мов типу Есперанто, від «технічних» мов науки, що поєднують засоби певної частини природної мови з відповідною науковою символікою (мова хімії, мова звичайної математики та ін.), алгоритмічної мови типу узагальненого програмування тощо. Насамперед тим, що його завдання – служити засобом фіксації (формалізації) певного логічного змісту, що дозволяє вводити відношення логічного слідування та поняття доказу (або їх аналоги). Історично першою формалізованою мовою була силологіка Аристотеля, реалізована за допомогою стандартизованого фрагмента природної (грецької) мови. Загальну ідею формалізованої мови сформулював Лейбніц (characteristica universalis), який передбачав її розширення до «обчислення висновків» – calculus ratiocinator. У Новий час різні варіанти формалізованих мов розроблялися на основі аналогії між логікою та алгеброю. Віхою тут з'явилися праці Моргана , Буля та їх послідовників, особливо Шредера і Порецького . Сучасні формалізовані мови – у найбільш поширених формах – сягають праці Фреге "Begriffsschrift" - "Запис у поняттях" (1879), від якого йде головна лінія розвитку мови логіки висловлювань і (охоплює її) логіки (багатомісних) предикатів, а також застосування цих логічних мовних засобів до завдань обґрунтування математики.

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

Формалізовані мови розрізняються за своєю логічною силою, починаючи з «класичних» мов (у яких повною мірою діють арістотелівські закони тотожності, протиріччя та виключеної третьої, а також принцип логічної двозначності) і закінчуючи численними мовами некласичних логік, що дозволяють послаблювати ті чи інші принципи, вводити багатозначність оцінок формул чи його модальності. Розроблено мови, у яких логічні засоби у тому чи іншому сенсі мінімізуються. Такими є мови мінімальної та позитивної логік або мова логіки висловлювань, що використовує єдину логічну операцію, напр. штрих Шеффера (див. Логічні зв'язки ).

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

Формалізований мову то, можливо «чистою формою», тобто. не нести жодної позалогічної інформації; якщо він її несе, стає прикладним формалізованим мовою, специфіка якого – наявність постійних предикатів і термів (дескрипцій) – напр. арифметичних, – що відбивають властивості прикладної області. Для формалізації теорій високого рівня абстракції формалізована мова може по-різному видозмінюватися, розширюватись або «надбудовуватися»; приклад: формалізація класичного математичного аналізу як арифметики другого порядку (тобто з кванторами за предикатними змінними). У ряді випадків формалізована мова містить логічні структури багатьох – навіть нескінченно багатьох – порядків (така, напр., «вежа мов» А.А.Маркова, що служить формалізації конструктивної математики, чи інтерпретація модальностей як ієрархії «можливих світів»). Семантична база формалізованої мови логіки може бути теоретико-множинною, алгебраїчною, імовірнісною, теоретико-ігровою та ін. Заді). Тоді мова набуває специфічної прагматики, яка бере до уваги фактор носія мови (що дає оцінку «функції належності» предмета обсягу даного поняття). Тут проявляється нині тенденція обліку у формалізованих мовах «людського фактора» – у тому чи іншому його вигляді, що явно проявляється у деяких формалізованих мовах логіки квантової механіки. В іншому напрямку йде розробка формалізованих мов, семантика яких передбачає відмову від екзистенційних припущень або ті чи інші онтологічні передумови - про допустимість правил з нескінченним числом посилок, «багатосортності» предметних областей, навіть суперечливих, і т.д.

Неодмінною рисою формалізованої мови є «можливе» тлумачення правил виведення; напр., на певному кроці ми вільні використовувати або використовувати, скажімо, правило modus ponens. Цієї риси позбавлені алгоритмічні мови, які мають «передбачуваний» характер. Але з розвитком комп'ютерної логіки і розробки програм «описуючого» типу це відмінність починає згладжуватися. У цьому напрямі діє і розробка формалізованих мов, орієнтованих вирішення завдань евристики.

Література:

1. Черч О.Введення у математичну логіку, т. 1. М., 1960;

2. Клині С.К.Введення у метаматематику. М., 1957;

3. Каррі Х.Підстави математичної логіки. М., 1969;

4. Фройденталь Х.Мова логіки. М., 1969;

5. Смирнова О.Д.Формалізовані мови та проблеми логічної семантики. М., 1982.