Re[20]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.07 16:01
Оценка: 4 (1)
Здравствуйте, Дьяченко Александр, Вы писали:

ДА>Это кусок патча компилятора в файле ILEmitter который ты приводил в другой ветке (см. Re[11]: Принцип подстановки Барбары Лисков
Автор: VladD2
Дата: 01.01.07
ближе к концу).


Преобразование из PExpr в TExpr — это типизация. При этом нужно сначала типизировать все внешние ссыдки. Обычно типизируется тело метода. В общем, это не самый простой и короткий рассказ.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.07 16:03
Оценка:
Здравствуйте, remark, Вы писали:

R>Вот, пожалуйста. Меньше, кстати, получается:


R>
R>struct BinIntCall {string name; int a1, a2;};
R>struct BinOp {string name; any a1, a2;};

R>void to_str(any e)
R>{
R>    if (double* d = any_cast(e)) cout << *d;
R>    else if (BinIntCall* c = any_cast(e)) cout << c->name << "(" << c->a1 << "," << c->a2 << ")";
R>    else if (BinOp* c = any_cast(e)) to_str(c->a1); cout << c->name; to_str(c->a2);
R>    else throw 0;
R>}
R>


Что это за бред?

Может поглядишь исходную задачу?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: C++0x начали урезать
От: EvilChild Ниоткуда  
Дата: 18.12.07 17:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>До Хаскелевских классов типов шаблонам С++ никогда не дорости.

Я этого и не утверждал.

VD>Да, и не решают они ничего. Они позволяют прояснить интерфейс параметра типа. Но не зсаставляют использовать их везде. Что создает недетерминизм.

Мы говорим об одном и том же: консептам из драфта нового стандарта C++?
now playing: Scorn — Stripped Back Hinge
Re[19]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 11:13
Оценка:
Здравствуйте, EvilChild, Вы писали:

VD>>Да, и не решают они ничего. Они позволяют прояснить интерфейс параметра типа. Но не зсаставляют использовать их везде. Что создает недетерминизм.

EC>Мы говорим об одном и том же: консептам из драфта нового стандарта C++?

Ага. Они не обязательны для применения. Как я пониял ты по рпежнему сможешь писать код без концептов.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: C++0x начали урезать
От: jazzer Россия Skype: enerjazzer
Дата: 19.12.07 11:33
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, EvilChild, Вы писали:


VD>>>Да, и не решают они ничего. Они позволяют прояснить интерфейс параметра типа. Но не зсаставляют использовать их везде. Что создает недетерминизм.

EC>>Мы говорим об одном и том же: консептам из драфта нового стандарта C++?

VD>Ага. Они не обязательны для применения. Как я пониял ты по рпежнему сможешь писать код без концептов.


Естественно, иначе весь существующий код без концептов перестанет компилироваться.

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

Так что не очень понятно, о чем была твоя реплика.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[21]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 13:51
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Естественно, иначе весь существующий код без концептов перестанет компилироваться.


Ага.

J>Не думаю, что подобные "эпохальные" нововведения, несовместимые со всем существующим кодом, могут приветствоваться в любом языке, не исключая твой любимый Немерле.


Я считаю, что косяки лучше не допускать. Тот же Немерле проектировался с нуля и без компромисов для (скажем) совместимости с С.
С++ можно сделать удобным только если таки отказаться от совместимости. Я бы тупо ввел два режима. 1. Режим совместимости в ктором все по старому. 2. Режим 0х в котором многое запрещено и не допустимо, но зато обеспечивается полноценный контроль. Первое что я бы запретил — это препроцессор. Второе — использование указателей. Третье — программироание шаблонов без концептов.

J>Так что не очень понятно, о чем была твоя реплика.


Теперь понятнее?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: C++0x начали урезать
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.12.07 14:24
Оценка: 9 (1) +4 :))) :))
Здравствуйте, VladD2, Вы писали:

VD>С++ можно сделать удобным только если таки отказаться от совместимости. Я бы тупо ввел два режима. 1. Режим совместимости в ктором все по старому. 2. Режим 0х в котором многое запрещено и не допустимо, но зато обеспечивается полноценный контроль. Первое что я бы запретил — это препроцессор. Второе — использование указателей. Третье — программироание шаблонов без концептов.


Прям как в анекдоте:

Застойные годы. Принимают мужика в партию. Председатель комиссии срашивает:
-- Вот скажите, вы курите?
-- Да.
-- А если бы партия вам приказала бросить курить, бросили бы?
-- Да!
-- А вы водку употребляете?
-- Да.
-- А если бы партия вам приказала бросить пить водку, бросили бы?
-- Да!
-- Ну а с женщинами вы встречаетесь? Ну вы, надеюсь, понимаете в каком смысле.
-- Ну да, встречаюсь.
-- А если бы партия вам приказала отказаться от женщин, отказались бы?
-- Э... Да. Раз партия прикажет, значит откажусь.
Тут председатель принимает совсем уж серьезный вид и:
-- А теперь самый важный, как я считаю, вопрос: а если бы партия приказала вам расстаться с жизнью, расстались бы?
-- Да!
-- Вы так быстро отвечаете. Может подумаете еще?
-- Да нахрена мне такая жизнь, без сигарет, водки и женщин?! Забирайте ее всю без остатка!


Зачем кому-нибудь C++ без препроцессора и указателей?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[22]: C++0x начали урезать
От: jazzer Россия Skype: enerjazzer
Дата: 19.12.07 14:25
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, jazzer, Вы писали:


J>>Естественно, иначе весь существующий код без концептов перестанет компилироваться.

VD>Ага.

J>>Не думаю, что подобные "эпохальные" нововведения, несовместимые со всем существующим кодом, могут приветствоваться в любом языке, не исключая твой любимый Немерле.


VD>Я считаю, что косяки лучше не допускать.

Можно подумать, кто-то считает иначе.

VD>Тот же Немерле проектировался с нуля и без компромисов для (скажем) совместимости с С.

Это он сейчас так проектировался.
А вот когда ему стукнет 20 лет, как С++, тогда ему придется обеспечивать прежде всего совместимость с самим собой, если, конечно, он собирается эволюционировать.

VD>С++ можно сделать удобным только если таки отказаться от совместимости.

Ну мне лично совместимость никак не мешает.

VD>Я бы тупо ввел два режима. 1. Режим совместимости в ктором все по старому. 2. Режим 0х в котором многое запрещено и не допустимо, но зато обеспечивается полноценный контроль. Первое что я бы запретил — это препроцессор. Второе — использование указателей. Третье — программироание шаблонов без концептов.


А, ну опций компиляции можно завсегда придумать вагон, с этим никто и не спорит.
Ты и сейчас можешь, скажем, запускать gcc с максимальным уровнем варнингов и в pedantic mode, в котором он пишет кучу варнингов, и при этом еще одним флажком сказать, что все варнинги — это ошибки — и получишь примерно то же — запрет всех показавшихся компилятору опасными конструкций.

Или там пользоваться каким-нть линтом, который ловит "опасный" код и имеет кучу опций по этому поводу, а с выходом С++Ох их станет еще больше.

Только это не надо никому, видимо, по крайней мере, я не слышал, чтобы этим (выключением "опасных" фич) кто-то реально пользовался, вот это и не получает особого развития.

Двумя режимами точно никто не обойдется, потому что выбрасывать весь старый код ради того, чтоб заюзать одну новую фичу, абсолютно бессмысленно. И не юзать фичу ради сохранения старого кода столь же бессмысленно. А посему никто не будет делать подобных "или-или" режимов — ими просто никто не будет пользоваться.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[23]: C++0x начали урезать
От: Курилка Россия http://kirya.narod.ru/
Дата: 19.12.07 14:34
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, VladD2, Вы писали:


VD>>Тот же Немерле проектировался с нуля и без компромисов для (скажем) совместимости с С.

J>Это он сейчас так проектировался.
J>А вот когда ему стукнет 20 лет, как С++, тогда ему придется обеспечивать прежде всего совместимость с самим собой, если, конечно, он собирается эволюционировать.

Только не стоит забывать, что и 20 лет назад он проектировался исходя из обратной совместимости с C
Re[24]: C++0x начали урезать
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.12.07 14:37
Оценка: 1 (1) +2
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, jazzer, Вы писали:


J>>Здравствуйте, VladD2, Вы писали:


VD>>>Тот же Немерле проектировался с нуля и без компромисов для (скажем) совместимости с С.

J>>Это он сейчас так проектировался.
J>>А вот когда ему стукнет 20 лет, как С++, тогда ему придется обеспечивать прежде всего совместимость с самим собой, если, конечно, он собирается эволюционировать.

К>Только не стоит забывать, что и 20 лет назад он проектировался исходя из обратной совместимости с C


Вот через 20 лет кто-нибудь поставит Nemerle в упрек то, что он создавался под .NET.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[24]: C++0x начали урезать
От: jazzer Россия Skype: enerjazzer
Дата: 19.12.07 14:38
Оценка:
Здравствуйте, Курилка, Вы писали:

VD>>>Тот же Немерле проектировался с нуля и без компромисов для (скажем) совместимости с С.

J>>Это он сейчас так проектировался.
J>>А вот когда ему стукнет 20 лет, как С++, тогда ему придется обеспечивать прежде всего совместимость с самим собой, если, конечно, он собирается эволюционировать.

К>Только не стоит забывать, что и 20 лет назад он проектировался исходя из обратной совместимости с C

Почему это?

Имхо, после 20 лет широкого промышленного применения исходные посылки совершенно не важны, потому что нужно прежде всего обеспечивать совместимость не с тем, с чем нужно было обеспечивать совместимость вначале, а с огромным количеством кода С++, написанным за эти 20 лет.

И это относится к любому языку.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[22]: C++0x начали урезать
От: FR  
Дата: 19.12.07 14:57
Оценка: 1 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Я считаю, что косяки лучше не допускать. Тот же Немерле проектировался с нуля и без компромисов для (скажем) совместимости с С.


У немерле тоже есть компромиссы из-за совместимости с NET

VD>С++ можно сделать удобным только если таки отказаться от совместимости. Я бы тупо ввел два режима. 1. Режим совместимости в ктором все по старому. 2. Режим 0х в котором многое запрещено и не допустимо, но зато обеспечивается полноценный контроль. Первое что я бы запретил — это препроцессор. Второе — использование указателей. Третье — программироание шаблонов без концептов.


Проще написать новый язык, жаль Вальтер не торопится
Re[29]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:06
Оценка: -5
Здравствуйте, WolfHound, Вы писали:

WH>А так?


Брось ты это. Это упертое создание тебе не переубедить. Ему похрену что молоть, лиш бы свою линию гнуть. Он и сам прекрасно понимает, что молет чушь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:34
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Зачем кому-нибудь C++ без препроцессора и указателей?


Я бы упростил бы это вопрос. Например, так:

Зачем кому-нибудь C++?

или даже:

Зачем C++?




А если серьезнь, то есть менее кривые средства. Те же текстуаьные макросы можно заменить немерлоподобными. Указатели пусть остаются, но только в опасном контексте (как в Шарпе). Так чтобы можно было четко выделить опастные куски кода и проверять их более дотошно. А то в любом месте многомегобайтного кода программы может появиться адресная арифметика в следствии которой будет испорчена память и бедный В.Пупкин будет вынужден месяцами тупо смотреть на корректный код не понимая почему он не работает.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: C++0x начали урезать
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.12.07 15:34
Оценка:
Здравствуйте, jazzer, Вы писали:

VD>>Тот же Немерле проектировался с нуля и без компромисов для (скажем) совместимости с С.

J>Это он сейчас так проектировался.
J>А вот когда ему стукнет 20 лет, как С++, тогда ему придется обеспечивать прежде всего совместимость с самим собой, если, конечно, он собирается эволюционировать.

А С++ так проектировался когда он еще даже С++-мо не был, а был СиСсКлассами.

VD>>С++ можно сделать удобным только если таки отказаться от совместимости.

J>Ну мне лично совместимость никак не мешает.

Ну, ты лично этим маральным уродством и пользуешся. А я вот попробовал алтернативу. Теперь обратно не то что бы не тянет, а тошнить начинает просто от прсмотра кода на С++.

VD>>Я бы тупо ввел два режима. 1. Режим совместимости в ктором все по старому. 2. Режим 0х в котором многое запрещено и не допустимо, но зато обеспечивается полноценный контроль. Первое что я бы запретил — это препроцессор. Второе — использование указателей. Третье — программироание шаблонов без концептов.


J>А, ну опций компиляции можно завсегда придумать вагон, с этим никто и не спорит.


Это не опции компиляции, а скорее области видимости (скопы) в которых допустим/недопустим старый/новый синтаксис. Как с опасным кодом в Шарпе.

J>Ты и сейчас можешь, скажем, запускать gcc с максимальным уровнем варнингов и в pedantic mode, в котором он пишет кучу варнингов, и при этом еще одним флажком сказать, что все варнинги — это ошибки — и получишь примерно то же — запрет всех показавшихся компилятору опасными конструкций.


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

Так и вижу:

Warning: You use C++ in C++ 0x! Kill yourself!!!


J>Только это не надо никому, видимо, по крайней мере, я не слышал, чтобы этим (выключением "опасных" фич) кто-то реально пользовался, вот это и не получает особого развития.


Ну, мне вот не надо С++ даже в виде 0х. А ведь когда-то я даже подумать об этом не мог. Так что не надо про "не надо никому".

J>Двумя режимами точно никто не обойдется, потому что выбрасывать весь старый код ради того, чтоб заюзать одну новую фичу, абсолютно бессмысленно. И не юзать фичу ради сохранения старого кода столь же бессмысленно. А посему никто не будет делать подобных "или-или" режимов — ими просто никто не будет пользоваться.


Я не предлагал выбрасывать. Я предлагал четко разделить старый иновый, чтобы можно было порвать с совместимостью в новом языке.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[24]: C++0x начали урезать
От: jazzer Россия Skype: enerjazzer
Дата: 19.12.07 15:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, eao197, Вы писали:


E>>Зачем кому-нибудь C++ без препроцессора и указателей?


VD>Я бы упростил бы это вопрос. Например, так:

VD>

Зачем кому-нибудь C++?

VD>или даже:
VD>

Зачем C++?


или даже:

Зачем?


VD>Те же текстуаьные макросы можно заменить немерлоподобными.

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

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

Но при этом другого способа пройтись по встроенному массиву или встроенной строке, кроме адресной арифметики, нету, если не хочется терять скорость, конечно.
Хотя в моем коде подобные вещи обычно упрятаны в классы либо просто используются алгоритмы STL.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[25]: C++0x начали урезать
От: Andrei F.  
Дата: 19.12.07 16:03
Оценка:
Здравствуйте, eao197, Вы писали:

E>Вот через 20 лет кто-нибудь поставит Nemerle в упрек то, что он создавался под .NET.


Помнится, не так давно кое-кто вообще отрицал, что у него будет какое-либо будущее. Да и сейчас еще такие не перевелись
Re[24]: C++0x начали урезать
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.12.07 16:05
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, eao197, Вы писали:


E>>Зачем кому-нибудь C++ без препроцессора и указателей?


VD>Я бы упростил бы это вопрос. Например, так:

VD>

Зачем кому-нибудь C++?

VD>или даже:
VD>

Зачем C++?


VD>


За него платят.

VD>А если серьезнь, то есть менее кривые средства. Те же текстуаьные макросы можно заменить немерлоподобными.


Макросы в топку.
Мне препроцессор в C++ нужен для устранения различий между платформами и поддержкой разных режимов компиляции. Ну еще за макросами удобно прятать вещи типа assert или trace, которые из release версии вырезаются напрочь.

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[26]: C++0x начали урезать
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.12.07 16:07
Оценка:
Здравствуйте, Andrei F., Вы писали:

AF>Здравствуйте, eao197, Вы писали:


E>>Вот через 20 лет кто-нибудь поставит Nemerle в упрек то, что он создавался под .NET.


AF>Помнится, не так давно кое-кто вообще отрицал, что у него будет какое-либо будущее. Да и сейчас еще такие не перевелись


А где фактические доказательства того что они, т.е. мы, были не правы?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[27]: C++0x начали урезать
От: Andrei F.  
Дата: 19.12.07 16:23
Оценка:
Здравствуйте, eao197, Вы писали:

E>>>Вот через 20 лет кто-нибудь поставит Nemerle в упрек то, что он создавался под .NET.


Хрустального шара, чтобы в нем показать, у меня нет. Но сам факт таких высказываний (см выше) уже о многом говорит
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.