Cтраница 2
Важно понимать, что язык, который мы выбираем, предназначен для того, чтобы проиллюстрировать основные принципы работы программы, а не для того, чтобы использовать его в новых проектах. Если бы нашей целью было практическое применение языка, мы бы ввели совсем другую запись, чтобы максимально повысить гибкость программы. При этом была бы очень важна проблема выбора адресов, поскольку адреса в памяти не упорядочены. Насколько эффективным будет выбор адресов, зависит от способностей разработчика. Поэтому мы введем простой символический язык, который полностью описывает каждую операцию, но не объясняет полностью, как определяются все адреса. [16]
Работа с графом состоит в последовательном расчленении программных блоков, стоящих в вершинах графа, на все более мелкие модули, сохраняющие, однако, функциональную законченность. При расчленении добиваются унификации выделенных блоков. Иногда с целью унификации приходится идти на избыточность операций, реализуемых модулем для отдельных задач. Чем больше число одинаковых блоков удается выделить, тем меньше объем работ при создании ППП и тем лучше некоторые из его характеристик получаются в дальнейшем. Увеличится гибкость программ, уменьшится объем оперативной памяти, требующейся для работы системы. [17]
При этом фундаментальные правила, правила аппаратуры, остаются неизменными. Нейроны всегда действуют одинаково. Мы не можем уговорить нейроны повести себя ненейронным образом; все, что нам удается сделать, это поменять тему или стиль наших мыслей. Подобно Ахиллу в Прелюдии и Муравьиной фуге, мы имеем доступ только к нашим мыслям, а не к нейронам. Правила программ могут варьироваться на разных уровнях - правила аппаратуры всегда остаются одними и теми же. Именно этим фактом и объясняется гибкость программ. [18]