Низькорівнева мова програмування

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Низькорівнева мова програмування — мова програмування наближена до машинного коду. Перші комп'ютери доводилось програмувати двійковими машинними кодами. Проте програмувати таким чином — доволі трудомістке і важке завдання по тій причині, що людям важко запам'ятовувати цифрові позначення команд[1]. Для спрощення цього завдання почали з'являтися мови програмування низького рівня, які дозволяли задавати машинні команди в зрозумілішому для людини вигляді. Для перетворення їх у двійковий код були створені спеціальні програми — транслятори.[2]

Приклад машинного коду і представлення його на асемблер, який виводить повідомлення на екран

Транслятори[ред.ред. код]

Найбільш застосовуватими трансляторами є:

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

Приклади низькорівневих мов[ред.ред. код]

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

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

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

Переваги[ред.ред. код]

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

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

Недоліки[ред.ред. код]

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

Джерела[ред.ред. код]