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