D (език за програмиране)

„D“ е обектно ориентиран език за програмиране създаден от Уолтър Брайт (фирма Digital Mars) през 1999. D започва като подобряване на C++, но постепенно преминава в генерално нов език като приема някои от характеристиките на Java, C# и Eifel.

D
Парадигмаполипарадигмален
Реализиране през1999
АвторDigital Mars
Типизация на даннитестрога, статична
Програмни диалектиняма
Повлиян отC++, Java, C#, Eifel
D в Общомедия

Характеристики

D поддържа повечето съвременни похвати в програмирането като проект по договор, юнит тестване, точни модели, вградено автоматично управление на паметта, динамични масиви, анонимни функции. Голяма част от характеристиките на езиците, които повлияват на D са препроектирани и, според автора, подобрени. D запазва способността на C++ за работа на ниско ниво като също поддържа вграден асемблер и заменя множественото наследяване с чисти интерфейси и делегати. Отново подобно на С++, D запазва възможността за предефиниране на всички оператори.

Управление на паметта

Въпреки че има вградено автоматично управление на паметта, D, поддържа не-менажирани обекти, за които паметта се заделя и освобождава ръчно. Обикновена настройка на компилатора е управлението на паметта да бъде изключено.

Съвместимост с други езици

Подобно на С++, D може без проблем да компилира и изпълнява непроменен С код.

D не е съвместим със С++ код и в общия случай директен преход е невъзможен.

Реализация

D е все още в процес на разработка, така че често се появяват промени, които могат да повлияят на действието на стар код, или даже да попречат на компилацията му. Официалният компилатор, който служи за стандарт, се разработва от Уолтър Брайт и е в бета версия.

Компилатори

  • DMD: официалният компилатор на Digital Mars. Лицензиран под Artistic License и GNU GPL; на страницата могат да се намерят и изходният код, и изпълними файлове.
  • GDC: „the GNU D Compiler“, част от GNU колекцията компилатори.

Примерен код

Пример 1

Тази примерна програма отпечатва входните параметри. Входната точка на програмата на D е main, а args e масивът от низове, представляващ входните параметри. Подобно на C и C++ и тук текстов низ може да се представи като масив от char.

import std.stdio; // за writefln()int main(char[][] args){    foreach(int i, char[] a; args)        writefln("args[%d] = '%s'", i, a);    return 0;}

Пример 2

Този пример илюстрира асоциативните масиви.

import std.stdio; // за writefln()
int main(){    // Обявяваме асоциативен масив с ключ – текстов низ    // масив от низове като стойност    char[][] [char[]] container;
    // Добавяме хора в списъка и им даваме да носят някои предмети    container[„Ана“] ~= "шал";    container[„Димитър“] ~= "билети";    container[„Ана“] ~= "куче";
    // Изписваме броят носени предмети за всеки човек в списъка    foreach (char[] person, char[][] items; container)        display_item_count(person, items);    return 0;}
void display_item_count(char[] person, char[][] items){    writefln(person, " носи ", items.length, " предмета");}

Външни препратки