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

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

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

Характеристики[редактиране | edit source]

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

Управление на паметта[редактиране | edit source]

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

Съвместимост с други езици[редактиране | edit source]

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

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

Реализация[редактиране | edit source]

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

Компилатори[редактиране | edit source]

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

Примерен код[редактиране | edit source]

Пример 1[редактиране | edit source]

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

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

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

Външни препратки[редактиране | edit source]