20.08.2001
Предложен новый язык программирования, который должен стать преемником C и C++.
Автор известного в своё время компилятора Zortech C++ Уолтер Брайт объявил о создании нового языка программирования. Плод своих трудов он окрестил D. Как очевидно из названия, новый язык является развитием идей, заложенных в языках C и C++.
Вопреки нынешней моде на интерпретируемые языки, D, как и его прямые предшественники, будет классическим компилируемым языком. Более того, присущая C модель разработки, состоящая из нескольких этапов, позаимствована без всяких изменений. "Это практичный язык для практичных программистов, которым нужно, чтобы работа была сделана быстро, надёжно, а её результатом был лёгкий для понимания и последующей поддержки код", - пишет Брайт.
Помимо синтаксиса, в общих чертах сходного с С и С++ (обратная совместимость не предусматривается), компилятор D сможет подключать функции из библиотек C (но, как особо подчёркивается, не С++). Кроме того, сохранятся параметрические классы (templates), системы обработки исключительных ситуаций и определения типов во время работы программы, определённые в последних версиях стандарта C++.
В то же время, от многих особенностей С и C++ Брайт намерен отказаться. В D не будет наследования от нескольких классов, namespaces, перегрузки операторов, а также битовых полей произвольного размера. Препроцессор (и вставка файлов при помощи #include вместе с ним) также пошёл под нож.
Поскольку D, по замыслу создателя, должен стать языком более высокого уровня, чем его предшественники, он включает несколько характерных для современных языков сверхвысокого уровня возможностей. В первую очередь следует упомянуть многочисленные новые типы данных: четыре вида массивов (статический, динамический и ассоциативные массивы, а также массивы указателей), строки и биты. (Пример использования новых видов массивов можно увидеть здесь). Все объекты в D передаются по ссылке, а не по значению. Язык содержит встроенный сборщик мусора (garbage collection).
Стоит отдельно отметить использованную в D концепцию так называемого контрактного проектирования (design by contract). До сих пор она имеет ограниченную известность (контрактное проектирование применялось в языке Eiffel). Согласно этой концепции, могут быть определены предусловия и постусловия для функций, инварианты классов и assert-контракты (в некотором смысле сходные с assert в С). Пример использования контрактного проектирования можно увидеть здесь
Язык D имеет встроенную поддержку отладки и многозадачности. В частности, в случае, если функция определена как synchronize (synchronize int func() {...}), она не будет исполняться более чем в одном потоке (thread).
D - это не первая попытка создать преемника для C. Objective C, C++ и Java - вот наиболее удачные из них (некоторые, возможно, добавят к их числу Perl). Как сложится судьба D, можно будет оценить спустя несколько лет. Пока для D пока не существует даже компилятора, хотя, по-видимому, скоро поддержка нового языка появится в разрабатываемом Брайтом компиляторе Digital Mars.

Источник: Журнал "Компьютерра"