Как работает мозг. Стивен Пинкер
Чтение книги онлайн.
Читать онлайн книгу Как работает мозг - Стивен Пинкер страница 48
Зачем нам столько разных видов репрезентаций? Не проще было бы мозгу оперировать чем-то вроде языка эсперанто? На самом деле, это было бы ужасно сложно. Модульная организация ментального «программного обеспечения», предусматривающая пакетирование разных типов данных в отдельные форматы, – отличный пример того, как эволюция и инженерная мысль приходят к одинаковым решениям. Брайан Керниган, настоящий знаток программирования, написал в соавторстве с П.Ж.Плоджером книгу под названием «Элементы стиля программирования», в названии которой обыгрывается заголовок известного учебника Странка и Уайта по писательскому мастерству «Элементы стиля»87. Авторы дают советы относительно того, что нужно, чтобы программа отличалась высокой производительностью, эффективностью работы и способностью правильно развиваться. Один из их главных принципов – «Заменяйте повторяющиеся выражения обращениями к функциям». К примеру, если программа должна вычислить площадь трех треугольников, для этого ей не нужно иметь три разные команды, в каждой из которых содержится отдельная копия формулы вычисления площади треугольника с координатами одного из треугольников. Вместо этого формула должна быть указана в программе один раз. Должна быть функция «вычисление площади треугольника» и слоты X, Y и Z, которые могут заполняться любъини координатами треугольника. Эта функция может использоваться трижды, при этом слоты X, Y и Z будут заполняться координатами, полученными из вводных данных. Описанный принцип устройства приобретает еще большую значимость, когда функция превращается из линейной формулы в многоступенчатую подпрограмму; на этом принципе основаны следующие ниже взаимосвязанные максимы, которым, кажется, следовал и естественный отбор, когда создавал наше модульное, многоформатное мышление:
Разбивайте программу на модули.
Используйте подпрограммы.
Каждый модуль должен выполнять одну функцию, но хорошо.
Убедитесь в том, что в каждом модуле что-то локализовано.
Ввод и вывод выделяйте в подпрограммы.
Второй принцип