Здравствуйте, _nn_, Вы писали:
__>Я понимаю, что приведедния string -> invariant string не существует. __>Вопрос почему? __>И как тогда idup работает ?
Потому что invariant гарантирует, что объект никогда не измениться. Если бы приведение string -> invariant string существовало, то можно было бы сделать так:
class ValueHolder {
this( invariant(char)[] value ) {
v_ = value;
}
invariant(char)[] value() { return v_; }
private invariant(char)[] v_;
}
char[] str = "abcd";
auto v = new ValueHolder( str );
// Теперь v ожидает, что он всегда будет хранить ссылку на значение "abcd".
str ~= ", oops!";
// А на самом деле v.value теперь равен "abcd, oops!" вместо "abcd".
idup же возвращает копию, которая никогда не меняется. IIRC, кто-то в форуме digitalmars.D показал, что idup для одного значения всегда возвращает один и тот же указатель, т.е. лишнего копирования нет.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, _nn_, Вы писали:
__>>Я понимаю, что приведедния string -> invariant string не существует. __>>Вопрос почему? __>>И как тогда idup работает ?
E>Потому что invariant гарантирует, что объект никогда не измениться. Если бы приведение string -> invariant string существовало, то можно было бы сделать так: E>
E>class ValueHolder {
E> this( invariant(char)[] value ) {
E> v_ = value;
E> }
E> invariant(char)[] value() { return v_; }
E> private invariant(char)[] v_;
E>}
E>char[] str = "abcd";
E>auto v = new ValueHolder( str );
E>// Теперь v ожидает, что он всегда будет хранить ссылку на значение "abcd".
E>str ~= ", oops!";
E>// А на самом деле v.value теперь равен "abcd, oops!" вместо "abcd".
E>
E>idup же возвращает копию, которая никогда не меняется. IIRC, кто-то в форуме digitalmars.D показал, что idup для одного значения всегда возвращает один и тот же указатель, т.е. лишнего копирования нет.
E>Я несколько раз ему это говорил и прямым текстом спрашивал, планируется ли вообще какая-нибудь пауза в развитии языка. Но мне он не отвечал. Зато он придерживается такой линии: есть типа стабильный D1.0 и для создания production кода и использования в реальных проектах нужно брать именно D1.0.
E>Его понять можно. Так же самая константность, точнее ее отсутствие -- это такой косяк, который хорошо бы исправить. И раз уж он решил добавить в язык константность, так пусть делает это раньше. Тем более, что многие из D community очень восторженно приветствуют такой ход событий и так же указывают: "мол чего народ баламутишь, есть D1.0, пользуйся им".
E>Радует, что я там не один такой, кто говорит, что пора бы уже заниматься продвижением D, а не развитием. Так что есть шансы, что к нам будут больше прислушиваться.
Кстати багфиксы вышли паралельно и для 1.x и для 2.x если и дальше так же будет, то 1.x вполне можно будет пользоватся.
Здравствуйте, FR, Вы писали:
E>>Радует, что я там не один такой, кто говорит, что пора бы уже заниматься продвижением D, а не развитием. Так что есть шансы, что к нам будут больше прислушиваться.
FR>Кстати багфиксы вышли паралельно и для 1.x и для 2.x если и дальше так же будет, то 1.x вполне можно будет пользоватся.
Так в том-то и дело, что программирование в D1.0 будет сильно отличаться от программирования в D2.0. Поэтому при переходе с D1.0 на D2.0 придется сильно перерабатывать то, что будет написано на D1.0. И, если финальный D2.0 появится через годик-другой, то на D1.0 будет написано слишком много чтобы просто так заниматься портированием на D2.0.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
__>>Поэтому единственный вариант это заняться разработкой идеального языка на благо всего RSDN-а VD>Это место уже занято .
Причем Обероном.
Здравствуйте, eao197, Вы писали:
E>Так в том-то и дело, что программирование в D1.0 будет сильно отличаться от программирования в D2.0. Поэтому при переходе с D1.0 на D2.0 придется сильно перерабатывать то, что будет написано на D1.0. И, если финальный D2.0 появится через годик-другой, то на D1.0 будет написано слишком много чтобы просто так заниматься портированием на D2.0.
Здравствуйте, FR, Вы писали:
E>>Так в том-то и дело, что программирование в D1.0 будет сильно отличаться от программирования в D2.0. Поэтому при переходе с D1.0 на D2.0 придется сильно перерабатывать то, что будет написано на D1.0. И, если финальный D2.0 появится через годик-другой, то на D1.0 будет написано слишком много чтобы просто так заниматься портированием на D2.0.
FR>D2 все интереснее становится, вот добавили практически compile time reflection: http://www.digitalmars.com/d/traits.html
Там уже народ нашел несколько недочетов и неудобств. Так что можно ожидать, что со временем этот механизм traits станет еще мощнее. Да и будет переименован с __trait на что-то более "цивильное".
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
В свежей статье Function Hijacking Mitigation Вальтер Брайт рассказал о новых подходах к разрешению перегрузки функций/методов, которые реализуются в D 2.0 (например, Overload Set поддерживаются в недавно вышедшей версии DMD 2.006).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Очередные вести с полей
E>В свежей статье Function Hijacking Mitigation Вальтер Брайт рассказал о новых подходах к разрешению перегрузки функций/методов, которые реализуются в D 2.0 (например, Overload Set поддерживаются в недавно вышедшей версии DMD 2.006).
Вальтеру изменяет чувство меры... D по количеству фич превысил некий разумный предел. Честно говоря это уже новогодняя ёлка, а не язык.
Эта константность... может она конечно теоритичесмки полна но в общем-то простой C++::const вызывает недопонимание, а уж это фейрверк final, const and invariant ...
А scope(exit), scope(success) и scope(failure) вместе с try, catch and finally как-то с содроганием воспринимается ...
Здравствуйте, c-smile, Вы писали:
CS>Вальтеру изменяет чувство меры... D по количеству фич превысил некий разумный предел. Честно говоря это уже новогодняя ёлка, а не язык.
CS>Эта константность... может она конечно теоритичесмки полна но в общем-то простой C++::const вызывает недопонимание, а уж это фейрверк final, const and invariant ...
CS>А scope(exit), scope(success) и scope(failure) вместе с try, catch and finally как-то с содроганием воспринимается ...
Согласен. У меня сложилось похожее впечатление. Хотя, если интересно, ты можешь сказать это Волтеру лично. Он сюда частенько заходит.
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, eao197, Вы писали:
E>>Очередные вести с полей
E>>В свежей статье Function Hijacking Mitigation Вальтер Брайт рассказал о новых подходах к разрешению перегрузки функций/методов, которые реализуются в D 2.0 (например, Overload Set поддерживаются в недавно вышедшей версии DMD 2.006).
CS>Вальтеру изменяет чувство меры... D по количеству фич превысил некий разумный предел. Честно говоря это уже новогодняя ёлка, а не язык.
+1
Более того, это елка, которую не перестают наряжать
CS>Эта константность... может она конечно теоритичесмки полна но в общем-то простой C++::const вызывает недопонимание, а уж это фейрверк final, const and invariant ...
Где-то месяца полтора назад, когда я еще пытался следить за обсуждениями D в news-группе digitalmars.D, Вальтер начал заводить разговор о том, что final -- это уже черезчур. Мол, как-то сложноватенько получается.
Но вообще мне вся эта бодяга с созданием все более и более лучшего языка уже надоела. Слежу за новыми релизами и анонсами, но не более того.
CS>А scope(exit), scope(success) и scope(failure) вместе с try, catch and finally как-то с содроганием воспринимается ...
CS>По моему мнению, конечно.
Твое мнение не слишком отличается от моего. Хотя scope(exit) мне лично нравился. Не нравились другие вещи: например, жесткое разделение на value и reference типы (из-за чего некоторые шаблоны представляют из себя сплошной static if).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, c-smile, Вы писали:
CS>Вальтеру изменяет чувство меры... D по количеству фич превысил некий разумный предел. Честно говоря это уже новогодняя ёлка, а не язык.
Это все от того, что у него изначально небыло концепции языка. Вместо этого он именно что занимается наряжением елки, т.е. добавлением фич. Когда язык проектируют под идеи, то фичи получаются сбалансированными и язык выглядящим целостно и не противоречиво. А когда фичи приклеивают к безидейному телу (главная идея Ди, как я понимаю, было создать С++ с человеческим лицом), то получается ёлка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
CS>>Вальтеру изменяет чувство меры... D по количеству фич превысил некий разумный предел. Честно говоря это уже новогодняя ёлка, а не язык.
VD>Это все от того, что у него изначально небыло концепции языка. Вместо этого он именно что занимается наряжением елки, т.е. добавлением фич. Когда язык проектируют под идеи, то фичи получаются сбалансированными и язык выглядящим целостно и не противоречиво. А когда фичи приклеивают к безидейному телу (главная идея Ди, как я понимаю, было создать С++ с человеческим лицом), то получается ёлка.
По моим впечатлениям, идеи у Брайта есть и под них он свой язык и проектирует. Проблема в том, что идеи у него не кончаются и их все он пытается в язык запихнуть. Потому-то язык так еще ни разу стабильного состояния и не достиг. А все, что лично мне нужно было от D -- это стабилизации где-то на версии 1.007.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, VladD2, Вы писали:
VD>Это все от того, что у него изначально небыло концепции языка. Вместо этого он именно что занимается наряжением елки, т.е. добавлением фич. Когда язык проектируют под идеи, то фичи получаются сбалансированными и язык выглядящим целостно и не противоречиво. А когда фичи приклеивают к безидейному телу (главная идея Ди, как я понимаю, было создать С++ с человеческим лицом), то получается ёлка.
Это, кстати, проблема не только конкретного компилятора, но еще и многих open source проектов.
Здравствуйте, eao197, Вы писали:
E>По моим впечатлениям, идеи у Брайта есть и под них он свой язык и проектирует. Проблема в том, что идеи у него не кончаются и их все он пытается в язык запихнуть. Потому-то язык так еще ни разу стабильного состояния и не достиг. А все, что лично мне нужно было от D -- это стабилизации где-то на версии 1.007.
Ты меня уж извини, что я снова упомяну Немерле. Ладно?
Так вот давай сравним языки. Фактически, если отбросить работу с указателями, то Ди не имеет ничего что нельзя было бы сделать на Немерле. Причем почти всегда решение на Немерле будет красивее.
При этом все фичи Немерле были (в общем виде конечно) заложены еще при в работы над языком. Ди же подбирается к тем же "окопам" только сейчас.
На мой взгляд очевидно, что такое положение дел определяется тем, что общего видения у автора Ди не было. И то что называется Ди сейчас — это результат эволюции языка и роста знаний автора.
Возможно если он возьмется делать новый язык, ну, скажем E, то у него все плучится.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.