Programowanie strukturalne
Programowanie strukturalne to paradygmat oparty na podziale kodu źródłowego na procedury oraz hierarchicznie uporządkowane bloki. Używa struktur kontrolnych, takich jak instrukcje wyboru i pętle, co znacznie zwiększa czytelność i ułatwia analizę programów w porównaniu do trudnego w utrzymaniu „spaghetti code”. Początki tego podejścia sięgają lat 60. XX wieku, a kluczowym momentem była publikacja Edsgera Dijkstry pt. „Goto Statement Considered Harmful”. Języki programowania, które wspierają ten paradygmat, nazywane są językami strukturalnymi.
Cechy charakterystyczne
- Sekwencja – wykonanie ciągu instrukcji.
- Wybór – wykonywanie instrukcji na podstawie wartości predykatu, zazwyczaj z użyciem słów kluczowych
if..then..else. - Iteracja – powtarzanie instrukcji, dopóki warunek jest spełniony, reprezentowane przez pętle takie jak
while,for.
Struktury kontrolne powinny mieć jedno wejście i jedno wyjście, a podprogramy pozwalają na grupowanie instrukcji jako pojedynczej operacji.
Historia
Początki programowania sięgają lat 50., kiedy programowano w kodzie maszynowym oraz asemblerze. W 1957 roku wprowadzono FORTRAN, pierwszy język wysokiego poziomu. W latach 60. i 70. nastąpił rozwój teorii programowania strukturalnego, z kluczowym wkładem Dijkstry oraz innych badaczy.
Dyskusja na temat użycia goto
Debaty na temat ograniczenia użycia instrukcji goto miały miejsce od lat 50. W latach 70. Dijkstra w swojej pracy „A Case against GO TO Statement” argumentował, że użycie skoków utrudnia analizę programów. Mimo tego, niektórzy programiści, tacy jak Donald Knuth, bronili użycia goto w pewnych kontekstach.
Wpływ na języki programowania
Programowanie strukturalne wpłynęło na wiele języków, wprowadzając struktury kontrolne do wcześniej ich nieposiadających, takich jak FORTRAN czy COBOL. Mimo to, czysto strukturalne języki są rzadkością.
Odstępstwa od zasad programowania strukturalnego
W praktyce często spotyka się możliwość wczesnego wyjścia z pętli lub podprogramu, co narusza zasadę pojedynczego wyjścia. Języki takie jak C wprowadziły konstrukcje umożliwiające takie wyjścia, co może komplikować zarządzanie zasobami.
Obsługa wyjątków
Kwestionuje się zgodność wyjątków z zasadami programowania strukturalnego, ponieważ wprowadzają one ukryte ścieżki przepływu sterowania. Pojawiają się różne opinie na temat tego, czy wyjątki powinny być ograniczone do pojedynczego wyjścia, czy też ich użycie powinno być pozostawione w pełni dowolne.




