Возможности вычислительных машин и человеческий разум

         

Глава 3. Как работают вычислительные машины - стр. 31


Значительно труднее, однако, написать процедуру, обеспечивающую трансляцию на язык ассемблера любой программы, записанной на языке, одним из примеров которого служит приведенный выше текст. С первого взгляда может показаться, то эта трудность возникает в связи с явной сложностью данного языка по сравнению с предельной простотой языков ассемблера. Верно, что программа-транслятор должна иметь возможность оперировать с очень большим разнообразием синтаксических форм, многие из которых, особенно при появлении в различных комбинациях, являются источником действительно сложных технических проблем. И все же не эти проблемы вызывают наибольшие затруднения.

Что имеют в виду, когда говорят о предъявленной процедуре как об "образце текста" некоторого языка? Какого языка? Первоочередной и намного более сложной является задача просто построения языка "более высокого уровня". Правила образования и трансформации некоторого языка (так же, как и игра) являются в конечном счете настолько же системой ограничений, запретов, насколько и системой разрешений. Сам факт, что основные строительные элементы, используемые при разработке программ на языке ассемблера, предельно элементарны, обеспечивает программисту колоссальное число степеней свободы. Фактически язык ассемблера для некоторой конкретной машины - это мнемоническая транслитерация [Прим. перев.: Транслитерация - передача текста, написанного с помощью одной алфавитной системы, средствами другой алфавитной системы] ее машинного языка. Следовательно, разработчик языка ассемблера вряд ли сталкивается с проблемами значения. Разработчик же языка более высокого уровня должен определить характер и число степеней свободы, предоставляемых авторам, пишущим программы на этом языке. Каждая степень свободы, используемая автором некоторого выбора, - это в самом прямом смысле узурпация степени свободы программиста, который вынужден использовать результат этого выбора. Рассмотрим очень простой пример: d=a+b*с, где "*"-оператор умножения.


Содержание  Назад  Вперед