Cтраница 3
Эти правила и ограничения позволяют избежать плохого стиля программирования, но, с другой стороны, они не должны стать препятствием для творческого поиска новых решений, исследования и экспериментирования. [31]
Я очень сомневаюсь в том, что стиль программирования тесно связан с каким-либо определенным машинным языком, как и в том, что литературный стиль какого-то определенного естественного языка может действительно значительно отличаться от литературного стиля в другом языке. Конечно, в разных языках существуют какие-то определенные способы выражения мыслей, однако основные нормы хорошего стиля одинаковы для большинства западноевропейских языков, во всяком случае, для тех из них, которые я знаю. И я думаю, что все это верно и для сегодняшних цифровых машин. [32]
Наличие механизма сборки мусора может серьезно повлиять на стиль программирования. NET мы можем сказать, что память всегда высвобождается вне области видимости фрагмента, в котором она была выделена. Это позволяет прибегнуть к конструкциям программирования, вряд ли допустимым в иных условиях. [33]
Такие формулы и называются хорновскими дизъюнктами, а стиль программирования - хорновским. [34]
Приведенные четыре примера должны продемонстрировать особенности одного из стилей программирования на базе функциональных языков, в данном случае - Норе, названного систематической дефиницией функций, определенных на типах данных. Структура задачи моментально подсказывает структуру решения, а структура типа данных - структуру каждой функции. Однако на базе функциональных языков существуют и другие стили программирования. Наиболее важные из них включают в себя использования функций высшего порядка и ленивого вычисления. Эти особенности языка Норе будут рассмотрены в последних двух главах. [35]
Здесь следует сделать одно замечание, относящееся к стилю программирования. [36]
Приблизительно такое же поведение можно получить, используя несколько иной стиль программирования, такой как в приводимой ниже программе. [37]
![]() |
Запрос пользователю о создании второй формы. [38] |
Все описанное выше можно делать, но это будет плохой стиль программирования, поскольку он противоречит принципу модульности. Все необходимые вам в начале выполнения процедуры и функции настройки помещайте в отдельный модуль без формы. [39]
Однако можно отметить и недостатки использования продукционных систем как стиля программирования: затрудняются понимание и верификация программ; несколько увеличивается расход вычислительных ресурсов; не всегда ПП оказываются взаимно независимыми, что может привести к необходимости изменения имеющихся правил при введении новых. [40]
Глобальные переменные нарушают принцип минимальных привилегий и являются примером плохого стиля программирования. [41]
![]() |
Отличия систем ИИ от обычных программных систем. [42] |
При этом почти каждая подобласть области ИИ характеризуется своим собственным стилем программирования, не всегда адекватным для других приложений. [43]
Особо следует остановиться на приводимых в книге рекомендациях о стиле программирования. Некоторым читателям они могут показаться в чем-то противоречащими их собственным воззрениям. Автор и не претендует на владение абсолютной истиной в столь сложном и многогранном вопросе. Приводимые рекомендации являются результатом многолетней практической работы и преподавания программирования. Вместе с тем альтернативная точка зрения всегда полезна: она заставляет еще раз задуматься о своем собственном стиле программирования и, быть может, внести в него некоторые коррективы. [44]
Хотя эти примеры просты, они дают представление о стиле программирования на языке FP. Фактически элегантность нерекурсивных решений в равной степени говорит о выразительной силе как функций высшего порядка, так и языка FP в целом. В языках, подобных Норе, основанных на объектах, мы можем получить похожие решения этих задач, используя описанные ранее функции тар и reduce. Хотя можно возразить, что FP, не имея строгой типизации и имея только последовательности для построения структур данных, недостаточно хорошо оснащен для использования в серьезных программных разработках, существует много преимуществ в предписываемой этим языком, свободной от переменных манере программирования. В действительности нет причин, по которым нельзя было бы соответствующим образом дополнить FP, и эта работа была начата в проекте языка FL [9], который сохраняет свободный от переменных стиль программирования. [45]