Стили и методы программирования

Методы по отношению к стилям

Показывать лекцию целиком

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

Дадим первый вариант сводки известных сочетаемостей и несочетаемостей. Он не оформлен в виде таблицы, поскольку его пункты зачастую требуют комментариев.

  • Метод потока данных.

    Отлично сочетается со структурным программированием в его циклической форме. Даже если поток данных слишком сложен для прямого представления в качестве структуры данных в программе, он является ядром понимания и перестройки алгоритма, заставляя осознать и документировать сеть данных.

    Хорошо сочетается:

  • с программированием от событий, если данные сами по себе не слишком сложные, а их взаимосвязи в потоке динамичны;
  • с сентенциальным программированием в форме конкретизации, если данные достаточно широкие, иерархически структурированы, а их перестройки в основном глобальные.
  • Плохо сочетается с сентенциальными методами унификации и возвратов, программированием от приоритетов, функциональным программированием, автоматным программированием.

  • Метод таблиц.

    Отлично сочетается с автоматным программированием как в последовательной, так и в параллельной форме.

    Хорошо сочетается с сентенциальным программированием в обоих видах и с программированием от приоритетов.

    Удовлетворительно сочетается с функциональным программированием.

    Плохо сочетается с программированием от событий и со структурным программированием в обеих формах.

  • Метод нисходящего проектирования.

    Отлично сочетается со структурным программированием в обеих формах, с функциональным программированием и с унификационным вариантом сентенциального.

    Удовлетворительно либо плохо сочетается со всеми остальными.

  • Метод восходящего проектирования.

    Отлично сочетается со всеми формами событийного и автоматного программирования.

    Удовлетворительно либо плохо сочетается с остальными.

  • Метод программирования в ширину.

    Отлично сочетается с сентенциальным программированием, с событийным и автоматным программированием.

    Плохо сочетается со структурным и функциональным программированием (они требуют слишком большой упорядоченности знаний, которая в данном случае достижима лишь на заключительных этапах).

  • Метод макроподстановок.

    Отлично сочетается с функциональным и сентенциальным программированием.

    Плохо сочетается с остальными.

  • Метод динамического порождения программ.

    Отлично сочетается с функциональным и сентенциальным программированием.

    Плохо сочетается с остальными.

  • Метод индукции и инвариантов.

    Отлично сочетается с рекурсивным вариантом структурного программирования.

    Хорошо сочетается с циклическим вариантом рекурсивного программирования, когда поток данных простой, и с унификационным вариантом сентенциального программирования.

    Плохо сочетается со всеми остальными.

  • Вернуться к учебному плану