Paradygmat programowania

Paradygmaty programowania są sposobem na grupowanie języków programowania według tego, co robią. Języki mogą być w więcej niż jednym paradygmacie.

Niektóre paradygmaty patrzą na sposób działania kodu, np. zezwalanie na efekty uboczne lub konieczność robienia rzeczy w określonej kolejności. Inne paradygmaty patrzą na sposób, w jaki kod jest pogrupowany, np. umieszczanie kodu w jednej lub dwóch częściach (lub zamiast tego wiele małych części). Niektóre inne paradygmaty patrzą na kolejność i elementy, które czynią program takim, jaki jest.

Istnieją dwie główne grupy paradygmatów, imperatywna i deklaratywna. Język może być jednym i drugim jednocześnie.

Spis treści

·         1 Programowanie obowiązkowe

·         2 Programowanie deklaratywne

·         3 Inne paradygmaty

·         4 Przegląd

·         5 Problemy z paradygmatami

·         6 Historia

o    6.1 Kod maszyny

o    6.2 Języki proceduralne

o    6.3 Programowanie obiektowe

o    6.4 Paradygmaty deklaratywne

·         7 Powiązane strony

·         8 Referencje

·         9 Inne strony internetowe

Konieczność programowania

W programach obowiązkowych programiści podają komputerowi zestaw uporządkowanych kroków, które trzeba wykonać, aby coś zrobić. Jeśli ktoś chciałby, aby komputer narysował twarz kota, mógłby dać wskazówki typu "Narysuj tu okrąg, narysuj dwa mniejsze okręgi tam, narysuj dwa trójkąty na górze" i tak dalej. Niezbędne programy mają czasem wiele skutków ubocznych.

Istnieją dwa ważne paradygmaty imperatywne i przez wiele lat język będzie miał oba:

  • Strukturalny - Komputer otrzymuje wskazówki, które są zawsze w określonej kolejności. Kroki takie jak "powrót do kroku 3" (znane jako goto statements) nie są dozwolone.
    • Proceduralny - Program pozwala programiście nadać nazwę liście rozkazów, co zamienia te rozkazy w "procedurę", z której mogą korzystać później. Większość języków strukturalnych jest również proceduralna.
  • Object-Oriented - Pomysły są objaśniane komputerowi za pomocą obiektów, kawałków kodu, które mają zestaw poleceń, które można im wydać oraz pewnych informacji o nich.

Programowanie deklaratywne

W paradygmatach deklaratywnych programista mówi komputerowi, co ma robić, a nie jak to zrobić. Jeśli chcieliby, aby komputer narysował twarz kota, mogliby dać wskazówki typu "Narysuj twarz, narysuj dwoje oczu, dwoje uszu i usta".

Najbardziej znanymi deklaratywnymi paradygmatami są:

  • Funkcjonalny - Większość pracy wykonywana jest przez funkcje bez efektów ubocznych.
  • Logika - Podaje się zestaw faktów, a następnie zadaje jedno lub więcej "pytań".
  • Event-driven (sterowany zdarzeniowo) - kawałki kodu są ustawione tak, aby uruchamiały się, gdy pewne rzeczy się wydarzą (np. włączony komputer).

Inne paradygmaty

Niektóre paradygmaty można znaleźć zarówno w językach imperatywnych, jak i deklaratywnych. Zazwyczaj paradygmaty te znajdują się z jednym z powyższych paradygmatów, zamiast działać samodzielnie.

Przegląd

Języki programowania są pogrupowane według paradygmatów w taki sam sposób, jak maszyny mogą być pogrupowane według tego, do czego są używane.

Kilka języków pasuje tylko do jednego głównego paradygmatu, jak na przykład:

  • Małostkowość (obiektowa)
  • Montaż (obowiązkowy, ale nie ustrukturyzowany i nieobiektywny)
  • Haskell (funkcjonalny)
  • Prolog (logika)

Większość języków jest jednak w więcej niż jednym paradygmacie. Niektóre z nich wyróżniają się tym, że mają więcej niż jeden:

  • Skala (obiektowa, funkcjonalna, równoległa)
  • Visual Basic (sterowany zdarzeniami, obiektowy)
  • Wspólny Lisp (proceduralny, funkcjonalny, zorientowany obiektowo, meta)
  • Program (funkcjonalny, proceduralny, meta)
  • Perl (funkcjonalny, proceduralny, meta, obiektowy, sterowany zdarzeniami)
  • Python (funkcjonalny, obiektowy, proceduralny)
  • Rubinowy (funkcjonalny, obiektowy, proceduralny)
  • Wolfram Language (funkcjonalny, proceduralny, ogólnie deklaratywny)
  • Oz (logika, funkcjonalność, imperatyw, zorientowanie na obiekt)
  • F# (functional, imperative, object-oriented, meta)

Posiadanie większej liczby paradygmatów nie zawsze jest dobre. Pewnego razu posiadanie mniejszej liczby paradygmatów może być dobre, gdy istnieje język, który jest tylko funkcjonalny. Funkcja w jednym z tych języków czasami wykonuje mniej pracy (np. przeglądając tylko części grupy rzeczy, których faktycznie potrzebuje) niż musiałaby, gdyby język był również proceduralny.

Wiele paradygmatów programowania jest równie dobrze znanych z tego, że nie pozwalają one ludziom robić tego, na co pozwalają. Pewnego razu tam, gdzie to prawda, są języki funkcjonalne. Kiedy język funkcjonalny jest tylko lub głównie funkcjonalny, zwykle nie pozwala na efekty uboczne. Innym razem, gdy jest to prawdą, jest programowanie strukturalne: różni się ono od zwykłych języków imperatywnych, ponieważ nie pozwala programistom na używanie "goto statements" (stwierdzeń mówiących programowi, aby przeszedł do wcześniejszego etapu). Z tego i innych powodów ludzie czasami myślą, że nowe paradygmaty nie pozwalają na wystarczającą ilość rzeczy. Czasami jednak komputer może nie pozwalać na to, by ludzie robili coś, co jest w porządku: może pomóc ludziom uniknąć problemów z ich kodem i pozwolić komputerowi zgadywać, że dzięki temu będzie mógł szybciej uruchamiać kod, a nawet sprawdzać kod pod kątem problemów przed jego uruchomieniem!

Przegląd różnych paradygmatów programowania według Petera Van RoyaZoom
Przegląd różnych paradygmatów programowania według Petera Van Roya

Problemy z paradygmatami

Niektórym osobom uczącym się języków programowania nie podoba się, że paradygmaty są używane do grupowania języków programowania, takich jak Harper i Krishnamurthi. Ludzie ci mówią, że wiele języków programowania nie może być po prostu pogrupowanych w paradygmaty, ponieważ języki zapożyczają rzeczy i pomysły z wielu paradygmatów.

Historia

Z czasem powstawały nowe paradygmaty, a ludzie albo wskazywali na nie wtedy, albo patrząc wstecz. Jednym z pierwszych paradygmatów, który został uznany za nowy sposób programowania, było programowanie strukturalne z lat sześćdziesiątych. Idea "paradygmatu programowania" pochodzi z 1978 roku, jeśli nie wcześniej, kiedy to Robert W. Floyd używał go podczas nauczania. Słowo "paradygmat" w rozumieniu Roberta po raz pierwszy użył Thomas Kuhn w swojej książce "The Structure of Scientific Revolutions" (1962).

Kod maszynowy

Najniższy poziom (najbliższy temu, jak komputer lubi rozumieć rzeczy) i najstarszy paradygmat programowania to kod maszynowy, paradygmat obowiązkowy. Kierunki w kodzie maszynowym to tylko zestaw liczb w określonej kolejności. Język programowania jest nieco mniej niskopoziomowy (i nieco mniej stary). W języku asemblera instrukcje dla komputera są podawane w postaci mnemoników (łatwiejsze do zapamiętania nazwy), a adresy pamięci (instrukcje do znalezienia informacji w komputerze) mogą być podawane w postaci nazw. Czasami nazywane są one językami pierwszej i drugiej generacji.

W latach 60-tych XX wieku języki asemblerów zostały udoskonalone poprzez dodanie nowych rzeczy, takich jak biblioteka COPY, makra (bity "specjalnego" kodu, które zostały przekształcone na normalny kod przed uruchomieniem programu), uruchomione procedury (zestawy kierunków nadane z nazwy i zapisane na później) oraz zmienne (elementy nadane z nazwy i zapisane na później) spoza programu. Dzięki temu ludzie mogą używać jakiegoś kodu w więcej niż jednym projekcie i nie muszą martwić się o problemy sprzętowe (problemy, które zdarzają się tylko na jednym komputerze) dzięki poleceniom (nazwom kierunków) takim jak READ/WRITE/GET/PUT.

Montaż był, a czasem nadal jest, używany w systemach, w których ważne jest, aby kod był szybki, a także jest często używany w systemach wbudowanych, ponieważ pozwala użytkownikowi na dokładną kontrolę nad tym, co robi maszyna.

Języki proceduralne

Pod koniec lat sześćdziesiątych XX wieku ludzie zaczęli wymyślać języki proceduralne. Te języki trzeciej generacji (pierwszych kilka z tych, które obecnie nazywamy językami wysokiego poziomu) miały słowa związane z tym, co starały się rozwiązać. Na przykład,

  • COmmon Business Oriented Language (COBOL) - używa słów takich jak plik, przenieść i skopiować.
  • FORMULA TŁUMACZENIE (FORTRAN) - wykorzystuje słowa i symbole matematyczne (kształty używane przy pisaniu i pisaniu). Został on opracowany głównie dla nauki i inżynierii.
  • ALGOrithmic Language (ALGOL) - stworzony do pisania algorytmów (zestawów kroków mówiących komputerowi, co ma robić). Wykorzystuje słowa i symbole matematyczne, podobnie jak FORTRAN.
  • Programming Language One (PL/I) - miał być użyteczny dla wszystkich.
  • Beginners All purpose Symbolic Instruction Code (BASIC) - stworzony, aby pomóc początkującym programować.
  • C - język programowania przeznaczony do robienia wielu rzeczy. Dennis Ritchie pracował nad nim w latach 1969-1973 w AT&T Bell Labs.

Programowanie obiektowe

Po tym jak wielu ludzi zaczęło używać języków proceduralnych, wymyślili oni obiektywne języki programowania. W językach tych dane i ich "metody" (sposoby manipulacji danymi) umieszczane są w jednym "obiekcie". Niektórzy programiści, tacy jak Richard Stallman, nie zgadzają się, że języki programowania obiektowego są lepsze do wyjaśniania pomysłów komputerowi niż języki proceduralne.

Ponieważ programowanie obiektowe jest paradygmatem, a nie językiem, ludzie stworzyli języki montażowe zorientowane obiektowo, takie jak HLA (High Level Assembly).

Paradygmaty deklaratywne

W tym samym czasie, niektórzy ludzie tworzyli deklaratywne języki programowania. Językiem, który jest dobrze znany z tego, że jest deklaratywny jest SQL (język do dodawania i usuwania rzeczy z tabel).

Powiązane strony

  • Sposób myślenia
  • System typów
  • Trwałość i kompletność

Pytania i odpowiedzi

P: Co to jest paradygmat programowania?


O: Paradygmat programowania to sposób grupowania języków programowania na podstawie sposobu ich działania.

P: Jakie są dwie główne grupy paradygmatów?


O: Dwie główne grupy paradygmatów to imperatywny i deklaratywny.

P: Czym różnią się paradygmaty imperatywne i deklaratywne?


O: Paradygmaty imperatywne zwracają uwagę na sposób wykonywania kodu, np. dopuszczają efekty uboczne lub muszą wykonywać rzeczy w określonej kolejności, natomiast paradygmaty deklaratywne zwracają uwagę na sposób grupowania kodu, np. układają kod w jedną lub dwie części (lub zamiast tego wiele małych części).

P: Czy język może być jednocześnie paradygmatem imperatywnym i deklaratywnym?


O: Tak, język może być jednocześnie paradygmatem imperatywnym i deklaratywnym.

P: Jak paradygmat programowania grupuje języki?


O: Paradygmaty programowania grupują języki według tego, co robią. Patrzą na to, w jaki sposób kod jest uruchamiany, jak jest pogrupowany, w jakiej kolejności i z jakich elementów składa się program.

P: Czy istnieją inne rodzaje paradygmatów programowania oprócz imperatywnych i deklaratywnych?


O: Tak, istnieją inne paradygmaty programowania oprócz imperatywnych i deklaratywnych. Na przykład niektóre zwracają uwagę na sposób wykonywania kodu (np. dopuszczenie efektów ubocznych), a inne na sposób grupowania kodu (np. podzielenie kodu na jedną lub dwie części).

P: Czy każdy język należy tylko do jednego typu paradygmatu programowania?


O: Nie, nie każdy język należy tylko do jednego rodzaju paradygmatu programowania; niektóre języki mogą należeć do więcej niż jednego rodzaju paradygmatu.

AlegsaOnline.com - 2020 / 2023 - License CC3