re | ||
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 .
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 ).
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
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 .
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:
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.
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 ).
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 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.
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 |