D (język)

re
Logo.
Data pierwszej wersji 8 grudnia 2001
Paradygmat imperatywny , zorientowany obiektowo , proceduralny
Autor Walter Bright
Deweloper Fundacja językowa D.
Ostatnia wersja 2.085.1 (5 kwietnia 2019)
Pisanie na maszynie silny , statyczny , wywnioskowany
Wpływem C , C ++ , Java , C # , Eiffel , Python
Wdrożenia DMD, GDC , LDC
System operacyjny Linux , Windows , MacOS
Licencja Podnieść
Stronie internetowej dlang.org
Rozszerzenie pliku d, dd, di i def

D jest język programowania imperatyw obiektowego i multi-paradygmat przeznaczony do programowania systemu .

Jest inspirowany wieloma językami, w tym C ++ , Javą (z którą dzieli pojęcie „  garbage collector  ” i prostym dziedziczeniem), Eiffel (dla paradygmatu programowania kontraktowego ).

D jest w wersji 2.x, w skrócie „D2” (od 17 czerwca 2007 ) i czasami podlega niewielkim modyfikacjom specyfikacji. Te przemiany są przeprowadzane przez Waltera Brighta i Andrei Alexandrescu , którzy uwzględniają uwagi i prośby społeczności. Wersja 1.x języka jest przestarzała i została wycofana 31 grudnia 2012 r .

Historyczny

Język D został stworzony przez Waltera Brighta wGrudzień 1999ze swoją firmą Digital Mars ( początkowo miał nazywać się Mars ) i jest przedstawiany jako następca języka C , stąd jego nazwa (sam język C zastąpił język B , który z kolei nie wywodzi się z żadnego języka A, ale BCPL ).

Pochodzenie

Walter Bright wyobraził sobie ten język na podstawie doświadczenia, które zdobył podczas tworzenia kompilatorów dla języków C i C ++ . Projekt języka D ma na celu utrzymanie poziomu wydajności tych języków, przy jednoczesnym przezwyciężeniu problemów związanych ze składnią i semantyką.

W szczególności :

W tym celu język D uwalnia się od preprocesora, wykorzystuje moduły i ma jednoznaczną składnię, co znacznie przyspiesza szybkość kompilacji i ułatwia tworzenie narzędzi do analizy kodu. Tak więc, w połączeniu z nowoczesnymi pojęciami zawartymi w języku, poprawia się produktywność.

„Jeśli język może odzyskać 90% mocy C ++, ale tylko 10% swojej złożoności, jest tego wart. "

- Walter Bright

Kompilatory

Oficjalny kompilator DMD jest rozwijany wraz ze specyfikacją języka. Jest ukierunkowany na język maszynowy . Cały jego kod jest otwarty, co umożliwia szybkie naprawienie wszelkich napotkanych problemów lub stworzenie własnego kompilatora przy użyciu innej bazy ( zaplecza ). Obecnie istnieje na platformach Linux , FreeBSD , Mac OS X i Windows .

Kompilator GNU, GDC , mieszający frontend DMD i backend gcc jest w fazie rozwoju.

Kompilator na licencji BSD, LDC , łączący frontend DMD i backend LLVM jest nadal w fazie rozwoju. Może kompilować w 64 bitach, obsługuje większość języka D w wersjach 1 i 2 i umożliwia tworzenie dynamicznych bibliotek niezależnie od platformy Linux , Mac OS X lub Windows, w przeciwieństwie do swojego odpowiednika DMD, który nie może tego osiągnąć. Zadanie w systemie Mac OS X .

Specyfika języka

Paradygmaty

D w wersji 2 jest językiem wieloparadygmatycznym , który obejmuje większość podstawowych pojęć programowania obiektowego, generycznego i funkcjonalnego, pozostawiając możliwość włączenia kodu asemblera lub nawet łączenia kodu C.

Obsługiwane paradygmaty:

Inny

Wprowadza do swoich specyfikacji elementy programowania kontraktowego , testów jednostkowych i rzeczywistych modułów, które poprawiają jakość i ułatwiają utrzymanie kodu. Tablice asocjacyjne i tablice z "wycinkami", bezpośrednio zawarte w języku, wskaźniki (chociaż ich użycie jest znacznie ograniczone w porównaniu do C lub C ++),  odłączany "  garbage collector " i wnioskowanie o typie umożliwiają uczynienie D językiem to jest zarówno potężne, jak i wyraziste. Język umożliwia również umieszczenie bezpośrednio w kodzie źródłowym napisanym w C lub w asemblerze .

Programowania obiektowego D obsługuje enkapsulacji , ten polimorfizm , tym proste dziedziczenie przedłużony o interfejsach i prawdziwymi „Właściwości”. Instancji jest tylko przez odniesienie i umożliwia kontrolę nad inicjalizacji atrybutów statycznych. Wyjątki i mechanizm „ochrony zakresu” pozwalają uprościć zarządzanie błędami.

Funkcjonalne możliwości języka wyrażane są na kilka sposobów: funkcje anonimowe lub lambda, funkcje czyste, których czystość jest sprawdzana przez kompilator, leniwa ocena argumentów. Rozwój języka uwzględnia wielowątkowość, umożliwiając kompilatorowi weryfikację niezmienności obiektów w pamięci.

Wreszcie, D zawiera bardzo potężny system „  szablonów  ”, który umożliwia użycie większości języka w ramach metaprogramowania . Obejmuje w szczególności pojęcie ograniczenia parametrów szablonu, mixinów i oceny kodu podczas kompilacji (ocena funkcji czasu kompilacji). Kompilator ma dostęp do wpisywania danych w czasie kompilacji i umożliwia kompilację warunkową, co pozwala na optymalizację generowania kodu.

Przykłady

Oto przykład słynnego „  Hello World  ” w języku D:

import std.stdio; void main() { writeln("Hello world!"); }

Kolejny przykład, który wyświetla listę argumentów skojarzonych z programem, gdy jest on uruchamiany z linii poleceń:

import std.stdio; void main(string[] args) { foreach (int i, string arg; args) { writeln("args[", i, "] = '", arg, "'"); } }

Wersja 2.0 akceptuje również typ stringjako alias do immutable(char)[], a także obejmuje writeln()oprócz writefln(), umożliwiając w ten sposób łatwiejsze wywoływanie zmiennych (por. Stackoverflow ).

Anegdota

BCPL język wynaleziono w 1966, a jego następcą został B język (1969), która z kolei została zastąpiona przez C języka (1970). Następca litery C mógłby wówczas zostać nazwany D lub P zgodnie z kolejnością alfabetyczną lub kolejnością liter BCPL . Ostatecznie był to C ++ (1983). Tak wybrano literę D (1999) w odniesieniu do nowego następcy.

DConf: konferencja dla programistów języka D.

DConf jest konferencja, która skupia twórców języka D: co roku organizowany jest od 2013 roku i jest organizowany przez fundację języka D.

Tabela dat i lokalizacji DConf na każdy rok
Stronie internetowej Rok Daktyle Lokalizacja
DConf 2013 2013 1 do 3 maja Menlo Park , Kalifornia , Stany Zjednoczone
DConf 2014 2014 21-23 maja Menlo Park , Kalifornia , Stany Zjednoczone
DConf 2015 2015 27-29 maja Orem , Utah , Stany Zjednoczone
DConf 2016 2016 4 do 6 maja Berlin , Niemcy
DConf 2017 2017 4 do 6 maja Berlin , Niemcy
DConf 2018 2018 2-4 maja Monachium , Bawaria , Niemcy
DConf 2019 2019 1 do 8 maja Londyn , Wielka Brytania

Załączniki

Linki zewnętrzne

Bibliografia

  1. „  Zaczęło się jako język programowania Mars, ale moi koledzy najpierw nazwali go D jako żart, ale nazwa przyjęła się i narodził się język programowania D.  " - Walter Bright, przedmowa do książki The D Programming Language .
  2. „  Jeśli język może uchwycić 90% mocy C ++ przy 10% swojej złożoności, uważam, że jest to opłacalny kompromis.  „ - Walter Bright
  3. (en-US) „  dmd Backend Converted to Boost License  ” , na forum.dlang.org (dostęp: 29 sierpnia 2017 )
  4. http://www.informit.com/articles/article.aspx?p=1609144
  5. https://dlang.org/spec/contracts.html
  6. http://dlang.org/template.html