D (język programowania)
Z Wikipedii
Język D – obiektowo zorientowany język programowania stworzony przez Waltera Brighta, znanego jako twórca kompilatora Zortech C.
Ma on być obiektowym następcą języka C, jednak w przeciwieństwie do języka C++ nie jest w pełni zgodny składniowo z poprzednikiem. Możliwe jest jednak używanie skompilowanych modułów napisanych w języku C.
Spis treści |
[edytuj] Zmiany w stosunku do C++
D wprowadza wiele nowoczesnych cech: programowanie kontraktowe, prawdziwe moduły, automatyczne zarządzanie pamięcią (przez garbage collector), zintegrowany z kompilatorem system dokumentacji – ddoc. Możliwe jest zagnieżdżanie funkcji. Zmieniony jest też system szablonów. D utrzymuje możliwość pisania niskopoziomowego, dodając wstawki asemblerowe. D odchodzi natomiast od wielokrotnego dziedziczenia z C++, w zamian proponując interfejsy.
Pomimo że pamięć jest zarządzana przez garbage collectora, niektóre obiekty mogą być usuwane, gdy wychodzą poza zakres ważności. Jawne zarządzanie pamięcią jest możliwe przez przeciążone operatory new i delete lub wywoływanie funkcji malloc i free.
D ze względu na wydajność kompiluje się bezpośrednio do kodu maszynowego (w przeciwieństwie np. do języka Java).
[edytuj] Przykładowy program
Prosty program:
// Program w D wypisujący argumenty, z jakimi został wywołany import std.stdio; int main(char[][] args) { foreach(i, a; args) writefln("args[%d] = '%s'", i, a); return 0; }
Inny przykład który używa wbudowanych tablic asocjacyjnych
import std.stdio; // writefln() int main() { // tablica haszująca, indeksowana tablicami char[], zawierająca tablice tablic char[] char[][] [char[]] kontener; // Dodanie elementow kontener["Ania"] ~= "szalik"; kontener["Daniel"] ~= "bilety"; kontener["Ania"] ~= "czapka"; // Iteracja po wszystkich osobach foreach (char[] osoba, char[][] przedmioty; kontener) wyswietl_ilosc(osoba, przedmioty); return 0; } void wyswietl_ilosc(char[] osoba, char[][] przedmioty) { writefln(osoba, " ma ", przedmioty.length, " przedmiotów."); }
[edytuj] Status
Wersja 1.0 języka (jego specyfikacja) została opublikowana 3 stycznia 2007 roku - od tego czasu specyfikacja została zamrożona, i dopuszczalne są jedynie zmiany i poprawki w implementacji kompilatorów. Sam język zapewne zacznie się rozwijać równolegle celem stworzenia w przyszłości wersji 2.0.
Wersja 1.0 powinna nadawać się do pisania aplikacji produkcyjnych, i nie powinna zaskoczyć nagłą zmianą języka. Jest to o tyle ważne, że w toku 7 letniej ewolucji przed wydaniem wersji 1.0 języka wielokrotnie się zmianiał w sposób łamiący kompatybilność.
Obecnie tego typu zmiany będą rozwijane w gałęzi eksperymentalnej.
Dostępny jest kompilator DMD i GDC (D Front End for GCC).
[edytuj] Linki zewnętrzne
ABAP • Ada • AWK • Asembler • C • C++ • C# • COBOL • D • Forth • Fortran • Icon • Java • JavaScript • Lisp • Modula 2 • Oberon • Object Pascal • Objective-C • Pascal • Perl • PHP • PL/SQL • Python • REXX • Ruby • sh • Smalltalk • Snobol • SQL • Visual Basic • VB.NET
Akademickie
Comal • Eiffel • Haskell • Logo • MCPL • ML • Nemerle • Prolog • Scheme
Historyczne
ALGOL • APL • BASIC • Clipper • MUMPS • PLAN • PL/I • PL/M • SAS • Simula