Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Огляд мови



Мова Plankalkul була незвичайно повною і володіла декількома дуже перспективними властивостями в області структур даних. Найпростішим типом даних у мові Plankalkul був окремий біт. На основі цього типу створювалися типи для представлення цілих чисел і чисел із плаваючою крапкою. Для представлення чисел із плаваючою крапкою, використовувалися додатковий код числа у двійковій системі і схема "прихованого біта", у даний час застосовувана для того, щоб не зберігати в пам'яті старший значущий біт у нормалізованій мантисі числа.

Крім цих звичайних скалярних типів, мова Plankalkul містила масиви і записи. При роботі з записами для включення в них інших записів як елементи допускалося використання рекурсії.

Хоча мова і не містила явного оператора goto, вона мала оператор циклу, подібний до оператора for мови Pascal. У мові також була команда Fin, верхній індекс якої означав вихід із внутрішнього циклу на зазначене число вкладених ітераційних циклів чи до початку нового ітераційного циклу. Мова Plankalkul містила оператор галуження, який не містив оператора else.

Найцікавішою особливістю програм Конрада Цузе було включення математичних виразів, що показують відношення між змінними в програмі. Ці вирази встановлювали, що саме в процесі виконання повинно бути істинним у тих точках програми, де знаходилися дані вирази. Самі ці вирази дуже схожі на твердження, використовувані в сучасній мові програмування Eiffel (Meyer, 1992) і аксіоматичній семантиці.

Рукопис Цузе містив програми, що були значно складніші програм, написаних до 1945 року! У ньому були наведені програми сортування масивів цілих чисел; перевірки зв’язності заданого графа; програми, які виконують дії з цілими числами і з числами з плаваючою крапкою, у тому числі добування квадратного кореня; програми, які робили синтаксичний аналіз логічних формул, що містять дужки й оператори із шістьма різними рівнями пріоритету. Ймовірно, найпримітнішими були 49 сторінок алгоритмів гри в шахи (гри, у якій сам Цузе фахівцем не був).

Якби на початку 1950-х років який-небудь фахівець з комп'ютерних наук знайшов створений Цузе опис мови Plankalkul, то єдиним аспектом, який би ускладнив реалізацію цієї мови в описовому вигляді, була би форма запису. Кожен оператор складався з двох-трьох рядків команд. Перший рядок був дуже схожий на оператори сучасних мов програмування. Другий рядок, який був необов'язковим, містив список індексів масивів, що згадуються в першому рядку. Цікаво відзначити, що той же метод вказування індексів використовувався Чарльзом Бебіджем (Charles Babbage) у програмах, написаних ним для його "аналітичної машини" у середині XIX сторіччя. Останній рядок кожного виразу мовою Plankalkul містив назви типів змінних, які згадувалися в першому рядку. На перший погляд, подібний запис виглядає лякливо.

Зараз ми можемо тільки здогадуватись, по якому шляху пішов би розвиток мов програмування і комп'ютерів, якби робота Конрада Цузе стала б широко відомою в 1945 чи навіть у 1950 році. Також цікаво припустити, як відрізнялася б зроблена Цузе робота, якби вона виконувалася в мирний час у колективі вчених, а не у фактичній ізоляції в Німеччині 1945 року.

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

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

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

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





Дата публикования: 2015-09-18; Прочитано: 312 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...