Re[52]: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.07.03 19:25
Оценка:
Здравствуйте, WolfHound, Вы писали:

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


AVK>>Вместо того чтобы сделать нормальную объектную модель.

WH>С удовольствием, а как?

Объявляешь класс... и используешь его в свойстве (общем для набора свойств).
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Будущее C#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.07.03 19:25
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Господам которые считают что многолетний опыт дает им абсолютные знания в том числе в тех областях куда они почти не заглядывали тоже.


Еще раз повторяю, что не тебе оценивать то, куда я заглядывал, а куда нет. Заметь, я как-то не обсуждают твои знания, хотя имею на это куда болшее моральное право.

AVK>>Не стоит считать людей вокруг себя глупее себя.

WH>И я о томже.

Ты это демостротивно делашь.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Будущее C# - вот это флейм!!!!!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.07.03 19:37
Оценка:
Здравствуйте, LaptevVV, Вы писали:

Ну, если автоматы, то все ясно. Хотя их тоже можно было бы в ОО-форму облечь. Да и шаблоны для решания таких задач прекрасно подходят. Вот только идеология конечных автоматов подходит далеко не везде.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Будущее C# - вот это флейм!!!!!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.07.03 19:37
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Но самое смешное что твоя позиция выглядит в точности так же, только на новом витке технологий


Именно.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Будущее C# - вот это флейм!!!!!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.07.03 19:37
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>ДОТНЕТ НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ В СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ В СВЯЗИ С НЕПРОГНОЗИРУЕМОСТЬЮ ОТКЛИКА.


Это все из-за GC и JIT-компиляции. По большому счету обе проблемы решаются. Блее того как раз на GC можно создать алгоритм выделения памяти с полностью линейными временными характиристиками. Ну, а JIT можно вообще исключить. Вопрос только нужно ли оно. Дотнет действительно затевался скорее для бизнеса (сервера) и десктопа.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Будущее C# - вот это флейм!!!!!!!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 15.07.03 23:11
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Да нет, не шутка. Не зря Влад регулярно отсылает вас на форум ixbt по программированию с предложением почитать посты тов. Рыбкина. Это вполне серьезно. Впрочем, бывают даже более удивительные случаи — есть люди, которые считают и С злом и убеждены что надо всех принудительно заставлять писать на ассемблере.


Мне встречалось что-то подобное, но в менее клиническом изложении.

AVK>Но самое смешное что твоя позиция выглядит в точности так же, только на новом витке технологий


Да, я это отлично знаю. И тов. Рыбкина тоже читал. Позабавился. Проблема в другом... Не находишь, что... изготовление, ммм... кодогенератора, это... ммм... программирование на ассемблере, только чуть более переносимом, что ли...
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Будущее C# - вот это флейм!!!!!!!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 15.07.03 23:13
Оценка:
Здравствуйте, VladD2, Вы писали:

AVK>>Но самое смешное что твоя позиция выглядит в точности так же, только на новом витке технологий

VD>Именно.

Да нет, Влад. Не так всё просто. Вот нового в смысле "хорошо забытого старого" мне бы и не хотелось как раз...
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Будущее C# - вот это флейм!!!!!!!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 15.07.03 23:53
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

ГВ>>Мда... Слушайте, мож это шутка такая?

LVV>Нет, не шутка. Пишут системы реального времени. Все прошивается, видимо связано с риском крупных аварий.

Я бы сказал, что дело здесь в стереотипах, ну да ладно, не стОит...

LVV>И я своего друга прекрасно понимаю, так же как и Михаила Донского (одного из авторов Каиссы — первого чемпиона по шахматам среди компьютеров). Он, когда переходил с Лексикона на Word, тоже говорил: мне не нравится, когда меня ВЫНУЖДАЮТ платить за то, что мне не фактически НУЖНО.


Да, такую позицию можно понять, но очень не хочется принимать.

LVV>Так и С# — не вижу я особых преимуществ ни перед С++, ни перед Java. У этих языков переносимость на 3 порядка выше, чем у до диеза.


У C# как у языка преимуществ перед C++ никаких нет, но фишка в том, что C# нельзя противопоставлять C++. Это бессмысленно по определению. C# — неотъемлемая часть системы .Net, один из многих языков, которые на ней работают, а C++ — сам по себе язык. Вот здесь
Автор: Геннадий Васильев
Дата: 23.08.02
и здесь
Автор: SergeMS
Дата: 20.08.02
и ещё где-то в "работе" был уже флейм по этому и смежным поводам. Кстати, именно AVK тогда это вполне предметно доказал.

Ровно потому же не стоит заниматься противопоставлениями C++ <-> Java. Java уже достаточно давно позиционируется как платформа, а не как язык.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Будущее C# - вот это флейм!!!!!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.07.03 00:20
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Да, я это отлично знаю. И тов. Рыбкина тоже читал. Позабавился. Проблема в другом... Не находишь, что... изготовление, ммм... кодогенератора, это... ммм... программирование на ассемблере, только чуть более переносимом, что ли...


Оно нужно раз в год по обещанию. Это вы вцепились в кодогенерацию, а мы решение предложили.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Будущее C# - вот это флейм!!!!!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.07.03 00:20
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>У C# как у языка преимуществ перед C++ никаких нет,


Во-во. Вот так и тот товарищь себя уговаривал. Только было это 7 лет назад, и сзыки были не C# vs. C++, а C++ vs. C.

ГВ> но фишка в том, что C# нельзя противопоставлять C++. Это бессмысленно по определению. C# — неотъемлемая часть системы .Net, один из многих языков, которые на ней работают, а C++ — сам по себе язык.


Я бы вразился так: язык без рантайма.

ГВ>Ровно потому же не стоит заниматься противопоставлениями C++ <-> Java. Java уже достаточно давно позиционируется как платформа, а не как язык.


И тем не менее, есть MC++. И он не лучше или хуже Шарпа. Он луче С++ без рантайма.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Будущее C# - вот это флейм!!!!!!!
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.07.03 05:51
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Да, я это отлично знаю. И тов. Рыбкина тоже читал. Позабавился. Проблема в другом... Не находишь, что... изготовление, ммм... кодогенератора, это... ммм... программирование на ассемблере, только чуть более переносимом, что ли...


Ну не на ассемблере конечно, особенно если CodeDOM пользовать, но приятного конечно мало. Другое дело что есть класс задач, которые всеми остальными способами, в том числе и шаблонами, решаются намного менее приятно. Хороший пример такой задачи — автомат для разбора регексов.
... << RSDN@Home 1.1 beta 1 >>
AVK Blog
Re[6]: Будущее C# - вот это флейм!!!!!!!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.07.03 10:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>И тем не менее, есть MC++. И он не лучше или хуже Шарпа. Он луче С++ без рантайма.


Самому не смешно?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Будущее C# - вот это флейм!!!!!!!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.07.03 10:50
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>Да, я это отлично знаю. И тов. Рыбкина тоже читал. Позабавился. Проблема в другом... Не находишь, что... изготовление, ммм... кодогенератора, это... ммм... программирование на ассемблере, только чуть более переносимом, что ли...

VD>Оно нужно раз в год по обещанию. Это вы вцепились в кодогенерацию, а мы решение предложили.

Странно, а из твоих реплик складывается впечатление, что кодогенерация, это чуть ли не универсальная панацея. И кто это "мы", которые "вцепились в кодогенерацию"?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Будущее C# - вот это флейм!!!!!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.07.03 19:27
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Странно, а из твоих реплик складывается впечатление, что кодогенерация, это чуть ли не универсальная панацея. И кто это "мы", которые "вцепились в кодогенерацию"?


Ну, кто вы, вы должны знать и сами.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Будущее C# - вот это флейм!!!!!!!
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.07.03 19:27
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>И тем не менее, есть MC++. И он не лучше или хуже Шарпа. Он луче С++ без рантайма.


ГВ>Самому не смешно?


Нет. А должно?
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[45]: Будущее C#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.07.03 22:40
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>Ну и что ты демонстрируешь этим?

VD>Догадайся с трех раз.
ГВ>>То, как чаще всего, вероятно, пишут. ATL — неплохая библиотека, но, ИМХО, главное её достоинство — широкая распространённость.
VD>Ты видил более удобную? А нет, так что зря воздух сотрясать?

Это не имеет никакого значения. Видел я её или не видел — какая разница. Это никак не сказывается на оценке и языка, и подхода.

ГВ>> Сам посуди: реализацию QueryInterface можно спАрить с наследованием от заданного интерфейса, объявления элементов — вынести в виртуальные базовые классы и т.п. Другое дело, что ATL написана для VC6, который начинал сходить с ума от сложного наследования, где чередовались шаблоны и виртуальное наследование... так то — проблемы компилятора, альтернативы которому имеются уже достаточно давно.

VD>Во-во. Чтобы заткнуть дыру в рантайме мы готовы вылить ушат грязи на нивчем не повинный компилятор. Только зачем? Возможности писать так же просто и красиво как дотнете нет ни в одном компиляторе кроме МС++.

"Красота" — понятие субъективное, "простота" — обоюдоострое.

VD>Не будт на С++ то же. Так как твой Requestable уже перебор, ну, а BasicCoClassImplement увеличивает отрыв. Тебе показали простоту с какой "убогий" язык без шаблонов вегко и элегантно решает проблемы, а ты в ответ "дык, мы ща по бырому десяток килобайт оберток наклепаем....".


Про сложности реализации базового фреймворка обычно быстро забываешь. Кроме того, я согласен, что нет смысла писать что-то подобное ради одного небольшого проекта. А ради нескольких... ИМХО, вполне даже стОит.

ГВ>>Если заинтересует, расскажу о реализации Requestable и т.п., но суть дела не в этом. Ты демонстрируешь одну и ту же ситуацию — проверку композиции в рантайме.

VD>Может быть ты не заметил, что без проверки в рантайме тут необойтись? Хотя у тебя это уже в норме вещей.

Заметил, не переживай. Только проверка в рантайме выполняется ради демонстрации примера. И кроме того, зачастую без того же COM просто невозможно обойтись, потому что других способов взаимодействия с чем-либо в распоряжении попросту нет.

VD>Кстати, можешь на этом примере продемострировать всю кривость этого подхода.


Бессмысленно доказывать кривость/прямость подхода, если базовая инфраструктура построена на рантайм-проверках. Это... ммм... аргумент из серии: "Вот тебе дебе две рогатки, и куда здесь засунуть твой чёртов порох?"

ГВ>>Не путай, пожалуйста, рантайм-проверки результатов операций управления ресурсами и рантайм-проверки типов, т.е. — верификацию композиции. Понятие "компонент", как и "модуль" вовсе не означает необходимости проверок типов.

VD>У тебя пунктик по поводу типов. Ты так долго себя убеждал, что типы не является обычными данными, что видимо привык. Нет никакой разницы между строкой символов полученной из-вне и типм. Это ты все сам придумал.

Ну да, наверное нет. "Никакой ложки". Строка — это тоже тип. Строковый.

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

Да и ещё — тип, AFAIK, определяется набором допустимых операций над некоторым объектом.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[45]: Будущее C#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.07.03 22:42
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>dynamic_cast<> вызывается в CreateObject? Если CreateObject возвращает общий интерфейс I_Object, то зачем в нём dynamic_cast<> ?

VD>За тем, что человек создает компонентную архитектуру. Он не знает, что подключает в рантайме, а dynamic_cast позволяет ему быть в большей уверенности относительно безопасности доальнейших действий.

Можно просто не подключать то, что не может быть подключено.

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


Демагогия.

VD>Правильное решение в КОМ-е. Оно универсально. А еще более правильное в дотнете. Оно ни только универсально, но просто и безопасно.


И ещё одна такая же. Впрочем: "у тебя это уже в норме вещей" (c) VladD2.

ГВ>>
ГВ>>int RunSomeOperation(I_Object*)
ГВ>>


VD>Думаю, что I_Object — это интерфейс. Так что скорее:

VD>I_Object->RunSomeOperation()

Тогда не было бы речи о dynamic_cast<>.

ГВ>>ИМХО, другого обобщенного случая здесь быть не может, поскольку ты утверждаешь, что exe не меняется в зависимости от набора .dll.


VD>Скорее всего он говорит, о механизме возврата самих I_Object (ну и дальнейшей работе с ним).


Да, похоже, что ты прав.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[45]: Будущее C#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.07.03 22:57
Оценка:
Здравствуйте, WolfHound, Вы писали:

ГВ>>dynamic_cast<> вызывается в CreateObject? Если CreateObject возвращает общий интерфейс I_Object, то зачем в нём dynamic_cast<> ?

WH>Есть application->CreateObject(className) и есть шаблон CreateObrejct<I_MyCoolInterface>(className) шаблон пинает application (вернее один из сервисов ака супер фабрика) и делает dynamic_cast на возвращенный обьект.
WH>Сделано исключительно для того чтобы меньше писать.

Понятно.

ГВ>>OK, значит dynamic_cast<> нужен только для получения частного типа из общего.

WH>Считай что это QueryInterface

Да, одно и то же по сути.

ГВ>>Надеюсь, что в итоге я правильно тебя понял:

WH>Все еще проще. ехе вобще ни чего не знает кроме того как работать с фабриками (вобще у него есть еще сервисы но это не важно).

Ага, то есть User-readable список классов выдёргивается из фабрик.

WH>Если в длл надо создать обьект то просто пинаем application (через CreateObject<>() для удобства) и он возвращает созданный объект или null.


CreateObject<I_MyCoolSensor>?

WH>Короче все проще некуда

WH>if(Ref<I_Sensor> sensor=CreateObejct<I_Sensor>(sensorName))Это в нутри длл

Хм. I_Sensor — общий интерфейс? Или это опечатка и внутри длл всё-таки:

...=CreateObject<I_MyCoolSensor>();



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

Может быть, приведёшь пример конкретного сценария использования? Просто с rtti всегда так — потянешь за одну ниточку и лезет всё остальное.

WH>CreateObejct<I_Sensor>(sensorName) пинает application->CreateObject

WH>На результат применяю dynamic_cast после чего есть указатель на конкретный интерфейс или null.

Нет, если можно, то более развёрнутый пример: для чего создаётся сенсор, кто, что и когда у него вызывает. Логику работы фабрики-то я понял. Ну, если можно, то примерно такие условия: exe-шник, длл1, длл2.

PS. Больше мои пропадания не планируются.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[41]: Будущее C#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.07.03 23:26
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>>>"моей программы" — имеется ввиду та программа, которую разрабатывает и контролирует конкретный дизайнер.

VD>>>А компонент это тоже "твоя программа"? Или он обязан быть частью дезайрена?
ГВ>>[...] Компонент обязан вписываться в дизайн, а не наоборот. [...] В противном случае архитектура ограничивается используемыми средствами, что не есть good. ИМХО, разумеется

VD>Сдается мне, что ты вообще не понимашь этого термина.


Ну что же, готов выслушать твоё определение. Моё вкратце сводится к тому, что компонент прежде всего поддерживается некоторой инфраструктурой. Отдельно определить этот термин невозможно, как нельзя определить "часть", не имея ввиду какого-либо "целого".

VD>Компонент (любой, можно даже сказать компонент как класс) принципиально не вяляется частью твой программы. Он — это внешняя независимая программа. Причем при компонентном подходе к проектированию, ты свой дизайн строишь на базе компонентов. Таким образом ситуация кода компонент не подходит для дизайна является ошибкой дизайна.


Нет, Влад. Это в общем случае — отсутствие дизайна или плохой дизайн, поскольку дизайн (архитектура) зависит, прежде всего, от требований к продукту и предположений об изменчивости требований пользователя.

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

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

Так что, не передёргивай. Если свалить в груду кирпичи, облить их цементом и назвать это небоскрёбом, то знаешь, каждый кирпич будет на своём месте: вытащишь один — получишь по башке остальными. Только это — не дом. Понимаешь разницу?

VD>В общем, если понимаешь, что такое компонент, то этот твой ответ является очередным увиливанем от ответа, с целью таки не скзать: "Да я был не прав". А если не понимаешь, то мы вообще тут воду в ступе перемалываем.


Да нет, почему же? Меня банально уговаривают признаться в своей неправоте, оперируя неподходящими аргументами. Знаешь, я не люблю аргументов вроде: "ну скажи, что ты был неправ, и покончим с этим", "ну ты знаешь, это так... ну так! ну просто вот так круто!!" или "Это уже всё устарело, сейчас новые времена!" и подобными. Первое — суть прямое давление, второе — демонстрация детской восторженности в лучшем случае, третье — одна из форм выражения снобизма. Ни то, ни другое, ни третье меня (и не только меня) убедить в правоте оппонента не может. Равно как не может убедить в этом и массовость некоторого явления. Тем более, что 2x2=4 (в десятичной системе счисления ), даже если наблюдатель полагает, что ему абсолютно неважен результат.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[8]: Будущее C# - вот это флейм!!!!!!!
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.07.03 23:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>>>И тем не менее, есть MC++. И он не лучше или хуже Шарпа. Он луче С++ без рантайма.

ГВ>>Самому не смешно?
VD>Нет. А должно?

Мне — смешно. Как тебе — не знаю, вот и спросил.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.