powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Язык D как альтернатива C++0x
25 сообщений из 166, страница 1 из 7
Язык D как альтернатива C++0x
    #36732812
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создам "пятничную" темку, а то в Страустраповской уже доехали до флуда, и добавлять неохота.

1. В общем так - я даже! почитал спецификацию языка D и сложилось мнение, что в нем уже сейчас есть все (или почти все), что только вводят в C++0x и даже несколько больше.

Конечно, его пока нельзя с чистой совестью назвать промышленным языком, но...

2. А в плюсах мое мнение, что с шаблонным метапрограммированием перемудрили - порождает очень много неочевидных ошибок компиляции. Например, попробуйте собрать boost неродным для него компилятором и понять, чего оно хочет...

В общем предлагаю дискуссию по пунктам выше.

Ссылка на его хоум.
Основные фичи и отличия от C++ тут и тут .
Спецификация языка в pdf 200 страниц.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36732896
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

так там вроде множественного наследования нет и не предвидится,
ну и "Garbage Collector| Yes".
на первый взгляд, остальное по ознакомлению со спецификацией
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36732941
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychSiemargl,

так там вроде множественного наследования нет и не предвидится,
ну и "Garbage Collector| Yes".
на первый взгляд, остальное по ознакомлению со спецификацией
Некоторые вещи убрали, еще например препроцессор.

Garbage Collector как основное средство, но delete тоже можно свободно пользоваться. В принципе есть Garbage Collector либы и для С.

Вот еще, забыл - на хабре есть перевод статьи Александреску о D.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36732965
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

блин, ну вот опять:
D-FAQD2.0 — развивающаяся в данный момент ветка языка, куда периодически вносятся изменения функционала и новые возможности. Эта ветвь жертвует некоторой обратной совместимостью с D1.0 ради большей выразительности. что за отвратительная привычка-то? ещё 2ю версию недоработали, а уже об обратной совместимости можно забыть.
имхо, пока не появится стабильная версия языка, говорить не о чем.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36732981
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychSiemargl,

блин, ну вот опять:
D-FAQD2.0 — развивающаяся в данный момент ветка языка, куда периодически вносятся изменения функционала и новые возможности. Эта ветвь жертвует некоторой обратной совместимостью с D1.0 ради большей выразительности. что за отвратительная привычка-то? ещё 2ю версию недоработали, а уже об обратной совместимости можно забыть.
имхо, пока не появится стабильная версия языка, говорить не о чем.
Там по моему совсем мелочей касается. (И Breaking Changes есть и в плюсах)

Есть более другая проблема - ДВЕ стандартных либы Фобос(от разработчика) и Танго(от комьюнити). И их в версии 1.0 было нельзя совмещать. В 2.0 уже можно использовать параллельно, но совершенно разный стиль программирования.

Я сразу сделал оговорку про непромышленный язык =)

Тоже только начал кусками разбираться.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36733077
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

а вообще интересно, подожду выхода книжки от Александреску, можно будет попробовать осилить
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36733406
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl wrote:

Так без базару D симпатичнее. Только одна проблема есть -- мало распространён.
Наверное, ещё меньше, чем Common Lisp.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36733510
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Велик соблазн портировать С++шные разработки на D. Интересно как с этим.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36733546
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Так без базару D симпатичнее. Только одна проблема есть -- мало распространён.
Наверное, ещё меньше, чем Common Lisp.

По Тиобе - да, в полтора раза меньше. Кстати, динамическая кодогенерация это в D из Лиспа =)

maytonВелик соблазн портировать С++шные разработки на D. Интересно как с этим.Не ахти . Реализация шаблонов слишком разная, много переписывать.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36733556
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по ньюсгруппам, Александреску лично участвует по крайней мере в ревью разработок над D.

К сожалению, его книгу скачать не удалось, нашлась только "Learn to Tango with D", а покупать через Амазон долго.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36734211
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Ссылка на его хоум.
Основные фичи и отличия от C++ тут и тут .
Спецификация языка в pdf 200 страниц.
много букав, много обещаний.
сравнения с++ и D кода убогие.
аффтар не знает C++

=автор
Arrays are declared with the [] after the identifier. This leads to very clumsy syntax to declare things like a pointer to an array:
Код: plaintext
1.
int (*array)[ 3 ];


вывод: не взлетит, по крайней мере лет на 5 про него можно забыть
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36734222
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность,
Поздравляю Шарик,ты балбес! (с) Простоквашино

Почитай в Вике, кто такие Вальтер Брайт и Андрей Александреску (который все же со-разработчик) =)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36734319
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglалчность,
Поздравляю Шарик,ты балбес! (с) Простоквашино

Почитай в Вике, кто такие Вальтер Брайт и Андрей Александреску (который все же со-разработчик) =)
Ну вот,
хамите и ссылками кидаетесь, линукс надоело "пиарить" так за новый ЯП принялись

Нечего по теме сказать, зайко?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36734325
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность,

Чего сказать хотел то?
Я дал подтверждение, что авторы _весьма_ знающие люди в С++.

И про массивы что? Си-шный синтаксис тоже поддерживается для указателей на массивы и функции.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36734353
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчностьSiemargl
Ссылка на его хоум.
Основные фичи и отличия от C++ тут и тут .
Спецификация языка в pdf 200 страниц.
много букав, много обещаний.
сравнения с++ и D кода убогие.
аффтар не знает C++

Думаю, человека написавшего компилятор С++ трудно назвать незнающим его
=автор
Arrays are declared with the [] after the identifier. This leads to very clumsy syntax to declare things like a pointer to an array:
Код: plaintext
1.
int (*array)[ 3 ];

вывод: не взлетит, по крайней мере лет на 5 про него можно забыть
Пока на взлетит, да. А может и вообще не. Но по совершенно другим причинами, связанным с личностью его создателя.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36734964
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про массивы :
автор одной из статей по ссылкам из первого поста данного топика
приводит пример "неуклюжего" синтаксиса С++
Код: plaintext
1.
int (*array)[ 3 ];
и уклюжей альтернативы на D:
Код: plaintext
1.
int[ 3 ]* array;

Но синтаксис С++ не чуть не уступает:
Код: plaintext
1.
int* array[ 3 ];

Ну так вот, пройдя по нескольким ссылкам, мне не встретилось ни одного приличного примера, показывающего явные приемущества D над C++. Пропоганда работает из рук вон плохо.

Во-вторых: Отсутствие препроцессора и наличие сборщика мусора - очень сомнительные фичи.

В-третьих: D, конечно, лучше чем С++. Но чтобы разработчики на него перешли, он должне быть заметно лучше.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36734992
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчностьНо синтаксис С++ не чуть не уступает:
Код: plaintext
1.
int* array[ 3 ];

Это массив указателей, а не указатель на массив, как первые два примера ))))))
алчность
Ну так вот, пройдя по нескольким ссылкам, мне не встретилось ни одного приличного примера, показывающего явные приемущества D над C++. Пропоганда работает из рук вон плохо.

Во-вторых: Отсутствие препроцессора и наличие сборщика мусора - очень сомнительные фичи.

В-третьих: D, конечно, лучше чем С++. Но чтобы разработчики на него перешли, он должне быть заметно лучше.
Сборщик мусора - опционален, можно паралелльно использовать delete.

Шаблоны заметно лучше, в т.ч.легко заменяют препроцессор, умеют "шаблониться" не только от типа или частичной специализации, но от всего на свете (модули, переменные, тьюпли, выражения!), включая переменное количество произвольных параметров.

В общем, пока у меня впечатление, что - что бы ни написал в шаблонах, компилятор поймет. (Вспомним мучения Cerebrum, ни и свои тоже, связанные с плюсовым синтаксисом)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36736933
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglалчностьНо синтаксис С++ не чуть не уступает:
Код: plaintext
1.
int* array[ 3 ];

Это массив указателей, а не указатель на массив, как первые два примера ))))))

да, мне следовало быть повнимательнее)
Указатель на массив такого вида ( int (*array)[3] ) мне ни разу не встречался, говорю честно.
И вряд ли этому вообще можно найти применение, разве что в хитрых алгоритмах прохода по массивам, НО , в таких алгоритмах зачастую легче использовать отдельную функцию с передачей указателя на массив:
Код: plaintext
1.
2.
3.
4.
void some_function(int array[ 3 ])
{
............
}
Вобщем, авторам статейки не стоило гордиться тем, что есть замена очень редко используемой конструкции.

Siemargl
Сборщик мусора - опционален, можно паралелльно использовать delete.

Дурной пример - заразителен. Если один из группы разработчиков начнёт это применять, то вскоре и все остальные подсядут, и в конце концов окажется что аналогичная программа на java/c#/python будет работать быстрее и меньше памяти потребляет.

Siemargl
Шаблоны заметно лучше, в т.ч.легко заменяют препроцессор, умеют "шаблониться" не только от типа или частичной специализации, но от всего на свете (модули, переменные, тьюпли, выражения!), включая переменное количество произвольных параметров.


Интересно, а такое можно на шаблонах организовать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void TraceVariable(const char* name,int val)
{
     TRACE("%s=%d\n",name,val);
}
#define TRACE_VALUE(X) TraceVariable(#X,X)

int main()
{
    int a= 4 ,b= 7 ,c= 10 ;
    TRACE_VALUE(a);
    TRACE_VALUE(b);
    TRACE_VALUE(c);
}


Siemargl
В общем, пока у меня впечатление, что - что бы ни написал в шаблонах, компилятор поймет.

хотелось бы взглянуть на реальные примеры :)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36736955
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность
Siemargl
Сборщик мусора - опционален, можно паралелльно использовать delete.

Дурной пример - заразителен. Если один из группы разработчиков начнёт это применять, то вскоре и все остальные подсядут, и в конце концов окажется что аналогичная программа на java/c#/python будет работать быстрее и меньше памяти потребляет.
Смотрите на это с положительной стороны. У нас появились варианты работы с указателями (ссылками).
Это как стакан коньяку который более наполовину полон чем пуст.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36737017
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчностьУказатель на массив такого вида ( int (*array)[3] ) мне ни разу не встречался, говорю честно. И вряд ли этому вообще можно найти применение, разве что в хитрых алгоритмах прохода по массиваммассив указателей на int, имхо, действительно, экзотика. А вот массивы указателей на функции - вполне себе распространённое явление. Особенно в старом С-коде. Сам использовал такие фишки несколько раз, бывает удобным, когда надо выбрать операцию в зависимости от индекса. Там конструкция ещё более внушительно смотрится ))
алчностьДурной пример - заразителен. Если один из группы разработчиков начнёт это применять, то вскоре и все остальные подсядутздесь согласен полностью ;-))
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36737188
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность
Указатель на массив такого вида ( int (*array)[3] ) мне ни разу не встречался, говорю честно.

Указатели на ф-ции с таким же синтаксисом встречаются очень часто.

алчность
Siemargl
Сборщик мусора - опционален, можно паралелльно использовать delete.

Дурной пример - заразителен. Если один из группы разработчиков начнёт это применять, то вскоре и все остальные подсядут, и в конце концов окажется что аналогичная программа на java/c#/python будет работать быстрее и меньше памяти потребляет.

Утверждается, что на реальных задачах GC работает не медленнее прямого освобождения. Видимо за счет зачистки "оптом".
алчность
Интересно, а такое можно на шаблонах организовать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void TraceVariable(const char* name,int val)
{
     TRACE("%s=%d\n",name,val);
}
#define TRACE_VALUE(X) TraceVariable(#X,X)

int main()
{
    int a= 4 ,b= 7 ,c= 10 ;
    TRACE_VALUE(a);
    TRACE_VALUE(b);
    TRACE_VALUE(c);
}

Почти такое же, но менее удобно (переменную в текст не преобразуешь, а вот наоборот - текст в код - можно!):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
template TRACESTR(const char[] varname)
{
    char[] TRACESTR()
    {
        debug
        { 
            return `writefln("%s (%d) %s=%s", __FILE__, __LINE__, ` ~ `"` ~ varname ~ `", `~ varname ~ `);`;
        }
        else
        {
           return cast(char[])`;`;
        }
    }
...
    int i =  3 ;
    mixin(TRACESTR!("i"));

вывод в консоли (только в отладочном варианте)
>tmpl_name.d ( 48 ) i= 3 
}

Полное сравнение с препроцессором (кроме mixin) тут .
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36739384
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglалчность
Указатель на массив такого вида ( int (*array)[3] ) мне ни разу не встречался, говорю честно.

Указатели на ф-ции с таким же синтаксисом встречаются очень часто.

в таких случаях говорят "палка на 2х концах",
с одной стороны - синтакс С++ жутко выглядит,
с другой - указатели на функции невозможно спутать с какими-либо другими указателями, даже находясь в нетрезвом состоянии )

Siemargl
алчность
Siemargl
Сборщик мусора - опционален, можно паралелльно использовать delete.

Дурной пример - заразителен. Если один из группы разработчиков начнёт это применять, то вскоре и все остальные подсядут, и в конце концов окажется что аналогичная программа на java/c#/python будет работать быстрее и меньше памяти потребляет.

Утверждается, что на реальных задачах GC работает не медленнее прямого освобождения. Видимо за счет зачистки "оптом".

Создатели java и C# наверняка утверждают то же самое.

Siemargl
алчность
Интересно, а такое можно на шаблонах организовать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
void TraceVariable(const char* name,int val)
{
     TRACE("%s=%d\n",name,val);
}
#define TRACE_VALUE(X) TraceVariable(#X,X)

int main()
{
    int a= 4 ,b= 7 ,c= 10 ;
    TRACE_VALUE(a);
    TRACE_VALUE(b);
    TRACE_VALUE(c);
}

Почти такое же, но менее удобно (переменную в текст не преобразуешь, а вот наоборот - текст в код - можно!):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
template TRACESTR(const char[] varname)
{
    char[] TRACESTR()
    {
        debug
        { 
            return `writefln("%s (%d) %s=%s", __FILE__, __LINE__, ` ~ `"` ~ varname ~ `", `~ varname ~ `);`;
        }
        else
        {
           return cast(char[])`;`;
        }
    }
...
    int i =  3 ;
    mixin(TRACESTR!("i"));

вывод в консоли (только в отладочном варианте)
>tmpl_name.d ( 48 ) i= 3 
}


Что и тебовалось доказать,
Вместо тупой замены текста с помощью препроцессора городить абстракции из шаблонов - это програмирование ради программирования! Полностью заменить препроцессор без оверхэда не получится
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36739511
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчностьПолностью заменить препроцессор без оверхэда не получитсяименно поэтому он до сих пор жив и здравствует. Хотя все согласны с тем, что он - зло ))
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36739520
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность
в таких случаях говорят "палка на 2х концах",
с одной стороны - синтакс С++ жутко выглядит,
с другой - указатели на функции невозможно спутать с какими-либо другими указателями, даже находясь в нетрезвом состоянии )

Тут беда в том, что указатель на функцию, возвращающую указатель на функцию, плохо читается и в трезвом состоянии (

алчность
Дурной пример - заразителен. Если один из группы разработчиков начнёт это применять, то вскоре и все остальные подсядут, и в конце концов окажется что аналогичная программа на java/c#/python будет работать быстрее и меньше памяти потребляет.
Siemargl
Утверждается, что на реальных задачах GC работает не медленнее прямого освобождения. Видимо за счет зачистки "оптом".

Создатели java и C# наверняка утверждают то же самое.

Пока не проверю, не поверю ни те ни другим. Но в корпоративе GC считаю выгоднее.

алчность
Что и тебовалось доказать,
Вместо тупой замены текста с помощью препроцессора городить абстракции из шаблонов - это програмирование ради программирования! Полностью заменить препроцессор без оверхэда не получится
Надо уверенно понять, какие темплейты удобнее в работе.
Отказ от макросов не поддержу - привык )
Но оверхед - т.е потеря скорости, тут не вносится. Чисто компилятивный изыск.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36739678
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНо оверхед - т.е потеря скорости, тут не вносится. Чисто компилятивный изыск.а как у них с потерями скорости при компиляции шаблонов?
...
Рейтинг: 0 / 0
25 сообщений из 166, страница 1 из 7
Форумы / C++ [игнор отключен] [закрыт для гостей] / Язык D как альтернатива C++0x
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]