D (език за програмиране)
| Парадигма | полипарадигмален |
|---|---|
| Реализиране през | 1999 |
| Автор | Digital Mars |
| Типове данни | строга, статична |
| Програмни диалекти | няма |
| Повлиян от | C++, Java, C#, Eifel |
D е обектно оринтиран език за програмиране създаден от Уолтър Брайт (фирма Digital Mars) през 1999. D започва като подобряване на C++, но постепенно преминава в генерално нов език като приема някои от характеристиките на Java, C# и Eifel.
Съдържание |
Характеристики[редактиране]
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, " предмета");
}