Особливості мов програмування

Лекція 1 - Мови програмування. Visual Basic

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

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

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

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

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

Типів і структур даних

Операційну семантику (алгоритм обчислення конструкцій мови)

Семантичні конструкції мови

Бібліотеки примітивів (наприклад, інструкції введення-виведення)

Філософії призначення і можливостей мови

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

типи даних

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

структури даних

Системи типів в мовах високого рівня дозволяють визначати складні, складові типи, так звані структури даних. Як правило, структурні типи даних утворюються какдекартово твір базових (атомарних) типів і раніше певних складових типів. Основні структури даних (списки, черги, хеш-таблиці, двійкові дерева і пари) часто представлені особливими синтаксичними конструкціями в мовах високого рівня. Такі дані структуруються автоматично.

Компільовані й інтерпретовані мови

Мови програмування поділяються на два класи - компільовані іінтерпретіруемие. Програма на компільованих мов за допомогою спеціальної программикомпілятора перетворюється (компілюється) в набір інструкцій для даного типу процесора (машинний код) і далі записується вісполняемий файл. який може бути запущений на виконання як окрема програма. Іншими словами, компілятор переводить програму з мови високого рівня на низькорівневий мову, зрозумілу процесору. Якщо програма написана на интерпретируемом мовою, тоінтерпретатор безпосередньо виконує (інтерпретує) її текст без попереднього перекладу. При цьому програма залишається мовою оригіналу і не може бути запущена без інтерпретатора. Можна сказати, що процесор комп'ютера - це інтерпретатор машинного коду. Коротко кажучи, компілятор переводить програму на машинну мову відразу і цілком, створюючи при цьому окрему програму, а інтерпретатор перекладає на машинний мову прямо під час виконання програми. Поділ на компільовані й інтерпретовані мови є дещо умовним. Так, для будь-якого традиційно компилируемого мови, як, наприклад, Паскаль. можна написати інтерпретатор. Крім того, більшість сучасних «чистих» інтерпретаторів не виконують! Конструкції мови безпосередньо, а компілюють їх в деякий високорівневе проміжне представлення (наприклад, з разименованія змінних і розкриттям макросів). Для будь-якого інтерпретується мови можна створити компілятор - наприклад, мова Лісп, спочатку інтерпретується, може компілюватися без яких би то не було обмежень. Створюваний під час виконання програми код може так само динамічно компілюватися під час виконання. Як правило, скомпільовані програми виконуються швидше і не вимагають для виконання додаткових програм, так як вже переведені на машинну мову. Разом з тим при кожній зміні тексту програми потрібно її перекомпіляція, що створює труднощі при розробці. Крім того, скомпільована програма може виконуватися тільки на тому ж типі комп'ютерів і, як правило, під тією ж операційною системою, на яку був розрахований компілятор. Щоб створити виконуваний файл для машини іншого типу, потрібна нова компіляція. Інтерпретовані мови мають деякі специфічні додатковими можливостями (див. Вище), крім того, програми на них можна запускати відразу ж після зміни, що полегшує розробку. Програма на интерпретируемом мовою може бути часто запущена на різних типах машин і операційних систем без додаткових зусиль. Однак інтерпретовані програми виконуються помітно повільніше, ніж компільовані, крім того, вони не можуть виконуватися без додаткової програми-інтерпретатора. Деякі мови, наприклад, Java Иc #. знаходяться між компільовані і інтерпретуються. А саме, програма компілюється не в машинний мову, а в машинно-незалежний код низького рівня, байт-код. Далі байт-код виполняетсявіртуальной машиною. Для виконання байт-коду зазвичай використовується інтерпретація, хоча окремі його частини для прискорення роботи програми можуть бути трансльовані в машинний код безпосередньо під час виконання програми за технологією компіляції «на льоту» (Just-in-time compilation, JIT). Для Java байт-код виповнюється віртуальною машиною Java (Java Virtual Machine, JVM), для C # -Common Language Runtime. Подібний підхід у певному сенсі дозволяє використовувати плюси як інтерпретаторів, так і компіляторів. Слід згадати також оригінальний язикФорт (Forth). який є як би одночасно інтерпретується і компільовані.