• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • Skutek uboczny - informatyka

    Przeczytaj także...
    Perl – interpretowany język programowania autorstwa Larry’ego Walla początkowo przeznaczony głównie do pracy z danymi tekstowymi, obecnie używany do wielu innych zastosowań. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych.Rejestry procesora to komórki pamięci o niewielkich rozmiarach (najczęściej 4/8/16/32/64/128 bitów) umieszczone wewnątrz procesora i służące do przechowywania tymczasowych wyników obliczeń, adresów lokacji w pamięci operacyjnej itd. Większość procesorów przeprowadza działania wyłącznie korzystając z wewnętrznych rejestrów, kopiując do nich dane z pamięci i po zakończeniu obliczeń odsyłając wynik do pamięci.
    Rejestr stanu lub rejestr flag (niepoprawnie: rejestr statusu) – rejestr procesora opisujący i kontrolujący jego stan. Zawartość tego rejestru może zależeć od ostatnio wykonanej operacji (zmiana pośrednia), bądź trybu pracy procesora, który można ustawiać (zmiana bezpośrednia). Budowa rejestru stanu zależy od modelu programowego danego procesora, w szczególności może on mieć różne rozmiary (zwykle jest to ściśle związane z rodzajem architektury), jednak zwykle ma długość będąca wielokrotnością bajtu, czyli najczęściej oktetu: 8, 16, 32 lub 64 bitów. Pojedynczy bit rejestru stanu nazywa się flagą bądź znacznikiem.

    Skutek uboczny, efekt uboczny (ang. side effect) – dowolny efekt wyrażenia lub wywołania funkcji, który wykracza poza zwrócenie wartości, np. interakcja z systemem operacyjnym lub zmiana wartości zmiennej globalnej. Innymi słowy skutek uboczny następuje, gdy modyfikowany zostaje jakiś stan programu poza swoim lokalnym środowiskiem, to znaczy następuje zauważalna interakcja ze „światem zewnętrznym”, oprócz zwracania wartości.

    Język wysokiego poziomu (autokod) – typ języka programowania, którego składnia i słowa kluczowe mają maksymalnie ułatwić rozumienie kodu programu dla człowieka, tym samym zwiększając poziom abstrakcji i dystansując się od sprzętowych niuansów. Kod napisany w języku wysokiego poziomu nie jest bezpośrednio „zrozumiały” dla komputera – większość kodu stanowią tak naprawdę normalne słowa, np. w języku angielskim. Aby umożliwić wykonanie programu napisanego w tym języku należy dokonać procesu kompilacji.Podprogram (inaczej funkcja lub procedura) - termin związany z programowaniem proceduralnym. Podprogram to wydzielona część programu wykonująca jakieś operacje. Podprogramy stosuje się, aby uprościć program główny i zwiększyć czytelność kodu.

    Pomimo nazwy (nieco mylącej) wiele funkcji jest wywoływanych właśnie w celu uzyskania skutku ubocznego.

    Np. wyrażenie 2 + 3 nie ma skutków ubocznych, natomiast wyrażenie a = 2 + 3 ma oczywisty skutek uboczny na zmiennej nielokalnej a – modyfikuje jej wartość. Innym przykładem skutku ubocznego jest poniższa funkcja w Perlu:

    sub add() {
        my $val = 0;
        $count++;
        $val += $_ foreach (@_);
        return $val;
    }
    

    Jej zasadniczym celem jest zwrócenie sumy wartości podanych argumentów, ale efektem ubocznym jest wyłącznie zwiększenie wartość pewnej zmiennej globalnej $count.

    Asembler (z ang. assembler) – termin informatyczny związany z programowaniem i tworzeniem kodu maszynowego dla procesorów. W języku polskim oznacza on program tworzący kod maszynowy na podstawie kodu źródłowego (tzw. asemblacja) wykonanego w niskopoziomowym języku programowania bazującym na podstawowych operacjach procesora zwanym językiem asemblera, popularnie nazywanym również asemblerem. W tym artykule język programowania nazywany będzie językiem asemblera, a program tłumaczący – asemblerem.Optymalizacja kodu wynikowego – proces, w którym dosłowna wersja kodu źródłowego, zazwyczaj w postaci jakiegoś drzewa, jest przekształcana w postać umożliwiającą sprawne wykonanie.

    Charakterystyka[ | edytuj kod]

    Z formalnego punktu widzenia większość funkcji w językach wysokiego poziomu powoduje efekty uboczne (w postaci komunikacji z systemem operacyjnym), np. 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.

    System operacyjny (ang. Operating System, skrót OS) – oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika.Instrukcja - w programowaniu jest to najmniejszy samodzielny element imperatywnego języka programowania. Instrukcja może być niskiego poziomu napisana w asemblerze np. mov ax,bx, która po przetłumaczeniu na kod binarny nadaje się do uruchomienia przez procesor lub instrukcja wysokiego poziomu napisana np. w języku C: int a = 5;, która zostanie przetłumaczona na kilka instrukcji niskiego poziomu. Program jest tworzony jako zbiór różnych instrukcji. Instrukcja może zawierać wewnętrzne komponenty (np. wyrażenia).

    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.

    Język niskiego poziomu – typ języka programowania, który w małym stopniu abstrahuje od konstrukcji jednostki centralnej komputera. Innymi słowy, język ten wykazuje duże podobieństwo do kodu maszynowego, zaś kompilacja jest w miarę nieskomplikowana.Programowanie funkcyjne (lub programowanie funkcjonalne) – filozofia i metodyka programowania będąca odmianą programowania deklaratywnego, w której funkcje należą do wartości podstawowych, a nacisk kładzie się na wartościowanie (często rekurencyjnych) funkcji, a nie na wykonywanie poleceń.

    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ż[ | edytuj kod]

  • asemblerowy język wysokiego poziomu
  • Wyrażenie w języku programowania to kombinacja wartości, zmiennych, operatorów, funkcji i nawiasów, wartościowana (inaczej: ewaluowana) zgodnie z regułami tego języka, która po zakończeniu wykonywania, zwraca pewną wartość. Proces ten nazywamy "wartościowaniem wyrażenia"; potocznie mówi się też, że "wyrażenie ewaluuje do tej wartości". Podobnie jak w matematyce, wyrażenie jest reprezentacją otrzymanej wartości.Asemblerowy język wysokiego poziomu to termin w informatyce określający język programowania wysokiego poziomu, posiadający cechy i elementy umożliwiające programowanie bliskie sprzętowi oraz tak implementowany, że istnieje bezpośrednie odwzorowanie instrukcji wysokiego poziomu danego języka na język asemblera (i tym samym język maszynowy).



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    C – imperatywny, strukturalny język programowania wysokiego poziomu stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu.
    Rozkaz – w informatyce i programowaniu to pojedyncza operacja centralnej jednostki obliczeniowej określona przez zestaw rozkazów danej architektury. Jest ona przekazywana procesorowi, który ją wykonuje, po czym zapisuje wartość wynikową lub ustawia flagę błędu, jeżeli wystąpił. W szerszym pojęciu, rozkaz może być elementem programu wykonywalnego, takiego jak kod bajtowy.
    Zmienna - konstrukcja programistyczna posiadająca trzy podstawowe atrybuty: symboliczną nazwę, miejsce przechowywania i wartość; pozwalająca w kodzie źródłowym odwoływać się przy pomocy nazwy do wartości lub miejsca przechowywania. Nazwa służy do identyfikowania zmiennej w związku z tym często nazywana jest identyfikatorem. Miejsce przechowywania przeważnie znajduje się w pamięci komputera i określane jest przez adres i długość danych. Wartość to zawartość miejsca przechowywania. Zmienna zazwyczaj posiada również czwarty atrybut: typ, określający rodzaj danych przechowywanych w zmiennej i co za tym idzie sposób reprezentacji wartości w miejscu przechowywania. W programie wartość zmiennej może być odczytywana lub zastępowana nową wartością, tak więc wartość zmiennej może zmieniać się w trakcie wykonywania programu, natomiast dwa pierwsze atrybuty (nazwa i miejsce przechowywania) nie zmieniają się w trakcie istnienia zmiennej. W zależności od rodzaju języka typ zmiennej może być stały lub zmienny. Konstrukcją podobną lecz nie pozwalającą na modyfikowanie wartości jest stała.

    Reklama

    Czas generowania strony: 0.01 sek.