Język programowania

Programowanie język jest konwencjonalny zapis do formułowania algorytmów i produkcji programów komputerowych , które je stosować. Podobnie jak język naturalny, język programowania składa się z alfabetu , słownictwa , reguł gramatycznych , znaczeń , ale także środowiska tłumaczeniowego, które ma sprawić, że jego składnia będzie zrozumiała dla maszyny.

Języki programowania pozwalają z jednej strony opisać struktury danych, którymi będzie manipulować aparat komputerowy, a z drugiej wskazać, w jaki sposób przeprowadzane są manipulacje, według jakich algorytmów. Służą jako środek komunikacji, za pomocą którego programista komunikuje się z komputerem, ale także z innymi programistami; programy są zwykle pisane, czytane, rozumiane i modyfikowane przez zespół programistów.

Język programowania jest implementowany przez automatycznego tłumacza: kompilator lub interpreter . Kompilator to program komputerowy, który najpierw przekształca kod źródłowy napisany w danym języku programowania na kod docelowy, który może być bezpośrednio wykonywany przez komputer, czyli program w języku maszynowym lub w kodzie pośrednim , podczas gdy Interpreter dokonuje tego tłumaczenia " w locie".

Języki programowania oferują różne możliwości abstrakcji i notacji zbliżonej do algebry , dzięki czemu można w zwięzły i łatwy do zrozumienia sposób opisać operacje manipulacji danymi i ewolucję przepływu programu w zależności od sytuacji. Możliwość pisania abstrakcyjnego uwalnia umysł programisty od zbędnej pracy, w tym uwzględniania specyfiki sprzętu komputerowego, a tym samym pozwala mu skoncentrować się na bardziej zaawansowanych problemach.

Każdy język programowania obsługuje jedno lub więcej podejść do programowania - paradygmatów . Koncepcje wprowadzające paradygmat są częścią języka programowania i pozwalają programiście wyrazić w języku rozwiązanie, które zostało wymyślone zgodnie z tym paradygmatem.

Pierwsze języki programowania powstały w latach pięćdziesiątych w tym samym czasie, co nadejście komputerów . Jednak wiele koncepcji programowania zostało zainicjowanych przez jeden język lub czasami kilka języków, zanim zostały ulepszone, a następnie rozszerzone na kolejne języki. Przez większość czasu projekt języka programowania był pod silnym wpływem doświadczenia zdobytego z poprzednimi językami.

Definicja

Język programowania jest zbudowany z gramatyki formalnej , która zawiera symbole i reguły składniowe, z którymi powiązane są reguły semantyczne. Te elementy są mniej lub bardziej złożone w zależności od możliwości języka. Tryby działania i definicja złożoności języka programowania są zazwyczaj określane przez ich przynależność do jednego ze stopni hierarchii Chomsky'ego .

Z teoretycznego punktu widzenia każdy język komputerowy może być zakwalifikowany jako język programowania, jeśli jest zupełny pod względem Turinga, to znaczy, że umożliwia reprezentację wszystkich funkcji obliczalnych w sensie Turinga i Churcha (przy czym dla wyjątku od teorii, że pamięć komputerów nie jest nieskończoną przestrzenią).

Te zasady składni Zdefiniowane przez gramatykę formalną , regulują różne sposoby łączenia elementów języka w celu uzyskania programów. Interpunkcja (na przykład umieszczenie symbolu ; na końcu wiersza instrukcji programu) jest kwestią składni. słownictwo Wśród elementów języka słownictwo reprezentuje zbiór instrukcji zbudowanych z symboli . Instrukcja może być mnemoniczna lub tylko symboliczna, gdy jest reprezentowana przez symbole operacji, takie jak operatory arytmetyczne ("+" i "-") lub Boolean (&& dla logicznych i na przykład). Czasami mówimy również o słowie kluczowym do oznaczenia instrukcji (przez nadużycie języka, ponieważ pojęcie słowa kluczowego nie obejmuje symboli, które są jednak również częścią słownika ). że semantyka Reguły semantyki określają znaczenie każdego ze zdań, które można skonstruować w języku, w szczególności jakie będą skutki tego zdania podczas wykonywania programu. Nauka dla studenta to semantyka języków programowania . alfabet Alfabet dla języków programowania oparty jest na obecnych standardach takich jak ASCII , który składa się z liter od A do Z bez akcentów, cyfr i symboli, czy Unicode dla większości współczesnych języków (w których użycie ogranicza się do ciągów ogólnych do dosłownych i komentarze, z pewnymi godnymi uwagi wyjątkami, takimi jak C♯, które również dopuszczają identyfikatory Unicode).

Większość języków programowania może dostarczać dodatkowe elementy strukturalne, metody proceduralne oraz tymczasowe i zmienne definicje i identyfikatory:

te komentarze Te komentarze są teksty, które nie będą tłumaczone. Można je dodawać w programach, aby pozostawić wyjaśnienia. Komentarze są oddzielone znakami, które różnią się w zależności od języka programowania, np. "-" , "/*" lub "//" . te identyfikatory Bloki konstrukcyjne programu, takie jak zmienne , procedury lub typy, służą do organizowania programu i jego działania. Możemy więc na przykład podzielić program na funkcje lub nadać mu strukturę przez obiekty  : te elementy struktury są definiowane przez identyfikatory lub procedury słów kluczowych w zależności od języka.

posługiwać się

Język programowania zapewnia strukturę do budowania algorytmów i wyrażania diagramów przepływu. Umożliwia w szczególności opisanie struktur danych, które będą obsługiwane przez aparat komputerowy i jakie będą manipulacje. Język programowania jest używany jako środek komunikacji z komputerem, ale także między programistami: programy są zwykle pisane, czytane i modyfikowane przez zespół programistów.

Język programowania oferuje zestaw pojęć, których można użyć jako prymitywów do tworzenia algorytmów. Programiści doceniają to, że język jest jasny, prosty i zunifikowany, że istnieje minimum pojęć, które można łączyć według prostych i regularnych zasad. Cechy języka programowania wpływają na łatwość, z jaką programy można pisać, testować, a następnie rozumieć i modyfikować.

Łatwość użycia, przenośność i przejrzystość to popularne cechy języków programowania. Łatwość obsługi, która zależy od składni, słownictwa i symboli, wpływa na czytelność programów napisanych w tym języku i czas nauki. Przenośność pozwala na przeniesienie programu napisanego do wykonania przez daną platformę komputerową (system operacyjny) do wykonania na innej platformie.

Programiści lubią składnię do wyrażania logicznej struktury nieodłącznie związanej z programem. Jedną z trosk w programowaniu jest unikanie awarii, możliwość ich wykrycia, uniknięcia i naprawa; jest to możliwe dzięki wewnętrznym mechanizmom języków programowania. Czasami przeprowadzane są niejawne sprawdzenia w celu znalezienia problemów.

Programiści doceniają to, że język programowania jest zgodny z dobrymi praktykami programistycznymi i inżynieryjnymi, zachęca do konstruowania programu, ułatwia konserwację programu i powstrzymuje lub nawet zabrania złych praktyk. Na przykład używanie instrukcji goto, która istnieje od wczesnych języków programowania, jest uważane za złą praktykę. Jego użycie nie jest zalecane, a nawet niemożliwe w najnowszych językach programowania.

Dostosowanie do standardów branżowych, możliwość korzystania z funkcji napisanych w innym języku programowania oraz jednoczesne wykonywanie wielu wątków to popularne możliwości dla języków programowania.

Wspólne koncepcje

Język programowania opiera się na zestawie pojęć, takich jak instrukcje, zmienne, typy i procedury lub funkcje, które można wykorzystać jako prymitywy do tworzenia algorytmów.

Instrukcja

Rozkaz wydany komputerowi.

Zmienna

Nazwa używana w programie w odniesieniu do danych manipulowanych przez program.

Stała

Nazwa używana w odniesieniu do stałej wartości.

Dosłowne wyrażenie

Wartość podana w całości w programie.

typ

Każda z danych posiada klasyfikację, która wpływa na zakres możliwych wartości, operacje, które można wykonać oraz reprezentację danych w postaci bitów. Każdy język programowania oferuje szereg typów pierwotnych , włączonych do języka. Niektóre języki oferują możliwość tworzenia nowych typów.

Najczęstsze typy danych pierwotnych są liczbami całkowitymi , liczbami rzeczywistymi , logiczna , sznurki, i wskazówki .

W szczególności typ logiczny to typ, który ma tylko dwie wartości, true i false , podczas gdy typ wskaźnika odnosi się do danych znajdujących się gdzieś w pamięci.

Na przykład język C ma wiele typów, które pozwalają precyzyjnie wybrać ilość pamięci przydzielonej do danych.

Struktura danych

Charakterystyczny sposób organizacji zbioru danych w pamięci, który wpływa na algorytmy służące do manipulowania nimi. Typowe struktury to tablice , rekordy , listy , stosy , kolejki i drzewa .

Deklaracja

Zdanie programu, które służy do informowania tłumacza (kompilatora, interpretera itp.) o nazwach i cechach elementów programu, takich jak zmienne, procedury, typy itp.

Kontrole są przeprowadzane w czasie kompilacji lub podczas wykonywania programu, aby upewnić się, że operacje programu są możliwe z używanymi typami danych. W języku silnie typizowanym każdy element programu ma unikalny typ, znany i sprawdzany w czasie kompilacji, co umożliwia wychwycenie błędów przed wykonaniem programu.

Procedury, funkcje, metody

Różne języki programowania dają możliwość wyizolowania fragmentu programu i uczynienia go ogólną, konfigurowalną operacją, której można używać wielokrotnie. Te fragmenty nazywane są procedurami , funkcjami lub metodami , w zależności od paradygmatu.

Moduły

Języki programowania mogą również oferować możliwość podzielenia programu na kilka części zwanych modułami , z których każda ma określoną rolę, a następnie połączenia części.

Koncepcje procedury i modułu mają na celu ułatwienie tworzenia złożonych i obszernych programów poprzez pomoc w radzeniu sobie z tą złożonością. Funkcje te pozwalają w szczególności na modularność i abstrakcję .

Paradygmaty

Paradygmat jest jednym ze sposobów zbliża programowania. Każdy paradygmat wnosi swoją filozofię programowania; gdy programista wyobrazi sobie rozwiązanie zgodnie z określonym paradygmatem, język programowania zgodny z tym paradygmatem pozwoli na jego wyrażenie. Paradygmaty programowania to imperatywne, deklaratywne, funkcjonalne, logiczne, zorientowane obiektowo, konkurencyjne, wizualne, sterowane zdarzeniami i internetowe. Każdy język programowania odzwierciedla jeden lub więcej paradygmatów, dostarczając zestaw pojęć, których można użyć do wyrażenia rozwiązania problemu programistycznego. Na przestrzeni dziejów naukowcy i programiści zidentyfikowali zalety i ograniczenia stylu programowania i wprowadzili nowe style. Większość współczesnych języków programowania pozwala na przyjęcie kilku paradygmatów programowania pod warunkiem, że są one kompatybilne.

imperatyw (lub proceduralny)

Paradygmat imperatywny lub proceduralny opiera się na zasadzie wykonywania instrukcji krok po kroku, tak jak robienie przepisu kulinarnego. Opiera się na zasadzie maszyny Von Neumanna . Zestaw instrukcji sterujących przepływem wykonania kontroluje kolejność wykonywania instrukcji opisujących kroki. C The Pascal The Fortran i COBOL są przykłady język programowania, który implementuje imperatyw paradygmatu.

Deklaracyjny

Zasadniczo istnieją dwa paradygmaty deklaratywne; są to paradygmat funkcjonalny i paradygmat logiczny. W paradygmacie funkcjonalnym program opisuje funkcje matematyczne. W paradygmacie logicznym opisuje predykaty  : to znaczy zdania, które raz utworzone, mogą być prawdziwe lub fałszywe lub nie otrzymać wartości prawdziwości (gdy ocena predykatu się nie kończy). W modelu implementacyjnym abstrakcyjna maszyna wykonuje operacje niezbędne do obliczenia wyniku każdej funkcji lub każdego predykatu. W tych paradygmatach zmienna nie jest zmieniana przez przypisanie . Jedną z głównych cech jest przezroczystość referencyjna , co oznacza, że ​​wyrażenie można zastąpić jego wynikiem bez zmiany zachowania programu.

Funkcjonalny

Paradygmat funkcjonalny opiera się na ocenie formuł w celu wykorzystania wyniku do innych obliczeń; opiera się na rekurencji, a jej modelem jest rachunek lambda , a dokładniej redukcja kształtu normalnego głowy . Wszystkie obliczenia oceniają wyrażenia lub wywołania funkcji. Mówiąc prościej, wynik obliczenia jest używany do obliczenia lub obliczeń, które wymagają jego wyniku, dopóki funkcja, która daje wynik programu, nie zostanie oceniona. Paradygmat funkcjonalny został wprowadzony przez języki Lisp i ISWIM, a także w odniesieniu do funkcji rekurencyjnych przez Algol 60 w latach 60. Języki takie jak Ruby i Scala obsługują kilka paradygmatów, w tym paradygmat funkcjonalny, podczas gdy Haskell obsługuje tylko paradygmat funkcjonalny a OCaml faworyzuje paradygmat funkcjonalny, który dzieli z paradygmatem przedmiotowym i niewielką dozą imperatywu.

Logika

Paradygmat logiczny ma na celu odpowiedź na pytanie poprzez badanie zbioru, przy użyciu aksjomatów, zapytań i reguł dedukcji. Wykonanie programu to kaskada poszukiwań faktów w zbiorze, odwołujących się do reguł dedukcji. Uzyskane dane można powiązać z innym zestawem reguł, a następnie wykorzystać w kontekście innego badania. Program realizowany jest przez ewaluację: system wyszukuje wszystkie zestawienia, które dedukcyjnie odpowiadają przynajmniej jednemu elementowi zbioru. Programista określa zasady, a system steruje procesem. Paradygmat logiczny został wprowadzony przez język Prolog w 1970 roku.

Zorientowany obiektowo

Paradygmat obiektowy ma na celu ułatwienie podziału dużego programu na kilka odizolowanych od siebie modułów. Wprowadza pojęcia przedmiotu i dziedziczenia. Obiekt zawiera zmienne i funkcje związane z podmiotem. Zmienne mogą być private , to znaczy, że mogą być obsługiwane tylko przez obiekt, który je zawiera. Obiekt niejawnie zawiera zmienne i funkcje swoich przodków, a to dziedziczenie pomaga w ponownym użyciu kodu. Paradygmat obiektowy umożliwia silne powiązanie danych z procedurami. Został wprowadzony przez język Simula w latach 60. i stał się popularny w latach 80., kiedy wzrost mocy obliczeniowej komputerów umożliwił uruchamianie dużych programów. Różne języki programowania zostały wzbogacone, aby umożliwić programowanie obiektowe; tak jest w przypadku C++ (pochodzącego z języka C ), Simula , Smalltalk , Swift i Java to języki programowania w paradygmacie obiektowym.

Konkurent

W paradygmacie współbieżnym program może wykonywać kilka zadań jednocześnie. Ten paradygmat wprowadza pojęcia wątku , aktywnego oczekiwania i zdalnego wywołania funkcji. Koncepcje te zostały wprowadzone w latach 80., kiedy w wyniku rozwoju technologicznego komputer stał się maszyną z kilkoma procesorami, zdolną do wykonywania kilku zadań jednocześnie. Współczesne języki programowania 2013, takie jak C++ i Java, są odpowiednie dla mikroprocesorów wielordzeniowych i umożliwiają tworzenie i manipulację wątkami. Niedawno zaobserwowaliśmy pojawienie się języków w pełni zorientowanych na zarządzanie współbieżnością, takich jak język Go .

Wizualny

W zdecydowanej większości języków programowania kodem źródłowym jest tekst, co utrudnia wyrażanie obiektów dwuwymiarowych. Język programowania, taki jak Delphi lub C#, umożliwia manipulowanie obiektami poprzez przeciąganie i upuszczanie, a wynikowy rysunek jest następnie tłumaczony na zorientowaną obiektowo i sterowaną zdarzeniami reprezentację tekstową. Paradygmat wizualny został wprowadzony pod koniec lat 80. przez Alana Kay'a w języku Smalltalk w celu ułatwienia programowania interfejsów graficznych .

Zdarzenie

Podczas gdy interaktywny program zadaje pytanie i wykonuje działania na podstawie odpowiedzi, w stylu zdarzenia program nie czeka na nic i jest wykonywany, gdy coś się wydarzy. Na przykład użytkownik porusza myszą lub naciska przycisk. W tym paradygmacie programowanie polega na opisaniu działań, które należy podjąć w odpowiedzi na zdarzenia. A działanie kaskadowe może wywołać inną akcję odpowiadającą innemu zdarzeniu. Paradygmat zdarzeń został wprowadzony przez język Simula w latach 70. Stał się popularny wraz z pojawieniem się interfejsów graficznych i aplikacji internetowych.

Internetowy

Wraz z nadejściem Internetu w latach 90. dane, obrazy i kod są wymieniane między komputerami. Jeśli wynik zostanie zażądany z komputera, może on uruchomić odpowiedni program i wysłać wynik. Może również wysłać niezbędny kod do komputera klienckiego, aby sam obliczyć wynik. Program rzadko jest tłumaczony na język maszynowy , ale raczej interpretowany lub tłumaczony na formę pośrednią, kod bajtowy , który będzie wykonywany przez maszynę wirtualną lub tłumaczony na język maszynowy w czasie wykonywania ( just-in-time ). Java, PHP i Javascript to internetowe języki programowania.

Realizacja

Korzystanie z języka jest możliwe dzięki automatycznemu tłumaczowi. Program, który pobiera tekst napisany w tym języku, aby coś z nim zrobić, zwykle albo:

kompilator

Program , który tłumaczy tekst w języku, który pozwoli jego wykonania, takie jak język maszynowy , kod bajtowy lub asemblerze .

interpreter

Program, który wykonuje żądane instrukcje. Pełni taką samą rolę jak maszyna, która rozpoznaje ten język.

Język maszyny

Każde urządzenie komputerowe posiada zestaw instrukcji, których można używać do wykonywania operacji. Instrukcje umożliwiają wykonywanie obliczeń arytmetycznych lub logicznych, przenoszenie lub kopiowanie danych lub odgałęzienie do wykonywania innych instrukcji. Instrukcje te są zapisywane w postaci sekwencji bitów, gdzie każda sekwencja odpowiada kodowi operacji, która ma być wykonana, oraz operandom, to znaczy danym danym; to jest język maszynowy.

Tłumaczenie odbywa się w kilku etapach. Najpierw tłumacz dokonuje analizy leksykalnej, w której identyfikuje elementy językowe użyte w programie. W kolejnym kroku, parsowaniu , tłumacz konstruuje diagram drzewa, który odzwierciedla sposób, w jaki elementy języka zostały połączone w programie, tworząc instrukcje. Następnie, podczas analizy semantycznej , tłumacz określa, czy możliwe jest wykonanie operacji oraz instrukcje, które będą wymagane w języku docelowym.

W języku programowania asemblerowego słowa oszukujące (mnemonik) są używane do odwoływania się do instrukcji maszynowych. Instrukcje różnią się w zależności od konstruktora i to samo dotyczy mnemotechniki. Program asemblera tłumaczy każdy mnemonik na odpowiadającą mu sekwencję bitową.

Języki programowania często działają z wykorzystaniem środowiska uruchomieniowego .

Czas pracy

Runtime (tłumaczenie: wykonawca ) jest zbiorem bibliotek oprogramowania , które implementują język programowania, co pozwala na wykonywanie prostych operacji, takich jak kopiowanie danych, ale również znacznie bardziej skomplikowanych operacji.

Podczas tłumaczenia programu na język maszynowy proste operacje są tłumaczone na odpowiednie instrukcje języka maszynowego, podczas gdy złożone operacje są tłumaczone na zastosowania funkcji wykonawczych . W niektórych językach programowania wszystkie instrukcje są tłumaczone na zastosowania środowiska wykonawczego, które następnie służy jako pośrednik między możliwościami platformy komputerowej a konstrukcjami specyficznymi dla języka programowania.

Każdy język programowania ma konwencjonalny sposób tłumaczenia wykonywania procedur lub funkcji, umieszczania zmiennych w pamięci i przekazywania parametrów. Te konwencje są wymuszane przez środowisko uruchomieniowe . Środowisko uruchomieniowe służyło również do implementowania niektórych zaawansowanych funkcji języków programowania, takich jak odśmiecanie czy refleksja.

Języki programowania są zwykle implementowane samodzielnie, to znaczy kompilator dla tego języka programowania jest zaimplementowany w samym języku. Przykład: kompilator dla języka Pascal można napisać w języku Pascal.

Zaawansowane funkcje

Zaawansowane funkcje, takie jak garbage collector , obsługa wyjątków, zdarzeń lub wątków, a także późne wiązanie i odbicie są implementowane przez języki programowania runtime .

Śmieciarza

Mechanizm usuwający nieużywane zmienne i zwalniający zarezerwowaną dla nich przestrzeń pamięci.

wyjątek

Nieoczekiwany fakt, często przypadkowy, powoduje niepowodzenie normalnego przebiegu programu, a tym wyjątkowym faktem program musi się zająć, zanim będzie mógł być kontynuowany. Niektóre języki programowania pozwalają celowo zatrzymać normalny przepływ programu.

Zdarzenie

Procedura, która zostanie wykonana po spełnieniu określonego warunku. Zdarzenia wykorzystywane są w szczególności do implementacji interfejsów graficznych .

Jeden wątek

Sekwencja wykonywanych instrukcji. Języki programowania, które manipulują wątkami, umożliwiają jednoczesne wykonywanie wielu zadań. Ta możliwość jednoczesnego wykonywania, oferowana przez systemy operacyjne, jest również oferowana w lekkiej formie przez środowisko wykonawcze języków programowania.

Późne wiązanie

Proces wiązania ( opóźnione wiązanie w języku angielskim lub wiązanie dynamiczne ) polega na skojarzeniu każdego identyfikatora programu z odpowiednią lokalizacją pamięci. Operacja ta może być wykonywana podczas translacji programu, podczas wykonywania programu lub tuż przed, mówi się, że jest późno, gdy operacja łączenia jest wykonywana bardzo późno, tuż przed użyciem danej lokalizacji.

odbicie

Możliwość uzyskania przez program informacji dotyczących jego własnej charakterystyki. Instrukcje języka programowania umożliwiają programowi uzyskanie informacji o sobie i manipulowanie nimi jak danymi.

monada

Struktura pozwalająca na manipulowanie cechami imperatywnymi w czystych językach funkcjonalnych.

Historyczny

Chociaż pojęcie programu pojawia się stopniowo w drugiej połowie XIX e  wieku, pierwsze języki programowania nie pojawiają się aż do około roku 1950. Każdy jest w stanie stworzyć swój własny język, to jest niemożliwe, aby określić całkowitą liczbę języków. istniejące obecnie.

Zastosowania

Możemy również klasyfikować języki programowania ze względu na ich zastosowanie, ponieważ wiele języków specjalizuje się w konkretnej aplikacji lub domenie.

Języki dla dynamicznych stron internetowych

Ten typ języka jest używany do lepszej interakcji między klientem a serwerem .

Po stronie serwera WWW umożliwia to tworzenie stron, których treść jest generowana na każdym wyświetlaczu. Języki te są też często sprzężone z językiem do komunikacji z bazami danych (przykłady: PHP , LiveCode ).

Po stronie klienta (najczęściej przeglądarki internetowej ) języki te dają możliwość reagowania na określone działania użytkownika bez konieczności kwestionowania serwera. Na przykład JavaScript na stronie internetowej może reagować na dane wprowadzone przez użytkownika w formularzu (i sprawdzać format danych ).

Niektóre języki pozwalają na rozwój zarówno aspektów klienta, jak i serwera. Tak jest w przypadku Ocsigen , Hop , Dart czy nawet Server-Side JavaScript .

Teoretyczne języki programowania

Teoretyczny język programowania jest czasami określany jako systemy formalne używane do teoretycznego opisu działania komputerów. Nie służą one do tworzenia aplikacji, ale do reprezentowania modeli i demonstrowania niektórych ich właściwości.

Możemy przytoczyć maszynę Turinga i Kościoła X nazębnego, zarówno z których pochodzą z 1930 roku, a więc poprzedzać wynalezieniem komputera. Rachunek λ został następnie wykorzystany jako podstawa teoretyczna dla rodziny języków programowania funkcjonalnego . W latach 80. Robin Milner opracował rachunek π do modelowania konkurencyjnych systemów.

Języki egzotyczne

Języki egzotyczne mają na celu tworzenie kompletnych i funkcjonalnych gramatyk, ale w paradygmacie dalekim od konwencji. Wiele jest również uważanych za żarty.

Języki te są na ogół trudne do zastosowania w praktyce i dlatego rzadko są używane.

Języki specjalistyczne

  • ABEL , język programowania elektronicznego PLD
  • CDuce , język funkcyjny wyższego rzędu do manipulowania dokumentami w formacie XML.
  • Forma Backus-Naur (BNF), formalizacja języków programowania
  • PROMELA , język specyfikacji systemów asynchronicznych
  • VRML , opis scen trójwymiarowych
Języki synchroniczne

Języki programowania synchronicznego dla systemów reaktywnych: Esterel , Luster .

Języki edukacyjne

Pseudo-kod zazwyczaj mają tylko celów pedagogicznych.

  • Logo to funkcjonalny język, który jest łatwy do nauczenia.
  • W latach 90. często polecano na początek język BASIC . Miał jednak reputację propagatora złych nawyków programistycznych.
  • Processing jest uproszczonym językiem, który jest oparty na Javie. Pozwala na tworzenie aplikacji okienkowych na dowolnym komputerze wyposażonym w Javę.
  • Arduino jest uproszczony język oparty na C / C ++. Pozwala na łatwe tworzenie projektów elektronicznych z płytki Arduino (AVR).
  • ArduinoEDU jest jeszcze prostszym językiem, po francusku, dla świetnych początkujących używających języka C/C++/Arduino. Pozwala na bardzo proste tworzenie projektów elektronicznych z płyt Arduino (AVR).
  • Flowgorithm to narzędzie do tworzenia i graficznej modyfikacji programów komputerowych w postaci Algorigramu.
Języki elektroniki cyfrowej
  • Verilog , VHDL  : języki opisu sprzętu umożliwiające syntezę elektroniki cyfrowej (opisy bramek logicznych) oraz symulację ich działania
  • SystemC , język opisu sprzętu wyższego poziomu niż poprzednie i umożliwiający szybszą symulację
Języki statystyk

R , SAS i xLispStat to zarówno język statystyki, jak i oprogramowanie.

Języki programowania sterowania numerycznego (NC)

Zautomatyzowanych obrabiarek , lub sterowania numerycznego (NC), potrzebuje języka programowania do wykonywania toczenia lub frezowania operacji ...

Języki programowania przemysłowych programowalnych sterowników logicznych (PLC) Języki programowania audio

Nyquist to język syntezy i analizy dźwięku. Pure Data to graficzne oprogramowanie do tworzenia muzyki oparte na proceduralnym języku programowania.

Przedstawienia

Studium porównawcze 27 języków

Sześciu badaczy z trzech portugalskich uniwersytetów przeprowadziło badanie porównawcze 27 języków programowania, zatytułowane „Energy Efficiency Across Programming Languages”. Przyjrzeli się zużyciu energii, czasowi pracy i wykorzystaniu pamięci. Aby uzyskać zestaw porównywalnych programów, naukowcy zbadali grę porównawczą języka komputerowego (CLBG).

Wynikowa tabela przedstawia ogólne wyniki (średnio) zużycia energii (Energia), czasu wykonania (Czas) i maksymalnego zużycia pamięci (Mb) znormalizowane względem najbardziej wydajnego języka dla mierzonego kryterium.

Pięć najlepszych języków to:

Za zużycie energii

  • C: 1,00
  • rdza: 1,03
  • C++: 1,34
  • Ada: 1,70
  • Jawa: 1,98

Na czas pracy

  • C: 1,00
  • rdza: 1,04
  • C++: 1,56
  • Ada: 1.85
  • Jawa: 1,89

Dla maksymalnego zużycia pamięci


Popularność

Popularność każdego języka jest trudna do oszacowania; istnieje jednak indeks TIOBE , obliczany co miesiąc, który opiera się na liczbie szkoleń/kursów przeznaczonych dla inżynierów oraz liczbie resellerów/freelancerów specjalizujących się w danym języku programowania. To fragmentaryczna informacja, ale może dać pewne wyobrażenie o tendencjach w zakresie preferencji programistów.

Uwagi i referencje

  1. (w) Maurizio Gabbrielli i Simone Martini , Języki programowania: zasady i paradygmaty , Springer ,2010[ szczegóły wydań ] ( ISBN  9781848829138 )
  2. (en) Kenneth C. Louden i Kenneth A. Lambert , Języki programowania: zasady i praktyki , Cengage Learning,2011[ szczegóły wydań ] ( ISBN  9781111529413 )
  3. (en) William Sims Bainbridge , Berkshire Encyclopedia of Human-computer Interaction , tom.  2, Berkshire Publishing Group LLC,1994[ szczegóły wydań ] ( przeczytaj online )
  4. (w) David Anthony Watt i William Findlay , Koncepcje projektowania języka programowania , John Wiley & Sons,2004( ISBN  9780470853207 )
  5. Marcel Cori i Jean-Marie Marandin , „  Lingwistyka w kontakcie z informatyką: od konstrukcji gramatyk do gramatyk konstrukcyjnych  ”, Histoire Épistémologie Langage , tom.  23, n o  1,2001, s.  49-79 ( DOI  10.3406 / hel.2001.2817 , czytaj online , dostęp 13 października 2020 )
  6. Pierwsze kroki w kierunku ogólnej ontologii programów komputerowych, Pascal Lando, Frédéric Fürst, Gilles Kassel i Anne Lapujade, „18. Francophone Days of Knowledge Engineering, Grenoble: France (2007)”, patrz rozdział 3.2 . języków komputerowych ogólnego przeznaczenia ( angielski  : języki komputerowe ogólnego przeznaczenia ), to znaczy języki Turing-complete ... Języki programowania ( angielski  : języki programowania ) lub języki wysokiego poziomu, to wszystkie języki ogólne
  7. (en) Seema Kedar , Programming Paradigms And Methodology , Technical Publications,2002[ szczegóły wydań ] ( ISBN  9788184312966 )
  8. (en) ITL Education Solutions Limited, Wprowadzenie do technologii informatycznych , Pearson Education India, 2005 ( ISBN  9788177581188 )
  9. (w) RJ Barlow i AR Barnett Computing for Scientists: Zasady programowania w Fortran 90 i C++ , John Wiley and Sons, 1998 ( ISBN  9780471955962 )
  10. (en) Seema Kedar i Sanjay Thakare , Zasady języków programowania , publikacje techniczne,2009[ szczegóły wydań ] ( ISBN  9788184315776 )
  11. (w) Programowanie ADA , Tyrarex Press ( ISBN  9781449991999 )
  12. (w) Krishnamurthy, Struktury danych przy użyciu C , Tata McGraw-Hill Education, 2008 ( ISBN  9780070669192 )
  13. , Arvind Kumar Bansal, Wprowadzenie do języków programowania , CRC Press - 2013 ( ISBN  9781466565142 )
  14. (en) Jana , Java i programowania obiektowego Paradigm PHI Learning Pvt. Sp. z o.o.,2008[ szczegóły wydań ] ( ISBN  9788120327757 )
  15. "  Model architektoniczny von Neumanna  " , na interstices.info (dostęp 13.10.2020 )
  16. Abstrakcyjną maszyną paradygmatu funkcjonalnego może być maszyna Krivine'a .
  17. Czy jesteśmy w czystej funkcjonalności czy w czystej logice.
  18. W kontekście odwołania z konieczności, poniższe wyjaśnienie jest streszczeniem.
  19. (w) DA Godse i AP Godse , Architektura i organizacja komputerów , Publikacje techniczne,2007( ISBN  8184317719 )
  20. Dhamdhere , Programowanie systemów i systemy operacyjne , Tata McGraw-Hill Education,2011( ISBN  9780074635797 )
  21. (w) Tmh, Informatyka VII (Tn) , Tata McGraw-Hill Edukacja, 2007 ( ISBN  9780070668034 )
  22. (en) Michael L. Scott, Pragmatyka języka programowania , Morgan Kaufmann, 2009 ( ISBN  9780123745149 )
  23. (w) Ian Griffiths, Matthew Adams, .Net Windows Forms in a Nutshell , O'Reilly Media, Inc., 2003 ( ISBN  9780596003388 )
  24. (w) Raghavan, Prin of Compiler Design , Tata McGraw-Hill Education, 2010 ( ISBN  9780070144712 )
  25. (w) Diomidis Spinellis i Georgios Gousios, Piękna architektura: czołowi myśliciele ujawniają ukryte piękno w projektowaniu oprogramowania , O'Reilly Media, Inc., 2009 ( ISBN  9780596517984 )
  26. (w) Chris Smith, Programowanie F # , O'Reilly Media, Inc., 2009 ( ISBN  9780596153649 )
  27. (w) Jeff Friesen, Geoff Friesen Java przez Przykład 2 , Czy Publishing 2002 ( ISBN  9780789725936 )
  28. (w) Harold Davis, Visual Basic 6 Secrets Harold Davis 1998 ( ISBN  9780764532238 )
  29. (w) Brent B. Welch, Ken Jones, Jeffrey Hobbs, Programowanie praktyczne w Tcl i Tk , Prentice Hall Professional, 2003 ( ISBN  9780130385604 )
  30. (w) Sibsankar Haldar, Alex A. Aravind, Systemy operacyjne , Pearson Education India - 2010 ( ISBN  9788131730225 )
  31. (w) Amit Singh, Mac OS X Internals: A Systems Approach , Addison-Wesley Professional, 2007 ( ISBN  9780321278548 )
  32. (w) Kishori Sharan, Wykorzystanie Java 7: kompleksowe podejście do nauki Java 7 , Kishori Sharan, 2011 ( ISBN  9781466244641 )
  33. Programowanie: badanie ujawnia najbardziej energochłonne języki

Zobacz również

Powiązane artykuły

Linki zewnętrzne