Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
розділ_1_28_08_15.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

4.2. Мінімальне програмування на апаратному рівні: псевдокоди

Комп'ютери, що з'явилися наприкінці 1940-х і початку 1950-х років, були далеко не такими зручними, як сучасні. Крім того що вони були дуже повільними, ненадійними, дорогими і мали вкрай малий обсяг пам'яті, програмувати на них було дуже складно через недостачу програмної підтримки.

Не існувало мов програмування високого рівня, чи принаймні, мов ассемблера, тому програмування виконувалося в машинних кодах, що було кропіткою і схильною до помилок роботою. Серед проблем, що виникали, можна назвати використання цілочисельних кодів для директиви команд. Наприклад, команда ADD ("додати") повинна була визначатися кодом 14, а не текстовим позначенням, яке навіть складається з одного символу. Це значно ускладнювало читання програми. Більш істотною проблемою була абсолютна адресація, що ускладнювала модифікацію програм. Припустимо, що в нас у пам'яті міститься програма в машинних кодах. Багато команд такої програми посилаються на інші комірки пам'яті поза програмою, звичайно на довідкові дані, чи вказують цілі команд розгалуження. Уведення команди не в кінець програми, а в довільне місце усередині її, зводить нанівець правильність посилань на адреси, що знаходяться за точкою введення нової команди, оскільки для надання місця новій команді ці адреси повинні відповідним чином збільшитися. Для того щоб уведення нової команди не порушувало структури вже існуючої програми, програміст повинен знайти і змінити всі команди, що посилаються на адреси, які знаходяться за додатково введеною командою. Подібна проблема виникає і при видаленні команди. Правда, у цьому випадку в машинних мовах часто використовується команда "пуста операція1', якою можна замінити вилучену команду, не порушивши при цьому загальної структури програми,

Ці стандартні проблеми, що існують у всіх машинних мовах, і були основною причиною винаходу ассемблерів і мов ассемблера. Крім того, у той час задачі, пов'язані з програмуванням, були в основному обчислювальними. Для їхнього розв’язку було потрібно виконувати арифметичні операції над числами з плаваючою крапкою, а також операції індексації для більш зручного використання масивів. Проте, жодна з зазначених можливостей не була включена в архітектуру комп'ютерів кінця 1940-х і початку 1950-х років. Для усунення цих недоліків, природно, потрібно було розробляти мови більш високого рівня.

4.2.1. Мова Short Code

Перша з цих нових мов, названий Short Code, була розроблена Джоном Мочлі (John Mauchly) у 1949 році для комп'ютера BINAC. Пізніше мова Short Code була перенесена на комп'ютер UNIVAC I і протягом декількох років була одним з основних засобів програмування цих машин. Незважаючи на те, що про вихідну мову Short Code відомо дуже мало (повний її опис ніколи не публікувався), зберігся посібник із програмування для версії UNIVAC I (Remington-Rand, 1952). Доречно буде припустити, що ці дві версії були дуже схожі.

Слова мови UNIVAC I складалися з 72 біти, згрупованих у 12 шестибітових байтів. Мова Short Code складалася із закодованих версій математичних виразів, які потім потрібно було обчислювати. Команди були двобайтними величинами, і більшість виразів вміщалися в одному слові. Ось кілька прикладів команд мови Short Code:

- 06 модуль In (n+2)-ий степінь

) 07 + 2n корінь (n+2)-ого степеня

= 08 пауза 4n якщо <= n

/ 09 ( 58 друк і табуляція

Змінні, чи комірки пам'яті, іменувалися двобайтними кодами, тому що комірки пам'яті повинні були використовуватися як константи. Наприклад, величини ХО і YO могли бути змінними. Оператор

ХО = SQRT(ABS(YO))

можна було закодувати в слово 00 ХО 03 20 06 YO. Заголовний код 00 використовувався як доповнення для заповнення слова. Цікаво, що команди множення не існувало; на цю операцію вказувало просте розміщення двох операторів поруч, як це прийнято записувати в алгебрі.

Мова Short Code не була переведена у машинні коди; вона була реалізована за допомогою чистого інтерпретатора. Згодом подібний процес був названий автоматичним програмуванням. Він сильно спростив процес програмування, щоправда, за рахунок часу, затрачуваного на виконання програми. Інтерпретація мови Short Code була приблизно в 50 разів повільніша, ніж інтерпретація машинних кодів.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]