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

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

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

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

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

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

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

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

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

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

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

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

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

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

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