O ile najpopularniejsze języki programowania oparte są dziś na paradygmacie obiektowym — „klasyczne”, strukturalne podejście do pisania kodu wywarło na nie duży wpływ. A dla początkujących programistów — z reguły wciąż jest „punktem wejścia” do świata programowania. Wyjaśniamy, czym jest programowanie strukturalne i na jakich elementach oparty jest kod, napisany według tego podejścia — zapraszamy do lektury!
Programowanie strukturalne — co to jest?
Programowanie strukturalne to jeden z podstawowych paradygmatów programowania. Polega ono na konstruowaniu kodu w taki sposób, aby jego struktura odzwierciedlała „jeden do jednego” strukturę rozwiązywanego problemu oraz kolejność wykonywania działań przez program. Można powiedzieć, że kod strukturalny jest kodem liniowym — pozbawionym przeskoków między linijkami kodu, wykonującym kolejne polecenia krok po kroku.
W takim podejściu programista, który czyta kod, od razu wie, gdzie zaczyna się (i kończy) praca programu. Widzi też, w jakiej kolejności wykonywane są po sobie poszczególne instrukcje — i jak wygląda hierarchia bloków (jakie są ich punkty wejścia i wyjścia). Dzięki takiej konstrukcji praca z kodem źródłowym jest stosunkowo intuicyjna — ponieważ on sam przypomina pisany krok po kroku… przepis kulinarny.
Zostańmy na moment „w kuchni”. Warto bowiem wyjaśnić, że paradygmat strukturalny powstał w latach 60. jako odpowiedź na zbyt skomplikowane, zawiłe programy tworzone przez ówczesnych programistów w językach proceduralnych, których cechą charakterystyczną były liczne przeskoki (za pomocą instrukcji goto). Kod źródłowy takich programów nieprzypadkowo określano więc jako… spaghetti code — trudny w utrzymaniu, sprzyjający popełnianiu błędów w logice programu. Podejście strukturalne pozwoliło tych problemów unikać — i dlatego też wywarło tak duży wpływ na cały świat programowania (nawet, jeśli dziś nie jest ono tak często wykorzystywane).
Podstawowe elementy kodu strukturalnego
Tak naprawdę każdy program napisany zgodnie z zasadami paradygmatu strukturalnego posługuje się tymi samymi „narzędziami”. A oto te najważniejsze:
- Bloki — czyli samodzielne elementy programu, będące podstawową „jednostką” tworzącą jego strukturę. Co ważne — według założeń paradygmatu, każdy blok powinien posiadać tylko jeden punkt wejścia; punktów wyjścia może być więcej. Blokami mogą być instrukcje warunkowe (if), pętle, itp. Blokowa struktura kodu szczególnie ułatwia jego debugowanie — pozwala szybko zidentyfikować blok, w którym kryje się błąd.
- Struktury kontrolne — podstawowe instrukcje, z których można zbudować w praktyce dowolny program. Zgodnie z twierdzeniem o programowaniu strukturalnym, wyróżnia się trzy typy struktur:
- instrukcje wyboru — takiej jak if… else — dokonują wyboru dalszej instrukcji w zależności od wartości wyrażenia na wejściu/wyjściu lub określonych warunków logicznych;
- interacje — czyli pętle, powtarzające wykonywanie danej instrukcji, dopóki dany warunek jest spełniony;
- sekwencje — czyli bezwarunkowe wykonywanie ciągu kolejnych instrukcji, jedna po drugiej.
- Podprogramy — czyli wydzielona w obrębie całego programu grupa instrukcji, które możemy traktować jako jedną, spójną operację — i wywołać za pomocą jednej instrukcji.
- Bloki zagnieżdżone — paradygmat strukturalny dopuszcza „zagnieżdżanie” mniejszych bloków w blokach większych.
Programowanie strukturalne — współczesne zastosowanie
Obecnie większość popularnych języków programowania — takich jak JavaScript, Python czy C++ — opiera się raczej na zasadach paradygmatu obiektowego niż strukturalnego. Ten pierwszy bowiem w jeszcze większym stopniu sprzyja rozwijaniu złożonych projektów, poprzez powiązanie ze sobą danych i procedur programu (odrębnych w programowaniu strukturalnych) oraz ułatwienie ponownego wykorzystywania raz zdefiniowanych fragmentów kodu.
Jednak to właśnie od programowania strukturalnego większość osób zaczyna naukę programowania — jest ono po prostu bardziej intuicyjne, niewymagające znajomości abstrakcyjnych założeń paradygmatu obiektowego.
Języków, które wymuszają na programiście ścisłe przestrzeganie paradygmatu strukturalnego nie jest wiele — są to przede wszystkim języki „klasyczne”, takie jak C oraz Pascal. Natomiast część założeń tego paradygmatu stało się częścią języków obiektowych; przykładowo, wszystkie języki wysokiego poziomu (JavaScript czy Python) są oparte na tych samych, podstawowych strukturach kontrolnych.
Mówiąc krótko — o ile paradygmat strukturalny nie jest już wiodącym podejściem do programowania, jego założenia wciąż trzeba znać!