Słyszałem kilka razy, że każdy programista powinien nauczyć się jednego z każdego rodzaju języka. To niekoniecznie prawda, ale uważam, że to dobry pomysł.
Nauczyłem się języka proceduralnego (Perl), ale jakie są inne typy?
Jakie są między nimi różnice i jakie są ich przykłady?
programming-languages
paradigms
Dynamiczny
źródło
źródło
Odpowiedzi:
Chociaż terminologia jest daleka od ustandaryzowanej, powszechnym sposobem jest kategoryzowanie głównych paradygmatów programowania
Wydaje się, że już wiesz, jak wygląda programowanie proceduralne.
W funkcjonalnych języków funkcje są traktowane jako obiekty najwyższej klasy. Innymi słowy, możesz przekazać funkcję jako argument do innej funkcji lub funkcja może zwrócić inną funkcję. Paradygmat funkcjonalny oparty jest na rachunku lambda, a przykładami języków funkcjonalnych są LISP, Schemat i Haskel. Co ciekawe, JavaScript obsługuje również programowanie funkcjonalne.
W programowaniu logicznym definiujesz predykaty, które opisują relacje między jednostkami, takimi jak
president(Obama, USA)
lubpresident(Medvedev, Russia)
. Te predykaty mogą się bardzo skomplikować i obejmować zmienne, a nie tylko wartości literalne. Po określeniu wszystkich predykatów możesz zadawać pytania i uzyskać logicznie spójne odpowiedzi.Wielkim pomysłem w logicznym programowaniu jest to, że zamiast mówić komputerowi, jak obliczać rzeczy, mówisz im, jakie są rzeczy. Przykład: PROLOG.
Paradygmat obiektowy jest w pewnym sensie rozszerzeniem programowania proceduralnego. W programowaniu proceduralnym masz swoje dane, które mogą być typami pierwotnymi, takimi jak liczby całkowite i zmiennoprzecinkowe, typy złożone, takie jak tablice lub listy, oraz typy zdefiniowane przez użytkownika, takie jak struktury. Masz również swoje procedury, które działają na danych. Natomiast w OO masz obiekty, które obejmują zarówno dane, jak i procedury. To pozwala mieć fajne rzeczy, takie jak enkapsulacja, dziedziczenie i polimorfizm. Przykłady: Smalltalk, C ++, Java, C #.
Programowanie ogólne zostało po raz pierwszy wprowadzone w Adzie w 1983 roku i stało się powszechne po wprowadzeniu szablonów w C ++. Jest to idea, że możesz pisać kod bez określania rzeczywistych typów danych, na których on działa, i kompilator musi to rozgryźć. Na przykład zamiast pisać
piszesz
raz i
T
niech kompilator wygeneruje określony kod dla tego, co może być, kiedyswap()
faktycznie jest używany w kodzie.Programowanie ogólne jest obsługiwane w różnym stopniu przez C ++, Java i C #.
Należy zauważyć, że wiele języków, takich jak C ++, obsługuje wiele paradygmatów. Prawdą jest również to, że nawet jeśli mówi się, że język obsługuje określony paradygmat, może nie obsługiwać wszystkich jego cech. Nie wspominając o tym, że istnieje wiele sporów co do tego, które funkcje są wymagane dla danego paradygmatu.
źródło
Języki programowania mają wiele cech głównie ortogonalnych; najważniejszy z nich polega na paradygmacie lub paradygmatach, które wspierają. Artykuł w Wikipedii wyczerpująco omawia paradygmaty; najważniejsze paradygmaty to prawdopodobnie:
Ale języki różnią się także pod innymi względami:
źródło
Obecnie istnieje kilka różnych paradygmatów programowania:
źródło
Prolog jest logicznym językiem programowania i jest stosunkowo łatwy do rozpoczęcia. Wymaga zupełnie innego myślenia niż programowanie proceduralne, dlatego dobrze jest odkrywać, gdy próbujesz rozciągnąć swój mózg.
Jeśli pójdziesz na studia, powinieneś wziąć udział w kursie programowania języków, ponieważ ma on na celu wprowadzenie różnych rodzajów języków programowania i ich najlepszego wykorzystania.
źródło
Większość języków głównego nurtu łączy aspekty programowania imperatywnego, funkcjonalnego i deklaratywnego. Języki niszowe wydają się być bardziej egzotyczne lub wprowadzają ciekawe nowe pomysły, które z tego czy innego powodu nie nadają się do programowania ogólnego. Niektóre, bynajmniej nie wyczerpujące, przykłady:
(+/ % #)&.:*:
oblicza RMS tablicy. Słynie z tego, że jest zwięzły, znany z tego, że jest nieczytelny.źródło