Машини, як правило, працюють в_двоічной системі числення, і_программи на_машінном мовою записують за допомогою тільки двох символів: нуля і_едініци. Правда, програмісти одразу придумали собі облегченіе_- писали програми не_в_двоічной, а_в_восьмерічной системі числення, а_перевод із_восьмерічной в_двоічную дуже прост_- кожна восьмерична цифра замінюється на_трі виконавчі. Наприклад, (507) 8 = (101_000_111) 2. В_машіну програма вводилася все одно в_двоічном вигляді і_благодаря цього могла безпосередньо сприйматися і_виполняться апаратурою машини.
Програма на машинній мові має вигляд таблиці з цифр, кожна її рядок відповідає одному оператору - машинній команді, яка є наказом машині виконати певні дії. При цьому в команді, наприклад, перші кілька цифр є кодом операції, т. Е. Вказують машині, що треба робити (складати, множити і т.п.), а інші цифри вказують оброблювані дані або де саме в пам'яті машини знаходяться потрібні числа (складові, співмножники і т.п.) і де слід запам'ятати результат операції (суму, твір і т. п.).
Наприклад, команда додавання для ЕОМ БЕСМ-2 виглядала так 01 0070 0071 0072.
Перші дві цифри 01 - це код операції додавання. За такою командою машина складала число, яке зберігається в комірці пам'яті з номером 0070, з числом з осередку з номером 0071. Результат записувався в клітинку з номером 0072. Номери осередків в команді можуть збігатися. Якщо перед виконанням команди 01 0073 0074 0073 в клітинку 0074 записати число 1, то число в комірці 0073 збільшиться на одиницю, а після виконання команди 01 0075 0075 0075 число в комірці 0075 збільшиться вдвічі.
Складання програм на машинній мові - дуже важка і копітка робота, що вимагає надзвичайної уваги та високої кваліфікації програміста. Щоб полегшити і підвищити продуктивність його праці, були розроблені мови програмування, схожі на звичну мову математичних формул.
Мова програмування задається трьома компонентами: алфавітом, синтаксисом і семантикою.
Алфавіт - це набір помітних символів: букв, цифр, спеціальних знаків і т.п.
Наприклад, алфавіт машинної мови складається з двох символів: 0 і 1, а якщо програма записана в вісімковій системі числення, то з восьми символів: 0, 1, 2, 3, 4, 5, 6 і 7.
Алфавіт одного з раніше популярних мов програмування - Фортран (ФОРТРАН - скорочення від формульної транслятор, т. Е. Формульний перекладач) містить такі символи:
- двадцять шість прописних (великих) букв латинського алфавіту: A, B, C, ..., Z;
- десять арабських цифр: 0, 1, 2, ..., 9 (цифра 0 зазвичай виглядала перекреслено, щоб відрізнити її від букви O);
- спеціальні знаки: «» (пропуск), «=» (для операції присвоювання), «+» (для операції додавання), «-» (для операції віднімання), "*" (для операції множення), «* *» ( для операції піднесення до степеня) «/» (для операції ділення), «(» та «)» (для зміни порядку проведення обчислень, для запису функцій і ін.), «,» (використовується як розділовий знак при перерахування), « . »(для відділення цілої частини числа від дробу замість більш звичної десяткової коми),« ' »(апостроф використовується при друку текстів),« ¤ »(службовий знак для позначення грошової едини ци, іноді замінюється на знак долара "$" або на ромб «◊»).
Синтаксис в мові програмування - це сукупність правил освіти конструкцій мови з символів, визначених алфавітом. Наприклад, правило утворення однієї з конструкцій мови ФОРТРАН - ідентифікатора, або просто імені, полягає в наступному: ідентифікатор - це послідовність від однієї до шести букв або цифр, обов'язково починається з букви. Приклади ідентифікаторів:
A A 12345 ALFA I 1067890 INDEX
Семантикою в мові програмування називають сукупність правил тлумачення конструкцій мови, утворених відповідно до синтаксисом.
Наприклад, правила тлумачення ідентифікатора змінної в фортрані полягають у наступному:
- ідентифікатор визначає місце в пам'яті машини, виділене для зберігання поточного значення змінної;
- перша буква ідентифікатора вказує, якого виду інформація зберігається в обумовленому місці: якщо ідентифікатор починається з однієї з букв I, J, K, L, M або N, то змінна може приймати тільки цілочисельні значення.
Більшість з мов програмування, розроблених до теперішнього часу, є послідовними. Програми, написані на них, являють собою послідовність наказів (інструкцій, операторів). Ці оператори послідовно один за іншим переробляються на машині в машинний код за допомогою так званих компіляторів. Як правило, компілятор - це досить велика програма на машинній мові, яка замінює кожен оператор мови програмування відповідної йому групою машинних команд.
В результаті використання мов програмування працю програміста істотно полегшився, з'явилася можливість для створення все більш складних програм. Їх використання вимагає все більших потужностей комп'ютерів, що веде до необхідності технологічного прогресу в мікроелектроніці.
Розрізняють мови програмування низького і високого рівня.
Мови низького рівня істотно залежать від організації і принципів роботи конкретної машини, тому вони називаються машинно-залежними, або машинно-орієнтованими мовами. До них відносяться автокоди, асемблери, а також машинні мови. На відміну від машинного, автокоди і асемблери допускають використання умовних (мнемонічних) позначень, які за допомогою трансляторів переводяться в команди даного процесора.
Мови високого рівня, або машинно-незалежні мови практично ніяк не пов'язані з пристроєм конкретної ЕОМ. Програми, написані на таких мовах, мають наочний, близький до математичного мови вид, дають можливість використовувати вирази, символічні імена для змінних і функцій.
Існуючі мови програмування відрізняються між собою допускаються типами даних, а також типами операцій і засобів, які керують послідовністю застосування операцій до даних. Дані є пасивною компонентою - це інформація, що зберігається в пам'яті машини. Активна компонента - операції - дозволяє створювати, знищувати і перетворювати дані. Засоби управління пов'язують дані і операції таким чином, що кожна операція застосовується до відповідних даних у відповідний час.
Подальший розвиток обчислювальної техніки неминуче тягне за собою розвиток і вдосконалення мов програмування. Продуктивність обчислювальних машин підвищується за рахунок паралельного (одночасного) виконання операцій, а більшість існуючих мов програмування розраховане на послідовне виконання операцій. Тому майбутнє, мабуть, за такими мовами програмування, які дозволять описувати саму решаемую завдання, а не послідовність виконання операторів. Послідовність же повинна генеруватися вже самою машиною в процесі виконання завдання.