ком завершується, контролер повертає 23 значення, що відображають наявність і типи помилок, які треба аналізувати. Вже одне звернення до процесора громіздко, а аналіз помилок і зовсім видається неймовірним, особливо, якщо не саме з цим процесором доводиться працювати. Взагалі набір команд машинної мови сильно залежить від типу процесора
Мова асемблера
Упродовж 1950-х років запити на розробку програмного забезпечення зросли і програми стали дуже великими. Доводилося писати дуже багато коду, хоча забезпечення і було досить простим: на ті часи дизайн робочого столу був простіше нинішнього, програми працювали з елементарними речами, а комп'ютер тільки ще починав переможно простувати. Однак програми заплутувалися все більше, їх структура ускладнилася, бо весь час розвивалася комп'ютерна техніка. Тоді стали користуватися спеціальними програмами-збирачами програм з маленьких шматочків кодів - асемблер. Почався новий етап розвитку.
Тепер, коли була потрібна ефективна програма, замість машинних мов використовувалися близькі до них машинно-орієнтовані мови асемблера. До таких належали, наприклад, Autocode, з 1954-го р - IPL (попередник мови LISP) і, з 1955-го р - FLOW-MATIC (попередник мови COBOL). Тепер люди стали використовувати мнемонічні команди натомість машинних команд.
Але навіть робота з асемблером досить складна і вимагає спеціальної підготовки. Наприклад, для процесора Zilog Z80 машинна команда 00000101предпісивает процесору зменшити на одиницю свій регістр B. На мові асемблера цей же буде записано як DEC B.
Мови високого рівня
Наступний крок був зроблений в 1954 році, коли був створений перший мова високого рівня - Фортран (англ. FORTRAN - FORmula TRANslator), а за ним і деякі інші, як LISP, ALGOL 58, FACT (ще одна попередник мови COBOL). Мови високого рівня імітують природні мови, використовуючи деякі слова розмовної мови і загальноприйняті математичні символи. Ці мови більш зручні для людини, за допомогою них, можна писати програми до декількох тисяч рядків завдовжки. Звичайно, це досягнення було дуже цінно. Умовними словами можна було, як звично людині, набагато більш просто висловити складну програмну операцію з бітів. Однак, легко розуміється в коротких програмах, ця мова ставав нечитабельним і важко керованим, коли справа стосувалася великих програм. Тобто, простоти і раніше не вистачало. Вирішення цієї проблеми прийшло після винаходу мов структурного програмування (англ. Structured programming language), таких як Алгол (1958), Паскаль (1970), Сі (1972).
- й рік - винайдений COBOL.
- й рік - Симула. З нього почалася епоха структурного програмування.
Поява структурного програмування
До того часу люди почали розуміти, що створення програмного забезпечення - набагато складніше завдання, ніж вони собі уявляли. Це призвело до розробки структурного програмування. З розвитком структурного програмування наступним досягненням були процедури і функції. Тобто, якщо є завдання, яке виконується кілька разів, то її можна оголосити як функцію або як процедуру і у виконанні програми просто викликати її. Загальний код програми в даному випадку стає менше. Це сприяло створенню модульних програм.
А наступним досягненням було використання структур, завдяки яким перейшли до класів. Структури - це складові типи даних, побудовані з використанням інших типів. Наприклад, структура часу: в неї входять: години, хвилини, секунди. Свою чергу і годинник, і хвилини, і секунди - вони описані за допомогою інших, більш простих і більш елементарних типів. Замість складної роботи треба безліччю типів, з яких кожен може бути зі своїми обмеженнями - і що підходить одному типу, заборонено в іншому, - замість того програміст б міг створити структуру «час» і працювати з нею, як з єдиним типом, де нету винятків і один формат.
У свою чергу, Клас - це структура, у якій свої змінні і функції, які працюють з цими змінними. Тобто, це може бути названо особливе середовище, відмінне ото інших класів. Всі класові члени одного типу. Див. Докладніше статтю.
Коротко, це досягнення в області програмування було дуже велике. Тепер програмування можна було розбити на класи і тестувати не всю програму, що складається з 10 000 рядків коду, а розбити програму на 100 класів, і тестувати кожен клас. Це істотно полегшило написання програмного продукту.
Структурне програмування припускає точно позначені керуючі структури, програмні блоки, відсутність інструкцій безумовного переходу (GOTO), автономні підпрограми, підтримка рекурсії і локальних змінних.
Суть такого підходу полягає в можливості розбиття програми на складові елементи.