В недалеком прошлом, когда ОП (оперативная память) была дорогой, а ЭВМ работали намного медленнее, хорошими программистами считались те, кто мог писать наиболее эффективные программы. Им приходилось использовать нестандартные решения, получая хитроумные программы, которые трудно было читать и понимать через некоторый промежуток времени даже самому автору. Изменения, которые вносились со временем в программу, еще больше усложняли ее.
Учитывая, что затраты на содержание программистов растут быстрее, чем производительность, пришлось обратить внимание на сам процесс работы программистов. Выяснилось, что большую часть времени программисты тратят на нахождение и исправление логических ошибок, на модификацию существующих программ в связи с изменением условий. Следовательно, рост продуктивности программирования возможен благодаря существенному увеличению надежности программ и облегчению их модификации.
Практика программирования показала необходимость научно обоснованной методологии разработки и документирования алгоритмов и программ. Такой методологией, зародившейся в начале 70-х годов и получившей широкое распространение, является структурное программирование.
Структурное программирование (СП) позволяет избавиться, с одной стороны, от плохой структуры программ, с другой – позволяет создавать такие программы, которые можно было бы понимать, сопровождать, модифицировать без участия автора.
Программирование – это написание, корректирование и тестирование программ.
Структурное программирование – это проектирование, написание, тестирование программы в соответствии с заранее определенной дисциплиной. В структурном программировании важными факторами являются форма и дисциплина. Главное в нем:
- нисходящая разработка;
- непосредственно структурное программирование.
Идея структурного программирования принадлежит Дейкстре. Основное внимание его было сосредоточено на том, какими должны быть структуры программ, чтобы без значительных усилий можно было бы находить доказательства их правильности. Разработанные им положения позволили создавать структурированные программы, которые имеют последовательную организацию и легко читаются сверху вниз. Структурированные программы облегчают процесс документирования, так как текст программы уже несет основную информацию о задаче.
Более того, оказалось, что структурированные программы это и наиболее эффективные программы. Вообще эффективность программы определяется качеством транслятора. А хорошие трансляторы позволяют получить более эффективные программы при трансляции именно структурированных программ.