funkcje z rodziny printf() w języku C zwracają liczbę „wydrukowanych” znaków, a sama operacja „wydrukowania” tych znaków jest właśnie efektem ubocznym.

W programach napisanych w językach niskopoziomowych ogromna większość instrukcji powoduje skutki uboczne – w asemblerze istnieją praktycznie wyłącznie skutki uboczne i nie ma żadnego innego mechanizmu realizacji obliczeń. W asemblerze istnieją nawet tzw. ukryte skutki uboczne, do których zalicza się niejawne modyfikowanie flag rejestru stanu procesora, np. w czasie wykonywania rozkazu procesora, który jawnie modyfikuje zawartość rejestrów procesora.

Natomiast w programach napisanych w językach funkcyjnych skutków ubocznych jest niewiele i tylko tam gdzie są one rzeczywiście niezbędne, np. w operacjach wejścia/wyjścia.

Istnienie skutków ubocznych znacznie utrudnia przeprowadzanie wielu rodzajów optymalizacji kodu wynikowego; mogą one powodować trudne do zdiagnozowania błędy w działaniu aplikacji, szczególnie jeżeli programista nie jest świadomy istnienia efektów ubocznych używanych funkcji.

Zobacz też asemblerowy język wysokiego poziomu

Kategoria:Programowanie komputerów Kategoria:Programowanie funkcyjne