powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Язык D как альтернатива C++0x
166 сообщений из 166, показаны все 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
Язык D как альтернатива C++0x
    #36739881
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Siemargl
Тут беда в том, что указатель на функцию, возвращающую указатель на функцию, плохо читается и в трезвом состоянии

Я бы вообще предложил подумать над тем, что усложнение текста программы не является плюсом. Александреску наверное такой гуру, что его это не касается. А ведь усложнение текста ведет к увеличению времени, требуемого для понимания программы. Их ведь не только писать приходится, но и понимать то, что написал кто-то, кого уже нельзя спросить - что он тут хотел выразить.

Так ли хорошо вводить в язык все новые и новые фичи? Может быть, для совершенствования редко используемых вещей лучше не изменять язык широкого применения?

Синтаксическая сложность текста - одна из трудностей при изучении кода.

Вторая сложность (бОльшая, на мой взгляд) - что за увеличением сложности языка, расширением стандартных библиотек, стоит необходимость в более светлых головах. Не знаю как в столицах, а у нас например переизбытка в них нет. Программы же пока надо и сопровождать и расширять и дорабатывать.
И опять же, чем меньше народу может писать на языке, тем менее популярен и применим будет этот язык.

Когда в стандарт из boost вносят shared_ptr - это понятно. А вот скажем вносить в стандарт C++ (или в STL) из того же boost функционал по обработке изображений вряд ли хорошая идея. В STL надо вносить то, что широко применяется.

D получается экзотичным языком на мой взгляд, не конкурирующим с С++, а уходящим дальше от него, и он не видится мне массовым языком, все-таки массовое должно быть довольно простым. А С++ уже довольно не прост, и без изучения, кроме С++ и MSDN, книг типа Саттера наверняка будет применяться с косяками, это уже на его (С++) уровне сложности.

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

Процесс компиляции сильно быстрее чем в С++ (заголовков нет), скорость выполнения программ - мало нашел тестов, в тех что нашел - чуть медленнее gcc. Оптимизатор у Брайта никогда не был топовым.


teo609,
C++ непростой язык.

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

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

> Единственное, исходники STL в реализации D должны проще выглядеть =)

Блин, если и там есть STL, не буду его использовать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740108
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,

Там Фобос =)

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

> Там Фобос =)
>
> Про переписывание STL на D Александреску писал, что в лоб красивше не
> вышло. Потому библиотека другая, без итераторов.

Тогда другое дело.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740175
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglMasterZiv,

Там Фобос =)


А вместо boost-а Демос ???
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36740292
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan),
Почти. Есть альтернативная Танго .

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

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


В данном примере array это и массив указателей, и указатель на массив одновременно. Интерпретация зависит от контекста кода, в котором используется этот идентификатор.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741028
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglалчность
в таких случаях говорят "палка на 2х концах",
с одной стороны - синтакс С++ жутко выглядит,
с другой - указатели на функции невозможно спутать с какими-либо другими указателями, даже находясь в нетрезвом состоянии )

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

Та ладно.
Давным давно можно делать так:
Код: plaintext
1.
2.
3.
4.
typedef int int_func();
typedef int_func* ptr_func();

ptr_func* pf; //  указатель на функцию, возвращающую указатель на функцию
И кому нужна читаемость, тот так и делает.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741916
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот. Первое расстройство. Пример генерации ряда Фиббоначи не хочет компилиться. И я не могу в исходниках Фобоса найти, почему =(
Т.е. синтаксис шаблонов не слаще.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
import std.stdio;
import std.range;

int main(char[][] args)
{

	foreach (f; take( 50 , recurrence!("a[n..1]+a[n..2]")( 0 ,  1 )))
	{
		writeln(f);
	}

    return  0 ;
}
dmd hello_fib.dhello_fib.d(8): Error: template std.range.take(R) if (isInputRange!(R) && !hasSlicing!(R)) does not match any function template declaration
hello_fib.d(8): Error: template std.range.take(R) if (isInputRange!(R) && !hasSlicing!(R)) cannot deduce template function from argument types !()(int,Recurrence!(fun,int,2u))
hello_fib.d(8): Error: foreach: _error_ is not an aggregate type
Пошел дочитывать книжку про Танго на 200стр окромя 200стр доки =(
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741923
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Siemargl wrote:

> Единственное, исходники STL в реализации D должны проще выглядеть =)

Блин, если и там есть STL, не буду его использовать.

Вы не любите кошек?
Вы просто не умеете их готовить! :D
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36741965
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Офф/2
Anatoly Moskovsky
Та ладно.
Давным давно можно делать так:

Точно. я так и делал, пока компилятор не загнулся. Точнее, один компилятор (Watcom) и один линкер (optlink) на такой вот конструкции =)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742008
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.
template _TRACE2(alias var)
{
    void _TRACE2()
    {
        debug
        {
            writefln("%s %s=%s", __FILE__, var.stringof, var);
        }
    }
}
...
_TRACE2!(i);
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742131
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Точно. я так и делал, пока компилятор не загнулся. Точнее, один компилятор (Watcom) и один линкер (optlink) на такой вот конструкции =)
Ну во-первых в том топике не "конструкция" а сообщение об ошибке без примера кода.
Во-вторых, из той ошибки никак не следует что typedef с прототипами вместо указателей не будет работать в Watcom'е.

Хотя действительно не все компиляторы поддерживают такой синтаксис.
Но мейнстримные - поддерживают, а этого достаточно.

А для остальных всегда можно переписать так:
Код: plaintext
1.
2.
3.
4.
typedef int (*p_int_func)();
typedef p_int_func (*p_ptr_func)();

p_ptr_func pf; //  указатель на функцию, возвращающую указатель на функцию
и это точно так же читаемо и поддерживается на 100% всеми компиляторами С и С++

А как будет на D инлайновая декларация для указателя на функцию, возвращающую указатель на функцию?
Код: plaintext
1.
2.
3.
4.
// C/C++
int (*(*pf)())();
// D
int function() function() pf; //так?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742444
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemargl
Точно. я так и делал, пока компилятор не загнулся. Точнее, один компилятор (Watcom) и один линкер (optlink) на такой вот конструкции =)
Ну во-первых в том топике не "конструкция" а сообщение об ошибке без примера кода.
Во-вторых, из той ошибки никак не следует что typedef с прототипами вместо указателей не будет работать в Watcom'е.

Там 4 вложенных map<>. Проблема не в синтаксисе, а в переполнении буфера компилятора - слишком длинно разворачивается конструкция.
Anatoly Moskovsky
А как будет на D инлайновая декларация для указателя на функцию, возвращающую указатель на функцию?
Код: plaintext
1.
2.
3.
4.
// C/C++
int (*(*pf)())();
// D
int function() function() pf; //так?

Именно.
А на массив
Код: plaintext
int[]* pa;
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742601
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded wrote:

> Вы не любите кошек?
> Вы просто не умеете их готовить! :D

Да умею я их готовить. Просто как не приготовь, такое Г получается,
что тошнит.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36742622
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv, на вкус и цвет советчиков нет, один любит арбуз, другой свиной хрящик... Может я конесно чего-то е понимаю, но меня stl устаривает
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36745210
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНу вот. Первое расстройство. Пример генерации ряда Фиббоначи не хочет компилиться. И я не могу в исходниках Фобоса найти, почему =(
Т.е. синтаксис шаблонов не слаще.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
import std.stdio;
import std.range;
int main(char[][] args)
{
	foreach (f; take( 50 , recurrence!("a[n..1]+a[n..2]")( 0 ,  1 )))
	{
		writeln(f);
	}

    return  0 ;
}

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

И даже такое
Код: plaintext
1.
2.
    auto piapprox = recurrence!("a[n] + (n & 1 ? 4. : -4.) / (2 * n + 3)")( 4 .);
    foreach (e; take(piapprox,  20 )) writeln(e); 
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36757837
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
teo609Я бы вообще предложил подумать над тем, что усложнение текста программы не является плюсом

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

Один из инженеров Google
Один из ведущих инженеров Google — Роб Пайк (Rob Pike) — выступил на конференции O'Reilly Open Source Convention (OSCON) и выразил мнение корпорации о современных языках разработки и месте C++ и Java в них. Он отозвался об этих индустриальных китах очень негативно, назвав их многословными, чрезмерно сложными и неадекватными к применению в решении задач современной компьютерной инфраструктуры.
"Я думаю, что эти языки слишком сложны для использования, слишком трудны для понимания, слишком замысловаты. Они очень многословны, их сложность, громоздкость и непонятность возрастают со временем", — заявил Роб.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36758090
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609
На D будут писать те, кого порадует изучение его прибамбасов. А реальность заставит находить тех, кто есть в наличии, и выбирать то, на чем они смогут писать - С++.
И получилось у меня, отвечая на вопрос топика, что D не альтернатива ни С++, ни С++0х как его следующей версии.
Если D будет обеспечивать кодогенерацию, достаточно низкоуровневую чтобы писать драйверы оборудования и части ОС, сопрягаться по способу передачи аргументов с другими языками и технологиями - то он будет конкурировать с C/С++. Если нет - то это обычный язык коих уже очень много.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36759900
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonteo609
На D будут писать те, кого порадует изучение его прибамбасов. А реальность заставит находить тех, кто есть в наличии, и выбирать то, на чем они смогут писать - С++.
И получилось у меня, отвечая на вопрос топика, что D не альтернатива ни С++, ни С++0х как его следующей версии.
Если D будет обеспечивать кодогенерацию, достаточно низкоуровневую чтобы писать драйверы оборудования и части ОС, сопрягаться по способу передачи аргументов с другими языками и технологиями - то он будет конкурировать с C/С++. Если нет - то это обычный язык коих уже очень много.
С этим вопросов нет, транслируется в обычный код, почти как Сишный, но с вызовами функций при операциях с массивами итп.
Совместим полностью с С , COM , и частично с С++ .
Но поддерживает пока только x86 платформу.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36765913
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Нашел способ проще (

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
template _TRACE2(alias var)
{
    void _TRACE2()
    {
        debug
        {
            writefln("%s %s=%s", __FILE__, var.stringof, var);
        }
    }
}
...
_TRACE2!(i);

! после _TRACE2 - это опечатка?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36765977
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность! после _TRACE2 - это опечатка?не, так они в D шаблонные функции вызывают, их пугает конструкция _TRACE2< int >( i );
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36766042
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychалчность! после _TRACE2 - это опечатка?не, так они в D шаблонные функции вызывают, их пугает конструкция _TRACE2< int >( i );
Да. Целая дискуссия была по поводу ограниченности конструкций
templX < x < 3 >, потому решили использовать круглые скобки.

Но в большинстве случаев компилятор D позводяет опускать и ! и тип и вызов метода шаблона. Всегда, когда определенность однозначна.
А там однозначность достигается специализациями и типов и значений и умолчаниями и еще десятком способов )

Например, вместо templateMethod!(templParam).templateMethod(var) можно писать templateName(var).

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

Что касается языка. Нет никаких сомнений, что D как язык уже сейчас мощнее C++0x

Ключевые отличия:
-продуманный аспект безопасного использования. То что скомпилировалось, с более высокой вероятностью будет вылетать редко. К этой стороне относятся:
-- встроенные массивы (в т.ч.ассоциативные) с проверками границ (отключаемыми в релизе), концепции работы с объектами (только безопасные ссылки в динамической памяти) - это делает работу с указателями в большинстве случаев ненужной;
-- design by contract, инварианты для объектов, встроенные юниттесты и тесты покрытия;
-- более жесткая модульность программ (почти дельфийские юниты), неизменяемые типы данных immutable (с наследованием связанных членов), неделимость данных между потоками по умолчанию
-- исключения могут порождать цепочки для анализа первопричины
-- концепция scope(exit/success/failure), упрощающая RAII в реализации - без многоуровневых try/catch
-- встроенные безопасные Variadic Parameters для функций

-продвинутость/гибкость самого языка
-- параметризованные типы, классы и функции с более широким выбором (возможно условных!) специализаций, Variadic Template Parameters
-- CTFE с typeof и условными шаблонами дают сумасшедшую гибкость
-- tuples, делегаты, лямбды, замыкания (closures), в т.ч.для вложенных классов, а не только функций
-- alias, которые подобны макросам, но могут применяться везде вместо любого литерала
-- встроенные через перегрузку операторов таблицы диспетчеризации

-подход к производительности
-- pure, математически "чистые", т.е.без побочных эффектов функции. Проверяется на этапе компиляции, может дать в будущем продвинутые оптимизациии
-- потоки встроены в язык и приняты меры для устранения race conditions и выбивания кэша. Данные по умолчанию не делятся между потоками, либо являются заведомо immutable. Базовая концепция - обмен между потоками через очереди сообщений (построенные на механизме exception'ов), хотя есть и обычные synchronized классы (но со своей фичей - умением делит мютекс с подэлементами и мульти-мьютексами)
-- встроенная поддержка атомарных операций, cas (Compare-and-swap) и ассемблера дает возможность писать lock-free многопоточные программы (хотя нетривиально)

Ну и целая гора синтаксического сахара - не перечислишь...
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36792715
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще семинар по D с Александреску, который недавно в Гугле был.
http://www.youtube.com/watch?v=RlVpPstLPEc
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795049
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВот еще семинар по D с Александреску, который недавно в Гугле был.
http://www.youtube.com/watch?v=RlVpPstLPEc
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795090
Фотография quaid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что, за D будущее, или очередная околопрогрессивная поделка для узкого круга специалистов?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795099
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что-же. Я рад за Александреску. Прогрессирует. А-то уже хотел записать его в сектанаты...
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795135
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

как на Д реализовать функцию с переставляемыми параметрами типа
template<class T1,class T2>
void func(T1 &, T2& );

чтобы при определении для func(T1 &, T2& ) работало и для func(T2& ,T1 & ) и для
случая T1=T2
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795179
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность,

Вопрос неточный. Тела функции должны отличаться при специализациях или как?
Нужно видеть полный аналог на С++.

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


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
#define FUNC_SWAP_DECLARATION(ret_type,func_name,type1,type2)\
ret_type func_name(type1& ,type2&);\
inline ret_type func_name(type2& t2,type1& t1)\
{\
     return func_name(t1,t2);\
}

//something.h
FUNC_SWAP_DECLARATION(int,binary,int,double);//разные
int binary(int,int);//одинаковые

//something.cpp
int binary(int i,double d)
{
......
}

int binary(int i,int j)
{
......
}

...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795508
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на шаблонах мне такое реализовать не удалось
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795583
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Общий шаблон. Подойдет и для (int,int) и для разных, но специализации имеют преимущество
Код: plaintext
1.
2.
3.
int binary(T, V)(T i, V d)
{
......
}

Специализации на вкус и цвет (кстати пример - возврат функции вычисляется = deduce)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
auto binary(T, V : int)(T i, V d)
{
......
  return i;
}

auto binary(T: double, V : int)(T i, V d)
{
......
  return d;
}
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795644
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglОбщий шаблон. Подойдет и для (int,int) и для разных, но специализации имеют преимущество
Код: plaintext
1.
2.
3.
int binary(T, V)(T i, V d)
{
......
}

Специализации на вкус и цвет (кстати пример - возврат функции вычисляется = deduce)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
auto binary(T, V : int)(T i, V d)
{
......
  return i;
}

auto binary(T: double, V : int)(T i, V d)
{
......
  return d;
}

- ощущение, что здесь чего-то не хватает.
в какой строчке указывается что функция может вызываться в 2х вариантах :
как binary(double,int) и binary(int,double)
?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795715
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если быть _абсолютно_ точным, то так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import std.stdio;

auto binary(T:double, V : int)(T i, V d)
{
  return i;
}

auto binary(T: int, V : double)(T i, V d)
{
  return i;
}

void main()
{
	auto x = binary( 1 . 5 ,  2 );
	auto y = binary( 1 ,  2 . 5 );
	writefln("x = %s, y = %s", x, y);
}
D:\dmd2\z>reverse.exe
x = 1.5, y = 1
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36795796
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- это copy-paste.

фишка в том,
что если определено тело функции
int func(double d,int i),
то тело функции int func(int i,double d) должно определяться _автоматически_

если бы в с++ можно было объявление шаблона распространить сразу на 2 функции,
это выглядело бы вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
//someheader.h 
template<class T1,class T2>
int func(T1 &,T2 &);
int func(T2 & t2,T1 &t1)
{
   return func<T1,T2>(t1,t2);
}

...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36796336
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не пойму, чего надобно....Такой вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
import std.stdio;

void func(T1, T2)(T1 x, T2 y) 
{
    int i;
    double d;
    static if ( is(typeof(x) == int)  && is(typeof(y)==double) )
    {
		i = x;
		d = y;       
    }
    else static if ( is(typeof(y)==int) && is(typeof(x)==double) )
    {
      	i = y;
      	d = x;
    } else
      static assert( 0 , "invalid parameters");
    
    // we have always i as int param, but d as double
    writefln("int value = %s, double value = %s", i, d);
}

void main()
{
	func( 1 . 1 ,  5 );
	func( 4 ,  2 . 4 );
	// func(1, 1); // error instantiating!
}
int value = 5, double value = 1.1
int value = 4, double value = 2.4
А еще можно сделать variadic func(...){ foreach(param) ...}
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36796794
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly MoskovskyВот еще семинар по D с Александреску, который недавно в Гугле был.
http://www.youtube.com/watch?v=RlVpPstLPEc
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36796904
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНикак не пойму, чего надобно

надобно одним шаблоном создавать несколько функцию у которой порядок передачи аргументов не важен, т.е. каждый аргумент определяется только своим типом, т.е., объявляя функцию так:
Код: plaintext
1.
int foo (int x, float y, char z)

на самом деле получаем 6 функций foo
Код: plaintext
1.
2.
3.
foo(int x, float y, char z)
foo(float y, int x, char z)
...

с одним(одинаковым) телом.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36796907
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvin
надобно одним шаблоном создавать несколько функцию у которой порядок передачи аргументов не важен, т.е. каждый аргумент определяется только своим типом, т.е., объявляя функцию так:
...
s/несколько //
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36797006
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinSiemarglНикак не пойму, чего надобно

надобно одним шаблоном создавать несколько функцию у которой порядок передачи аргументов не важен, т.е. каждый аргумент определяется только своим типом, т.е., объявляя функцию так:
Код: plaintext
1.
int foo (int x, float y, char z)

на самом деле получаем 6 функций foo
Код: plaintext
1.
2.
3.
foo(int x, float y, char z)
foo(float y, int x, char z)
...

с одним(одинаковым) телом.
Тогда пример за вчера 18:30 верный.

Anatoly MoskovskyСправдливости ради, с оглядкой на тему, надо отметить что в C++0x все эти фичи есть безо всяких бустов :)
Есть в стандарте, но пока не в реализациях (хотя может уже в передовых компиляторах типа Metrowerks или Comeau). Ждемс
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36797118
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglk0rvinSiemarglНикак не пойму, чего надобно

надобно одним шаблоном создавать несколько функцию у которой порядок передачи аргументов не важен, т.е. каждый аргумент определяется только своим типом, т.е., объявляя функцию так:
Код: plaintext
1.
int foo (int x, float y, char z)

на самом деле получаем 6 функций foo
Код: plaintext
1.
2.
3.
foo(int x, float y, char z)
foo(float y, int x, char z)
...

с одним(одинаковым) телом.
Тогда пример за вчера 18:30 верный.

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

Ну не на с++, а на чистом с =)

Проверки на этапе компиляции часто стоят того. Например, мой пример с (bool, double) точно не скомпилится, а вот с макросом - может )

ЗЫ. Переводил вчера шаблонные тесты Степанова (там врапперы и итераторы) с шаблонов С++ на D. Оказалось не очень тривиально и результат по скорости хуже =(
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36797951
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
Ну не на с++, а на чистом с =)

проигрывать в возможностях процедурному языку - совсем стыдно :)
хотелось бы посмотреть, как авторы Д реализуют этот пример.
пример то вполне практический

Siemargl
Проверки на этапе компиляции часто стоят того...

но только не для расмматриваемого примера

Siemargl
ЗЫ. Переводил вчера шаблонные тесты Степанова (там врапперы и итераторы) с шаблонов С++ на D. Оказалось не очень тривиально и результат по скорости хуже =(

feedback нужно посылать авторам:
может это вы что-то не так делаете, а может это у них идеалогия сырая
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36809153
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел такой простенький визуальный дизайнер под DWT (порт SWT) и DFL (D Forms Library).

Возможностей минимум, зато простой читаемый код библиотеки DFL под Win32.

Результирующая программа заняла 1Мб на диске (статическая линковка) и 2! Мегабайта в памяти. Чего я давно не видел для программ с GUI.

Сделать что ли клона Дельфи )))

ЗЫ. Очень порадовало, потому что в обед собрал unittest для dlib (ищу замену бусту). Так вот - получилось .exe 10 Мб, не считая g++*.dll (после стрипа, MinGW 4.5)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36818951
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Обратный ход маятника"

Я уже тут делал оговорку про проблемы развития. Немного позанимавшись, теперь могу подробнее осветить "обратную сторону луны", т.е. недостатки и неудобства.

1. Поскольку язык - не Си, есть проблема импорта системных хидеров ОС. Она не такая страшная, как в Pascal и VB, т.к. есть прямые аналоги типов, но все же ручная работа требуется.
Например, в версии 1.0 нет поставляемой библиотеки импорта Win32 API, и потому сообщество создало много своих версий - я встретил 4 разных реализации, и все неполные.
/2Off полные реализации Win32 API есть и не во всех C++ компиляторах. Например, нужные мне CreateFileTransacted есть только в MSVC и WatcomC, а в MinGW, DMC - нет.

2. Переход на UTF-8 в строках и исходниках. char[] str = "русский текст" - это не 14 байт, а больше. И хотя способ посимвольно итерироваться встроен (итератор UTF-32), но печать в консоли - автоматически не декодируется (и chcp 65001 не спасает). А требуемая ф-ция Win32 CharToOEM не включена как оказалось, в стандартную либу 2.0. "Простой вопрос, а ставит Вас в тупик" (с)

-Компилятор не понимает исходники в 1251, только любой Юникод.


3. Неразвита инфраструктура и вторичные неудобства.
-Местами компилятор дает невнятную диагностику ошибок - ссылаясь не на первопричину ошибки, а на место возникновения, и наоборот.

- Поскольку компилятор однопроходный, пока часть критичных ошибок не устранишь (импорт модулей, описание и инстанциация шаблонов) - все ошибки не покажет. Зато быстрый.

/2off В C++ такое веселье в основном только в шаблонах, и то всем силами с ним борются.
-Нет полноценного отладчика и профайлера скорости выполнения.

-Нет фреймворков - GUI, Database, GameDev, см.также ниже. Особенно касается версии 2.0

4. Полным ходом неразбериха "оперсорсного типа". Что где валяется и когда это все кончится! (с)

-в разных библиотеках применены разные утилиты сборки. Я насчитал make (Borland-style), make (GNU-style), bud/build, dsss, rake, bob

- библиотеки написаны в основном под D1+Tango и нихрена не идут без большого! напильника под D2+Phobos stdlib и даже хуже. Пример:
Плановая стандартная GUI = порт GUI Java SWT 3.4 +JavaFX называется DWT. 16,5 Mb исходников. Написана под dmd1.33+tango0.99.7.
При этом наотрез отказывается собираться и если взять DMD1.63 (текущая) и если взять Tango 0.99.9 в любой их комбинации. Теоретически, есть версия DWT под текущую версию D1+Tango, но ее надо качать из девелоперской ветки (это еще проверю). Под D2.0 - есть только совсем сырая - еще даже не альфа DWT2.

5. Документация. Для компилятора, стандартных тулзов и phobos - хорошая. Другие либы относительно опенсорса - неплохой уровень, но не более.

Короче, нужно быть достаточно упертым или быть корпорацией, чтобы подготовить под себя полный тулсет. В текущем состоянии он далеко отстает от C++/Java/C# и местами от Delphi.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36819925
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglТеоретически, есть версия DWT под текущую версию D1+Tango, но ее надо качать из девелоперской ветки (это еще проверю).Работает на текущих D1.063+Tango0.99.9
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36820016
Фотография k0rvin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
2. Переход на UTF-8 в строках и исходниках. char[] str = "русский текст" - это не 14 байт, а больше. И хотя способ посимвольно итерироваться встроен (итератор UTF-32), но печать в консоли - автоматически не декодируется (и chcp 65001 не спасает). А требуемая ф-ция Win32 CharToOEM не включена как оказалось, в стандартную либу 2.0. "Простой вопрос, а ставит Вас в тупик" (с)

-Компилятор не понимает исходники в 1251, только любой Юникод.

и правильно, 1251 не нужна и должна сдохнуть, чем скорее, тем лучше, юникод -- наше фсьо =)

Siemargl
-Нет фреймворков - GUI, Database, GameDev, см.также ниже. Особенно касается версии 2.0

ну знаете, Вы хотите прям всего и сразу, будет язык популярен -- будут фреймворки/библиотеки, а пока чего-то не хватает... пишите! как буд-то для всех остальных языков фреймворки появились сразу и в наилучшем качестве (ну может только в "корпоративных платформах" типа дотнета и джавы, но и то, там именно что на это ставки и делали, а не на языки Java и C#)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36934767
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навеяно темкой про Delphi x64.

1. В язык D специально добавлены ассемблерные вставки с единым синтаксисом, т.к. язык позиционируется как системный.
2. В настоящее время задача №1 у Брайта - он делает 64-битный компилятор. Референсный, хотя через LDC (или LLVM - неважно) уже можно получать 64-битный код.

=> Интересно, что сделает с ассемблером ?
Я в жизни не видел, что там за инструкции в x64, сильно отличаются или нет.

ЗЫ. Готов зуб ставить, что Уолтер сделает компилятор быстрее чем муБардакеро.=)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36937171
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Siemargl:

SiemarglНавеяно темкой про Delphi x64.
Этой что ли?

Siemargl1. В язык D специально добавлены ассемблерные вставки с единым синтаксисом, т.к. язык позиционируется как системный.
Единый синтаксис для x86-32 и x86-64? Или что имеется в виду?

Siemargl2. В настоящее время задача №1 у Брайта - он делает 64-битный компилятор. Референсный, хотя через LDC (или LLVM - неважно) уже можно получать 64-битный код.
Зачем большинству программ 64-битность? 2 гб адресного пространства (в 32-битном Windows) мало? Или Вы работаете со string-ами, в которых > 2 миллиарда элементов?

SiemarglЗЫ. Готов зуб ставить, что Уолтер сделает компилятор быстрее чем муБардакеро.=)
C++ Builder реально используется при программировании-за-деньги, D этим похвастаться не может (пока?).
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36937219
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр Седов,

>Единый синтаксис для x86-32 и x86-64? Или что имеется в виду?
Сейчас сделан единый asm для Win и Lin.
Для x64-64 пока офиц.доки нет.

>Зачем большинству программ 64-битность?
1. Серверная сторона уже сейчас,
2. Системные тулзы, мелкие утилиты, т.к.нафиг такая утилита, которой нужно подгружать 32бит подсистему совместимости.
3. Видел пожелания юзеров на форуме - для выполнения расчетных задач - массивы не влазят.

>C++ Builder реально используется при программировании-за-деньги, D этим похвастаться не может (пока?).
D сейчас хорош для обучения, для задач п.3, ждем-с пока. Это EDGE.

ЗЫ. За последние два месяца вышло две минорных версии. А минимальный тулсет для работы я таки насобирал (DB+GUI).
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36937241
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl
D сейчас хорош для обучения, для задач п.3, ждем-с пока. Это EDGE.
А при чем тут EDGE ? Это же вроде что-то из мобильной связи.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36937571
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

technology edge
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36938008
Evil_proger_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Модератор: По теме ничего не сказано.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36938272
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Siemargl:

Siemargl>Зачем большинству программ 64-битность?
1. Серверная сторона уже сейчас,
2. Системные тулзы, мелкие утилиты, т.к.нафиг такая утилита, которой нужно подгружать 32бит подсистему совместимости.
3. Видел пожелания юзеров на форуме - для выполнения расчетных задач - массивы не влазят.
Получается, что большинству GUI-программ (да те же Firefox/Opera, например) 64-битность не нужна. Да, с одной стороны, при выполнении Win32-exe-шника в 64-битном Windows имеем overhead из-за слоя-переходника, который marshal-ит 32-битные WinAPI-вызовы в 64-битную среду. Но, с другой стороны, переход к Win64-exe-шнику тоже повлечёт overhead, из-за увеличения размера указателей (и, возможно, некоторых ассемблерных инструкций).

SiemarglА минимальный тулсет для работы я таки насобирал (DB+GUI).
Какая GUI-библиотека? Она вся на D написана, или является binding-ом к GUI-библиотеке, написанной на другом языке?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36938394
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр Седов2 Siemargl:

Зачем большинству программ 64-битность? 2 гб адресного пространства (в 32-битном Windows) мало? Или Вы работаете со string-ами, в которых > 2 миллиарда элементов?



злые языки говорят 64-битный софт на 15% быстрее на 64-битной ОС
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36938434
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Lepsik:

Lepsikзлые языки говорят 64-битный софт на 15% быстрее на 64-битной ОС
Если программа непрерывно делает WinAPI-вызовы, то может так оно и есть. Но ведь обычная GUI-программа большую часть времени «спит», ожидая прихода оконного сообщения. Не всё ли равно, отреагировала программа на щелчок мыши за 100 мс или 115 мс?

Кстати, есть какие-нибудь замеры, насколько возрастает расход памяти при переходе с Win32-exe-шника на Win64-exe-шник? (а он обязательно возрастает) А то вполне может оказаться, что 32-битный soft в 64-битном Windows имеет смысл. Вон в Windows 95/98/ME (которые 32-битные) реализация GDI была 16-битной, для экономии памяти.

Я клоню к тому, что, по-моему, зря Брайт себе задачей № 1 выбрал создание 64-битного компилятора D. (Siemargl: «В настоящее время задача №1 у Брайта - он делает 64-битный компилятор.») Лучше бы делал удобную IDE с интегрированным отладчиком, позволяющим, например, смотреть содержимое hash-таблиц (встроенных в D). Без неё D вряд ли составит конкуренцию C++0x (см. название обсуждения).
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36938492
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовЛучше бы делал удобную IDE с интегрированным отладчиком, позволяющим, например, смотреть содержимое hash-таблиц (встроенных в D). Без неё D вряд ли составит конкуренцию C++0x (см. название обсуждения).
Вы шо! Ни в коем случае нельзя авторам языков и компиляторов доверять создание программ GUI и заставлять всех потом работать в них. Это был бы ужас-ужас.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36938518
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр Седов
Какая GUI-библиотека? Она вся на D написана, или является binding-ом к GUI-библиотеке, написанной на другом языке?

DWT = портирована (переписана на D) с SWT
Пётр Седов
Я клоню к тому, что, по-моему, зря Брайт себе задачей № 1 выбрал создание 64-битного компилятора D. (Siemargl: «В настоящее время задача №1 у Брайта - он делает 64-битный компилятор.») Лучше бы делал удобную IDE с интегрированным отладчиком, позволяющим, например, смотреть содержимое hash-таблиц (встроенных в D). Без неё D вряд ли составит конкуренцию C++0x (см. название обсуждения).
Было такое обсуждение. Итог такой - язык должен быть настолько простым и диагностируемым, чтобы обходиться без плюшек в виде IDE. Потому создатель языка длжен заниматься фреймворком - язык + стандартная библиотека, а остальное - коммьюнити.

Сейчас например есть Visual D, есть плагин к VStudio, я пробовал Codeblocks+GDB.
Терпимо, но до VS конечно далеко.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36939277
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у этой альтернативы C++0x (D т.е.) случайно не предусматривается какая нибудь совместимость с С++ ? Ну типа один файл-модуль-obj-dll на С++, другой на D и все это линкуется штатно...
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36939324
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravА у этой альтернативы C++0x (D т.е.) случайно не предусматривается какая нибудь совместимость с С++ ? Ну типа один файл-модуль-obj-dll на С++, другой на D и все это линкуется штатно...
Предусматривается. В принципе, проблемы те же, что и собрать вместе модули от разных С++ компиляторов.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36939364
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglpetravА у этой альтернативы C++0x (D т.е.) случайно не предусматривается какая нибудь совместимость с С++ ? Ну типа один файл-модуль-obj-dll на С++, другой на D и все это линкуется штатно...
Предусматривается. В принципе, проблемы те же, что и собрать вместе модули от разных С++ компиляторов.
Тогда и посмотреть на D можно... только осторожно.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36939387
Foxi-Voxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav...
Тогда и посмотреть на D можно... только осторожно.

Да-да, развлекайся:

Siemargl DWT = портирована (переписана на D) с SWT
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36939440
Sharkfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
алчность, Обвинить соавторов языка в его не знании это реально epic fail ))))
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36939880
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что у D с функциональным программированием ? Лямбды там всякие... А то в С++ с этим как-то совсем тяжело.

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

1. Лямбды и и замыкания есть. Т.к.сказать необходимый минимум ФП.
2. Язык со статической типизацией. Компилится в нативный код. Так что нет. Зато есть продвинутые шаблоны.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36939970
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k0rvinи правильно, 1251 не нужна и должна сдохнуть, чем скорее, тем лучше, юникод -- наше фсьо
Она не сдохнет, пока существуют исходники в однобайтной виндозной кодировке. И по моему вопрос стоит в другой плоскости. Надо всего-лишь, доукомплектовать среду конвертером. Это проще чем найти все-все исходники на всех-всех рабочих станциях в старой кодировке и уничтожать с гарантией невосстановления ИМХО.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36940234
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 petrav:

petravА можно ли программно генерировать классы и их интерфейсы ? Т.е. программный код порождает не только данные, но сам код.
Так это в любом языке можно :).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
FILE* pFile = fopen("Items.h", "wt");
fprintf(pFile, "// generated file, don't edit\n");
for (int n =  1 ; n <=  5 ; n++)
{
  fprintf(pFile, "class Item%i { };\n", n);
}
fclose(pFile);
Код: plaintext
1.
#include "Items.h"
Только генератор классов встроен не в компилятор языка, а в build-процесс.

Если хочется во время выполнения программы генерировать ассемблерный код и запускать его, можно использовать библиотеку LLVM . А в простых случаях можно и самому. Как, например, библиотеки ATL/WTL: они создают функции-thunk-и «на лету» (ищите в исходниках вызов FlushInstructionCache).

2 mayton:
maytonk0rvinи правильно, 1251 не нужна и должна сдохнуть, чем скорее, тем лучше, юникод -- наше фсьо
Она не сдохнет, пока существуют исходники в однобайтной виндозной кодировке. И по моему вопрос стоит в другой плоскости. Надо всего-лишь, доукомплектовать среду конвертером.
Зачем? У Вас что, скопилось много D-шных исходников в кодировке code page 1251? В любом случае, конвертировать текстовый файл из code page 1251 в UTF-8 -- это любой Notepad может, поэтому разработчику компилятора не обязательно заморачиваться поддержкой устаревших кодировок.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36940281
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовЗачем? У Вас что, скопилось много D-шных исходников в кодировке code page 1251? В любом случае, конвертировать текстовый файл из code page 1251 в UTF-8 -- это любой Notepad может, поэтому разработчику компилятора не обязательно заморачиваться поддержкой устаревших кодировок.
Вы достигаете преемстенности такой ценой? Это, знаетели-всё равно что "рубить головы" если шляпа мешает в дверь входить. А по поводу "устаревшей кодировки" вы очень сильно ошибаетесь. Готов спорить на любое количество коньяку, что 1251 еще не раз появится в вашей и моей жизни в самый неподходящий момент. Де-факто в ней работают сотни-тысяч БД вместе с загрузками-выгрузками, CSV, сетевыми протоколами и проч. Про глобальный интер/рунет я вообще молчу.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36940293
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsikзлые языки говорят 64-битный софт на 15% быстрее на 64-битной ОС
Думаю - вранье. Он может быть быстрее, если со сменой архитектуры "на борт" влепили больше планок памяти (8-32 Гб). И те, механизмы, которые раньше работали через PAE стали получать доступ к сегментам непосредственно. В остальном - 64 битный код ничем не лучше. А в плане структур данных (struct) с указателями - он более громоздкий.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36940302
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mayton:

maytonПётр СедовЗачем? У Вас что, скопилось много D-шных исходников в кодировке code page 1251? В любом случае, конвертировать текстовый файл из code page 1251 в UTF-8 -- это любой Notepad может, поэтому разработчику компилятора не обязательно заморачиваться поддержкой устаревших кодировок.
Вы достигаете преемстенности такой ценой?
Какая преемственность? Речь о D-шных исходниках: поддерживает D-компилятор code page 1251 или нет.

maytonЭто, знаетели-всё равно что "рубить головы" если шляпа мешает в дверь входить.
Не понял аналогию.

maytonА по поводу "устаревшей кодировки" вы очень сильно ошибаетесь.
Говоря «устаревшая кодировка», я не имел в виду «исчезнувшая кодировка» :).

maytonГотов спорить на любое количество коньяку, что 1251 еще не раз появится в вашей и моей жизни в самый неподходящий момент. Де-факто в ней работают сотни-тысяч БД вместе с загрузками-выгрузками, CSV, сетевыми протоколами и проч. Про глобальный интер/рунет я вообще молчу.
Да пожалуйста. Но зачем разработчику компилятора нового языка программирования поддерживать code page 1251? Пишите D-шные исходники сразу в UTF-8.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36940338
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовДа пожалуйста. Но зачем разработчику компилятора нового языка программирования поддерживать code page 1251? Пишите D-шные исходники сразу в UTF-8.
Да я и не пишу вовсе. Просто есть задачи ... может портировать чего-нибудь С-шное на D. Вот такие пирожки.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36940400
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Портируется элементарно, неудобно только приведение типов по другому писать
вместо (char*)__var нужно cast(char*)__var

И немного другая семантика массивов (внимательно в 1.0 и 2.0 в функции передаются по разному - или по ссылке или по значению).

Пётр Седов, исходники понимаются впроде в любом Юникоде, не только UTF-8.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36940624
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА по поводу "устаревшей кодировки" вы очень сильно ошибаетесь. Готов спорить на любое количество коньяку, что 1251 еще не раз появится в вашей и моей жизни в самый неподходящий момент. Де-факто в ней работают сотни-тысяч БД вместе с загрузками-выгрузками, CSV, сетевыми протоколами и проч. Про глобальный интер/рунет я вообще молчу.вот реально, +1.
имхо, все эти utf - проблемы китайцев и прочих юговосточных, зачем нам то эти проблемы? мы в 256 символов совершенно нормально вписываемся )))
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36941104
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 mayton:
maytonLepsikзлые языки говорят 64-битный софт на 15% быстрее на 64-битной ОС
Думаю - вранье.
Если спросить у Google-а «Firefox 64 bit», то выскакивает ссылка:
http://li.qosys.info/post90910383/ Также, на 15% быстрее декодирование JPEG на Windows x64 с помощью IJG’s JPEG library
Возможно, Lepsik это имел в виду.

2 Siemargl:
SiemarglПётр Седов, исходники понимаются впроде в любом Юникоде, не только UTF-8.
Это приятно, но не вижу смысла хранить исходники в UTF-16. В исходниках же английские буквы в основном, хранить в UTF-8 будет в 2 раза экономнее.

Да и вряд ли я буду что-то серьёзное на D писать. По-моему, язык с обязательной (или добровольно-принудительной, как в D) сборкой мусора не сможет похоронить C++.

2 egorych:
egorychmaytonА по поводу "устаревшей кодировки" вы очень сильно ошибаетесь. Готов спорить на любое количество коньяку, что 1251 еще не раз появится в вашей и моей жизни в самый неподходящий момент. Де-факто в ней работают сотни-тысяч БД вместе с загрузками-выгрузками, CSV, сетевыми протоколами и проч. Про глобальный интер/рунет я вообще молчу.вот реально, +1.
имхо, все эти utf - проблемы китайцев и прочих юговосточных, зачем нам то эти проблемы? мы в 256 символов совершенно нормально вписываемся )))
Что, VCL не поддерживает Unicode? (здесь должен быть дразнящий смайлик с высунутым языком)
Использование стандартных Unicode-ных кодировок (UTF-8, UTF-16), по-моему, упрощает жизнь как разработчикам, так и пользователям.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36941134
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовЕсли спросить у Google-а «Firefox 64 bit», то выскакивает ссылка:
http://li.qosys.info/post90910383/ Также, на 15% быстрее декодирование JPEG на Windows x64 с помощью IJG’s JPEG library
Мы с вами, коллеги как это ни прискорбно (тоже) часто становимся жертвами маркетинговых уловок. Какой смысл вкладывает реклама в "64bit"? Я не знаю! Регистры с разрядностью 64-бит были еще в Pentium-1 MMX (если мне не изменяет память это 1993 год). Гордый лэйбл можно было уже тогда клеить на софтваре и спекулировать этим. Спросите у создателей Огнелиса, благодаря чему было достигнуто ускорение производительности при декодировании JPEG. Расришение доступной памяти? Я не верю. Не соответствует моим представлениям об алгоритмах декодирования картинок. Использование инструкций SSE4 ? Может быть. Это уже похоже на правду. Но при чём здесь 64 бит?

Короче вот такие пирожки....
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36941289
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пётр СедовЧто, VCL не поддерживает Unicode?теперь поддерживает принудительно, не сказать, что это каким-то образом упростило мою жизнь, скорее наоборот, всплыл баг, который я пока не знаю, как победить.
Пётр Седов(здесь должен быть дразнящий смайлик с высунутым языком)вот так он пишется: ":-Ь" )))
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36941309
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
хотя бы при том, что в 64-бит режиме больше регистров доступно по сравнению с x86
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36941672
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pszMyNickmayton,
хотя бы при том, что в 64-бит режиме больше регистров доступно по сравнению с x86
Тоже похоже на правду. Тогда надо указать нечто вроде "x64_64". Это по смыслу другое обозначение. И более корректное.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36942512
pszMyNick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Насколько я знаю Intel позиционирует 64-битную архитеруру как расширешие x86 и обозначают её в связи с этим в основном как x86_64 или даже x86e, вообщем какой-то оффтоп уже пошёл... =)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36955255
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В х64 вдвое больше регистров процессора, что дает оптимизатору существенную выгоду, например при работе с вычислениями с массивами. Недавно в форуме по Дельфи проверили затык и GCC и VC на таком примере.

Наткнулся на баг оптимизации GC в D. Операции освобождения памяти LRU не дают отпустить массив после расширения.
пример
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
import std.stdio;
import std.date;

void f0()
{
	wstring a;

	foreach(i;  0  .. 100_000_000)
	{
  		a ~= " "w;
  	}
}

void main()
{
	auto r = benchmark!(f0)( 2 );
	writeln(r, "ms");
}


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

Существует проект портирования Qt для D

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

Andrei Alexandrescu <SeeWebsiteForEmail erdani.org> writes Nov 09 2010:
Just got word from my editor that TDPL has been approved for translation
in Russian.

Andrei
TDPL = The D Programming Language, библия для D
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36958517
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВот какую новость откопал!переведут, почитаем, а как же ))
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36958824
алчность
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНаткнулся на казус для меня, но может быть кому то интересно.

Существует проект портирования Qt для D

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

Существует проект портирования Qt для D

Надеюсь, обошлись без moc =)
ну если там moc ещё нужен будет, то нафик такой :D
интересно, обошлись ли без сборщика мусора
Бе сборщика мусора в D2 никак. Более того, delete объявили deprecated и пилят баги GC.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36962635
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglБе сборщика мусора в D2 никак. Более того, delete объявили deprecated и пилят баги GC.
А что ж так ?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36962658
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravSiemarglБе сборщика мусора в D2 никак. Более того, delete объявили deprecated и пилят баги GC.
А что ж так ?Там идейные чуваки. Хотят сделать реальный GC.

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

Я так понимаю что если народ хочет получить time-critical
язык то нужно либо отказаться от GC, либо усложнить его
работу настолько, что его тюннинг станет неотъемлемой
частью любого проекта, так-же как и настройка планов
работы SQL-курсоров в Oracle.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #36969195
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglалчностьпропущено...

ну если там moc ещё нужен будет, то нафик такой :D
интересно, обошлись ли без сборщика мусора
Бе сборщика мусора в D2 никак. Более того, delete объявили deprecated и пилят баги GC.
Извиняюсь за частичный ввод в заблуждение.

Убирают delete, но для желающих навсегда остается std.c.stdlib.malloc

(Навеяно обсужением Go.vs.Python.vs.D )
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37045515
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересная новинка, построенная полностью возможностями языка memoize

Готовый кэш вычислений и чего-угодно.

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

Готовый кэш вычислений и чего-угодно.

На С++ это приходится делать вручную.

Почему приходится?
Ничего не мешает сделать в C++ шаблон, который бы можно было вызывать так:
Код: plaintext
1.
2.
int fact(int);
auto fast_fact = memoize( 10 , fact, _1);
cout << fast_fact( 1 );
Это не просто, но возможно.
А вот здесь обсуждается вариант попроще: http://lists.boost.org/Archives/boost/2009/01/147447.php
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37045703
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglИнтересная новинка, построенная полностью возможностями языка memoize

Готовый кэш вычислений и чего-угодно.

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

На шаблон С++ я бы посмотрел.
Фишка в том, что это со многими другими фичами (Pipes, interpocess, unittest) попадает в stdlib.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37045781
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglpetrav, где теряем? На D сделано через шаблоны.
Причем была возможность сделать их pure, но потеряли бы в удобстве.

На шаблон С++ я бы посмотрел.
Фишка в том, что это со многими другими фичами (Pipes, interpocess, unittest) попадает в stdlib.
Я код D не очень понял, если честно.

Но в С++ коде данные кешируются в нескольких static переменных. Что будет если такую функцию вызывать из нескольких потоков?

А если добавить туда мьютекс - так его блокировка тоже не мгновенный процесс.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37046257
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНо в С++ коде данные кешируются в нескольких static переменных. Что будет если такую функцию вызывать из нескольких потоков?

А если добавить туда мьютекс - так его блокировка тоже не мгновенный процесс.
В данном случае вполне можно хранить свой кеш в каждом потоке (через TLS) - тогда не нужна блокировка.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37046267
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВ данном случае вполне можно хранить свой кеш в каждом потоке (через TLS) - тогда не нужна блокировка.
К сожалению использование TLS тут имеет ряд проблем. Положим мы разрабатываем функцию из сигнатуры и логики которой прямо следует ее реинтерабельность.

У TLS тут начинаются проблемы. Количество элементов в массиве TLS ограничено. Если мы начинаем насиловать такие приемы, да еще и на шаблонах, вы не боитесь переполнения массива указателей в TLS ?

Кроме того функция должна просто быть и просто вызываться. Кто обеспечит регистрацию индекса в TLS для шаблонной функции количество вариантов инстанцирования которой заранее не известно ?

Прямо внутри ее? Но это будет проверка, что индекс в TLS мы уже получили. Плюс сами функции доступа к TSL сколько времени занимают?

По выходу из потока данные все же лучше бы удалить. Как ?

Шедевральное решение всех проблем в boost::thread_specific_ptr<>. Там operator->() осуществляет поиск указателя по списку всех указателей переменных которые используют boost::thread_specific_ptr<>. Да, просто цикл по списку внутри operator->()...
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37046292
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravAnatoly MoskovskyВ данном случае вполне можно хранить свой кеш в каждом потоке (через TLS) - тогда не нужна блокировка.
К сожалению использование TLS тут имеет ряд проблем.
Понятно что есть проблемы. Но всегда можно найти компромис. Ведь речь идет об оптимизации. Значит чем-то нужно будет пожертвовать, т.к. ничего даром не дается.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37046294
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНа шаблон С++ я бы посмотрел.
В качестве зарядки с утра сделал :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
// Simple no-op cache
template <class R>
struct cache {
    cache(int size) 
    {
    }
    // 1 arg
    template <class  A1>
    boost::optional<R> get(A1 a1)
    {
        return boost::optional<R>(); // not implemented
    }
    template <class  A1>
    void set(A1 a1, R value)
    {
        // not implemented
    }
    // 2 args
    template <class  A1, class A2>
    boost::optional<R> get(A1 a1, A2 a2)
    {
        return boost::optional<R>(); // not implemented
    }
    template <class  A1, class A2>
    void set(A1 a1, A2 a2, R value)
    {
        // not implemented
    }
    // ... n args
};

// Caching function object
template <class R, class F>
struct memoizer {
    typedef R result_type;
    cache<result_type> m_cache;
    F m_func;
    memoizer(int cache_size, F func): m_cache(cache_size), m_func(func) {}
    // 1 arg
    template <class A1> result_type operator() (A1 a1)
    {
        boost::optional<result_type> res = m_cache.get(a1);
        if (!res) {
            res = m_func(a1);
            m_cache.set(a1, res.get());
        }
        return res.get();
    }
    // 2 args
    template <class A1, class A2> result_type operator() (A1 a1, A2 a2)
    {
        boost::optional<result_type> res = m_cache.get(a1, a2);
        if (!res) {
            res = m_func(a1, a2);
            m_cache.set(a1, a2, res.get());
        }
        return res.get();
    }
    // ... n args
};

// Function object generators:
// ptr fun overloads
template <class R, class A1>
memoizer<R, boost::function<R (A1)> > memoize(int cache_size, R func(A1)) 
{
    return memoizer<R,boost::function<R (A1)> >(cache_size, boost::bind(func, _1));
}
template <class R, class A1, class A2>
memoizer<R, boost::function<R (A1, A2)> > memoize(int cache_size, R func(A1, A2)) 
{
    return memoizer<R,boost::function<R (A1, A2)> >(cache_size, boost::bind(func, _1, _2));
}
// ...
// mem fun overloads 
// ...


// Usage:
int fact(int n)
{
    int f =  1 ;
    while (n >  1 ) {
        f *= n --;
    }
    return f;
}

int gcd(int a, int b)
{
    if (b ==  0 )
        return a;
    return gcd(b, a % b);
}

int main(int argc, char* argv[])
{
    boost::function<int (int)> fast_fact = memoize( 10 , fact);
    cout << fast_fact( 10 ) << endl;
    boost::function<int (int, int)> fast_gcd = memoize( 10 , gcd);
    cout << fast_gcd( 10 ,  15 ) << endl;
	return  0 ;
}

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

На шаблон С++ я бы посмотрел.
Фишка в том, что это со многими другими фичами (Pipes, interpocess, unittest) попадает в stdlib.
Я код D не очень понял, если честно.

Но в С++ коде данные кешируются в нескольких static переменных. Что будет если такую функцию вызывать из нескольких потоков?
А если добавить туда мьютекс - так его блокировка тоже не мгновенный процесс.
Достаточно блочить только конец кэша при его добавлении. Остальное реентерабельности не помеха.

Anatoly Moskovsky,
идею как сделано понял, но это не отменяет того, что буст-это супер-мега костыли )
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047175
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglбуст-это супер-мега костыли )
Ну на самом деле очень большой плюс буста, что он изолирует эти все костыли от програмиста, взамен давая удобные и простые в использовании фичи, изначально не предусмотренные при проектировании языка.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047232
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, не возражаю против достоинств (хотя сам выбрал попроще и полегче либу d-lib).
Но иногда цена высокая: Оптимизирующие компиляторы

Я тут пересобрал себе буст под MinGW 4.5 - перепроверил результат. Из-за какой то фигни с бустом и оптимизатором VC9 проигрывает ему в 10 раз =( Перемудрили где-то
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047300
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly Moskovsky, не возражаю против достоинств (хотя сам выбрал попроще и полегче либу d-lib).
Но иногда цена высокая: Оптимизирующие компиляторы

Я тут пересобрал себе буст под MinGW 4.5 - перепроверил результат. Из-за какой то фигни с бустом и оптимизатором VC9 проигрывает ему в 10 раз =( Перемудрили где-то
Тут не обязательно проблема в Бусте.
Например в том коде по ссылке что вы привели - работа с регексами.
А как выяснилось в GCC используется реализация строк с COW, а в VS - нет.
Естественно что при активной работе со строками это существенно влияет на производительность.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047348
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky,

Не думаю, что дело в этом. В D - строки строго иммутабельные, а скорость близка к GCC.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047376
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВ D - строки строго иммутабельные, а скорость близка к GCC.
Не вижу противоречия.
Если нет модификаций in-place, то строки COW имеют такую же производительность как и immutable (и там и там копируется только ссылка, а не тело строки)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047415
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyА как выяснилось в GCC используется реализация строк с COW, а в VS - нет.
Естественно что при активной работе со строками это существенно влияет на производительность.
Не верится. Нет исходников проверить, но в MSDN написано
MSDNReferences, pointers, and iterators that designate elements of the controlled sequence can become invalid after any call to a function that alters the controlled sequence, or after the first call to a non-const member function.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047451
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly MoskovskyА как выяснилось в GCC используется реализация строк с COW, а в VS - нет.
Естественно что при активной работе со строками это существенно влияет на производительность.
Не верится. Нет исходников проверить, но в MSDN написано
MSDNReferences, pointers, and iterators that designate elements of the controlled sequence can become invalid after any call to a function that alters the controlled sequence, or after the first call to a non-const member function.
Во что не верится? Что в VS нет COW в строках?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047709
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly Moskovsky,

Не думаю, что дело в этом. В D - строки строго иммутабельные, а скорость близка к GCC.
Извините, а чем COW отличается от иммутабельности ?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047786
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglпропущено...

Не верится. Нет исходников проверить, но в MSDN написано
пропущено...

Во что не верится? Что в VS нет COW в строках?
Ну да. Судя по всему - типичная реализация со счетчиком ссылок. Я еще на обсуждение на RSDN наткнулся, что это так.


petrav>Извините, а чем COW отличается от иммутабельности ?

Это разные несвязанные концепции. Иммутабельность - это наследуемый const. Соответственно, если строка иммутабельна, то поменять можно только через COW или аналог.
Хотя надо иметь в виду, что есть разница:
1. immutable (char)[] str; // тут строку, т.е указателю можно присвоить другой массив или расширить этот, но содержимое менять низзя. Это строки D2
2. immutable (char[] str) // тут строку переприсвоить нельзя, а содержимое изменяемое
3. immutable (char[]) str; // как 1, но расширить массив тоже нельзя

Из-за наследуемости компилятору легче оптимизировать иммутабельные вещи. Они же легко разделяются между потоками.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047789
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravSiemarglНе думаю, что дело в этом. В D - строки строго иммутабельные, а скорость близка к GCC.
Извините, а чем COW отличается от иммутабельности ?
Буквочкой W :)
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047805
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly Moskovskyпропущено...

Во что не верится? Что в VS нет COW в строках?
Ну да. Судя по всему - типичная реализация со счетчиком ссылок. Я еще на обсуждение на RSDN наткнулся, что это так.
А вы запустите студию. Скопируйте одну строку в другую и на содержимое объектов - в отладчике. Там разные указатели будут.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047808
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglpetrav>Извините, а чем COW отличается от иммутабельности ?

Это разные несвязанные концепции. Иммутабельность - это наследуемый const. Соответственно, если строка иммутабельна, то поменять можно только через COW или аналог.
Хотя надо иметь в виду, что есть разница:
1. immutable (char)[] str; // тут строку, т.е указателю можно присвоить другой массив или расширить этот, но содержимое менять низзя. Это строки D2
2. immutable (char[] str) // тут строку переприсвоить нельзя, а содержимое изменяемое
3. immutable (char[]) str; // как 1, но расширить массив тоже нельзя

Из-за наследуемости компилятору легче оптимизировать иммутабельные вещи. Они же легко разделяются между потоками.
Ничего не понял, если честно. Какой-то ад по моему. То строку можно перезаписать, то только расширить. Как так можно программировать не представляю.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047811
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly Moskovskyпропущено...

Во что не верится? Что в VS нет COW в строках?
Ну да. Судя по всему - типичная реализация со счетчиком ссылок. Я еще на обсуждение на RSDN наткнулся, что это так.

Если взять конкретно VS2008, то я допускаю что возможно там некий счетчик и есть (не проверял).
Но копирование там точно есть и это легко проверить не заглядывая в исходник STL.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int main()
{
    string a = "test";
    string b = a;
    cout << (void*)a.c_str() << endl;
    cout << (void*)b.c_str() << endl;
    return  0 ;
}
В GCC этот код печатает два одинаковых указателя, в VS2008 - два разных.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37047991
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky, проверил. В VS2008 уже не COW, где-то по дороге с VS98 поменяли.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37048020
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglAnatoly Moskovsky, проверил. В VS2008 уже не COW, где-то по дороге с VS98 поменяли.
Ссылки по теме
http://stackoverflow.com/questions/707014/why-vc-strings-are-not-reference-counted
http://us.generation-nt.com/answer/vc6-stl-string-reference-counting-help-7938142.html

Поменяли с VC6 на VC7.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37084351
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашли важный workaround, мешавший интегрировать C/C++ и D библиотеки в Win32 из-за несовершенства тулкита
Andrej Mitrovic
Currently we have this issue where we can't link D combiled object files with C
applications on Win32 (assuming the D code exports some names with extern(C)).
The problem is optlink outputs OMF type object files, and pretty much all
modern Win32 C compilers (VC/MinGW) expect COFF object file types.

There's agner's objconv tool that can dissasemble optlink's OMF format, but it
won't convert optlink's OMF to COFF since it keeps running into errors.

However, there might be a workaround. *Please not that this is purely
experimental*:

First, download the Delphi Driver Development Kit (DDDK) from here:
https://sites.google.com/site/delphibasics/home/delphibasicsprojects/delphidriverdevelopmentkit

In the bin folder there's a tool called 'omf2d'. This is a tool that converts
Borland's OMF to Intel OMF format, but it seems to be able to convert Optlink's
OMF format to an OMF format that Objconv can use. My guess is that omf2d simply
discards sections it doesn't understand and therefore Objconv uses the
resulting object file without errors. I do not know how safe this is, so take
it with a large grain of salt.

Second, download objconv.exe from: http://www.agner.org/optimize/.
Third, make sure you have MinGW installed since it comes with gcc.exe which
we'll use, or you can modify the batch file I'm providing and use MSVC instead
(I haven't tested this with MSVC yet).

Make sure both omf2d and objconv are in PATH. Then, download the zip file with
the sample project, extract and run the batch file that does all the work:

http://dl.dropbox.com/u/9218759/staticObjLink.zip

I've tried using this with .lib files, but Objconv couldn't convert the .lib
file even after passing it through omf2d, it still keeps getting errors. So for
now this only seems to work with .obj files (compiled with DMD -c). And I don't
know to what extent this will work since this is the only example I've tried
using this technique with for now.
Jan 17 2011
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37087752
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, красота. Сам себе ORM на шаблонах
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 alias DataObjectFromSqlCreateTable!(import("db.sql"), "users") User;
                                 // sql source code , table to fetch

 void main() {
    auto obj = new User(null); // that null should actually be a db handle  if you want to be able to commit changes

    // read/write access to the user table, with compile time
    // type and name checks

    obj.first = "Changing my name!";
    obj.date_last_edited = getUTCtime();

    obj.commitChanges(); // save your writes back to the database,  (reasonably) efficiently
 }
полная версия обсуждения тут
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37127579
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Случилось!Version D 2.052 Feb 17, 2011
New/Changed Features
64 bit support for Linux
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37255939
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не спеша подтягиваются графические библиотеки.
Поддерживаются DMD2 теперь DWT и GtkD.

Также доводится до ума с использованием возможностей D много кем любимый Qt (QtD).
Хелловорлдный пример с комментами ниже
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
//author Adam D. Ruppe
Anyway, here's a hello world I just whipped up with some comments
to keep in mind - stuff that took me hours to figure out...

The compile line looks like this on Linux:
dmd hello.d -I/usr/local/include/d -L-L/usr/local/lib -L-lqtdgui -L-lqtdcore
-L-lcpp_core -L-lcpp_gui -L-lQtGui -L-lQtCore

Note it takes a few seconds to compile. Pretty slow for D.

It's similar on Windows, but since I don't have my win laptop
available right now I don't quite remember what it was exactly.

Anyway, the program:

// Qt's files are pulled in from the qt.gui or qt.core packages
// Seems to require a pretty long list of imports....
import qt.gui.QApplication;
import qt.gui.QMessageBox;
import qt.gui.QPushButton;
import qt.gui.QWidget;

int main(string[] args) {
    // main looks a lot like a C++ qt program, right down to
    // wanting scope classes so the destructors run in order

    scope app = new QApplication(args);

    scope mywindow = new MyWindow();
    mywindow.show();

    return app.exec();
}

class MyWindow : QWidget {
    this() {
         button = new QPushButton(this);
         setWindowTitle("Hello"); // methods are same as C++ but
                                  // thankfully they use D strings

         // signals and slots are connected by putting the signature
         // in quotes. No need for the SIGNAL or SLOT macro from C++
         // You leave the signal_ or slot_ off (see below)
         connect(button, "clicked", this, "sayHello");
    }

    // signals and slots use a naming convention instead of a label
    // like in C++. signals are declared: void signal_myName();
    // and here is a slot. When connecting, leave signal_ or slot_
    // off the string
    void slot_sayHello() {
         // the static call like in C++
         QMessageBox.information(null, "hello", "hello");
         this.close();
    }

    QPushButton button;

    // You must remember to mix this in for any class that uses
    // signals and slots to work, otherwise it will segfault at
    // runtime on the connect calls.

    // It's like the C++ Q_OBJECT macro, but while you'd normally
    // put the C++ macro at the top of the class, this mixin needs
    // to be at the bottom of the class or you'll hit forward
    // reference hell when compiling.

    mixin Q_OBJECT;
}
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37410974
anon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych,

А что, С++ уже стабильная ВЕРСИЯ появилась?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37448533
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIOBE Programming Community Index for September 2011
September Headline: Programming Language D back in the top 20 тут
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37450458
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА по поводу "устаревшей кодировки" вы очень сильно ошибаетесь. Готов спорить на любое количество коньяку, что 1251 еще не раз появится в вашей и моей жизни в самый неподходящий момент. Де-факто в ней работают сотни-тысяч БД вместе с загрузками-выгрузками, CSV, сетевыми протоколами и проч. Про глобальный интер/рунет я вообще молчу.Это конечно печально, что устаревшие кодировки всё ещё используются, особенно для неанглоязычного текста.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37557662
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опробовал немного в работе.

Задача была - во всех XML файлах в каталоге с определенными форматом имени файла найти и изменить значение аттрибута XML-объекта.
Решение заняло ровно 100 строчек.

Удобно - в Фобосе есть поддержка XML и regexp.
Неудобно - XML работает только с Юникодом (или ANSI), пришлось конвертировать русский XML в Юникод с помощью MultiByteToWideChar().
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37588413
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вышли актуальные версии компилятора GDC в связке с MinGW32/64 GCC 4.6.1 http://prowiki.org/wiki4d/wiki.cgi?History/Year2011

Это должно кардинально решить проблему производительности (особенно на вычислениях с плавающей точкой). Ну и 64-бита пришли на Windows.

Попутно выяснил, что при переходе с DMD 2.047 потеряли совместимость с Windows2000. Стек-трейсер задействовали с ф-цей из XP и выше.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37595932
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помнится, трейсер там можно было задизейблить.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997643
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попалась новая книжка Андрея Александреску (тот самый, который "Современное проектирование на C++"/" Стандарты программирования на С++") - "Язык программирования D" , 2012г. Вроде бы pdf уже в сети можно найти.
Описывается D2 (вторая редакция языка). Перевод вот этой книжки.

Читается с удовольствием.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997694
vvmПопалась новая книжка Андрея Александреску (тот самый, который "Современное проектирование на C++"/" Стандарты программирования на С++") - "Язык программирования D" , 2012г. Вроде бы pdf уже в сети можно найти.
Описывается D2 (вторая редакция языка). Перевод вот этой книжки.

Читается с удовольствием.
Ну как, есть перспективы реального использования D?
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997706
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перспективыvvmПопалась новая книжка Андрея Александреску (тот самый, который "Современное проектирование на C++"/" Стандарты программирования на С++") - "Язык программирования D" , 2012г. Вроде бы pdf уже в сети можно найти.
Описывается D2 (вторая редакция языка). Перевод вот этой книжки.

Читается с удовольствием.
Ну как, есть перспективы реального использования D?
Да ХЗ.
Все классно, но в реале все уже не совсем так, как в книжке/документации. Даже примерчики, что в комплекте с самым последним Digital Mars D компилятором, не все компилятся: "deprecated", типа. В документации, что на сайте, упомянуты изменения, но не все.


Сообщения компиляции забавные:
Код: plaintext
1.
Error: undefined identifier 'octDigits', did you mean 'variable octalDigits'?

- самое прикольное, что подсказка правильная.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997815
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До чего же с эклипсом здорово: скачал, распаковал, запустил. Выбрал пункт меню "Help->Install New software", ввел нужный URL...загрузка - и все, эклипс стал IDE для D.
Жаль, что с отладчиком "D-шным" пока не работает.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997885
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аааа! Держите меня семеро!

Я про DWT узнал... и оно даже работает!
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997890
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Exe файлик при сборке с DWT не очень и пухлый: AddressBook из Examples получается 6,79 МБ (7 123 596 байт), а с опцией -release - 6,61 МБ (6 939 488 байт)...

Никаких "левых" dll, все в одном .exe.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997895
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ойоу, это чудо COM понимает , почти "искаропки"... завтра потесчЮ.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997904
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, эти опенсорсные заморочки... читаю http://dsource.org/projects/dwt - типа, как все круто, а там все уже устарело.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vvmExe файлик при сборке с DWT не очень и пухлый: AddressBook из Examples получается 6,79 МБ (7 123 596 байт), а с опцией -release - 6,61 МБ (6 939 488 байт)...

Никаких "левых" dll, все в одном .exe.

Это я все делал неправильно, потому что это касается старых версий: http://dsource.org/projects/dwt/wiki/Installation
Это с версией D1 + tango, ну и swt тоже старая.

Все лучше.

Теперь проект переехал на github: https://github.com/d-widget-toolkit

Если собрать с последней dwt, да с последним компилятором dmd (версия языка D2), да для phobos, вот так: - https://github.com/d-widget-toolkit/dwt - то ни один из примеров не вылезает из размера 3 Мб.

Для включенного DEBUG = 1 - меньше 5 мБ.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #37997939
vvm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, конечно, методика работы сбивает с ног. Это я по примеру устройства некоторых пакетов сужу.
Типа, для билда прикладной программки можно создать специализированное приложение, которое компилится, сразу запускается, анализирует внешние условия, генерит необходимое окружение и потом, если все ОК, билдит конечную прикладную программу.
Или, к примеру, выполняется компиляция COM - клиента. В процессе компиляции может выполниться генерация интерфейса для доступа к СОМ - серверу в полном соответствии с последней версией сигнатур интерфейсов СОМ - сервера. Если сигнатуры изменились, то клиент просто не скомпилится из-за обнаруженных на этапе компиляции несоотвествий. Если СОМ - сервер не зарегистрирован (и неоткуда взять информацию о типах), то, например, можно уведомить об этом разработчика.
И т.д. и т.п. Немеряно круто, то есть. Это вам не жалкий макропроцессор, тут в компайл-тайме что хочешь наворотить можно, средствами языка. Хотя, прогерам мало, подключают перл/питон/руби. :)

Что плохо, это то, что от релиза к релизу D одно с другим несовместимо. Пик энтузиазма, ИМХО, пришелся на 2006-2009 года; в это время как раз было создано большинство интересных инструментов для D. А потом народ отхлынул.

Некоторые энтузиасты просто забили, а кое-кто пытается перетащить то, что сделано, на С++.

Куда не сунешься - везде либо очень сыро, либо уже засохло и отвалилось. Все на голом энтузиазме. При чем, сделано много, но в какой-то момент люди понимают, что их просто бросили (D1->D2). Посмотреть на тот же проект DWT - сколько сделано, и все в помойку. Поддержки со стороны дежнежных мешков нет.

Александреску, типа, равлекается. :) А еще он грозится, что еще третья версия D будет. Надо полагать, традиционно несовместимая с D2.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #38427055
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошая для ди-шников новость: Александреску для фейсбука пишет статический анализатор кода.
На D.

Поддержка со стороны фесбука - не хухры-мухры.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Язык D как альтернатива C++0x
    #38846653
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Давно не занимался, но вот руки зачесались посмотреть в эту область. Посмотрел я на интерфейсные библиотеки

Итого:
Плюсы:
- синтаксис куда то утрясли, изменения минимальны.
- сайт тут http://dlang.org
- мульплатформа
- сделали 64-бит
- компилятор остался супербыстрым
- код компактный, зависимостей обычно почти нет, программа стартует мгновенно
- микролагов интерфейса (я про библиотеки), характерных для дотнета и явы тоже нет
- стандартная либа Фобос _очень_ широкая, но см минусы ниже

Минусы
- оптимизатор кода не лучше чем в дельфи (но скорость в 100 питонов имеем)
- оптимизатор вычислений с плавающей точкой отсутствует (кто хочет - вперед во встроенный ассемблер)
- шаблоны хоть и не такие кривые как в С++, но достаточно головоломные и как по мне начали нарушать принцип понятности шаблонного кода
- интерактивных отладчиков толковых не видел
- ввели костыли в виде трейтов http://dlang.org/traits . ИМХО портят красоту языка
- все еще меняют стандартную библиотеку Фобос, иногда теряется совместимость старого кода

Кратко по живым библиотекам интерфейса (не стал свои пометочки переводить). Проверял на dmd 2.065
GtkD
+may be 32- and 64-bit
-see memory leak in clock.d sample
-need GTK runtime DLL _install_
-app uses minimum 22 Mb RAM

DWT
+it's complete SWT 3.4 port (3.449.0)
?ver3.4 is some old, but no something very useful appears
in new version of SWT up to 4.2 (WebKit m.b.)
+app uses minimum 9 Mb RAM
+no dll's, .exe size ~3Mb
-no 64-bit (aug14) =(

Tkd (Tcl/Tk)
http://forum.dlang.org/thread/wdddgiowaidcojbrklsg@forum.dlang.org]http://forum.dlang.org/thread/wdddgiowaidcojbrklsg@forum.dlang.org
-early release
-need tcl/tk 8.6 DLLs, but only three (+tcl code folder) ~4.5Mb foot
+app uses minimum 10.5 Mb RAM
-no tix widgets
-no 64-bit ??
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #38846674
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зимаргл,

оптимизатор кода не лучше чем в дельфи (но скорость в 100 питонов имеем)
Откуда 100 питонов? Цифра.
...
Рейтинг: 0 / 0
Язык D как альтернатива C++0x
    #38846695
Зимаргл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

С Питоном идет тест pystone.py. Меряет скорость машины в (у.е.) пистонах.
В D есть он же переведенный.

По сути это есть немного старая версия теста drystone
...
Рейтинг: 0 / 0
166 сообщений из 166, показаны все 7 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Язык D как альтернатива C++0x
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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