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 колекцията компилатори.

Примерен код

редактиране

Тази примерна програма отпечатва входните параметри. Входната точка на програмата на 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;
}

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

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, " предмета");
}

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

редактиране