The kluczowa różnica między programowaniem funkcjonalnym a programowaniem imperatywnym jest to, że programowanie funkcjonalne traktuje obliczenia jako funkcje matematyczne i unika zmiany stanu i danych zmiennych, podczas gdy programowanie imperatywne używa instrukcji zmieniających stan programów.
Paradygmat programowania zapewnia styl budowania struktury i elementów programu komputerowego. Paradygmaty programowania pomagają klasyfikować języki programowania na podstawie ich funkcji. Język programowania może wpływać na więcej paradygmatów. W paradygmacie obiektowym program składa się z obiektów, a obiekty przekazują wiadomości metodami. Programowanie logiki może wyrażać obliczenia wyłącznie w kategoriach logiki matematycznej. Kolejne dwa paradygmaty programowania to programowanie funkcjonalne i programowanie imperatywne. Programowanie funkcjonalne umożliwia wyrażanie obliczeń jako oceny funkcji matematycznych. Programowanie imperatywne zapewnia instrukcje, które jawnie zmieniają stan pamięci. W tym artykule omówiono różnicę między programowaniem funkcjonalnym a programowaniem imperatywnym.
1. Przegląd i kluczowa różnica
2. Co to jest programowanie funkcjonalne
3. Co to jest programowanie imperatywne
4. Podobieństwa między programowaniem funkcjonalnym a programowaniem imperatywnym
5. Porównanie obok siebie - Programowanie funkcjonalne a programowanie imperatywne w formie tabelarycznej
6. Podsumowanie
Programowanie funkcjonalne oparte jest na matematyce. Podstawową zasadą programowania funkcjonalnego jest to, że wszystkie obliczenia są traktowane jako kombinacja oddzielnych funkcji matematycznych. Funkcja matematyczna mapuje dane wejściowe na dane wyjściowe. Załóżmy, że istnieje funkcja o nazwie f (x) = x * x. Wartość x 1 jest odwzorowywana na wyjście 1. Wartość x 2 jest odwzorowywana na wyjście 4. Wartość x 3 jest odwzorowywana na wyjście 9 i tak dalej.
Rysunek 01: Przykład funkcjonalnego języka programowania - Haskell
W programowaniu funkcjonalnym wzorce są uwzględniane. Funkcjonalne języki programowania Haskell wykorzystuje poniższą metodę do znalezienia sumy liczb.
Funkcja sumy ma wartości całkowite, a wynikiem będzie również liczba całkowita. Można go zapisać jako sumę: [int] -> int. Podsumowanie można wykonać, postępując zgodnie z poniższymi wzorami.
sum [n] = n, suma jednej liczby jest samą liczbą.
Jeśli istnieje lista liczb, można ją zapisać w następujący sposób. N oznacza pierwszą liczbę, a ns oznacza pozostałe liczby
sum (n, ns) = n + suma ns.
Powyższe wzory można zastosować do znalezienia sumy trzech liczb, które wynoszą 3,4,5.
3 + suma [4,5]
3 + (4 + suma [5])
3+ 4 + 5 = 12
Mówi się, że funkcja lub wyrażenie ma skutki uboczne, jeśli modyfikuje jakiś stan poza swoim zakresem lub ma zauważalną interakcję z funkcjami wywołującymi oprócz zwracanej wartości. Programowanie funkcjonalne minimalizuje te skutki uboczne. Zmiany stanu nie zależą od wejść funkcji. Jest to przydatne, gdy rozumiemy zachowanie programu. Wadą programowania funkcjonalnego jest to, że nauka programowania funkcjonalnego jest trudniejsza w porównaniu do programowania imperatywnego.
Programowanie imperatywne jest paradygmatem programowania, który wykorzystuje instrukcje zmieniające stan programu. Koncentruje się na opisie działania programu. Języki programowania, takie jak Java, C i C # są niezbędnymi językami programowania. Zapewnia krok po kroku procedurę, co należy zrobić. Imperatywne języki programowania zawierają struktury takie jak if, else, while, dla pętli, klas, obiektów i funkcji.
Rysunek 02: Przykład imperatywnego języka programowania - Java
Podsumowanie dziesięciu liczb można znaleźć w Javie w następujący sposób. W każdej iteracji wartość i jest dodawana do sumy i przypisywana do zmiennej sum. W każdej iteracji wartość sumy jest dodawana do poprzednio obliczonej sumy.
int suma = 0;
dla (int i = 0; i< =10; i++)
sum = suma + i;
Programowanie imperatywne jest łatwe do nauczenia się, zrozumienia i debugowania. Łatwo jest znaleźć stan programu dzięki użyciu zmiennych stanu. Niektóre wady polegają na tym, że kod może być długi, a także może zminimalizować skalowalność.
Programowanie funkcjonalne a imperatywne | |
Programowanie funkcjonalne jest paradygmatem programowania, który uważa obliczenia za ocenę funkcji matematycznych i unika zmiany stanu i danych zmiennych. | Programowanie imperatywne to paradygmat programowania, w którym używane są instrukcje zmieniające stan programu. |
Struktury | |
Programowanie funkcjonalne zawiera wywołania funkcji i funkcje wyższego rzędu. | Programowanie imperatywne zawiera, jeśli nie, pętle, funkcje, klasy i obiekty. |
Języki programowania | |
Scala, Haskell i Lisp są funkcjonalnymi językami programowania. | C, C ++, Java to imperatywne języki programowania. |
Skupiać | |
Programowanie funkcjonalne koncentruje się na wyniku końcowym. | Programowanie imperatywne koncentruje się na opisie działania programu. |
Prostota | |
Programowanie funkcjonalne jest trudne. | Programowanie imperatywne jest łatwiejsze. |
Paradygmat programowania zapewnia styl budowania struktury i elementów programu komputerowego. Programowanie funkcjonalne i programowanie imperatywne to dwa z nich. Różnica między programowaniem funkcjonalnym a programowaniem imperatywnym polega na tym, że programowanie funkcjonalne traktuje obliczenia jako funkcje matematyczne i unika zmiany stanu i danych zmiennych, podczas gdy programowanie imperatywne używa instrukcji, które zmieniają stan programów.
1. „Programowanie imperatywne”. Wikipedia, Wikimedia Foundation, 28 marca 2018. Dostępne tutaj
2. „Programowanie funkcjonalne”. Wikipedia, Wikimedia Foundation, 28 marca 2018. Dostępne tutaj
3. Komputer. YouTube, YouTube, 30 sierpnia 2013. Dostępne tutaj
1.'Haskell Logo'By Haskell1965 - Praca własna, (CC BY-SA 3.0) przez Commons Wikimedia
2.'14485179234'by Linux Screenshots (CC BY 2.0) przez Flickr