Lista języków programowania według typu - List of programming languages by type

To jest lista ważnych języków programowania pogrupowanych według typu.

Nie ma nadrzędnego schematu klasyfikacji języków programowania. Dlatego w wielu przypadkach język znajduje się pod wieloma nagłówkami.

Języki tablic

Języki programowania tablicowego (nazywane również wektorami lub wielowymiarowymi ) uogólniają operacje na skalarach, aby zastosować je w sposób przezroczysty do wektorów , macierzy i tablic wyższych wymiarów .

Języki asemblera

Języki asemblerowe bezpośrednio odpowiadają językowi maszynowemu (patrz poniżej ), chociaż może nie być mapowania 1-1 między indywidualną instrukcją a indywidualną instrukcją, więc instrukcje kodu maszynowego pojawiają się w formie zrozumiałej dla ludzi. Języki asemblera pozwalają programistom używać adresów symbolicznych, które asembler konwertuje na adresy bezwzględne lub relokowalne . Większość asemblerów obsługuje również makra i stałe symboliczne .

Języki autorskie

Język authoringu jest językiem programowania desined do użytku przez eksperta bez komputera, aby łatwo tworzyć tutoriale, stron internetowych i innych interaktywnych programów komputerowych.

Języki programowania z ograniczeniami

Język programowania ograniczeniem jest deklaratywny język programowania, w którym relacje między zmiennymi są wyrażone jako ograniczeń . Wykonanie odbywa się poprzez próbę znalezienia wartości dla zmiennych, które spełniają wszystkie zadeklarowane ograniczenia.

Języki interfejsu wiersza poleceń

Języki interfejsu wiersza polecenia (CLI) są również nazywane językami wsadowymi lub językami sterowania zadaniami. Przykłady:

Skompilowane języki

Są to języki zazwyczaj przetwarzane przez kompilatory , chociaż teoretycznie każdy język może być skompilowany lub zinterpretowany. Zobacz także język skompilowany .

Języki współbieżne

Języki przekazujące wiadomości zapewniają konstrukcje językowe dla współbieżności . Dominującym paradygmatem współbieżności w językach głównego nurtu, takich jak Java, jest współbieżność pamięci współdzielonej. Języki współbieżne, które wykorzystują przekazywanie komunikatów, są zazwyczaj inspirowane obliczeniami procesów, takimi jak komunikowanie procesów sekwencyjnych (CSP) lub rachunek π .

  • Ada – język wielozadaniowy
  • Alef – język współbieżny z wątkami i przekazywaniem komunikatów, używany do programowania systemów we wczesnych wersjach Plan 9 firmy Bell Labs
  • Ateji PX rozszerzenie języka Java dla równoległości
  • Ballerina - język przeznaczony do wdrażania i orkiestracji mikroserwisów. Zapewnia model współbieżności oparty na wiadomościach.
  • ChuckK – język programowania audio specyficzny dla domeny, precyzyjna kontrola współbieżności i timingu
  • Cilk – współbieżne C
  • – C Omega, język badawczy będący rozszerzeniem C#, wykorzystuje komunikację asynchroniczną
  • Clojure – dialekt Lispu dla wirtualnej maszyny Java
  • Kaplica
  • Co-array Fortran
  • Współbieżny Pascal (by Brinch-Hansen)
  • Curry
  • E – wykorzystuje obietnice, zapewnia, że ​​nie dojdzie do zakleszczeń
  • Eiffel (poprzez mechanizm SCOOP , Simple Concurrent Object-Oriented Computation)
  • Elixir (działa na maszynie wirtualnej Erlang)
  • Szmaragd - używa wątków i monitorów
  • Erlang – wykorzystuje asynchroniczne przekazywanie wiadomości bez udostępniania
  • Schemat Gambitu - korzystanie z biblioteki Termite
  • Udać się
  • Haskell — obsługuje programowanie współbieżne, rozproszone i równoległe na wielu maszynach
  • Jawa
  • Julia
  • Joule – język przepływu danych, komunikuje się poprzez przekazywanie wiadomości
  • Limbo – krewny Alefa , używany do programowania systemów w Inferno (system operacyjny)
  • MultiLisp – wariant schematu rozszerzony o obsługę równoległości
  • occam – pod silnym wpływem procesów komunikacji sekwencyjnej (CSP)
  • Ork
  • Oz – język wieloparadygmatyczny, obsługuje współbieżność stanu współdzielonego i przekazu komunikatów oraz przyszłość, a także wieloplatformowy system programowania Mozarta Oz
  • P
  • Pict – zasadniczo wykonywalna implementacja rachunku π Milnera
  • Python — używa paralelizmu opartego na wątkach i paralelizmu opartego na procesach
  • Rdza
  • Scala – implementuje aktorów w stylu Erlanga na JVM
  • SequenceL – czysto funkcjonalny, automatycznie równoległy i wolny od wyścigów
  • SR – język badawczy
  • Zunifikowany równoległy C
  • XPoc – język przetwarzania XML, umożliwiający współbieżność

Języki z nawiasami kręconymi

Kręcone wspornik lub języków programowania kręcone karczkiem mają składnię, która blokuje oświadczenie definiuje używając nawias klamrowy lub usztywnień znaków {i} . Ta składnia pochodzi z BCPL (1966) i została spopularyzowana przez C . Wiele języków z nawiasami kręconymi wywodzi się lub jest pod silnym wpływem języka C. Przykłady języków z nawiasami kręconymi obejmują:

Języki przepływu danych

Języki programowania Dataflow polegają na (zwykle wizualnej) reprezentacji przepływu danych w celu określenia programu. Często używane do reagowania na zdarzenia dyskretne lub do przetwarzania strumieni danych. Przykłady języków przepływu danych obejmują:

Języki zorientowane na dane

Języki zorientowane na dane zapewniają potężne sposoby wyszukiwania i manipulowania relacjami, które zostały opisane jako tabele relacji encji, które odwzorowują jeden zestaw rzeczy na inne zestawy. Przykłady języków zorientowanych na dane obejmują:

Języki tabeli decyzyjnej

Tabele decyzyjne mogą być używane jako pomoc w wyjaśnieniu logiki przed napisaniem programu w dowolnym języku, ale w latach 60. opracowano szereg języków, w których główna logika jest wyrażana bezpośrednio w formie tabeli decyzyjnej, w tym:

Języki deklaratywne

Języki deklaratywne wyrażają logikę obliczeń bez szczegółowego opisu przepływu sterowania. Programowanie deklaratywne stoi w przeciwieństwie do programowania imperatywnego za pomocą imperatywnych języków programowania, gdzie przepływ sterowania jest określony przez rozkazy szeregowe (imperatywy). (Czyste) funkcjonalne i oparte na logice języki programowania są również deklaratywne i stanowią główne podkategorie kategorii deklaratywnej. W tej sekcji wymieniono dodatkowe przykłady, których nie ma w tych podkategoriach.

Osadzane języki

W kodzie źródłowym

Języki, które można osadzić w źródłach, osadzają małe fragmenty kodu wykonywalnego wewnątrz fragmentu tekstu o dowolnej formie, często strony internetowej.

Języki osadzone po stronie klienta są ograniczone możliwościami przeglądarki lub zamierzonego klienta. Mają na celu zapewnienie dynamizmu stronom internetowym bez konieczności ponownego kontaktu z serwerem.

Języki wbudowane po stronie serwera są znacznie bardziej elastyczne, ponieważ w serwerze można wbudować prawie każdy język. Celem osadzania fragmentów kodu po stronie serwera na stronie internetowej jest dynamiczne generowanie dodatkowych znaczników; sam kod znika, gdy strona jest obsługiwana, i zostaje zastąpiony jej danymi wyjściowymi.

Po stronie serwera

  • PHP
  • VBScript
  • SMX – dedykowany do stron internetowych
  • Tcl – server-side w NaviServer i niezbędny komponent w systemach przemysłu elektronicznego
  • WebDNA – dedykowany dla stron internetowych opartych na bazach danych

Powyższe przykłady są szczególnie dedykowane do tego celu. Wiele innych języków, takich jak Erlang , Scala , Perl i Ruby może zostać zaadaptowanych (na przykład poprzez przekształcenie w moduły Apache ).

Strona klienta

W kodzie obiektu

W skompilowanym kodzie wykonywalnym można osadzić wiele różnych języków dynamicznych lub skryptowych. Zasadniczo kod wynikowy dla interpretera języka musi być połączony z plikiem wykonywalnym. Fragmenty kodu źródłowego dla języka osadzonego można następnie przekazać do funkcji oceny jako ciągi. W ten sposób można zaimplementować języki kontroli aplikacji, jeśli kod źródłowy jest wprowadzany przez użytkownika. Preferowane są języki z małymi tłumaczami.

Edukacyjne języki programowania

Języki opracowane przede wszystkim w celu nauczania i uczenia się programowania.

Języki ezoteryczne

Ezoteryczny język programowania to język programowania zaprojektowany jako test granicach programowania komputerowego projektowania języka, jako dowód koncepcji, lub jako żart.

Języki rozszerzeń

Języki programowania rozszerzeń to języki osadzone w innym programie i używane do wykorzystania jego funkcji w skryptach rozszerzeń.

Języki czwartej generacji

Języki programowania czwartej generacji to języki wysokiego poziomu zbudowane wokół systemów baz danych. Są powszechnie używane w środowiskach komercyjnych.

Języki funkcjonalne

Funkcjonalne języki programowania definiują programy i podprogramy jako funkcje matematyczne i traktują je jako pierwszorzędne. Wiele tak zwanych języków funkcjonalnych jest „nieczystych”, zawierających cechy imperatywne. Wiele języków funkcjonalnych jest powiązanych z narzędziami do obliczeń matematycznych. Języki funkcjonalne obejmują:

Czysty

Zanieczyszczony

Języki opisu sprzętu

W elektronice język opisu sprzętu (HDL) jest wyspecjalizowanym językiem komputerowym używanym do opisywania struktury, projektu i działania obwodów elektronicznych, a najczęściej cyfrowych obwodów logicznych. Dwie najczęściej używane i dobrze obsługiwane odmiany HDL stosowane w przemyśle to Verilog i VHDL . Języki opisu sprzętu obejmują:

HDL do projektowania obwodów analogowych

  • Verilog-AMS (Verilog dla sygnału analogowego i mieszanego)
  • VHDL-AMS (VHDL z rozszerzeniem sygnału analogowego/mieszanego)

HDL do projektowania obwodów cyfrowych

Języki imperatywne

Języki programowania imperatywnego mogą być wieloparadygmatyczne i występować w innych klasyfikacjach. Oto lista języków programowania zgodnych z imperatywnym paradygmatem :

Języki trybu interaktywnego

Języki trybu interaktywnego działają jak rodzaj powłoki: wyrażenia lub instrukcje można wprowadzać pojedynczo, a wynik ich oceny jest widoczny natychmiast. Tryb interaktywny jest również nazywany pętlą odczytu, oceny i drukowania (REPL).

Tłumaczone języki

Języki interpretowane to języki programowania, w których programy mogą być wykonywane z postaci kodu źródłowego przez interpreter. Teoretycznie każdy język może być kompilowany lub interpretowany, więc termin „ język interpretowany” odnosi się do języków, które zwykle są interpretowane, a nie kompilowane.

Języki iteracyjne

Języki iteracyjne są budowane wokół lub oferują generatory .

Języki według typu zarządzania pamięcią

Języki zbierane ze śmieci

Garbage Collection (GC) to forma automatycznego zarządzania pamięcią. Moduł odśmiecania pamięci próbuje odzyskać pamięć przydzieloną przez program, ale nie jest już używana.

Języki z ręcznym zarządzaniem pamięcią

Języki z deterministycznym zarządzaniem pamięcią

Języki z automatycznym liczeniem referencji (ARC)

Języki oparte na listach – LISP

Języki oparte na listach to typ języka o strukturze danych, który jest oparty na strukturze danych listy .

Małe języki

Małe języki służą do wyspecjalizowanej dziedziny problemowej.

  • awk – używany do manipulacji plikami tekstowymi.
  • Comet – służy do rozwiązywania złożonych problemów optymalizacji kombinatorycznej w obszarach takich jak alokacja zasobów i harmonogramowanie
  • sed – analizuje i przekształca tekst
  • SQL – ma tylko kilka słów kluczowych, a nie wszystkie konstrukcje potrzebne do pełnego języka programowania – wiele systemów zarządzania bazami danych rozszerza SQL o dodatkowe konstrukcje jako język procedur składowanych

Języki oparte na logice

Języki oparte na logice określają zestaw atrybutów, które musi mieć rozwiązanie, a nie zestaw kroków w celu uzyskania rozwiązania.

Znane języki zgodne z tym paradygmatem programowania obejmują:

Języki maszynowe

Języki maszynowe są bezpośrednio wykonywane przez procesor komputera. Są one zazwyczaj formułowane jako wzorce bitowe, zwykle reprezentowane w postaci ósemkowej lub szesnastkowej . Każdy wzór bitowy powoduje, że obwody w procesorze wykonują jedną z podstawowych operacji sprzętowych. Aktywacja określonych wejść elektrycznych (np. pinów obudowy procesora dla mikroprocesorów) oraz ustawienia logiczne wartości stanu procesora sterują obliczeniami procesora. Poszczególne języki maszynowe są specyficzne dla rodziny procesorów; kod w języku maszynowym dla jednej rodziny procesorów nie może działać bezpośrednio na procesorach z innej rodziny, chyba że dane procesory mają do tego dodatkowy sprzęt (na przykład procesory DEC VAX mają tryb zgodności PDP-11). Są one (zasadniczo) zawsze definiowane przez programistę procesora, a nie przez strony trzecie. Wersja symboliczna, język asemblera procesora , jest również w większości przypadków definiowana przez programistę. Niektóre powszechnie używane zestawy instrukcji kodu maszynowego to:

Języki makr

Języki makr zastępowania tekstu

Języki makr przekształcają jeden plik kodu źródłowego w inny. „Makro” to w zasadzie krótki fragment tekstu, który rozwija się w dłuższy (nie mylić z makrami higienicznymi ), prawdopodobnie z podmianą parametrów. Są często używane do wstępnego przetwarzania kodu źródłowego. Preprocesory mogą również dostarczać funkcje, takie jak dołączanie plików .

Języki makr mogą być ograniczone do działania na specjalnie oznaczonych regionach kodu (z prefiksem #w przypadku preprocesora C). Ewentualnie mogą nie, ale w tym przypadku często niepożądane jest (na przykład) rozszerzanie makra osadzonego w literale ciągu , więc nadal potrzebują podstawowej świadomości składni. W związku z tym często nadal mają zastosowanie do więcej niż jednego języka. Porównaj z językami , które można osadzić w źródłach, takimi jak PHP , które są w pełni funkcjonalne.

  • cpp (preprocesor C)
  • m4 (pierwotnie z AT&T, w pakiecie z Unixem)
  • ML/I (procesor makr ogólnego przeznaczenia)

Języki makr aplikacji

Języki skryptowe, takie jak Tcl i ECMAScript ( ActionScript , ECMAScript dla XML , JavaScript , JScript ) zostały osadzone w aplikacjach. Są one czasami nazywane „językami makr”, chociaż w nieco innym sensie niż makra zastępujące tekst, takie jak m4 .

Języki metaprogramowania

Metaprogramming jest pisanie programów, które piszą lub manipulować innych programów, w tym siebie, jako że ich dane lub wykonać część prac, które są inaczej wykonane w czasie wykonywania podczas kompilacji . W wielu przypadkach pozwala to programistom zrobić więcej w takim samym czasie, jaki zajęłoby im ręczne napisanie całego kodu.

Języki wieloparadygmatyczne

Języki wieloparadygmatyczne obsługują więcej niż jeden paradygmat programowania . Pozwalają programowi na używanie więcej niż jednego stylu programowania . Celem jest umożliwienie programistom korzystania z najlepszego narzędzia do pracy, przyznając, że żaden paradygmat nie rozwiązuje wszystkich problemów w najprostszy i najbardziej efektywny sposób.

  • 1C: Język programowania dla przedsiębiorstw (ogólny, imperatywny, obiektowy, prototypowy, funkcjonalny)
  • Ada ( współbieżne , rozproszone , ogólne ( metaprogramowanie szablonowe ), imperatywne , obiektowe ( oparte na klasach )
  • ALF ( funkcjonalne , logiczne )
  • Alma-0 (ograniczenie, imperatyw, logika)
  • APL (funkcjonalne, imperatywne, obiektowe (oparte na klasach))
  • BETA (funkcjonalna, imperatywna, obiektowa (oparta na klasach))
  • C++ (ogólne, imperatywne, obiektowe (oparte na klasach), funkcjonalne, metaprogramowanie)
  • C# (ogólny, imperatywny, obiektowy (oparty na klasach), funkcjonalny, deklaratywny)
  • Cejlon (ogólny, imperatywny, obiektowy (klasowy), funkcjonalny, deklaratywny)
  • ChucK (imperatywne, obiektowe, oparte na czasie, współbieżne, w locie)
  • Cobra (ogólna, imperatywna, obiektowa (oparta na klasach), funkcjonalna, kontraktowa)
  • Common Lisp (funkcjonalne, imperatywne, zorientowane obiektowo (oparte na klasach), zorientowane aspektowo (użytkownik może dodać kolejne paradygmaty, np. logikę))
  • Curl (funkcjonalne, imperatywne, obiektowe (oparte na klasach), metaprogramowanie)
  • Curry (współbieżne, funkcjonalne, logiczne)
  • D (ogólne, imperatywne, funkcjonalne, obiektowe (oparte na klasach), metaprogramowanie)
  • Delphi Object Pascal (ogólne, imperatywne, obiektowe (oparte na klasach), metaprogramowanie)
  • Dylan (funkcjonalne, zorientowane obiektowo (oparte na klasach))
  • eC (ogólne, imperatywne, obiektowe (oparte na klasach))
  • ECMAScript (funkcjonalne, imperatywne, obiektowe (oparte na prototypach))
  • Eiffel (imperatywne, obiektowe (oparte na klasach), generyczne, funkcjonalne (agenci), współbieżne (SCOOP))
  • F# (funkcjonalne, ogólne, zorientowane obiektowo (oparte na klasach), zorientowane na język)
  • Fantom (funkcjonalny, obiektowy (oparty na klasach))
  • Idź (imperatywna, proceduralna),
  • Groovy (funkcjonalne, obiektowe (oparte na klasach), imperatywne, proceduralne)
  • Port
  • Chmiel
  • J (funkcjonalne, imperatywne, obiektowe (oparte na klasach))
  • Julia (imperatyw, wielokrotna wysyłka ("zorientowana obiektowo"), funkcjonalna, metaprogramowanie)
  • LabVIEW ( przepływ danych , wizualizacja )
  • Lawa (zorientowana obiektowo (oparta na klasach), wizualna)
  • Lua (funkcjonalna, imperatywna, obiektowa ( prototypowa ))
  • Merkury (funkcjonalny, logiczny, obiektowy)
  • Protokoły metaobiektowe (zorientowane obiektowo (oparte na klasach, oparte na prototypach))
  • Nemerle (funkcjonalne, obiektowe (oparte na klasach), imperatywne, metaprogramowanie)
  • Cel-C (imperatywne, zorientowane obiektowo (oparte na klasach), refleksyjne)
  • OCaml (funkcjonalny, imperatywny, obiektowy (klasowy), modułowy)
  • Oz (funkcjonalny (ocena: zachłanny , leniwy ), logiczny, ograniczający , imperatywny, obiektowy (oparte na klasach), współbieżny, rozproszony) i wieloplatformowy system programowania Mozarta Oz
  • Object Pascal (imperatywne, zorientowane obiektowo (oparte na klasach))
  • Perl (imperatywne, funkcjonalne (nie może być czysto funkcjonalne), zorientowane obiektowo, zorientowane na klasy, zorientowane aspektowo (poprzez moduły))
  • PHP (imperatywne, obiektowe, funkcjonalne (nie może być czysto funkcjonalne))
  • Pike (interpretowany, ogólnego przeznaczenia, wysokopoziomowy, wieloplatformowy, dynamiczny język programowania)
  • Prograph (przepływ danych, obiektowy (oparty na klasach), wizualny)
  • Python (funkcjonalny, skompilowany, interpretowany, zorientowany obiektowo (oparty na klasach), imperatyw, metaprogramowanie, rozszerzenie, nieczysty, tryb interaktywny, iteracyjny, refleksyjny, skryptowy)
  • R (tablica, interpretowana, nieczysta, tryb interaktywny, oparty na listach, obiektowy oparty na prototypach, skrypty)
  • Rakieta (funkcjonalna, imperatywna, obiektowa (oparta na klasach) i może być rozszerzana przez użytkownika)
  • REBOL (funkcjonalne, imperatywne, obiektowe (oparte na prototypach), metaprogramowanie (dialektowe))
  • Czerwony (funkcjonalne, imperatywne, obiektowe (oparte na prototypach), metaprogramowanie (dialektowe))
  • ROOP (imperatywne, logiczne, obiektowe (oparte na klasach), oparte na regułach)
  • Ruby (imperatywne, funkcjonalne, obiektowe (oparte na klasach), metaprogramowanie)
  • Rust (współbieżny, funkcjonalny, imperatywny, obiektowy, generyczny, metaprogramowanie, skompilowany)
  • Scala (funkcjonalna, obiektowa)
  • Seed7 (imperatywne, obiektowe, ogólne)
  • SISAL (współbieżny, przepływ danych, funkcjonalny)
  • Arkusze kalkulacyjne (funkcjonalne, wizualne)
  • Swift (zorientowany na protokoły, zorientowany obiektowo, funkcjonalny, imperatywny, o strukturze blokowej)
  • Tcl (funkcjonalne, imperatywne, obiektowe (oparte na klasach))
    • Herbata (funkcjonalna, imperatywna, obiektowa (klasowa))
  • Windows PowerShell (funkcjonalne, imperatywne, potokowe, zorientowane obiektowo (oparte na klasach))
  • Język Wolfram

Analiza numeryczna

Kilka języków programowania ogólnego przeznaczenia, takich jak C i Python , jest również używanych do obliczeń technicznych. Ta lista skupia się na językach prawie wyłącznie używanych do obliczeń technicznych.

Języki inne niż angielski

Języki obiektowe oparte na klasach

Języki programowania obiektowego oparte na klasach obsługują obiekty zdefiniowane przez ich klasę. Definicje klas zawierają dane składowe. Przekazywanie wiadomości jest pojęciem kluczowym (jeśli nie kluczowym pojęciem) w językach zorientowanych obiektowo.

Funkcje polimorficzne sparametryzowane przez klasę niektórych ich argumentów są zwykle nazywane metodami. W językach z pojedynczą wysyłką klasy zazwyczaj zawierają również definicje metod. W językach z wielokrotną wysyłką metody są definiowane przez funkcje generyczne . Istnieją wyjątki, w których pojedyncze metody wysyłaniafunkcjami ogólnymi (np. system obiektów Bigloo ).

Wielokrotna wysyłka

Pojedyncza wysyłka

Zorientowane obiektowo języki oparte na prototypach

Języki oparte na prototypach to języki obiektowe, w których usunięto rozróżnienie między klasami i instancjami:

Języki reguł off-side

Języki reguł off-side oznaczają bloki kodu przez ich wcięcia .

Języki proceduralne

Języki programowania proceduralnego opierają się na koncepcji jednostki i zakresu (zakresu wyświetlania danych) instrukcji kodu wykonywalnego. Program proceduralny składa się z jednej lub więcej jednostek lub modułów, zakodowanych przez użytkownika lub dostarczonych w bibliotece kodów; każdy moduł składa się z jednej lub więcej procedur, zwanych również funkcją, procedurą, podprogramem lub metodą, w zależności od języka. Przykłady języków proceduralnych obejmują:

Języki zapytań

Refleksyjny język

Języki refleksyjne pozwalają programom badać i ewentualnie modyfikować ich strukturę wysokiego poziomu w czasie wykonywania lub w czasie kompilacji. Jest to najczęściej spotykane w językach programowania maszyn wirtualnych wysokiego poziomu, takich jak Smalltalk , a rzadziej w językach programowania niższego poziomu, takich jak C . Języki i platformy wspierające refleksję:

Języki oparte na regułach

Języki oparte na regułach tworzą instancje reguł, gdy są aktywowane przez warunki w zestawie danych. Ze wszystkich możliwych aktywacji wybierany jest pewien zestaw i wykonywane są instrukcje należące do tych reguł. Języki oparte na regułach obejmują:

Języki skryptowe

Język skryptowy ” ma dwa pozornie różne, ale w rzeczywistości podobne znaczenia. W tradycyjnym sensie języki skryptowe są zaprojektowane do automatyzacji często używanych zadań, które zwykle obejmują wywoływanie lub przekazywanie poleceń do programów zewnętrznych. Wiele złożonych aplikacji udostępnia wbudowane języki, które umożliwiają użytkownikom automatyzację zadań. Te, które mają charakter interpretacyjny, są często nazywane językami skryptowymi.

Ostatnio wiele aplikacji ma wbudowane tradycyjne języki skryptowe, takie jak Perl czy Visual Basic , ale wciąż używanych jest sporo rodzimych języków skryptowych. Wiele języków skryptowych jest kompilowanych do kodu bajtowego, a następnie ten (zazwyczaj) kod bajtowy niezależny od platformy jest uruchamiany przez maszynę wirtualną (porównaj z wirtualną maszyną Java ).

Języki oparte na stosie

Języki oparte na stosie to typ języka o strukturze danych, który jest oparty na strukturze danych stosu .

Języki synchroniczne

Synchroniczne języki programowania są zoptymalizowane pod kątem programowania reaktywnych systemów, systemów, które są często przerywane i muszą szybko reagować. Wiele takich systemów jest również nazywanych systemami czasu rzeczywistego i jest często używanych w systemach wbudowanych .

Przykłady:

Języki cieniowania

Język cieniowania jest to graficzny język programowania przystosowany do programowania efektów cieniowania. Takie formularze językowe zwykle składają się ze specjalnych typów danych, takich jak „kolor” i „normalny”. Ze względu na różnorodność rynków docelowych grafiki komputerowej 3D.

Renderowanie w czasie rzeczywistym

Zapewniają one zarówno wyższą abstrakcję sprzętową, jak i bardziej elastyczny model programowania niż poprzednie paradygmaty, w których zakodowano równania transformacji i cieniowania. Daje to programiście większą kontrolę nad procesem renderowania i dostarcza bogatszą zawartość przy niższych kosztach.

Renderowanie offline

Języki cieniowania używane w renderowaniu offline zapewniają maksymalną jakość obrazu. Przetwarzanie takich shaderów jest czasochłonne. Wymagana moc obliczeniowa może być kosztowna ze względu na ich zdolność do uzyskiwania fotorealistycznych wyników.

Języki obsługi składni

Języki te pomagają w generowaniu analizatorów leksykalnych i parserów dla gramatyk bezkontekstowych .

Języki systemowe

Te języki programowania systemu są dla niskopoziomowych zadań, takich jak zarządzanie pamięcią i zarządzania zadaniami. Język programowania systemu zwykle odnosi się do języka programowania używanego do programowania systemu; takie języki są przeznaczone do pisania oprogramowania systemowego, co zwykle wymaga innych podejść programistycznych w porównaniu z oprogramowaniem aplikacyjnym.

Oprogramowanie systemowe to oprogramowanie komputerowe przeznaczone do obsługi i sterowania sprzętem komputerowym oraz do zapewnienia platformy do uruchamiania oprogramowania aplikacyjnego. Oprogramowanie systemowe obejmuje kategorie oprogramowania, takie jak systemy operacyjne, oprogramowanie narzędziowe, sterowniki urządzeń, kompilatory i konsolidatory. Przykłady języków systemowych obejmują:

Język Inicjator Po raz pierwszy pojawiły się Wpływem Używany do
ESPOL Burroughs Corporation 1961 ALGOL 60 MCP
PL/I IBM , UDOSTĘPNIJ 1964 ALGOL 60, FORTRAN, trochę COBOL Multiki
PL360 Niklaus Wirth 1968 ALGOL 60 ALGOL W
C Dennis Ritchie 1969 BCPL Większość jąder systemu operacyjnego , w tym Windows NT i większość systemów uniksopodobnych
PL/S IBM 196x PL/I OS/360
ROZKOSZ Carnegie Mellon University 1970 ALGOL-PL/I VMS (porcje)
PL/8 IBM 197x PL/I AIX
PL/MP i PL/MI IBM 197x PL/I CPF , OS/400
PL-6 Honeywell, Inc. 197x PL/I CP-6
SYMBOL CDC 197x JOWIALNY podsystemy NOS , większość kompilatorów, edytor FSE
C++ Bjarne Stroustrup 1979 C , Symula Zobacz aplikacje C++
Ada Jean Ichbiah , S. Tucker Taft 1983 ALGOL 68 , Pascal , C++ , Java , Eiffel Systemy wbudowane, jądra systemu operacyjnego, kompilatory, gry, symulacje, CubeSat , kontrola ruchu lotniczego i awionika
D Cyfrowy Mars 2001 C++ Wiele domen
Nimi Andreas Rumpf 2008 Ada , Modula-3 , Lisp , C++ , Object Pascal , Python , Oberon Jądra systemu operacyjnego, kompilatory, gry
Rdza Badania Mozilli 2010 C++ , Haskell , Erlang , Ruby Silnik układu serwo , Redox OS
Szybki Apple Inc. 2014 C , Cel-C , Rdza macOS , tworzenie aplikacji na iOS
Zig Andrzeja Kelleya 2016 C , C++ , LLVM IR , Go , Rust , JavaScript Jako zamiennik C

Języki transformacji

Języki wizualne

Języki programowania wizualnego pozwalają użytkownikom określać programy w sposób dwuwymiarowy (lub więcej), zamiast jako jednowymiarowe ciągi tekstowe, za pomocą układów graficznych różnych typów. Niektóre języki programowania przepływu danych są również językami wizualnymi.

Języki Wirth

Informatyk Niklaus Wirth zaprojektował i zaimplementował kilka wpływowych języków.

Języki oparte na XML

Są to języki oparte lub działające na XML .

Zobacz też

Uwagi

Bibliografia