Re[47]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 15.12.04 09:46
Оценка: 6 (4) -3 :))) :))) :))) :))) :)
Здравствуйте, VladD2, Вы писали:

MS>>Иными словами, это ничего не говорит ни в пользу C# ни против него. С формальной логикой у тебя все-таки не лады

VD>Здесь обсуждался вопрос неприемлемости использования Шарпа в 3D-играх. По этому поводу какие-нибудь аргументы есть? Или признаем все попытки признать это мнение обычной инсинуацией?
Так и признаем. Притом инсинуациями занимаешься вроде как ты. Исходно речь велась о некоторых проблемах применения .Net и C# для разработки 3D-движков. Ну, ПК по неосторожности упомянул...

Впрочем, мы усвоили десять великих истин форума RSDN/Философия:

1. Если хочешь знать, что .Net — это всегда хорошо, то сначала обратись к RSDN/VladD2, а если этого не хватило, то возьми Janus, да проверь;
2. Если хочешь тестирований производительности для 3D, то возьми Janus, да проверь;
3. Если хочешь убедиться, что на .Net можно написать всё, то снова возьми Janus, да проверь;
4. Если хочешь убедиться, что продукты, разработанные на .Net не имеют проблем, то снова возьми Janus, да проверь;
5. Если хочешь убедиться, что гибкость продуктов, написанных с использованием .Net немерянна, то опять, возьми, балбес, Janus, да проверь;
6. Если хочешь логических доказательств и объяснений, то или обратись в RSDN/Философия, или возьми, наконец, Janus, да проверь;
7. Если хочешь убедиться, что C# "делает" C++ по всем статьям, то, обратно, возьми Janus, да проверь;
8. И вообще — возьми Janus, да проверь, как ты, кретин, ошибаешься;
9. Если ещё не считаешь себя лузером, то сообщи об этом в форуме "Философия", дабы развеять сомнения;
10. Если в чём-то ещё не убеждён до краёв тапочек, то начни с пункта 1. или хотя бы возьми Janus, да проверь.

Слава RSDN/Философии — вечному источнику универсального мнения всех. Кто не с нами, тот сам себе злобный Буратино!

PS. Всё вышесказанное — проявление моей (недостойного!) недостойной (же!) позиции в споре, достойной всяческого порицания.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[49]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 15.12.04 01:31
Оценка: 135 (4) +3 -2 :)))
VD>То что вам нечего сказать по делу видно уже давно.

Так уж исторически сложилось, что я привык спорить с вменяемыми собеседниками. А риторику я не изучал и в ней не силен. Извини еще раз.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[47]: Опять С++ vs С#
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.12.04 09:58
Оценка: 36 (5) :))) :))
Здравствуйте, VladD2, Вы писали:


VD>Пока. Как видишь первые ласточки уже есть. Со временем народ поймет, что писать несистемный код на С/С++ — это тоже самое, что зарывать деньги в песок на поле дураков. Думаю, что когда появится официальный C# 2.0, и когда выдет в свет Феникс, разговоры о применении C# в любой сфере прикладного программирования (за исключением наверно приложений реального времени) уйдут в небытие.


Я бы на твоем месте на это не надеялся. Никуда эти разговоры не уйдут. Как показывает практика, надо сорок лет пользования новой моделью, чтобы певцы предыдущей угомонились.
Оффтоп:
На штатовских тусняках, насколько мне известно, популярно нытье про натив вс оффшор. И при этом нативщики вовсю топчут оффшорников. Основной тезой там является принципиальная невозможность писать качественныйкод за $10 в час, а также априорная убежденность в крутизне CS depratment * State University супротив любого ВУЗа в третьих странах.

До боли напоминает аргументы критиков .Net
Автор:
Дата: 09.12.04
по своей незыблемости

Так вот, я думаю, что после выхода C# 2.0 критика только усилится. Сейчас еще есть народ, сидящий в нишах, который думает "до нас не докатится" и смеется. "Дотнет-дотда, а фортран девелоперы завсегда нужны!" Вот когда под ними опора зашатается, тогда и начнется "Это г. на дотнете просто не может быть лучше нашего суперпродукта. Ведь только на его отладку потратили восемь лет!"
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[58]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 25.11.04 12:48
Оценка: 18 (5) +2 -3
Дарней,

> ПК> Для того, чтобы не портить чужую память в C++, идеальные программисты не нужны. В C++ нет опасных возможностей, которые не могут быть инкапсулированы безопасными обертками.


> Иными словами — сначала нам нужно разработать фреймворк, который будет инкапсулировать все опасные возможности C++


Не фреймворк, а библиотеку (т.е. на структуру программы ограничений она не накладывает). И разрабатывать с нуля не надо — уже давно есть. И не одна. Если в какой-то что-то не устраивает, всегда можно доработать. Благо, с открытым кодом хватает.

> (в результате мы получим подмножество языка, очень похожее на C#


Нет. С# не включает множества вещей, которые вполне останутся: шаблоны, позволяющие контролировать часть семантических ограничений во время компиляции, (generics не в счет), размещение объектов в стеке + деструкторы, что позволяет автоматизировать освобождение ресурсов, "свободные" функции и т.п. Если бы язык, действительно, являющийся "улучшенным C++", освобожденным от совмстимости от C, уже был бы создан, обсуждать было бы нечего. Java и C# таковыми не являются и близко. Это легко увидеть при сравнении наиболее типичных подходов в каждом из этих языков.

> Потом написать набор соглашений и требований к коду (один из таких документов, которые я видел — это талмуд объемом около 200 страниц)


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

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


Для приложений с повышенными требованиями к устойчивости code review — фактически, неизбежное дело, вне зависимости от языка. Даже таких языков, как Ада, это касается. Например, один бесконечный цикл в подходящем месте окажется не менее фатальным, чем проход по памяти. Или постепенное накопление процессом используемой памяти, которого автоматически нельзя избежать ни в одном языке, если не предпринимать специальных мер. И т.п.

> Ну и конечно, наиболее распространенные нарушения можно выявлять автоматически — достаточно написать парсер кода с некоторым набором правил проверки.


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

> ПК> Это единственный способ "этого" избежать, если ты работаешь со злоумышленниками.


> при наличии достаточного количества программистов, можно обойтись и без злоумышленников


При наличии достаточного количества программистов с низкой квалификацией. Тут уже никакой язык не поможет.

> ПК> От многократного повторения данный тезис более истинным не становится.


> no comments


Гм... А что, становится? Если нет, то какая разница, сколько раз это уже обсуждалось?
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[51]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 15.12.04 03:19
Оценка: 36 (2) +2 -1 :))) :)
Здравствуйте, VladD2, Вы писали:

VD>Думаю, ты еще не раз задумаешся над вопросом кто из нас более вменяем.


Ну давай вкурим твою фразу с точки зрения формальной логики. Допустим, что я являюсь невменяемым. Если так, то я никогда не признаю свою невменяемость по причине невменяемости и задумываться об этом не буду. Если же принять допуoщение о твоей невменяемости, то нафига мне об этом "не раз задумываться"?! Если же я все-таки буду "не раз задумываться", то это ставит под сомнение мою собственную вменяемость.

С логикой у тебя точно не лады.

Мне вспомнилась цитата из известного произведения.

- Вы, Шариков, чушь говорите. И возмутительнее всего то, что вы говорите это безапелляционно и уверенно.

McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[42]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.11.04 23:31
Оценка: +1 -7 :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>С интенсивной 3D графикой на .Net? Какие?


Ты хоть чуть чуть читаешь что рядом находится. Или мне в подпись поместить ссылки?

ArenaWarsDemoEnglishAndGerman.exe

ПК> Quake не считается, т.к. он написан очень своеобразно: ему GC вообще почти параллельна.


Если бы ты еще знал каковы накладные раскходы на ЖЦ, то с тобой бы даже можно было бы о чем-то по говорить. А так снова привосходство теории над разумом.


ПК>Но писать так все игры никто не будет, ибо очень дорого:


Ну, ссылка выше есть. Скачай поиграй. Так же тут не раз проходили ссылки на 3D-движок портированный с С++ на Шарп. Тоже скачай погоняй демки. Если заметишь тормоза, то приходи обсудим. Можешь еще демок к DX9 скачать. Так мк раз идентичный код на С++, ВБ и Шарпе.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[64]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.11.04 04:31
Оценка: -8
Здравствуйте, AndrewVK, Вы писали:

AVK>В текущем проекте, который уже 2 года живет, не было ни одного случая потери ресурсов из-за забытого using. Веришь?


Да плевать ему на практику тысяч человек. Его теори незыблемы. Пробовать на практике ему в лом. Мне кажется все эти разговоры бессмысленны. Это упертость принципиальна. Надо завершать этот бессмысленный разговор.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[57]: Опять С++ vs С#
От: Дарней Россия  
Дата: 25.11.04 12:09
Оценка: 58 (3) +4
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Для того, чтобы не портить чужую память в C++, идеальные программисты не нужны. В C++ нет опасных возможностей, которые не могут быть инкапсулированы безопасными обертками. В результате достаточно некоторого набора соглашений по используемым возможностям языка, плюс соблюдение некоторых требований к процессу разработки.


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

ПК>Это единственный способ "этого" избежать, если ты работаешь со злоумышленниками.


при наличии достаточного количества программистов, можно обойтись и без злоумышленников

ПК>От многократного повторения данный тезис более истинным не становится.


no comments
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[56]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 25.11.04 11:55
Оценка: 7 (3) +2 -2
Дарней,

> потому что идеальных программистов не бывает. Кто-нибудь обязательно накосячит при очередных изменениях, повредит чужую память <...>


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

> Единственный способ этого избежать — запускать каждый сеанс в отдельном процессе.


Это единственный способ "этого" избежать, если ты работаешь со злоумышленниками.

> Хотя это уже 10 раз везде обсуждалось и обсасывалось...


От многократного повторения данный тезис более истинным не становится.
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[51]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.12.04 11:59
Оценка: 45 (2) +2 -1 :)
Здравствуйте, prVovik, Вы писали:

AVK>>Зато он поможет в реальной оценке задержек в реальном приложении.

V>Реальные приложения бывают разными...

Я так понимаю вас не устроит любой тест, не доказывающий что .net это полный отстой?
... << RSDN@Home 1.1.4 beta 3 rev. 255>>
AVK Blog
Re[52]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 13.12.04 14:04
Оценка: 27 (1) +1 -1 :)))
Здравствуйте, AndrewVK, Вы писали:

AVK>>>Зато он поможет в реальной оценке задержек в реальном приложении.

V>>Реальные приложения бывают разными...
AVK>Я так понимаю вас не устроит любой тест, не доказывающий что .net это полный отстой?

Я так понимаю, что должен устраивать любой тест, взятый с потолка?
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[66]: ToString()
От: alexeiz  
Дата: 29.11.04 11:36
Оценка: 3 (1) -3 :))
Здравствуйте, Дарней, Вы писали:

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


A>>Зато исключение в Dispose может оставить программу в неопределенном состоянии, и это явно хуже, чем "обрушить прогу"


Д>А почему "в неопределенном состоянии"? Даже если один или несколько Dispose в пределах блока выбросит исключение, все остальные Dispose все равно будут вызваны. К сожалению, я не нашел данных, какое из этих исключений будет обработано

Д>Или ты что-то другое имел в виду?

A>>И кстати, не "обрушить", а вызвать terminate(), в котором ты волен произвести необходимые действия перед завершением (послать crash dump разработчику, например).


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


Твоё недоумение скорее всего вызвано непониманием причин, по которым C++ обязывает программу аварийно завершиться при выбросе исключения при обработке другого исключения (скорее всего, когда деструктор выбрасывает). Почитай об этом в clc++.moderated или comp.std.c++. Здесь я, так как у меня нет времени это досконально разъяснять, скажу лишь, что проблеммы при выбросе исключений из деструкторов и из Dispose имеют один и тот же характер. Одна из таких проблем — это выброс исключения при обработке другого исключения, и она может случится, как с выбрасывающими десрукторами, так и с выбрасывающими Dispose. Эта проблемма не имеет удовлетворительного разрешения в том смысле, что невозможно обработать такую ситуацию и продолжить выполнение программы нормальным образом. Что-нибудь обязательно будет сломано в состоянии программы, ты на это можешь наткнуться и сразу вылететь, а можешь совсем не заметить, а можешь и произвести какие-нибудь деструктивные действия (вроде разрушения файлов пользователя при попытке сохранить его данные, эдак подложив пользователю своеобразную свинью).

Далее, тот факт, что .NET в этом случае позволяет тебе продолжить выполниние программы как ни в чём не бывало, является лишь непризнанием данной проблеммы как таковой дизайнерами .NET'а. Параллели между Dispose и деструкторами C++ очевидны. C++/CLI даже ставит их во взаимно однозначное соответствие. Почему дизайнеры .NET'а ничего криминального не увидели в продолжении выполнения программы в этом случае, для меня загадка. Скорее всего это было технически возможно сделать, и они решили "почему бы и нет?" Ведь в .NET программа не упадет при обращении к памяти с нуленым адресом, не перезапишет за пределы массива, т.е не сделает ничего такого, на что вполне способен в такой ситуации "wicked" C++. Поэтому они решили сделать .NET "более надёжным" и в данном случае. Но они не увидели принципиального недетерминированного поведения, access violation и buffer overrun всего лишь частные случаи которого.
Re[45]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 12.12.04 23:59
Оценка: 1 (1) +4 :)
Здравствуйте, VladD2, Вы писали:

VD>Если бы Шарп и дотнет имели какие-то серьезные недостатки, то они стабильно бы были в поной заднице по всем пунктам.


С чего это вдруг такой абсурдный вывод?!
Я могу легко привести примеры кода (разного, но решающего одну и ту же задачу) и доказать, что код на javascript в IE даст фору C++ в 400 или более раз. Что с того? Повторяю — код разный.

VD>Ну, а то что они иногда вырываются вперед очень сильно говорит как раз о том, что в Шарповской версии применены лучшие алгоритмы или контейнеры.


Это говорит лишь о том, что "в Шарповской версии применены лучшие алгоритмы или контейнеры". Иными словами, это ничего не говорит о свойствах самого языка. См. аргумент выше.

Влад, всем уже давно понятно, что C# круче вареных яиц. Я лишь возражаю против подобной постановки вопроса:
"С# круче вареных яиц, потому что некие люди решили некую прикладную задачу на нем в 400 раз быстрее, чем она когда-то однажды была решена на C++." См. аргумент выше.

Иными словами, это ничего не говорит ни в пользу C# ни против него. С формальной логикой у тебя все-таки не лады
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[47]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.12.04 22:32
Оценка: +1 -5
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>В чем именно? Я, например, ссылку дал с объяснением, что именно меня не устраивает в твоем сообщении.


Вот и прочел бы свою ссылку. Она как раз хорошо твои действия описывает.

>> попробуй скачать и запустить ту игрушку. Слушать эту галематью про "паузу" уже сильно надоело.


ПК>Как бы она ни работала, это ничего не скажет относительно верности утверждения
Автор: Павел Кузнецов
Дата: 08.12.04
, к которому ты прицепился, т.к. мы понятия не имеем, не используется ли в игре ручное распределение памяти.


Снова сфероконики? Игра написана на чистом шарпе. Возми Рефлектор (декомпайлер) и убедись в этом лично. Там несколько сборок чистого дотнетного кода. Все импорты там перечислены.

ПК>

ПК>Discussion tries to prove what is right; an argument tries to prove who is right.


И цитататы на английском тоже кончай сувать. Я их лично даже не буду пытаться переводить. Уж на русском форуме я хочу видеть русский текст. Мне и так хватает чего по английски читать.

ПК>К тому же, утверждение "о неправоте" от утверждения "о недостаточности компетенции" отличается вполне заметно. Да и подмену опровержения аргументации оппонента переходом к обсуждению его компетентности не заметить тоже сложно.


Зато ее очень удобно подмечать там где ее нет.

ПК>Так что если не хочешь, чтобы я регулярно напоминал тебе о рамках корректного ведения дискуссии, удерживайся в них самостоятельно.


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

Еще раз повторюсь, что твои утверждения касательно невозможности приме
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 20:47
Оценка: -5 :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Добавим к процитированному тобой предшествовавший контекст, плюс выделим ключевые слова:


А не надо добавлять. То что сказано уже однозначно выдает позицию.

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

ПК>Теперь вопрос: ты по-прежнему считаешь, что здесь говорилось о невозможности написания игр на C#, или же о некоторых проблемах, связанных с использованием GC?


Считаю что ты всеми силами пыташся убедить всех в наличи проблем который в природе не существует. И подталкивашь к выводу о неприемлемости Шарпа для данных целей.

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


ПК>Что значит "предпосылки против того, чтобы писать игры на дотнете"? Некоторые проблемы с написанием игр на .Net вообще и C# в частности вполне есть.


Осталось доказать что это не пустые слова. Пока что я вижу имнно это.

ПК> При использовании других языков и платформ — другие проблемы.


А, ну, типа хочешь поговорить о сферокониках?

ПК> Что из этого является меньшим из зол для того или иного разработчика при разработке некоторой конкретной игры — то он и будет использовать.


Ну, в общем, мне все ясно. Когда ты с фактов и т.п. сбивашся на сферокоников — это явный признак, что ты осознал свою неправоту, но просто не хочешь открыто сказать, что ошибался.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 22:15
Оценка: -5 :)
Здравствуйте, Mika Soukhov, Вы писали:

MS>Это надо в ФАКу


Надо. Как создашь свой сайт, так сразу добавь.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[84]: ToString()
От: slegkapjan  
Дата: 21.12.04 20:16
Оценка: +2 :))) :)
1) C++ более богатый язык, нежели C#. Все средства языка, стандартной библиотеки, среды исполнения, которые есть в C# либо существют в C++ либо можно реализовать на C++. Обратное утверждение не верно.
2) C++ более универсальный язык, чем C#. Все что можно написать на C#, можно написать на C++. Обратное утверждение не верно.
3) Программы на C++ быстрее чем программы на C#. Для любой программы на C# можно написать аналогичню на C++, которая будет работать быстрее. Обратное утверждение не верно.
4) Программы на C++ более переносимы, чем программы на C#. Написанные на С++ программы (при должном уровне программирования) легко переносить на другие платформы, что в случае с C# довольно ограничено.
5) C++ более гибкий язык -- вы можете программировать на уровне ассемблера, а можете использовать языковые средства сверхвысокого уровня. В случае с C# это не верно.
6) На C++ написаны терабайты кода, при желании в сети можно найти библиотки и исходные коды, решающие любые задачи: от операционной системы, до движка для игры.
7) Для программ на C++ не нужны мегабайты дополнительных библиотек.
...

Этот список можно продолжать еще очень долго. Я срашиваю у сторонников C#: "что же может предложить это еще одно сомнительное изобретение Майкрософт в ответ на всю мощь, скорость, экспрессивность, гибкость и богатсвто C++?"
Re[54]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 25.11.04 20:16
Оценка: 1 (1) +2 -2
Здравствуйте, Дарней, Вы писали:

ГВ>>Я бы не стал называть это поиском проблем. Скорее уж, попыткой избавиться от каких-то неприятностей, свойственных традиционным решениям.

Д>Просто я прекрасно могу представить, какое количество проблем они приобретут взамен. И еще не факт, что применение C++ избавит их от старых.
Д>C++ очень опасно применять для кода, который регулярно будет изменяться, особенно — если это серверный код.

Опасно реализовывать непродуманные и поспешные решения. Вот это — в самом деле опасно. А на каком языке — да какая разница! Если научился писать багоустойчивый код на C++, то большой разницы между кодированием сервера и "клиента" уже нет. А если нет, то...
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[63]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.11.04 04:31
Оценка: -5
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Ну, тогда остаемся в текущей ситуации. Я высказал ряд тезисов с некоторой аргументацией.


Я бы сказал: кучу и без аргументации.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[45]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.12.04 22:50
Оценка: -5
Здравствуйте, Павел Кузнецов, Вы писали:

>> Так что оставь сказаки про ЖЦ тем кто никогда с ним не сталкивался лично.


ПК>http://blacklight.h1.ru/oppo09.htm

ПК>

Демагогия с переходом на личности
ПК>d. Обвинение оппонента в незнании предмета обсуждения



Демагогия это твои слова. Кончай ее и таки попробуй скачать и запустить ту игрушку. Слушать эту галематью про "паузу" уже сильно надоело.

ЗЫ

И кончай чуть что прикрываться переходом на личности. А то уже тоже не смешо... лбое утверждение о твоей неправоте ты сразу объявляешь переходом на твои личности.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 16.12.04 01:31
Оценка: +1 :))) :)
Здравствуйте, VladD2, Вы писали:

S>>Помню слышал те же слова от явовщиков...

VD>А я вот не помню.
Значит, ты не застал ту пору, когда Java только-только выпихивалась на рынок.

S>>Ну и как, Java заменила С++?

VD>В создании ПО для бизнеса — полностью.
Это в какой местности такая беда стряслась?
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[74]: ToString()
От: Glоbus Украина  
Дата: 15.12.04 11:25
Оценка: 2 (1) +2 :)
Здравствуйте, VladD2, Вы писали:

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


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


VD>>>И уж если ты работаешь с ресурсами в диспозе, то ставь using или try/catch|finally защищающие код.

V>>Гы, а что мешает делать то же самое в С++?

VD>Тут вроде бы уже 100 раз это говорили. Теоритически ничего. Практически весь дизайн языка.


Истерика какая-то. Сам же сказал, что что в деструкторах, что в диспозе исключения кидаться не должны. А насчет дизигна языка — а можно конкрено описать, как дизайн языка мешает мне как разраюотчику писать try/catch в деструкторе и не выпускать оттуда исключения?

VD>Ну, давай еще раз по пунктам:

VD>1. Повторная генерация исключения в диспозе или вообще не приводит к фатальным проблемам, или приводит обычно к потере одного ресурса, так как остальные диспозы вызываются из любого положения. При этом с огромной долей вероятности потерянный ресурсный объек реализует и финалайзер, так что он будет подобран при первой же сборке мусора. Если он не успел попасть в первое поколение, то это вопрос нескольких десятых долей секунды (максимум секунд). В С++ же повтораное генерирование исключений обычно приводит к вылету всейго приложения. Именно по этому при малейшем сборее мы видим AV-диалоги у большинства приложений окружающих нас сегодня.

Мы их видим не потому, что они на плюсах. Мыих видим потому что руки из задницы у кого-то растут. Языка ваще играет очень тертью роль во многих случаях.

VD>2. Необходимость ручного контроля в С++ не только за ресурсами ОС, но и за любыми динамически занятыми областями памяти. Это приводит или к ловле ликов и попыткам "окуратного" программирования, или к наклепыванию оберток на каждый чих. Четыре года назад наша контора придерживалась второго подхода, но тем не менее в конце концов пришлось писать нехилую систему отлова утечек памяти и в общемй сложнсоти убить не млао времяни на отладку в общем-то рабочего кода.


Все обертки давно наклеины Ваще долго тут читал ваши споры, много интересных мыслейЮ, но блин не смог сдержаться Тебя послушать, так до появляения .нет писалово программ было сущим адом — и обертки приклей, и лики лови годами, и надежности никакой, и сплошной AV. жуть... как же жыли то раньше...

VD>3. Отсуствие того же finally.


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

VD>4. Ненацелленность многих С/С**-библиотек на автоматический контроль ресурсов. Вспомним хотя бы CreateFile или fopen.


ну ты вспомнил ты еще какой нить int открывающий файл вспоми тот же std::ofstream абсолютно нормально особождает ресурс после разрушения. При чем детерминированно...

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


Да не должен он ничего избегать — все мощные возможности в его распоряжении. Покажи мне пожалуйста пример того, как программисту на с++ приходится отказываться от какой-нить мощной возможности, чтоб не наступить на грабли?
Насчет времени готов спорить... Все очень зависит от задачи. Действительно, есть класс задач, в которых шарп выиграет по скорости разработки. Это задачи, которые не обладают сколь-нибудь значимой алгоритмической сложностью, а являются просто компоновкой тех или иных фич, типа там файлик открыли, прочитали, в мемо в окошке содержимое вывели, закрыли. Всякий там бухучет, который некритичен по времени исполнения, и который есть просто нагромождение кучи возможностей по выгребалову данных из юазы и их отображению, то есть где по сути все сводится к функциональностям типа add/delete/update/print report. Да, тут писать быстрее на шарпе, спору нет. Но как мне лично кажется на более/менее серъезной задаче (авиасимуляторы, компиляторы, сложные системы управления оборудованием, математические программы, графика) время проектирования, разработки алгоритмов и тому подобные вещи занимают настолько много времени, что выигрышь в собственно кодировании будет весьма условный. Тут уже не в языке дело по сути, потому что что в плюсах, что в шарпе — везде есть свои нюансы — тамследишь за памятью, там завызовами диспозов — и все зависит от задачи. Но все таки в защиту моих плюсов могу сказать что пока что, насколько мне известно, такие монстры как МС, EA, Adobe, Sun и т.д. весьма активно пользуют плюсы — можно судить хотя бы по требованиям к вакансиям на их сайте. почему так? Наверное потому что плюсы их устраивают. То есть (как мне лично кажется) не имеет смысла переходить на новую технологию с уже обкатанной, если производственный процесс укладывается в установленные рамки. А то что мы видим сейчас в области .НЕТ — это чистый маркетинг. То есть не продукт подгоняется под рынок, а во многих случаях рынок подгноняется под продукт. Ваще это очень модный подход, и не только в ИТ — всякие там кока-колы и т.п., да практически все крупные компании, так делают. С точки зрения бизнеса конечно очень эффективно.

VD>Остается только один вопрос... Нафига козе баян?


Глубоко философский вопрос...
Удачи тебе, браток!
Re[62]: ToString()
От: Павел Кузнецов  
Дата: 26.11.04 19:19
Оценка: 1 (1) +2 -1
Дарней,

> ПК>Что-то я не очень понимаю, как unsafe поможет в достижении перечисленных выше моментов...


> Просто для всего, что ты перечисил, в C# есть аналог или что-то на замену.


Имхо, есть существенные отличия у предлагаемых "альтернатив"...

> шаблоны, позволяющие контролировать часть семантических ограничений во время компиляции, (generics не в счет)


"generics не в счет" не из-за того, что они "еще недоступны для большинства", а из-за их ограниченности
Автор: Павел Кузнецов
Дата: 20.11.04
. Считать это положительным или отрицательным моментом — дело вкуса. Однако для тех, кому нужна функциональность "полных" шаблонов C++, generics адекватной заменой не являются.

> размещение объектов в стеке + деструкторы, что позволяет автоматизировать освобождение ресурсов


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

> "свободные" функции


Этого вообще нет.

> А вот для тех (редких) случаев, когда производительности C# не хватает — для них и нужен unsafe


Производительность, конечно, иногда очень важна (и она тоже далеко не всегда достигается через unsafe, т.к. целый ряд вещей, связанных с производительностью, в C++ решается через шаблоны), но в данном случае для меня намного существеннее именно возможности языка, которые в случае C#, имхо, сильно ограничивают выразительные средства, доступные разработчикам библиотек.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[43]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 12.12.04 19:11
Оценка: +4
Здравствуйте, VladD2, Вы писали:

VD>А что до "методологически некорректными", они сравнивают две версии одного движка. Естественно на одинаковом железе и при одинаковых условиях (обратное твои домыслы), и делают они это совершенно корректно. То что их алгоритмы лучше не умаляет качества движка.


Что-то у тебя с логикой не лады. "Две версии одного движка" никак не могут дать столь существенной разницы при условии идентичности алгоритмической части. Следовательно, используемые алгоритмы существенно отличаются, следовательно, сравнение производительности с точки зрения используемых компиляторов — некорректно. Иными словами, мы должны сравнивать, наколько GC влияет на производительность, а мы сравниваем разные алгоритмы. Так понятней?

Да и вообще, поменьше бы агрессивности.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[50]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 13.12.04 14:08
Оценка: +1 -2 :)
Здравствуйте, AndrewVK, Вы писали:

ГВ>>Тогда этот замер ничем не поможет в оценке произаодительности.

AVK>Зато он поможет в реальной оценке задержек в реальном приложении.

Ну да, согласен. Для оценки аппетита сферо... этого... в этом... как его...
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[46]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 09:00
Оценка: -3 :)
Здравствуйте, McSeem2, Вы писали:

VD>>Если бы Шарп и дотнет имели какие-то серьезные недостатки, то они стабильно бы были в поной заднице по всем пунктам.


MS>С чего это вдруг такой абсурдный вывод?!

MS>Я могу легко привести примеры кода (разного, но решающего одну и ту же задачу) и доказать, что код на javascript в IE даст фору C++ в 400 или более раз. Что с того? Повторяю — код разный.

В производительности 3D-движка? Ну, покажи. Ты не забыл о чем идет речь? Или просто пытаешся тему подменить?

VD>>Ну, а то что они иногда вырываются вперед очень сильно говорит как раз о том, что в Шарповской версии применены лучшие алгоритмы или контейнеры.


MS>Это говорит лишь о том, что "в Шарповской версии применены лучшие алгоритмы или контейнеры". Иными словами, это ничего не говорит о свойствах самого языка. См. аргумент выше.


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

MS>Влад, всем уже давно понятно, что C# круче вареных яиц.


Я пока что вижу агалтелых его противников пытающихся за ужи притянуть разные сказочные обоснования его неприменимости. А его крутости речь собственно не идет. Для меня C# — это веха в развитии импиративных языков, и за одно начало заката С++. Неболее того.

MS> Я лишь возражаю против подобной постановки вопроса:


Возразишь ротив совбственной постановки вопроса? А зачем тогда его было так ставить?

MS>"С# круче вареных яиц, потому что некие люди решили некую прикладную задачу на нем в 400 раз быстрее, чем она когда-то однажды была решена на C++." См. аргумент выше.


Чушь и понты. Шарп не дает 400 раз в скорости. Раза 3-10 в лучшем случае. Однако уж 2 он дает в 90% задач. Но только по сравнению с плюсами. И если я имею гарантированные 2х ускорения разработки, а прой и больше, при этом теряя проценты производительности конечного приложения, то я невижу основания викидывать деньги и время на ветер.

MS>Иными словами, это ничего не говорит ни в пользу C# ни против него. С формальной логикой у тебя все-таки не лады


Здесь обсуждался вопрос неприемлемости использования Шарпа в 3D-играх. По этому поводу какие-нибудь аргументы есть? Или признаем все попытки признать это мнение обычной инсинуацией?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Опять С++ vs С#
От: Mika Soukhov Stock#
Дата: 15.12.04 11:29
Оценка: +2 :))
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Впрочем, мы усвоили десять великих истин форума RSDN/Философия:


Это надо в ФАКу
Re[81]: ToString()
От: slegkapjan  
Дата: 20.12.04 10:40
Оценка: +3 :)
Честно говоря, у меня вызывают умиление люди, которые говорят, что один язык _лучше_ другого. Вообще, предикат лучше не стоит использовать без дополнительных поясняющих условий, иначе он теряет всякий смысл.

Что же касается до Си, скажу следующее: Си язык в некотором роде уникальный -- он отражает то, что есть на реальном железе. Он естественен по своей структуре. Поэтому он не погибнет _никогда_, ведь трудно придумать более подходящего решения для создания самых нужных, основопологающих вещей -- операционных систем, СУБД, компиляторов, кодеков, компрессоров\декомпрессоров\архиваторов и проч. и проч.

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

Когда же язык _заставляет_ меня делать что-то, что я считаю неправильным, то я отказываюсь от такого языка.
Re[86]: ToString()
От: slegkapjan  
Дата: 22.12.04 09:10
Оценка: +1 -2 :)
S>Здравствуйте, slegkapjan, Вы писали:
S>Люблю я этот форум. Аншлаг отдыхает.
Аншлаг действительно отдыхает.

S>>1) C++ более богатый язык, нежели C#. Все средства языка, стандартной библиотеки, среды исполнения, которые есть в C# либо существют в C++ либо можно реализовать на C++.

S>Да-да-да. Продемонстрируй мне Code Access Security на С++ (неуправляемом).
Честно говоря не совсем понимаю термин "Code Access Security". Если под этим понимается доступ (чтение/запись) к коду, то это вполне возможно в рамках ОС.

S>> Обратное утверждение не верно.

S>И что же такого из плюсов нельзя реализовать на C#?
S>>2) C++ более универсальный язык, чем C#. Все что можно написать на C#, можно написать на C++. Обратное утверждение не верно.
S>И что же такого из плюсов нельзя реализовать на C#?
Операционную систему.

S>>3) Программы на C++ быстрее чем программы на C#. Для любой программы на C# можно написать аналогичню на C++, которая будет работать быстрее.

S>Да ну правда что ли? Ускоряем прямо любые-любые программы? Как будем мерить производительность? На прогретой машине?
Это вообще неспортивно вести спор таким образом. C# медленнее чем C++, и не стоит хамить раз уж нет достойного ответа.

S>>Обратное утверждение не верно.

S>>4) Программы на C++ более переносимы, чем программы на C#. Написанные на С++ программы (при должном уровне программирования) легко переносить на другие платформы, что в случае с C# довольно ограничено.
S>А можешь подробнее изложить свои заблуждения об ограничениях легкости переноса C# на другие платформы?
Пожалуйста. Можно ли перенести программу на C# под Palm OS?

S>>5) C++ более гибкий язык -- вы можете программировать на уровне ассемблера, а можете использовать языковые средства сверхвысокого уровня. В случае с C# это не верно.

S>Какие возможности С++ по программированию на уровне ассемблера отстутствуют в C#? Какие языковые средства сверхвысокого уровня С++ отстутствуют в C#? Чем можно безуспешно попытаться заменить метаинформацию в С++?
Любые средства C# можно успешно заменить средством C++.

S>>6) На C++ написаны терабайты кода, при желании в сети можно найти библиотки и исходные коды, решающие любые задачи: от операционной системы, до движка для игры.

S>>7) Для программ на C++ не нужны мегабайты дополнительных библиотек.
S>Да? А как же терабайты кода из пункта 6? Или они уже перестали быть нужны?
Опять неспортивное поведение.

S>>Этот список можно продолжать еще очень долго.

S>Да. А можно остановиться и подумать.
Еще раз неспортивное поведение.
Re[88]: ToString()
От: slegkapjan  
Дата: 22.12.04 09:42
Оценка: +1 -2 :)
S>>>Да-да-да. Продемонстрируй мне Code Access Security на С++ (неуправляемом).
S>>Честно говоря не совсем понимаю термин "Code Access Security". Если под этим понимается доступ (чтение/запись) к коду, то это вполне возможно в рамках ОС.
S>А ты пойди и почитай. Грубо говоря, это возможность разрешать коду из пакета А выполнять код из пакета B, а коду из пакета C запрещать это делать.
Зачем запрещать что-то? Между C++ и C# есть разница в философии построения языка.

S>>>> Обратное утверждение не верно.

S>>>И что же такого из плюсов нельзя реализовать на C#?
S>>>>2) C++ более универсальный язык, чем C#. Все что можно написать на C#, можно написать на C++. Обратное утверждение не верно.
S>>>И что же такого из плюсов нельзя реализовать на C#?
S>>Операционную систему.
S>Ну-ну. А что, у нас есть примеры операционок на чистом С++? Или все-таки там фрагменты runtime на асме написаны?
Для большиства операционок небольшая часть кода написана на ассемблере, остальное на C++. Опять же C# использовать вместо C++ в этой связке невозможно.

S>>Это вообще неспортивно вести спор таким образом. C# медленнее чем C++, и не стоит хамить раз уж нет достойного ответа.

S>Спортивно-спортивно. Просто ты несешь такую чушь и с таким апломбом. Ты хоть понимаешь, что выражение "ускорить любую программу" означает примерно то же самое, что и "сжать любой бинарный вектор"? И точно так же можно построить программу на C#, которая будет джиттиться в неулучшаемый код?
Посмотри внимательнее на посты. Я не использовал термина "усокрить"

S>>>А можешь подробнее изложить свои заблуждения об ограничениях легкости переноса C# на другие платформы?

S>>Пожалуйста. Можно ли перенести программу на C# под Palm OS?
S>Да нет проблем. Ну нет (пока) фреймворка под палмос. Ну и что? Язык-то это как затрагивает?
А скажи пожалуйста, ты думаешь что можно в принципе написать фреймворк C# для любой платформы?

S>>>>5) C++ более гибкий язык -- вы можете программировать на уровне ассемблера, а можете использовать языковые средства сверхвысокого уровня. В случае с C# это не верно.

S>>>Какие возможности С++ по программированию на уровне ассемблера отстутствуют в C#? Какие языковые средства сверхвысокого уровня С++ отстутствуют в C#? Чем можно безуспешно попытаться заменить метаинформацию в С++?
S>>Любые средства C# можно успешно заменить средством C++.
S>Перечитай вопрос. Приведи пример успешной замены метаинформации в C# эквивалентным средством С++.
Скажи конкретные вещи, как они должны работать и я тебе приведу аналог в C++.

S>>>>6) На C++ написаны терабайты кода, при желании в сети можно найти библиотки и исходные коды, решающие любые задачи: от операционной системы, до движка для игры.

S>>>>7) Для программ на C++ не нужны мегабайты дополнительных библиотек.
S>>>Да? А как же терабайты кода из пункта 6? Или они уже перестали быть нужны?
S>>Опять неспортивное поведение.
S>А по существу?
Я просто как раз-то и не понимаю сути вопроса. Ты можешь сказать конкретно что тебя интересует?
Re[73]: ToString()
От: Дарней Россия  
Дата: 01.12.04 05:09
Оценка: 47 (3)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Отчего же... Наоборот, хотят языковую поддержку для move constructors ввести. Это не "грабли", это "фича" — специальный способ указать на передачу владения. Если эта семантика не нужна, следует использовать другие указатели.


Нужно было просто не делать передачу владения неявной. И не пришлось бы тогда писать вумные книжки с советами наподобие "никогда не создавайте контейнеры из auto_ptr". Мне например кажется просто диким, что operator= изменяет свой правый аргумент.

И все-таки, возвращаясь к деструкторам. Допустим, Dispose бросает исключение. и часть объектов остались незавершенными. Однако завершение остальных объектов будет продолжаться.
С++ в аналогичной ситуации просто "умывает руки", и вообще отказывается освобождать ресурсы проги. Можно конечно попытаться это сделать из terminate, но я сомневаюсь, что из этого может получиться что-то путное. В семействе NT это не будет иметь катастрофических последствий, но то же самое нельзя сказать про ряд других ОС. Плюс к этому, прога может иметь ряд ресурсов, которые не управляются ОС — сеансы работы на сервере приложений, транзакции БД, например. Они конечно будут закрыты через некоторое время по таймауту, но за это время "повисшие" ресурсы могут парализовать работу ряда других юзеров. В результате такое поведение проги может вызвать неопределенное поведение в рамках всей операционной системы юзера, или в рамках корпоративной ИС
С этой точки зрения намного правильнее все-таки попытаться освободить ресурсы, какие получится. И только после этого — может быть, завершить программу.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[82]: ToString()
От: slegkapjan  
Дата: 20.12.04 11:23
Оценка: 7 (3)
из предисловия к книге Ал. Стивенса "ТЕХНИКА ПРОГРАММИРОВАНИЯ НА ТУРБО СИ"]

В данной книге вы столкнетесь с программами, написанными на
языке Си. Это замечательный язык, и хотя некоторым он не
нравится, но все же большинство программистов его любят. На Си вы
можете создавать программы, которые делают все, что вы пожелаете.
Нет другого такого языка, который бы так же стимулировал к
программированию. Создается впечатление, что остальные языки
программирования воздвигают искусственные препятствия для
творчества, а Си — нет. Использование этого языка позволяет
сократить затраты времени на создание работающих программ. Си
позволяет программировать быстро, эффективно и предсказуемо. Еще
одно преимущество Си заключается в том, что он позволяет
использовать все возможности вашей ЭВМ. Этот язык создан
программистом для использования другими программистами, чего о
других языках программирования сказать нельзя ............
.................................................................
.................................................................
...создан таким, чтобы менеджеры могли разбираться в написанных
этом языке программах; Бэйсик был создан для непрограммистов;
Фортран — для научных работников; Ада вообще был создан
прямо-таки правительственным комитетом; Пайлот создан для
учителей; Паскаль — для студентов; Лого — для детей; АПЛ — для
марсиан; Форт, Лисп и Пролог — специализированные языки. Один Си
— это язык для программистов.
Re[47]: Опять С++ vs С#
От: Shady Россия  
Дата: 15.12.04 12:30
Оценка: 3 (1) +2
Здравствуйте, VladD2, Вы писали:

VD>Пока. Как видишь первые ласточки уже есть. Со временем народ поймет, что писать несистемный код на С/С++ — это тоже самое, что зарывать деньги в песок на поле дураков. Думаю, что когда появится официальный C# 2.0, и когда выдет в свет Феникс, разговоры о применении C# в любой сфере прикладного программирования (за исключением наверно приложений реального времени) уйдут в небытие.


Помню слышал те же слова от явовщиков... Ну и как, Java заменила С++?
... << RSDN@Home 1.1.4 beta 3 rev. 240>>
"Man feed machine
Machine feed man"
Peter Gabriel — OVO — The Tower That Ate People
Re[53]: Опять С++ vs С#
От: Дарней Россия  
Дата: 25.11.04 05:06
Оценка: +2 -1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Я бы не стал называть это поиском проблем. Скорее уж, попыткой избавиться от каких-то неприятностей, свойственных традиционным решениям.


Просто я прекрасно могу представить, какое количество проблем они приобретут взамен. И еще не факт, что применение C++ избавит их от старых.
C++ очень опасно применять для кода, который регулярно будет изменяться, особенно — если это серверный код.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[55]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.04 19:50
Оценка: -3
Здравствуйте, Павел Кузнецов, Вы писали:

>> C++ очень опасно применять для кода, который регулярно будет изменяться, особенно — если это серверный код.


ПК>Это почему?


Типа, сам не знаешь и решил повысить свой образовательный уровень?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[63]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.11.04 04:31
Оценка: -2 :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Производительность, конечно, иногда очень важна (и она тоже далеко не всегда достигается через unsafe, т.к. целый ряд вещей, связанных с производительностью, в C++ решается через шаблоны), но в данном случае для меня намного существеннее именно возможности языка, которые в случае C#, имхо, сильно ограничивают выразительные средства, доступные разработчикам библиотек.


Уж простит мнея АВК (как модератор), но отвечать "по делу" на этот набор поверхноссных суждений и догм нельзя. Паша мужик молодой, мы тоже не совсем старики. Поглядим что он запоет через 10 лет. А пока этот спор с теоритиками устрицаедения надо завязать.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[42]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 08.12.04 19:14
Оценка: +2 -1
McSeem2,

> VD> Сборка мусора в среднем занимает около 10 милесекунд с интервалом несколько секунд. А то и реже/быстрее.


> Уупс. Целых 10 миллисекунд?! Куда столько?! — этож почти целый кадр. Как говорится в малоизвестном стишке "вы охренели, братья румыны". За 10 миллисекунд я успеваю чисто софтварно отрендерить целую страницу мелкого текста (и Adobe Acrobat, кстати, тоже успевает).

> Может все-таки, 10 микросекунд?

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

http://support.microsoft.com/default.aspx?scid=/servicedesks/webcasts/en/wc050102/wct050102.asp

If you look at the actual cost of garbage collecting, that's not collecting that memory that you've allocated, typically a GC of Generation 0 is similar to that of a page fault, so it's fairly cheap. If you look at the actual time that a Generation 0 garbage collection takes, it's typically between 0 and 10 milliseconds, which is fairly short. And then a collection of Generation 1 is typically between 10 and 30 milliseconds. Obviously, the GC of Generation 2 is going to be dependent on what your working set it, but full GCs should not happen that often.


Соответственно, в основном все будет хорошо, но периодически, при запуске уборки поколения 1, кадры будут выпадать, а иногда, при запуске уборки поколения 2, будут паузы, заметные пользвователю. Периодичность этих явлений будет сильно зависить от сценариев работы с памятью. И, в принципе, если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму. Вопрос только в стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[43]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.12.04 21:43
Оценка: -3
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Нет, именно миллисекунд. И это не потолок, скорее, характерное время для сбора мусора первого поколения. Сбор объектов поколения 2 может занять значительно дольше.


ПК>http://support.microsoft.com/default.aspx?scid=/servicedesks/webcasts/en/wc050102/wct050102.asp

ПК>

ПК>If you look at the actual cost of garbage collecting, that's not collecting that memory that you've allocated, typically a GC of Generation 0 is similar to that of a page fault, so it's fairly cheap. If you look at the actual time that a Generation 0 garbage collection takes, it's typically between 0 and 10 milliseconds, which is fairly short. And then a collection of Generation 1 is typically between 10 and 30 milliseconds. Obviously, the GC of Generation 2 is going to be dependent on what your working set it, but full GCs should not happen that often.


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

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

Так что оставь сказаки про ЖЦ тем кто никогда с ним не сталкивался лично. На практике заметить сборку мусора на глаз невозможно в принципе.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[47]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 14.12.04 17:49
Оценка: +3
VladD2,

> ПК>Ну что за манера подменять позицию собеседника?.. Этого я не утверждаю и не утверждал. Речь шла о проблемах, которые может вызывать GC. Еще в первом сообщении на эту тему было указано, что проблемы решаемые.


Добавим к процитированному тобой предшествовавший контекст, плюс выделим ключевые слова:

ПК>Вот еще достаточно интересное мнение по поводу некоторых трудностей при использовании языков со сборкой мусора для разработки игр.


> Re[41]: Опять С++ vs С#
Автор: Павел Кузнецов
Дата: 11.11.04

>

> Ага. Мнений море. Вот только чущь полная. Игры то работают.

> С интенсивной 3D графикой на .Net? Какие? Quake не считается, т.к. он написан очень своеобразно: ему GC вообще почти параллельна. Но писать так все игры никто не будет, ибо очень дорого:...


Теперь вопрос: ты по-прежнему считаешь, что здесь говорилось о невозможности написания игр на C#, или же о некоторых проблемах, связанных с использованием GC?

> ПК>P.S. На этом я данное обсуждение с тобой закачиваю, если, конечно, вдруг, не последует какая-то новая информация.


> Ну, тоесть ты согласен, что собственно предпосылок против того чтобы писать игры на дотнете нет? И что реальные игры на дотнете есть и очень даже неплохо работают?


Что значит "предпосылки против того, чтобы писать игры на дотнете"? Некоторые проблемы с написанием игр на .Net вообще и C# в частности вполне есть. При использовании других языков и платформ — другие проблемы. Что из этого является меньшим из зол для того или иного разработчика при разработке некоторой конкретной игры — то он и будет использовать.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[50]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 01:55
Оценка: -1 :))
Здравствуйте, McSeem2, Вы писали:

MS>Так уж исторически сложилось, что я привык спорить с вменяемыми собеседниками. А риторику я не изучал и в ней не силен. Извини еще раз.


Ну, что достойная позиция в споре — вместо аргументов начать разбираться во вменяемости оппонента. Что и следовало ожидать.

Думаю, ты еще не раз задумаешся над вопросом кто из нас более вменяем.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[85]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 07:49
Оценка: +2 -1
Здравствуйте, slegkapjan, Вы писали:
Люблю я этот форум. Аншлаг отдыхает.
S>1) C++ более богатый язык, нежели C#. Все средства языка, стандартной библиотеки, среды исполнения, которые есть в C# либо существют в C++ либо можно реализовать на C++.
Да-да-да. Продемонстрируй мне Code Access Security на С++ (неуправляемом).
S> Обратное утверждение не верно.
И что же такого из плюсов нельзя реализовать на C#?
S>2) C++ более универсальный язык, чем C#. Все что можно написать на C#, можно написать на C++. Обратное утверждение не верно.
И что же такого из плюсов нельзя реализовать на C#?

S>3) Программы на C++ быстрее чем программы на C#. Для любой программы на C# можно написать аналогичню на C++, которая будет работать быстрее.

Да ну правда что ли? Ускоряем прямо любые-любые программы? Как будем мерить производительность? На прогретой машине?
S>Обратное утверждение не верно.
S>4) Программы на C++ более переносимы, чем программы на C#. Написанные на С++ программы (при должном уровне программирования) легко переносить на другие платформы, что в случае с C# довольно ограничено.
А можешь подробнее изложить свои заблуждения об ограничениях легкости переноса C# на другие платформы?
S>5) C++ более гибкий язык -- вы можете программировать на уровне ассемблера, а можете использовать языковые средства сверхвысокого уровня. В случае с C# это не верно.
Какие возможности С++ по программированию на уровне ассемблера отстутствуют в C#? Какие языковые средства сверхвысокого уровня С++ отстутствуют в C#? Чем можно безуспешно попытаться заменить метаинформацию в С++?
S>6) На C++ написаны терабайты кода, при желании в сети можно найти библиотки и исходные коды, решающие любые задачи: от операционной системы, до движка для игры.
S>7) Для программ на C++ не нужны мегабайты дополнительных библиотек.
Да? А как же терабайты кода из пункта 6? Или они уже перестали быть нужны?

S>Этот список можно продолжать еще очень долго.

Да. А можно остановиться и подумать.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[50]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.11.04 03:33
Оценка: 20 (2)
Здравствуйте, alexeiz, Вы писали:

ГВ>> Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии. А проблему со временем отклика можно урегулировать.


A>ATL Server?


Не, вот это: C++ server pages
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: C++ server pages
От: vdimas Россия  
Дата: 21.11.04 10:08
Оценка: 18 (1) +1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Вот не надо гнать, ладно?


ГВ>Ходи сюда и смотри. Крайний апдейт — 18 ноября этого года.


выдержки с той странички:


Incredibly high processing efficiency. Benchmarks have shown a range of 80 to 250 times higher processing speed than ASP.


The use of pure C++ allows the use of tons of libraries that are currently available. It is important to notice that the libraries written in C++ are tens or hundreds of times more than in any other language.


It is widely accepted that the most skilled programmers in the IT market are the C++ ones. However, CGI, ISAPI and other frameworks where C++ applies, do not provide the web developer with facilities for efficient application development. As a result, until now, Web Development could not take advantage of the best programmers.


The processing efficiency of CSP allows the use of affordable systems even for complex Web Applications with heavy algorithms.


The ability of making direct system calls, allows the development of advanced web applications that are impossible with ASP and JSP. For example, it is possible for a CSP page to use multiple threads and do blocking tasks (credit card check, database queries etc.) simultaneously and hence faster, whereas such an accomplishment is only a dream for other technologies.

After exhaustive performance tests of many millions of HTTP requests, the engine has proven absolute stability.

Re[51]: Опять С++ vs С#
От: Дарней Россия  
Дата: 24.11.04 09:14
Оценка: 18 (1) :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Не, вот это: C++ server pages


не перестаю удивляться упорству, с которым люди ищут проблем на свои задницы
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[59]: Опять С++ vs С#
От: Дарней Россия  
Дата: 25.11.04 13:47
Оценка: 18 (1) -1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Не фреймворк, а библиотеку (т.е. на структуру программы ограничений она не накладывает). И разрабатывать с нуля не надо — уже давно есть. И не одна. Если в какой-то что-то не устраивает, всегда можно доработать. Благо, с открытым кодом хватает.


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

ПК>Нет. С# не включает множества вещей, которые вполне останутся: шаблоны, позволяющие контролировать часть семантических ограничений во время компиляции, (generics не в счет), размещение объектов в стеке + деструкторы, что позволяет автоматизировать освобождение ресурсов, "свободные" функции и т.п. Если бы язык, действительно, являющийся "улучшенным C++", освобожденным от совмстимости от C, уже был бы создан, обсуждать было бы нечего. Java и C# таковыми не являются и близко. Это легко увидеть при сравнении наиболее типичных подходов в каждом из этих языков.


В 99,9% случаев их хватает. А для оставшегося есть unsafe.
Я конечно не спорю, что C++ дает больше возможностей. И как программист я с этим совершенно согласен, и даже очень люблю C++ Но вот как человек, который разгребает чужой код и пытается проконтролировать правильность кодирования — люто его ненавижу

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


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

ПК>Для приложений с повышенными требованиями к устойчивости code review — фактически, неизбежное дело, вне зависимости от языка.


другой вопрос, насколько сильно он будет нужен

ПК>При наличии достаточного количества программистов с низкой квалификацией. Тут уже никакой язык не поможет.


А это и есть самый рядовой случай. Программистов с высокой квалификацией просто по определению не может быть много.
Именно поэтому и придумали C# с Явой — чтобы даже самая законченная обезьяна с гранатой не смогла слишком много набедокурить

ПК>Гм... А что, становится? Если нет, то какая разница, сколько раз это уже обсуждалось?


Многие люди отказываются от C++, и среди них немало людей с высокой квалификацией. И делают они это совсем не от хорошей жизни.

Кажется мне, что мы очень сильно отвлеклись от основной темы
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[39]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 09.11.04 04:56
Оценка: 8 (1) +1
vdimas,

> VD>Таких море. Просто понятие комерческого успеха сильно растяжимо. Есть и игры,


> Нет коммерчески успешных игр и не предвидится еще ооочень долго. Цикл разработки современной игрухи ныне 2-3 года, пока мы не слышали анонсов о том, что кто-то из заметных игроков на этом рынке начал писать на дотнете современный 3D-движок.


Вот еще достаточно интересное мнение по поводу некоторых трудностей при использовании языков со сборкой мусора для разработки игр.
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[45]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 10.12.04 22:09
Оценка: 3 (2)
Здравствуйте, VladD2, Вы писали:

VD>Минимальные требования для дотнета — это PII 450. Так что на 2 ГГц — это будет где-то менее 2.5 милисек. И опять же в худшем случае, плюс раз в квартал.


Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.
... << RSDN@Home 1.1.4 beta 3 rev. 255>>
AVK Blog
Re[48]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 09.12.04 18:07
Оценка: 1 (1) +1
Serginio1,

> ПК> А как будет происходить создание/удаление объектов? Через MyAllocator.new()/MyAllocator.delete()? IMHO, без детерминированных деструкторов и возможности перегрузки operator new "ручная" работа с памятью значительно осложняется...


> Можно и через TMyAllocator.Create TMyAllocator.Free

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

Я, наверное, недостаточно четко расставил акценты. Самой важной является выделенная часть. Именно это я и имел в виду ранее, говоря о "стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной". В этом смысле, имхо, самым хорошим решением было бы сочетание плюсов от обоих миров: GC + средства для "ручного" управления памятью в виде детерминированных деструкторов и т.п. На первый взгляд в этом отношении C++/CLI кажется вполне удачным вариантом.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[43]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 13:52
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>ArenaWarsDemoEnglishAndGerman.exe


Так что у товарией наставивших минусы игрушка не запустилась? Или аргументы кончились?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[40]: Опять С++ vs С#
От: vdimas Россия  
Дата: 18.11.04 23:09
Оценка: +2
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>vdimas,


>> VD>Таких море. Просто понятие комерческого успеха сильно растяжимо. Есть и игры,


>> Нет коммерчески успешных игр и не предвидится еще ооочень долго. Цикл разработки современной игрухи ныне 2-3 года, пока мы не слышали анонсов о том, что кто-то из заметных игроков на этом рынке начал писать на дотнете современный 3D-движок.


ПК>Вот еще достаточно интересное мнение по поводу некоторых трудностей при использовании языков со сборкой мусора для разработки игр.


So, it seems to me the only way to get good game performance from C# will be to eliminate ALL allocations from within the frame loop itself. Now, if you imagine the sort of code you're going to have to write to do that... it't starts making new and delete look pretty simple and cozy. You'll end up with something that looks like the quake source: fixed size tables all preallocated, arbitrary limits and tuning parameters everywhere. Bleh.


кхе...
Re[40]: Опять С++ vs С#
От: vdimas Россия  
Дата: 18.11.04 23:28
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>А что ж так? Такой виликий языки и вдруг сайты не тяент? Не уж-то надежности не хватет?


интерпретируемости не хватает.
а ты не знал, что С++ предназначен для компиляции?

V>>Тут дотнет отнимает рынок у ASP и PHP, опять же, не у С++, ибо на С сайты были, на С++ наверно уже нет (из-за того, что perl поспел одновременно с С++)


VD>Ага. Потому-что даже дохлые скрипты вроде ASP и PHP и те смогли у С++ тут рынок отнять. А ведь первые динамические сайты писались как раз на С/С++. CGI помнишь?


прекрасно помню. в твоей фразе ключевое слово — "скрипты".
второе ключевое слово — "дохлые"

кстати, ситуевина.
есть сервак приложений на С++. К нему добавили вэб-интерфейс на ASP. так на чем сайт?

панимашь, писать алгоритмы — это одно, а при разработке сайтов 90% работы — это проставление визуальных св-в у элементов. тут нужна среда, которая не требует компиляции. видел как сайт-девелопер работает? подкрутит что-то — тут же просмотрит страницу в соседнем окне, и т.д.

и еще. эти ASP и PHP отобрали рынок у С++ в период WWW-бума, когда вчерашние кухарки переучивались на вэб-мастеров. (именно так и обстояли дела в штатах). Тупая несложная работа, а С++ программеру платить надо

VD>Погоди немного и код на С++ будешь искать в красной книге.


между словами "и" и "код" вставил бы слово "хороший".

а плохой я буду искать в исходниках очередного Ротора.
Re[42]: Опять С++ vs С#
От: vdimas Россия  
Дата: 18.11.04 23:33
Оценка: +1 :)
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>Кроме того, CGI изначально считался относительно медленным, ибо запуск дополнительного процесса.


AVK>Про FastCGI никогда не слышал?


да, в период PHP-бума, когда кухарки переучивались на вебмастеров, это перспективное направление успешно похерили.

мешало еще на тот момент то, что в юнихах не было единой модели threads. тогда как раз в линухе появились динамически подгружаемые модули, можно было бы развить до очень эффективной системы...
Re[45]: Опять С++ vs С#
От: vdimas Россия  
Дата: 19.11.04 11:38
Оценка: +1 :)
Здравствуйте, AndrewVK, Вы писали:

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


V>>Какой DX по счету будет полностью на дотнете писан?


AVK>А зачем?


собственно, к этому вопросу я и вел
Re[52]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 24.11.04 17:51
Оценка: +1 -1
Здравствуйте, Дарней, Вы писали:

ГВ>>Не, вот это: C++ server pages

Д>не перестаю удивляться упорству, с которым люди ищут проблем на свои задницы
Я бы не стал называть это поиском проблем. Скорее уж, попыткой избавиться от каких-то неприятностей, свойственных традиционным решениям.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[60]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 26.11.04 02:30
Оценка: +2
VladD2,

> Неплохо было бы аргументировать этот набор ничем не обоснованных заявлений.


Гм... Читать умеем? Аргументация и/или примеры присутствуют. Если какие-то из аргументов полагаешь недостаточными, приводи контрпримеры, опровергай и т.п. Если есть какие-то конкретные положения, для которых аргументация отсутствует, указывай конкретно.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[62]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 26.11.04 03:45
Оценка: +2
VladD2,

> ПК> Аргументация и/или примеры присутствуют. Если какие-то из аргументов полагаешь недостаточными, приводи контрпримеры, опровергай и т.п. Если есть какие-то конкретные положения, для которых аргументация отсутствует, указывай конкретно.


> Довольно глупо переписывать половину твоих реплик.


Ну, тогда остаемся в текущей ситуации. Я высказал ряд тезисов с некоторой аргументацией. Опровержения приведенных аргументов или хотя бы иллюстрации их недостаточности не последовало. Снабжать все подряд дополнительной аргументацией, без указанных действий с твоей стороны, я, естественно, не буду.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[43]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 08.12.04 22:07
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

MS>>Может все-таки, 10 микросекунд?


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


Да не особо. 2 ГГц, 10 микросекунд — это 20000 тактов, не так уж и мало.

VD>PS

VD>И все же, скачай таки ArenaWarsDemoEnglishAndGerman.exe и поиграй пору часиков. Заметишь хоть одну паузу, расскажи. Ну, а если не заметишь то перестань дезинформировать людей повторяя глупость про ЖЦ раз за разом.

В ответ на это я процитирую извесный мультик

- Поздравляю тебя, Шарик. Ты балбес...


Кого это я когда-либо дезинформировал насчет "ЖЦ"?! Кстати, что такое "ЖЦ"? А игрушку не хочу — там регистрироваться заставляют. Есть где-нибудь линк без регистрации?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[44]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 08.12.04 22:27
Оценка: +1 -1
VladD2,

> Ты бы хоть читал внимтельно.


Переадресую твое пожелание тебе же. Речь шла не о нулевом поколении, цифирки для которого ты так любезно подсветил, а о первом и втором:

> ПК>Нет, именно миллисекунд. И это не потолок, скорее, характерное время для сбора мусора первого поколения. Сбор объектов поколения 2 может занять значительно дольше.


> ПК>http://support.microsoft.com/default.aspx?scid=/servicedesks/webcasts/en/wc050102/wct050102.asp

> ПК>a collection of Generation 1 is typically between 10 and 30 milliseconds.


> Да и ссылки на доисторические статьи давать не очень разумно. Есть статьи и по новее, где цифорки намного скромнее.


На сколько "намного"? В два, три раза? Это не "намного", т.к. 5-15 или 3-10 это по-прежнему пропуск кадра. И это при сборке первого поколения. Сборка второго поколения, которой без ручной оптимизации работы с памятью в реальной игре не избежишь, будет заметно подольше.

> В любом случае выделение памяти в фрагментированном хипе может занять куда большее время. Но про это почиму-то никто не вспоминает.


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

> Так что оставь сказаки про ЖЦ тем кто никогда с ним не сталкивался лично.


http://blacklight.h1.ru/oppo09.htm

Демагогия с переходом на личности
d. Обвинение оппонента в незнании предмета обсуждения

Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[46]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 08.12.04 23:22
Оценка: +1 -1
VladD2,

> Демагогия это твои слова.


В чем именно? Я, например, ссылку дал с объяснением, что именно меня не устраивает в твоем сообщении.

> попробуй скачать и запустить ту игрушку. Слушать эту галематью про "паузу" уже сильно надоело.


Как бы она ни работала, это ничего не скажет относительно верности утверждения
Автор: Павел Кузнецов
Дата: 08.12.04
, к которому ты прицепился, т.к. мы понятия не имеем, не используется ли в игре ручное распределение памяти.

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


> И кончай чуть что прикрываться переходом на личности. А то уже тоже не смешо... лбое утверждение о твоей неправоте ты сразу объявляешь переходом на твои личности.


Discussion tries to prove what is right; an argument tries to prove who is right.


К тому же, утверждение "о неправоте" от утверждения "о недостаточности компетенции" отличается вполне заметно. Да и подмену опровержения аргументации оппонента переходом к обсуждению его компетентности не заметить тоже сложно.

Так что если не хочешь, чтобы я регулярно напоминал тебе о рамках корректного ведения дискуссии, удерживайся в них самостоятельно.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[45]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 08.12.04 23:30
Оценка: +1 -1
VladD2,

> MS> Да не особо. 2 ГГц, 10 микросекунд — это 20000 тактов, не так уж и мало.


> Минимальные требования для дотнета — это PII 450. Так что на 2 ГГц — это будет где-то менее 2.5 милисек. И опять же в худшем случае, плюс раз в квартал.


Т.е. сборка 1-го поколения — 2.5 — 7.5 миллисекунд. Все равно в среднем потеря кадра, т.к. времена сравнимы с временем пересчета состояния + отрисовки. Хотя уже, конечно, заметно лучше. К сожалению, при сборке второго поколения все равно будет заметные пользователю паузы (подергивания).

> ПК. Он уже тут очень долго расказывает сказку о "паузах" взыванных ЖЦ и вообще о невозможности создания игр из-за наличия ЖЦ.


Не о невозможности, а об определенных проблемах разработки. Никто не говорит, что эти проблемы не решаемы. Вопрос только в том, что разработчики предпочитают: решать эти плюс прочие проблемы, скажем, C#, или другие, связанные с использованием других языков. Все дела
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[44]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.04 20:52
Оценка: +1 :)
Здравствуйте, McSeem2, Вы писали:

MS>Что-то у тебя с логикой не лады.


У меня то с ней все впорядке...

MS> "Две версии одного движка" никак не могут дать столь существенной разницы при условии идентичности алгоритмической части.


А зачем нужно "условие идентичности алгоритмической части"? Все и без того более чем можно сравнивать.

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

MS> Следовательно, используемые алгоритмы существенно отличаются, следовательно, сравнение производительности с точки зрения используемых компиляторов — некорректно.


Корректно сравнение двух версий. Версия написаная на Шарпе явно в основном лучше. Что несколько странно для портированного продукта.

Ну, а я указываю именно на то, что этот факт четко демонстрирует, что на Шарпе не просто возможно писать 3D игры, но и возможно писать игры как минимум конкурирующие с анменеджед-аналогами.

MS> Иными словами, мы должны сравнивать, наколько GC влияет на производительность, а мы сравниваем разные алгоритмы. Так понятней?


Это самотря какова цель сравнения. Ести мы хотим сравнить проиводительность 100%-но аналогичного кода (что в принципе тяжело из-за использования разных парадигм), то конечно такое сравнение некорректно и нужно делать тесты вроде тех что были в Шустриках
Автор(ы): Владислав Чистяков
.

Но если мы хотим сравнить возможность производства конкурентно-способных 3D-игн на дотнете, то это очень подходящий полигон для сравнения. Ну, и 100%-но корректным является сравнение двух продуктов решающих одни и теже задачи, но созданных на базе разных технлогий.

Ты вот лучше задумайся как оказалось так, что вроде как потенциально более медленных код, имеющий единого предка, и написанный вроде как на более медленном средстве и насанный не очень крутыми перцами (если верить мифам о том, что крутые перцы работают только на С/С++) оказался во многих случаях шустрее С++-ного аналога?

Случайность это или закономерность? А может кроме замедления связанного с GC, лишними байтами в структуре объектов и т.п. есть и другие факторы влияющие не возможность создания более быстрого продукта? Может быть среди них есть такие вещи, как простота и чистота дизайна, качество и количество базовых библиотек, модульность, простота отладки и скорость компиляции, ну, и многое другое? И может быть по этим параметрам С++ мягко говоря недотягивает?

MS>Да и вообще, поменьше бы агрессивности.


Я совершенно не агрессивен. Так что если из тебя прет агрессия, не нужно приписывать ее другим.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.12.04 11:19
Оценка: +1 -1
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Тогда этот замер ничем не поможет в оценке произаодительности.


Зато он поможет в реальной оценке задержек в реальном приложении.
... << RSDN@Home 1.1.4 beta 3 rev. 255>>
AVK Blog
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 00:57
Оценка: -2
Здравствуйте, McSeem2, Вы писали:

MS>Извини, Влад. Споры из серии "опять за рыбу деньги" мне не интересны.


То что вам нечего сказать по делу видно уже давно.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[78]: ToString()
От: Glоbus Украина  
Дата: 17.12.04 08:23
Оценка: +2
Здравствуйте, VladD2, Вы писали:

Знаешь, старик, очень долго читал, а как дочитал твой пассаж понял, что отвечать на него буду еще дольше и это было бы абсолютно бессмысленно А так как дискуссия зашла в тупик в очередной раз просто хочу озвучить мысль, что по моему мегасубъективному мнению ты крупно ошибаешся относительно того, что язык играет настолько фундаментальную роль, как ты это преподносишь — не играет рояли на чем напмсан конечный продукт. Ты очень часто делаешь упор на вопрос проектирования и привязки проектирвоания к языку — на мой взгляд, это неправильно — объяснения почему так смотри выше в предыдущем посте.
А ваще время рассудит, что там для чего выгоднее, шарп или плюсы Вот лет через 10 бы эту ветку поднять — вот тогда было бы интересно перетереть...
Удачи тебе, браток!
Re[80]: ToString()
От: slegkapjan  
Дата: 20.12.04 11:20
Оценка: +2
VD>Здравствуйте, Bigger, Вы писали:

B>>Чем же он убог до безобразия, блин,


VD>Это уже обсуждалось сотню раз. Сделай поиск.


А вот это уже просто смешно. Смешно и ничего более. На чем написана ОС, браузер, компилятор, имейл-клиент и проч. и проч.? Хмм... говорить, что язык, добившийся такой головокружительной высоты является "убогим"...
Re[81]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.12.04 20:17
Оценка: -1 :)
Здравствуйте, slegkapjan, Вы писали:

S>А вот это уже просто смешно. Смешно и ничего более. На чем написана ОС, браузер, компилятор, имейл-клиент и проч. и проч.?


История скоро изменится (с) Назад в будущее.

S> Хмм... говорить, что язык, добившийся такой головокружительной высоты является "убогим"...


Ага.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[86]: ToString()
От: slegkapjan  
Дата: 22.12.04 09:13
Оценка: +1 -1
D>Может предложить только одно — стоимость проектов бля бизнес приложений СУЩЕСТВЕННО ниже. Поддержка СУЩЕСТВЕННО дешевле.
D>А для бизнеса только этот пункт существенен. А все остальное никого не интересует.
С этим абсолютно согласен.
Re[92]: ToString()
От: slegkapjan  
Дата: 22.12.04 12:15
Оценка: +1 -1
S>>А что может помешать вирусу модифицировать фреймворк и вызывать любые методы которые ему только вздумаются? Или же эта защита работает только для вриусов, написанных под .NET?
S>Да, только для вирусов, написанных на дотнет. К примеру, мы можем потребовать от кода, загружаемого на общественный сервер, быть написанным на .Net. При этом можно будет писать любой код, но работать будут только безопасные методы. Аналогичной возможности для С++ не существует.
Вполне можно модифицировать операционную систему, добавив такие возможности...

S>> При желании и для C++ можно придумать подобную защиту, и гораздо более действенную.

S>Попробуй. Можешь хотя бы на пальцах объяснить, как ты на С++ реализуешь код, принимающий решение о возможности вызова в зависимости от того, откуда сделан вызов?
См. выше. Просто поддержка будет не со стороны языка, а со стороны ОС -- что гораздо правильнее.

S>>А потому, что нельзя определить что-то через него же самого. Нельзя написать фреймворк для C# на C#!

S>Ну и что. Фреймворк для C# — это, собственно, та небольшая часть кода, написанная на, допустим, ассемблере. В чем разница?
Небольшой такой участочек, написанные на ассемблере, мааааленький, строк 200. Это самое гениальное твое высказывание после "ты гонишь". Мы всем отделом смеялись до коликов.

S>>>Ты написал, что любую C# программу ты сможешь заменить эквивалентной программой на С++, которая будет более быстрой. Тебе все еще неочевидно, что ты гонишь?

S>>Скажи пожалуйста, а почему такое не может быть возможным?
S>Нет уж, это ты делаешь некоторое голословное утверждение. Будь любезен принести доказательство в студию. В науке, знаешь ли, действует презумпция недоказанности. Так что пока ты не приведешь метод, по которому ты выполнишь более быструю реализацию, аналогичную любой .Net программе, я буду считать твои заявления плодом религиозного экстаза.
Неужели ты этого сам не понимаешь? Как ты думаешь, можно ли, например, переписать zlib целиком на .NET, так чтобы zlib не отстовал от реализации на Си?

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

Молодец, воздержался

S>>>>А скажи пожалуйста, ты думаешь что можно в принципе написать фреймворк C# для любой платформы?

S>>>Естественно! А что нам может помешать? Скажи пожалуйста, какие особенности C# могут помешать написать фреймворк на любой платформе?
S>>Т.е. ты утверждаещь, что, положим, можно написать фреймворк для PIC? Или для палмы с 300 килобайтами хипа?
S>Именно это я и утверждаю. А почему бы, собственно, нет? JVM прекрасно работает на пальме. Чем .Net хуже?
S>>Знаешь, есть такая функция GetProcAddress() Вполне можно сделать нечто подобное и для классов.
S>Знаю. Ты на приложение посмотрел? А теперь попробуй все же реализовать аналог на С++. Я даже не буду требовать, чтобы это работало для любых классов без доп. условий (как это работает в .Net). Иначе у тебя вообще ничего не получится. Попробуй-попробуй. И ты поймешь, что это не намного более удобно, чем реализация ООП с виртуальным множественным наследованием на макроассемблере.
Опять же, все что ты сказал сугубо субъективно. Вполне можно реализовать очень даже удобную, работоспособную систему.
Re[94]: ToString()
От: slegkapjan  
Дата: 22.12.04 13:11
Оценка: +1 -1
S>1. Для любой программы на C# существует эквивалентная программа на С++ с более высоким быстродействием.
Пусть нам дана некоторая программа на C#, реализующая некий алгоритм. Т.к. с точки зрения управляющих конструкций C# является подмножеством C++, то мы можем написать программу на C++ действующую схожим образом. Уже на этом уровне, C++ должен быть как минимум не медленнее C#, т.к. C++ язык более низкого уровня. Однако у C# есть замечательная штука -- GC которая будет запускаться раз в N тактов и притормаживать всю систему.

На остальное отвечу потом, сейчас времени нет.
Re[96]: ToString()
От: slegkapjan  
Дата: 22.12.04 14:57
Оценка: +1 -1
Здравствуйте, Sinclair, Вы писали:

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

S>>Что конкретно вызывает твои сомнения?
S>Отсутствие внятной аргументации существования такого метода. Еще раз: Это не я сделал голословное утверждение. Это ты сделал утверждение о том, что можно реализовать намного более действенную защиту, чем CAS, на С++. Я пока не вижу, как это можно сделать, не воспроизводя весь .Net Framework.
А скажи пожалуйста, на каком языка написан .netfw? На C++? Соответственно такое же средство можно реализовать и для C++ на самом C++.

Я все еще в цейтноте, поэтому постораюсь вечером из дома написать что-то более внятное.
Re[55]: Опять С++ vs С#
От: Дарней Россия  
Дата: 25.11.04 11:23
Оценка: 18 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это почему?


потому что идеальных программистов не бывает. Кто-нибудь обязательно накосячит при очередных изменениях, повредит чужую память, и весь сервер с треском рухнет — вместе со всеми текущими сенасами работы. Пользователи будут очень довольны. Что еще хуже, на поиск и отладку этого бага понадобится куча времени.
Единственный способ этого избежать — запускать каждый сеанс в отдельном процессе. Что создает такие накладные расходы, по сравнению с которыми накладные расходы той же самой Явы или C# покажутся детскими игрушками.
Хотя это уже 10 раз везде обсуждалось и обсасывалось...
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[63]: ToString()
От: Дарней Россия  
Дата: 29.11.04 05:59
Оценка: 18 (1)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>"generics не в счет" не из-за того, что они "еще недоступны для большинства", а из-за их ограниченности
Автор: Павел Кузнецов
Дата: 20.11.04
. Считать это положительным или отрицательным моментом — дело вкуса. Однако для тех, кому нужна функциональность "полных" шаблонов C++, generics адекватной заменой не являются.


Я в курсе.. увы, C++ шаблоны — это инструмент "не для всех". Большинство кодеров при виде заворота в стиле Александреску приходит в тихий ужас и норовит забиться куда-нибудь в уголок. Невразумительные сообщения об ошибках в пару кб текста длиной — это тоже далеко не плюс. Я уж не говорю про проблемы с компиляторами и поддержкой стандарта языка.
надеюсь, R# эту проблему в конце концов решит :-D

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


Можно рассматривать это и как плюс. Большое количество скрытой активности в деструкторах часто очень осложняет жизнь. Кстати говоря, выброс исключения из Dispose не может обрушить прогу — в отличие от C++

>> "свободные" функции

ПК>Этого вообще нет.

Никто не мешает использовать вместо них статические функции-члены.

ПК>Производительность, конечно, иногда очень важна (и она тоже далеко не всегда достигается через unsafe, т.к. целый ряд вещей, связанных с производительностью, в C++ решается через шаблоны), но в данном случае для меня намного существеннее именно возможности языка, которые в случае C#, имхо, сильно ограничивают выразительные средства, доступные разработчикам библиотек.


Если так уж сильно приспичит, то можно написать наиболее критичную часть проги на MSIL или MC++
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[68]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.11.04 10:15
Оценка: 15 (1)
Здравствуйте, Дарней, Вы писали:
Д>Параллели между Dispose() и деструкторами С++ очевидны, но это все-таки не одна и та же вещь.
Правильно. Ребята, Dispose — это вообще сахар.
Нужно понимать, что никакого Dispose нет. Есть только try, catch, и finally.
Диспозы вызываются как finally-блок, и никакой неопределенности там нет. Неважно, брошено исключение в рамках Dispose или просто вот так:
try
{
  throw new Exception("1");
} finally
{
  throw new Exception("2");
}


Д>Единственная неопределенность в данном случае — это вопрос о том, какое из исключений будет обрабатываться далее — то, которое изначально привело к раскрутке стека, или одно из тех, которые возникли во время процесса раскрутки. Судя по результатам эксперимента — обрабатываться будет то, которое было выброшено последним.

Д>Это действительно не очень хорошо, т.к. информация о предыдущих исключениях теряется.
Это абсолютно нормально. Вызов Dispose — это часть пользовательского кода! Хочется иметь информацию об исходных исключениях — нет проблем:
using{IDisposable a)
{
  try
    {
    } catch (Exception e)
    {
       // no problem!
    }
}

Д> Однако, неопределенного поведения здесь все-таки нет.
И быть не может. Взаимодействие исключений и пользовательского кода в .Net намного проще, чем в плюсах, и именно из за недетерминистической финализации.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[42]: Опять С++ vs С#
От: vdimas Россия  
Дата: 19.11.04 11:38
Оценка: 2 (1)
Здравствуйте, AndrewVK, Вы писали:

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


V>>панимашь, писать алгоритмы — это одно, а при разработке сайтов 90% работы — это проставление визуальных св-в у элементов. тут нужна среда, которая не требует компиляции. видел как сайт-девелопер работает? подкрутит что-то — тут же просмотрит страницу в соседнем окне, и т.д.


AVK>А как же JSP и ASP.NET? Там ведь компиляция.


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

да и опять же, я уже приводил аргумент насчет их прожорливости и того, что эти технологии стали принципиально возможны относительно недавно.

------
с удовольствием отдаю веб-интерфейс подобным технологиям,
действительно удобно.

осталось дождаться, когда на клиентской стороне в качестве языка скрипта к DHTML получит распространение C#, ибо писать страницу на ASP.Net/C# и делать вставки кода на JavaScript... в общем, ощущение корявости подхода не покидает.
Re[92]: ToString()
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.01.05 10:56
Оценка: 2 (1)
Здравствуйте, bt, Вы писали:

bt>А вот это уже действительно интересно.

bt>Если можно, вкратце расскажи: как?

http://gzip.rsdn.ru/article/dotnet/inside_remoting1.xml
Автор(ы): Игорь Ткачев
Дата: 11.07.2003
Первая часть статьи, рассказывающая о новой технологии межпроцессной коммуникации — Remoting. Это "родная" для .NET Framework технология, использующая все преимущества платформы. В статье разбираются такие тонкие моменты, как работа с контекстом и перехват создания объектов и вызова методов.
... << RSDN@Home 1.1.4 beta 3 rev. 274>>
AVK Blog
Re[40]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 11.11.04 12:13
Оценка: 1 (1)
Здравствуйте, VladD2, Вы писали:

VD>Ага. Потому-что даже дохлые скрипты вроде ASP и PHP и те смогли у С++ тут рынок отнять. А ведь первые динамические сайты писались как раз на С/С++. CGI помнишь?


Кроме того, CGI изначально считался относительно медленным, ибо запуск дополнительного процесса. В качестве альтернативы фильтры IIS знаешь? С другой стороны, причём тут "отъятие рынка"? ASP и PHP скорее у HTML-кодеров рынок отнимают.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[41]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.11.04 13:10
Оценка: 1 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Кроме того, CGI изначально считался относительно медленным, ибо запуск дополнительного процесса.


Про FastCGI никогда не слышал?
... << RSDN@Home 1.1.4 beta 3 rev. 230>>
AVK Blog
Re[49]: Опять С++ vs С#
От: vdimas Россия  
Дата: 21.11.04 10:01
Оценка: 1 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

V>>>Если через сколько-то лет станет приемлимой время перекомпиляции подобной системы на С++, то эта причина в языке исчезнет.

AVK>>Вот когда станет, тогда и поговорим. А пока что этого нет.

ГВ> Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии. А проблему со временем отклика можно урегулировать.


Время отклика теоретически должно быть минимально возможным
(речь о уже скомпилированной проге)
Re[49]: Опять С++ vs С#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.12.04 18:41
Оценка: 1 (1)
Здравствуйте, Павел Кузнецов, Вы писали:


ПК>Я, наверное, недостаточно четко расставил акценты. Самой важной является выделенная часть. Именно это я и имел в виду ранее, говоря о "стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной". В этом смысле, имхо, самым хорошим решением было бы сочетание плюсов от обоих миров: GC + средства для "ручного" управления памятью в виде детерминированных деструкторов и т.п. На первый взгляд в этом отношении C++/CLI кажется вполне удачным вариантом.

Полностью согласен.
и солнце б утром не вставало, когда бы не было меня
Re[42]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.04 17:08
Оценка: 1 (1)
Здравствуйте, McSeem2, Вы писали:


MS>Что-то тут не так с Worst FPS. Я готов допустить, что при некоторых условиях C# работает даже быстрее. Но чтобы он работал быстрее в 400 раз — не верю, ибо это противоречит законам природы и нарушает причинно-следственные связи .


Думаю, просто пофиксили глюки.

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


Естественно. Они над этим и работают.

MS> Возможны так же разные исходные условия (разные видеоадапторы), так же не исключен вариант банальной алгоритмической ошибки (O(N^2) вместо O(N log N)) в исходном движке, исправленной в версии C#. В любом случае, данные тесты являются методологически некорректными.


Какая разница? Тут речь идет о невозможности применения Шарпа в 3D играх. Этот движок хорошо доказывает, что эти слова бред. И что намного больше зависит от качества алгоритмов чем от накладных затрат дотнета. Так что эти тесты как нельзя лучше показывают несостоятельность позиции ПК и его сторонников. А что до "методологически некорректными", они сравнивают две версии одного движка. Естественно на одинаковом железе и при одинаковых условиях (обратное твои домыслы), и делают они это совершенно корректно. То что их алгоритмы лучше не умаляет качества движка.

MS>Так что, внимательней надо быть с выбором сравнительных тестов.


Внимательнее надо быть с чтением тем. Смысл нужно улавливать.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[44]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.04 20:52
Оценка: 1 (1)
Здравствуйте, prVovik, Вы писали:

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



VD>>Тут речь идет о невозможности применения Шарпа в 3D играх.

V>Хм, а разве кто-то это утверждал?

Утверждал. Я незнаю, что ты под этим имеш ввиду, но тут ПК вот утверждает, что это делать нельзя, а то что это не только возможно но и удобно утверждает как минимум та игра которая прекрасно наботает будучи написанная на этом самом нжте.

V>P.S.: А ты знаешь, что объем рынка игр для PC уже сейчас составляет около семи процентов и с каждым годом он неумолимо падает?


7% чего?

V> Ну и о какой конкуренции шарпа с плюсами в компьютерных играх после этого вообще можно говорить? Ну займет он в лучшем случае один процент (хотя и в это слабо верится), а 99% достанется С++'у!!!


Ты бы привел хоать какие-то ссылки подтверждающие свои слова. Я вот припоминаю информацию из Игромании... там вроде бы говорилось, что рынок PC-игр постоянно растет. И что миллионы стали срывать даже игры второго эшелона.

К тому, же почти все игры выходящие на ХБоксе выходят и на PC. Так что закат этому рынку не грозит.

Ну, и самое главно — это чистеший офтоп. Размеры рынка неимеют никакого отношения к возможности или невозможности создания игр на том же C#.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 10.11.04 23:20
Оценка: -1
VladD2,

> ПК> Вот еще достаточно интересное мнение по поводу некоторых трудностей при использовании языков со сборкой мусора для разработки игр.


> Ага. Мнений море. Вот только чущь полная. Игры то работают.


С интенсивной 3D графикой на .Net? Какие? Quake не считается, т.к. он написан очень своеобразно: ему GC вообще почти параллельна. Но писать так все игры никто не будет, ибо очень дорого:

So, it seems to me the only way to get good game performance from C# will be to eliminate ALL allocations from within the frame loop itself. Now, if you imagine the sort of code you're going to have to write to do that... it't starts making new and delete look pretty simple and cozy. You'll end up with something that looks like the quake source: fixed size tables all preallocated, arbitrary limits and tuning parameters everywhere. Bleh.


> Сборка мусора в среднем занимает около 10 милесекунд с интервалом несколько секунд. А то и реже/быстрее.


Это-то и мешает:

Look at it this way. In a game, you ideally are going to generate frames as fast as the monitor traces, ie 60hz or more. That means you've got a deadline ticking off every 16ms. MS's own docks say a generation 0 collection is roughly the same cost as a page fault (ouch!), and that a generation 1 collection can take 10ms to 30ms (OUCH!). So, basicly any collection is going to result in a dropped frame. A generation 2 collection is likely going to cause a "lockup" from the perspective of the player.

Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[44]: Опять С++ vs С#
От: vdimas Россия  
Дата: 19.11.04 11:30
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

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


V>>мешало еще на тот момент то, что в юнихах не было единой модели threads. тогда как раз в линухе появились динамически подгружаемые модули, можно было бы развить до очень эффективной системы...


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


помню статистику платформ для www где-то за 95-96 года,
там было примерно 97% всех серваков на основе различных юнихов (в т.ч. и от Sun)

-------
за точность цифр не ручаюсь, но порядок именно тот
Re[44]: Опять С++ vs С#
От: vdimas Россия  
Дата: 19.11.04 13:09
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

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


AVK>Для этого компонентная модель не нужна, достаточно умение делать dll.


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

V>>осталось дождаться, когда на клиентской стороне в качестве языка скрипта к DHTML получит распространение C#, ибо писать страницу на ASP.Net/C# и делать вставки кода на JavaScript... в общем, ощущение корявости подхода не покидает.


AVK>Дык XAML.


это в ASP.Net 2.0 уже поддерживается?
Re[50]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.11.04 03:42
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

ГВ>> Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии.

AVK>Ну то есть кто то все таки мешает?

Да нет, никто не мешает. Есть он уже давно. Если уж кому-то кто-то (что-то) и мешает, так это мне моя собственная лень написать движок, аналогичный или превосходящий MicroNova. Технических проблем особых нет.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: C++ server pages
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.11.04 01:22
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>Ты ради хохмы создай страничку того же ASP.Net на МС++. Увидишь, что скорости компиляции за глаза хватает. Но МС++ все равно никто для этих целей не использует. И это потому, что толку от МС++ нет, а гемороя с ним больше. Т.е. потому, что в этой области он уже полностью пошел на свалку.


ГВ>Вот не надо гнать, ладно?


Что за выражения? Фу.

ГВ>Ходи сюда и смотри. Крайний апдейт — 18 ноября этого года.


Рад за них. Я вообще всегда радуюсь маньякам и мазохистам. Вот только то, что на С++ сайты в основном не пишут говорит о том, что мазохистов и маньяков все же не много.

ГВ>И вообще, да поможет тебе Google.


Спасибо, но я как-нибудь без этого.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[60]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 25.11.04 14:27
Оценка: +1
Дарней,

> ПК> С# не включает множества вещей, которые вполне останутся: шаблоны, позволяющие контролировать часть семантических ограничений во время компиляции, (generics не в счет), размещение объектов в стеке + деструкторы, что позволяет автоматизировать освобождение ресурсов, "свободные" функции и т.п. Если бы язык, действительно, являющийся "улучшенным C++", освобожденным от совмстимости от C, уже был бы создан, обсуждать было бы нечего. Java и C# таковыми не являются и близко. Это легко увидеть при сравнении наиболее типичных подходов в каждом из этих языков.


> В 99,9% случаев их хватает. А для оставшегося есть unsafe.


Что-то я не очень понимаю, как unsafe поможет в достижении перечисленных выше моментов...

> Я конечно не спорю, что C++ дает больше возможностей. И как программист я с этим совершенно согласен, и даже очень люблю C++ Но вот как человек, который разгребает чужой код и пытается проконтролировать правильность кодирования — люто его ненавижу


По этому поводу мне нравится работать с программистами, чей код "разгребать" не приходится

> Именно поэтому и придумали C# с Явой — чтобы даже самая законченная обезьяна с гранатой не смогла слишком много набедокурить


Ну, это не ко мне, я с такими предпочитаю не работать

> Кажется мне, что мы очень сильно отвлеклись от основной темы


Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[59]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.04 19:50
Оценка: :)
Здравствуйте, Павел Кузнецов, Вы писали:

Неплохо было бы аргументировать этот набор ничем не обоснованных заявлений.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[63]: ToString()
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.04 14:54
Оценка: -1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Ну, тогда остаемся в текущей ситуации. Я высказал ряд тезисов с некоторой аргументацией. Опровержения приведенных аргументов или хотя бы иллюстрации их недостаточности не последовало. Снабжать все подряд дополнительной аргументацией, без указанных действий с твоей стороны, я, естественно, не буду.


Так, я чувствую мои просьбы ушли в пустоту. Ну сколько можно? Заканчивайте здесь разборки.
... << RSDN@Home 1.1.4 beta 3 rev. 235>>
AVK Blog
Re[68]: ToString()
От: Павел Кузнецов  
Дата: 29.11.04 13:13
Оценка: -1
Дарней,

> Я не сомневаюсь, что в случае C++ выброс исключения во время раскрутки стека приводит к неопределенному поведению.


В данном случае, как уже говорил alexeiz, поведение вполне определено. А именно, будет вызвана функция std::terminate().

> Как показал тест — сначала завершаются вызовы Dispose для всех объектов текущего блока, и только затем продолжается раскрутка стека. Происходит это независимо от того, было ли выброшено исключение одним из вызванных методов, или нет <...> Однако, неопределенного поведения здесь все-таки нет.


В результате есть неопределенное состояние программы: освобождены ли все ресурсы, если нет (насколько я понимаю, это именно так), то какие именно "подвисли" и т.п. Плюс, насколько я понимаю, не только не будут освобождены ресурсы, в результате освобождения которых было выброшено исключение, но и не будут вызваны остальные функции (в т.ч. и Dispose), которые должны были быть вызваны в "виновном" Dispose, после строки, приведшей к исключению.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[71]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.11.04 22:59
Оценка: -1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это ответ совсем на другой вопрос. Тенденция, однако...


Как спрашиваешь, так и отвечаем, однако.


ПК>

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

ПК>т.е. код должен быть немного модифицирован:
ПК>
ПК>class Test : IDisposable
ПК>{
ПК>     public Test(string name) { _name = name; }

ПК>     string _name;

ПК>     public void Dispose()
ПК>     {
ПК>         Console.WriteLine(_name + ".Dispose()");
ПК>         throw new Exception("Exception in Dispose... (" + _name + ")");

ПК>         // вот здесь должны быть добавлены вызовы других функций, в частности, Dispose других, возможно, содержащихся в Test объектов
ПК>     }
ПК>}
ПК>


Ну, проблемы неграмотного кода никто устронять не собирался. Диспоз вообще по идее не должнен генерировать исключений. И уж если ты работаешь с ресурсами в диспозе, то ставь using или try/catch|finally защищающие код.

Я за все время еще не видел проблем с исключениями в диспозе, а вот с проблемами исключений в конструктерах/деструктерах С++ я видел неоднократно. Уж не знаю, что на это больше влияет, но это факт.

Давай ты опишешь реальный случай, вот его и обсудим.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[71]: ToString()
От: Дарней Россия  
Дата: 30.11.04 05:11
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Именно это я и подразумевал под отсутсвием альтернативы деструкторам C++.


Такова плата за GC.
Можно еще очень долго рассуждать на тему "деструкторы vs Dispose", но на практике Dispose вполне хватает, и никаких особых граблей с ним не возникает.
Если уж искать в языках недостатки, то можно еще много чего вспомнить... например, совершенно уникальный std::auto_ptr с его разрушающим копированием (честное слово — ума не приложу, как вообще комитет мог пропустить такие грабли)
В любом случае — C# меня вполне устраивает, и устраивает больше, чем C++

ПК>Там тоже не все так просто: в таком случае информация о неосвобожденных ресурсах будет потеряна. Об аналогичных проблемах в Java была целая статья в журнале Overload, "Handling Exceptions in finally" (Tony Barret-Powell). В on-line, к сожалению, найти не могу...


Исключения при закрытии ресурсов тема всегда очень щекотливая, независимо от языка
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[69]: ToString()
От: folk Россия  
Дата: 01.12.04 03:20
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

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

Этот код
A a;
throw "exception";

можно представить так без автоматического вызова конструкторов/деструкторов
A a; // только выделение памяти на стеке
a.ctor();
try {
  throw "exception";
} catch(...) {
  a.dtor();
  throw;
}
a.dtor();

разница только в одном — если деструктор A бросает исключение, то в первом примере получим terminate(), а во втором дальше полетит исключение, выброшенное деструктором.

В этом отличии и заключается нелогичность. Было бы логичнее предъявлять к деструкторам не более жесткие требования, чем к любым функциям, которые могут быть вызваны из catch.
Из catch может быть выброшено как "неожиданное" исключение (например пытаемся выделить память в обработчике и получаем bad_alloc), так и "ожидаемое" (специально выбрасываем новое исключение). Оба эти варианта справедливы и для деструкторов, а значит исключения из деструкторов (при уже активном исключении) должны приводить к тому же — замене старого исключения на новое, а не к terminate().

Самое обидное, что в реализации net-подхода нет никакой net-специфики, на плюсах все это замечательно бы заработало. Имхо, здесь комитетчики приняли неверное решение и не стоит их оправдывать.
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[43]: Опять С++ vs С#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 08.12.04 19:30
Оценка: :)
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Соответственно, в основном все будет хорошо, но периодически, при запуске уборки поколения 1, кадры будут выпадать, а иногда, при запуске уборки поколения 2, будут паузы, заметные пользвователю. Периодичность этих явлений будет сильно зависить от сценариев работы с памятью. И, в принципе, если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму. Вопрос только в стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной.

Выход в создании своего менеджера памяти с использованием валуе типов (массивов байт). Все зависит от задачи и нормально решаемо.
и солнце б утром не вставало, когда бы не было меня
Re[46]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 09.12.04 17:26
Оценка: +1
Serginio1,

>>> ПК> если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму. Вопрос только в стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной.


>>> Выход в создании своего менеджера памяти с использованием валуе типов (массивов байт). Все зависит от задачи и нормально решаемо.


> ПК>Гм... В чем здесь противоречие с выделенным?


> В Том, что в Net вполне для этого пригодна правда с ограничениями на ссылочные типы.


А как будет происходить создание/удаление объектов? Через MyAllocator.new()/MyAllocator.delete()? IMHO, без детерминированных деструкторов и возможности перегрузки operator new "ручная" работа с памятью значительно осложняется...
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[46]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 11.12.04 20:15
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.


Ну вот! Это уже вполне разумные величины. Всего-то надо было померить. И никаких Urban Legends про 10 ms.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[46]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.12.04 21:30
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

AVK>Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.


А как меряешь?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[72]: ToString()
От: prVovik Россия  
Дата: 12.12.04 16:11
Оценка: +1
Здравствуйте, VladD2, Вы писали:


VD>Ну, проблемы неграмотного кода никто устронять не собирался. Диспоз вообще по идее не должнен генерировать исключений. И уж если ты работаешь с ресурсами в диспозе, то ставь using или try/catch|finally защищающие код.

Гы, а что мешает делать то же самое в С++?
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[45]: Опять С++ vs С#
От: prVovik Россия  
Дата: 13.12.04 00:31
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Утверждал. Я незнаю, что ты под этим имеш ввиду, но тут ПК вот утверждает, что это делать нельзя,

Честно говоря, не замечал за ним таких утверждений... Он вроде бы говорил только о применимости конкретно ГЦ, а не платформы вцелом.
И вообще, тот факт, что есть игра на С# сам по себе еще ни о чем не говорит. Потому, что:
1) стратегии — это такой жанр игр, в которых не требуется постоянный высокий фпс. Он может падать хоть до 10, и при этом пользователь не заметит особого дискомфорта. Более показательны в этом смысле были бы, например, шутер, или автосимулятор.
2) мы не знаем, как она работает, а именно — исползуется ли активно там ГЦ во время игрового процесса. Может там "operator new" вызывается только во время загрузки?

V>>P.S.: А ты знаешь, что объем рынка игр для PC уже сейчас составляет около семи процентов и с каждым годом он неумолимо падает?

VD>7% чего?
От общего объема рынка компьютерных игр. Ну про 7 процентов я, наверное, загнул , но процентов 10 есть...

VD>Ты бы привел хоать какие-то ссылки подтверждающие свои слова.

А вот со ссылками трабл. Дело в том, что подобная информация стоит много денег . Но кое-что все-таки нашлось:
1)Вот эта картинка: http://www.jiad.org/vol4/no1/chou/chou_files/table1.gif
из статьи http://www.jiad.org/vol4/no1/chou/#AUnified

Ну и общая информация:
2) http://www.gamespot.com/all/news/news_6085583.html
3) http://www.release.ru/soft/newslog/2003/12/17/000820.html?m=comments

VD>Я вот припоминаю информацию из Игромании... там вроде бы говорилось, что рынок PC-игр постоянно растет. И что миллионы стали срывать даже игры второго эшелона.

Ты, наверное, путаешь рынок PC-игр, с рынком игр вообще, который, действительно сильно растет, и обогнал уже, кстати, рынок киноиндустрии!!!

VD>К тому, же почти все игры выходящие на ХБоксе выходят и на PC. Так что закат этому рынку не грозит.

Правильно, но замечу, что, даже, на ХБоксе игры пишутся совсем не на шарпе

VD>Размеры рынка неимеют никакого отношения к возможности или невозможности создания игр на том же C#.

Влад, на С# МОЖНО делать игры, и на VB их тоже делать можно, и, даже, на JScript. Но разговор не об этом...
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[48]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 13.12.04 11:10
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

ГВ>>А сколько штук объектов обрабатывается в этом цикле?

AVK> Я ж говорю — реальное работающее приложение в стабильном состоянии.

Тогда этот замер ничем не поможет в оценке произаодительности.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[47]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 13.12.04 17:32
Оценка: -1
McSeem2,

> AVK> Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.


> Ну вот! Это уже вполне разумные величины. Всего-то надо было померить. И никаких Urban Legends про 10 ms.


Это время сборки нулевого поколения. О 10 миллисекундах речь шла для первого.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[47]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 14.12.04 23:04
Оценка: +1
Извини, Влад. Споры из серии "опять за рыбу деньги" мне не интересны.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[48]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 14.12.04 23:58
Оценка: +1
prVovik, согласен со многими из приведенных аргументов, но, полагаю, все-таки одно уточнение не помешало бы...

> VD>Пока. Как видишь первые ласточки уже есть.


> Какие? В мире еще не было создано ни одной коммерчески-успешной игры, ориентированной на .NET. Или я что-то пропустил?


Есть даже не на .Net, а на Java. Ил-штурмовик. Правда, куски там на C++, плюс не могу сказать, что игра требует мало ресурсов по сравнению с аналогами... Коммерчески успешной ее, по-моему, более чем можно назвать. Полагаю, какая-то часть разработчиков со временем может использовать C# и для более-менее серьезных игр для PC. Но вот утверждать о поголовном переходе на C# в разработке игр в более-менее обозримом будущем, имхо, точно не приходится.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[49]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 15.12.04 02:12
Оценка: +1
VladD2,

> V> Это цифры только по восточной Азии (Япония, Корея и пр.)


> Тоже не верю, так как я видил как минимум одну японскую игрушку с более чем двух миллионным тиражом (Хало что ли...). Даже при цене в 2 бакса она уже перекрывает эту цифру.


По-моему, ты путаешь объем продаж одной фирмы в одном регионе с деньгами, вырученными другой фирмой из того же региона, но в результате продаж по всему миру.

> V>Что-то я не улавливаю связи между C#2 и приставками


> Ты много чего не улавливашь.


Фи

> Думаю среди сильных мира сего дело будет развиваться так. Сначала дотнет появится в виде скриптовых движков и дополнительных средств. А со временем вытеснит нэтив код. Случится это по моим прикидкам году эдак к 2010-2015.


В том числе на приставках, где пирог намного лакомее, чем на PC, и где не ю?
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 20:20
Оценка: :)
Здравствуйте, Shady, Вы писали:

S>Помню слышал те же слова от явовщиков...


А я вот не помню.

S>Ну и как, Java заменила С++?


В создании ПО для бизнеса — полностью.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 22:15
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>Здесь обсуждался вопрос неприемлемости использования Шарпа в 3D-играх. По этому поводу какие-нибудь аргументы есть? Или признаем все попытки признать это мнение обычной инсинуацией?

ГВ>Так и признаем.

Ну, раз аргументов нет, то и ладно.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[75]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 22:15
Оценка: +1
Здравствуйте, Glоbus, Вы писали:

G>Истерика какая-то.


У кого?

G> Сам же сказал, что что в деструкторах, что в диспозе исключения кидаться не должны. А насчет дизигна языка — а можно конкрено описать, как дизайн языка мешает мне как разраюотчику писать try/catch в деструкторе и не выпускать оттуда исключения?


Ничего не мешат. Как и обходить все остальные заботливо уложенные грабли.

G>Мы их видим не потому, что они на плюсах. Мыих видим потому что руки из задницы у кого-то растут. Языка ваще играет очень тертью роль во многих случаях.


Правильно. Так и есть. Все беды из-за того, что руки из задницы растут. Но это же не мы?! Правда?! А те кто считает иначе они невменяемые уроды. Надо закрывать тему и идти учить ассэблер и машинные коды.

G>Все обертки давно наклеины


Расскажи это тем кто матерится на лики памяти и вылеты программ. Или... ах, да. Эти программы же пишутся криворукими уродами, а не нами.

G> Ваще долго тут читал ваши споры, много интересных мыслейЮ, но блин не смог сдержаться Тебя послушать, так до появляения .нет писалово программ было сущим адом — и обертки приклей, и лики лови годами, и надежности никакой, и сплошной AV. жуть... как же жыли то раньше...


Писать хорошие программы и после появления дотнета, и еще очень долго-долго после его смерти будет сущим адом. Мне искренне жаль тех кто этого не осознает. Я могу придумать интересную программу в считанные минуты (ну, максимум дни), а на ее реализацию мне нужны годы. И не просто мне. Годы нужны огромным коолективам. При этом очень часто получается так, что по прошествии многих лет от того плана, не побоюсь этого слова, от той изначальной светлой мечты, остается бледная тень. В итоге мы имеем глючный ворд и никуда не годных конкурентов. Мы имеем 10 лет назад марально устаревшие РСУБД вместо ООБД и ХМЛБД. Имеем игры интеллект ботов в которых ниже интеллекта таракана на кухне. В обещм, имеем полную задницу.

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

G>Да не сказать, что прям такая уж необходимая и незаменимая вещь. Мож чегол-то не знаю конечно, но в моей практике ни разу на плюсах не понадобилась


Видимо те кто ввели ее в свои языки небыли знакомы с твоей передавой практикой.

G>Да не должен он ничего избегать — все мощные возможности в его распоряжении. Покажи мне пожалуйста пример того, как программисту на с++ приходится отказываться от какой-нить мощной возможности, чтоб не наступить на грабли?


Так и вижу себе архитектора системы планирующего места размещения грабель и благодарного программиста обнаруживающего их своим лбом.

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

G>Насчет времени готов спорить...


Спорь.

G> Все очень зависит от задачи. Действительно, есть класс задач, в которых шарп выиграет по скорости разработки. Это задачи, которые не обладают сколь-нибудь значимой алгоритмической сложностью, а являются просто компоновкой тех или иных фич, типа там файлик открыли, прочитали, в мемо в окошке содержимое вывели, закрыли.


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

G> Всякий там бухучет, который некритичен по времени исполнения, и который есть просто нагромождение кучи возможностей по выгребалову данных из юазы и их отображению, то есть где по сути все сводится к функциональностям типа add/delete/update/print report.


Ну, да. Бесспорно! Задачи бухучета — это тупой последовательный вызов методов add/delete/update/print. Мы то с тобой как архитекторы это знаем. Не правда ли?

G> Да, тут писать быстрее на шарпе, спору нет. Но как мне лично кажется на более/менее серъезной задаче (авиасимуляторы, компиляторы, сложные системы управления оборудованием, математические программы, графика) время проектирования, разработки алгоритмов и тому подобные вещи занимают настолько много времени,


Скажи, так почему все таки бухгалтерские системы далеть на Шарпе проще? Ну, должно же быть этому логическое объяснение? Ну, не могия же это? Или магия?

И почему эта магия, по-твоему, не срабатывает на других задачах?

Да, и за одно ответь:
1. Почему авиасимулятор Ил2 использует Яву, а не написан целиком на С++? Он что бухгалтерию считает?

2. Почему я даже не мог подумать о создании собственного парсера на С++, а на Шарпе взялся и успешно его делаю?

3. Почему МС предпочел дотнет для реализации большей части АПИ Авалона? Ведь это же графика нового поколения. Что же они совсем дебилы выбрать ничего не дающие технологии? А ведь им еще и людей переучивать пришлось. Ведь у них раньше были одни С++-ники.

Не кажется все это странным?

G> что выигрышь в собственно кодировании будет весьма условный.


Понимаш ли. Выгрыш в скорости реализации проектов создаваемых на базе дотнета определяется совершенно прагматическими соображениями. И выбор Шарпа в качестве основного языка тоже.

Все очень просто. Дотнет позволяет сократить объем ошибок, а это значит меньше времени на отладку и экономия денег. Шарп позволяет не заморачиваться на поддржку разных паттернов, и больше сосредоточиться на процессе проектирования и идее/фичах программы. Вот такие банальные предпосылки. Но самое смешно, они работают. Чтобы убедиться в этом достаточно попробовать.

G> Тут уже не в языке дело по сути, потому что что в плюсах, что в шарпе — везде есть свои нюансы — тамследишь за памятью, там завызовами диспозов — и все зависит от задачи.


Бесспорно нюансы есть везде. Вот только объем этих нюаносв и их уровень совершенно разный. Это как при сравненнии ассемблера и С. Вроде возможностей у асма даже больше. И нюансы есть у обоих. Но вот объем и характер нюансов совершенно разный.

G> Но все таки в защиту моих плюсов могу сказать что пока что, насколько мне известно, такие монстры как МС, EA, Adobe, Sun и т.д. весьма активно пользуют плюсы — можно судить хотя бы по требованиям к вакансиям на их сайте.


Используют. Что с того? МС даже С во всю использует. Ворд говорят в основном на С написан. (Видимо от того и глючит так безбожно .) Но тем неменее, в МС понимают, что деньги нужно экономить и уже переводит гору разработок на тот же Шарп. Сан тоже многое делает на Яве. Ну, да ява к сожалению не очень то притендует на универсальность.

G> почему так?


А ты помнишь сколько писали приложений на С++ в 1987 году? А ведь С++-у было как раз 2 года от роду. Как раз как сейчас дотнету. МС начал переходить с С на С++ только в 90-ых. С момента появления С++, к тому моменту, прошло почти 10 лет.

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


Ну, судя по Авалону и Индиге все же стоит.

G> А то что мы видим сейчас в области .НЕТ — это чистый маркетинг. То есть не продукт подгоняется под рынок, а во многих случаях рынок подгноняется под продукт. Ваще это очень модный подход, и не только в ИТ — всякие там кока-колы и т.п., да практически все крупные компании, так делают. С точки зрения бизнеса конечно очень эффективно.


Слава богу у менеджеров из МС хватило разума, чтобы понять, что успех продвижение новых технологий на 90% зависит от маркетинга. Ну, не умеют люди с благодарностью принимать плоды прогресса. Не отказыватья же от них по этому поводу? Мы так бы и сидели в командной строке запуская бач-файлы если бы не маркетологи из Эпла.

VD>>Остается только один вопрос... Нафига козе баян?


G>Глубоко философский вопрос...


Выходит так, раз такая куча народу не понимает стольк простых истин.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[76]: ToString()
От: Glоbus Украина  
Дата: 16.12.04 10:22
Оценка: +1
Здравствуйте, VladD2, Вы писали:


VD>У кого?


У тебя, старичек

VD>Ничего не мешат. Как и обходить все остальные заботливо уложенные грабли.


А Dispose спасает нас от этого?

G>>Мы их видим не потому, что они на плюсах. Мы их видим потому что руки из задницы у кого-то растут. Языка ваще играет очень тертью роль во многих случаях.


VD>Правильно. Так и есть. Все беды из-за того, что руки из задницы растут. Но это же не мы?! Правда?! А те кто считает иначе они невменяемые уроды. Надо закрывать тему и идти учить ассэблер и машинные коды.


Не понимаю ваще о ком ты — какие невменяемые уроды, че это за твари такие невиданные? Я говорю о том, что ошибки в программах и всякие андефайнед-поведения от языка не зависят.


VD>Расскажи это тем кто матерится на лики памяти и вылеты программ. Или... ах, да. Эти программы же пишутся криворукими уродами, а не нами.


Не знаю, о чем ты — кто же такие криворукие уроды?
Насчет мемори ликов — ну так будут у тебя не мемори лики, а какая-нить другая лажа, не знаю какая и гадать не буду. Если у человека как программера уровень низкий, он напортачит на любом языке — что с гц что без. Серебрянной пули-то нету, понимаешь.. Язык с примочками не спасает от всех несчастий — он просто пытается заткнуть дыры насколько это возмжно. А насчет учить асм — очччень бы не помешало многим из тех, то себя называет прогарммером — не для того чтобы писать на нем все че ни попадя, а для того, чтобы выработался определенный способ мышелния.


VD>Писать хорошие программы и после появления дотнета, и еще очень долго-долго после его смерти будет сущим адом. Мне искренне жаль тех кто этого не осознает. Я могу придумать интересную программу в считанные минуты (ну, максимум дни), а на ее реализацию мне нужны годы. И не просто мне. Годы нужны огромным коолективам. При этом очень часто получается так, что по прошествии многих лет от того плана, не побоюсь этого слова, от той изначальной светлой мечты, остается бледная тень. В итоге мы имеем глючный ворд и никуда не годных конкурентов. Мы имеем 10 лет назад марально устаревшие РСУБД вместо ООБД и ХМЛБД. Имеем игры интеллект ботов в которых ниже интеллекта таракана на кухне. В обещм, имеем полную задницу.


Ну и какое отношение языки программирования имеют к ообд и интеллекту ботов? Не путай прогресс в науке и прогресс в инструментарии. А язык программирвоания — это не более чем инструмент решения задачи.

VD>Поэтому даже малейший шаг на встречу облечению этого сущего ада должно приветствоваться как приветствуются глоток воздука после трехминутной задержки дыхания.


Я приветствую Писал на шарпе сам, знаю че это такое — да, приятная вещь, то только как я уже сказал для определенного круга задач.

G>>Да не сказать, что прям такая уж необходимая и незаменимая вещь. Мож чегол-то не знаю конечно, но в моей практике ни разу на плюсах не понадобилась


VD>Видимо те кто ввели ее в свои языки небыли знакомы с твоей передавой практикой.


А к чему это тысказал?


VD>Так и вижу себе архитектора системы планирующего места размещения грабель и благодарного программиста обнаруживающего их своим лбом.


Давай ты будешь предметный разговор вести. А то "грабли!грабли!" а сказать ничего толком не хочешь.

VD>Если серьезно, то ты действительно думашь, что чтобы наступить на грабли, нужно их искать?


См. про грабли выше

G>>Насчет времени готов спорить...


VD>Спорь.



VD>Есть мнение, что решение любых задачь программирования — это процесс компоновки тех или иных паттернов и алгоритмов. И чем проще их компоновать, тем проще решать задачи.


Есть много разных мнений...



VD>Ну, да. Бесспорно! Задачи бухучета — это тупой последовательный вызов методов add/delete/update/print. Мы то с тобой как архитекторы это знаем. Не правда ли?


Да, мы калачи тертые... Раскинь-ка мне, почему такие сложные системы бухучета пишутся всеми кому ни лень — любая контора размером около 20 человек, не имеющих даже порой законченого высшего образования, с радостью берется слобать такой прожектец, чтоб на своем сайтиле в портфолио гордо вписать "системы бух. учета".

G>> Да, тут писать быстрее на шарпе, спору нет. Но как мне лично кажется на более/менее серъезной задаче (авиасимуляторы, компиляторы, сложные системы управления оборудованием, математические программы, графика) время проектирования, разработки алгоритмов и тому подобные вещи занимают настолько много времени,


VD>Скажи, так почему все таки бухгалтерские системы далеть на Шарпе проще? Ну, должно же быть этому логическое объяснение? Ну, не могия же это? Или магия?


Читаешь плохо? Я ж сказал — потому что бух. системы по своей сути не несут никакой тяжелой алгоритмичесмкой нагрузки — с точки зрения разработки 80% времени уходит именно на кодирование (которое на шарпе конечно быстрее чем на плюсах, но далеко не намного ) — то есть: нет никакого ресерча, зачастую не присутсвует оптимизация по скорости и данным (память и все такое — оно ведь не ресурс), то есть главное на что обращаем внимание — кодирование. Да, на шарпе оно проще — все-таки синтаксис попроще будет, за ресурсами следить не надо — то есть по времени процентов 10-15 будет выигрышь по сравнению с теми же плюсами. Для прожекта где, 80% — это то самое кодирование — это приличный плюс.

VD>И почему эта магия, по-твоему, не срабатывает на других задачах?


VD>Да, и за одно ответь:

VD>1. Почему авиасимулятор Ил2 использует Яву, а не написан целиком на С++? Он что бухгалтерию считает?

Могу ошибаться, но на жабе писаны некритичные по сокрости его части.
Вопрос встречный: почему борланд ЖБульдер такой тормозный?

VD>2. Почему я даже не мог подумать о создании собственного парсера на С++, а на Шарпе взялся и успешно его делаю?


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

VD>3. Почему МС предпочел дотнет для реализации большей части АПИ Авалона? Ведь это же графика нового поколения. Что же они совсем дебилы выбрать ничего не дающие технологии? А ведь им еще и людей переучивать пришлось. Ведь у них раньше были одни С++-ники.


Что такое авалон, где применяется, какие системные требования? Если минимум на 3ГГц + 128 м видео — тада смело отвечу — мс предпочел дотнет для писалова апи для авалона шоб лучше продавались новые процы от интела

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

VD>Не кажется все это странным?


Нет.

G>> что выигрышь в собственно кодировании будет весьма условный.


VD>Понимаш ли. Выгрыш в скорости реализации проектов создаваемых на базе дотнета определяется совершенно прагматическими соображениями. И выбор Шарпа в качестве основного языка тоже.


Повторюсь в тридцатый раз. Если мы с тобой, мы вдвоем, как два реальных пацана, Влад, (понимаешь, без лишних людей, шоб это было нашей маленькой тайной), выйдем за пределы прожектов, которые делаются в 90% контор на просторах снг, то увидим, что в подавляющем большенстве случаев язык реализации есть третье дело. В наших с тобой странах специфика другая — в основном требуется просто кодинг, где да — шарп дает преимущество в 10%, которого вполне достаточно, чтоюбы контора, регшающая задачи на .нете обошла контору решающую точно такие же задачи на плюсах. Но как имне видется так будет не всегда.

VD>Все очень просто. Дотнет позволяет сократить объем ошибок, а это значит меньше времени на отладку и экономия денег. Шарп позволяет не заморачиваться на поддржку разных паттернов, и больше сосредоточиться на процессе проектирования и идее/фичах программы. Вот такие банальные предпосылки. Но самое смешно, они работают. Чтобы убедиться в этом достаточно попробовать.


Каких ошибок? Синтаксических? Может быть. Но синтаксические ошибки не критичны — они отлавливаются мгновенно на этапе компиляции и не увеличивают время разработки. Логические? Но тут тебе уже язык не поможет. Если дизайн приложения крив, или у программиста квалификация недостаточно высокая, то на каком языке не делай, а его тока могила исправит.
Далее. Инетерсная фраза

Шарп позволяет не заморачиваться на поддржку разных паттернов

О чем это было сказано — какие паттерны? кто на что замарачивается? Ну хоть один пример приведи граблей или там заморочек.

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



VD>Бесспорно нюансы есть везде. Вот только объем этих нюаносв и их уровень совершенно разный. Это как при сравненнии ассемблера и С. Вроде возможностей у асма даже больше. И нюансы есть у обоих. Но вот объем и характер нюансов совершенно разный.


Как я уже упоминал, это не играет рояли — человек с хорошим уровнем как программер способен писать на любом языке — язык эт овсего лишь инструмент. Например. У знакомого в конторе работал человек-глыба по плюсам. Но его какого-то хрена засадили лобать на жабаскрипте минюшки и всякую подобеную лабуду. Он уже через неделю мог написать на жабаскрипте такой код, который работал и нормально отображался под любые браузеры, со всякими выплывающими фигнями и тп. Все-таки уровень знаешь ли...

G>> Но все таки в защиту моих плюсов могу сказать что пока что, насколько мне известно, такие монстры как МС, EA, Adobe, Sun и т.д. весьма активно пользуют плюсы — можно судить хотя бы по требованиям к вакансиям на их сайте.


VD>Используют. Что с того? МС даже С во всю использует. Ворд говорят в основном на С написан. (Видимо от того и глючит так безбожно .) Но тем неменее, в МС понимают, что деньги нужно экономить и уже переводит гору разработок на тот же Шарп. Сан тоже многое делает на Яве. Ну, да ява к сожалению не очень то притендует на универсальность.


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


VD>А ты помнишь сколько писали приложений на С++ в 1987 году? А ведь С++-у было как раз 2 года от роду. Как раз как сейчас дотнету. МС начал переходить с С на С++ только в 90-ых. С момента появления С++, к тому моменту, прошло почти 10 лет.


Ну и что? То есть думаешь что через 10 лет они перейдут на шарп? Сомневаюсь. Хотя бы просто потому что щас конторы намного больше чем щас, а занчит более инертные. Это как минимум. А в реале как я уже сказал, то потому что для таких контор вопросы моды на новое не играет рояль. Играет рояль эффективность. А эффективность зависит в данном случае далеко не от языка. Если бы они писали на коболе и имели такой же успех как щас используя плюсы то вопрос — зачем переводить такие большие конторы на другие, новые, необкатанные рельсы, если учесть что выгоды сомнительны — качественного скачка не будет точно, а убчтки будут однозначно.

VD>Ну, судя по Авалону и Индиге все же стоит.


А что такое авалон и индига?

G>> А то что мы видим сейчас в области .НЕТ — это чистый маркетинг. То есть не продукт подгоняется под рынок, а во многих случаях рынок подгноняется под продукт. Ваще это очень модный подход, и не только в ИТ — всякие там кока-колы и т.п., да практически все крупные компании, так делают. С точки зрения бизнеса конечно очень эффективно.


VD>Слава богу у менеджеров из МС хватило разума, чтобы понять, что успех продвижение новых технологий на 90% зависит от маркетинга. Ну, не умеют люди с благодарностью принимать плоды прогресса. Не отказыватья же от них по этому поводу? Мы так бы и сидели в командной строке запуская бач-файлы если бы не маркетологи из Эпла.


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

VD>Выходит так, раз такая куча народу не понимает стольк простых истин.


Каких истин. Ни одной не было. Были рассуждения на тему...
Удачи тебе, браток!
Re[83]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.12.04 09:21
Оценка: :)
Здравствуйте, slegkapjan, Вы писали:

VD>>История скоро изменится (с) Назад в будущее.

S>Это далеко еще не факт.

Имеющий уши да увидит.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[83]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.12.04 09:23
Оценка: -1
Здравствуйте, slegkapjan, Вы писали:

VD>>История скоро изменится (с) Назад в будущее.

S>Это далеко еще не факт.

Имеющий уши да увидит.
... << RSDN@Home 1.1.4 beta 3 rev. 267>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[90]: ToString()
От: slegkapjan  
Дата: 22.12.04 11:01
Оценка: -1
Здравствуйте, Sinclair, Вы писали:

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

S>>Зачем запрещать что-то? Между C++ и C# есть разница в философии построения языка.
S>А, ну то есть вместо доказательства "на с++ можно все" мы переходим к опровержению необходимости этого "всего". Все же почитай про CAS. Вкратце: это делается для того, чтобы вредоносный код не мог вызвать нехорошую вещь. Например, вирус, который ты выкачал из интернета под видом видеокодека, не сможет полезть управлять сервисами. Потому, что ему не дано такого разрешения. И это несмотря на то, что вирус выполняется под твоими пользовательскими привилегиями. На C# я помечаю опасный метод атрибутом, который говорит "здесь нужен специальный пермишшн". И код, которому не выдан пермишшн, не сможет вызвать этот метод.
А что может помешать вирусу модифицировать фреймворк и вызывать любые методы которые ему только вздумаются? Или же эта защита работает только для вриусов, написанных под .NET? При желании и для C++ можно придумать подобную защиту, и гораздо более действенную.

S>>Для большиства операционок небольшая часть кода написана на ассемблере, остальное на C++. Опять же C# использовать вместо C++ в этой связке невозможно.

S>Почему?
А потому, что нельзя определить что-то через него же самого. Нельзя написать фреймворк для C# на C#!

S>Ты написал, что любую C# программу ты сможешь заменить эквивалентной программой на С++, которая будет более быстрой. Тебе все еще неочевидно, что ты гонишь?

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

S>>А скажи пожалуйста, ты думаешь что можно в принципе написать фреймворк C# для любой платформы?

S>Естественно! А что нам может помешать? Скажи пожалуйста, какие особенности C# могут помешать написать фреймворк на любой платформе?
Т.е. ты утверждаещь, что, положим, можно написать фреймворк для PIC? Или для палмы с 300 килобайтами хипа?

S>Ну самое простое — есть приложение. К нему динамически подцепляются сборки (библиотеки). По команде пользователя создается инстанс произвольного класса из этой сборки, и вызывается произвольный метод по имени. Впрочем, зачем далеко ходить: давайте взглянем на .Net Explorer
Автор(ы): Андрей Мартынов
Дата: 24.12.2002
. Не мог бы ты воспроизвести его поведение средствами С++? Я подожду — в ближайшие год-два я не планирую уходить в оффлайн.

Знаешь, есть такая функция GetProcAddress() Вполне можно сделать нечто подобное и для классов.

S>>Я просто как раз-то и не понимаю сути вопроса. Ты можешь сказать конкретно что тебя интересует?

S>Вижу, что не понимаешь. Ты просто смотришь на C# через замочную скважину С++. Поэтому ты не видишь в нем почти что нихрена. Впрочем, именно про это была статья Пола Грэма. Это то же самое, как если бы чистый басик девелопер задавался вопросом "а нахрена нужен С++, если в нем нет даже номеров строк?!!"
Обязательно прочитаю.
Re[88]: ToString()
От: slegkapjan  
Дата: 22.12.04 11:27
Оценка: -1
D>Гуд. Рассуждаем дальше. Например, написание операционных систем — этот класс задач намного уже (читай, этим занимаются намного меньше людей) чем обычные бизнес системы.
D>Это значит, что ниша С++ должна стать и становится узкой за счет отбирание данной огромной области. Т.е. никто не говорит что С++ отстой. Просто в бизнесе ему делать нечего. Вот и все.
И с этим тоже согласен.
Re[94]: ToString()
От: slegkapjan  
Дата: 22.12.04 13:15
Оценка: -1
S>>>Попробуй. Можешь хотя бы на пальцах объяснить, как ты на С++ реализуешь код, принимающий решение о возможности вызова в зависимости от того, откуда сделан вызов?
S>>См. выше. Просто поддержка будет не со стороны языка, а со стороны ОС -- что гораздо правильнее.
S>Не вижу выше никаких идей про то, как это можно было бы реализовать со стороны ОС. При этом так, чтобы можно было управлять этим из С++, не изменяя языка.
Что конкретно вызывает твои сомнения?
Re[96]: ToString()
От: slegkapjan  
Дата: 22.12.04 14:56
Оценка: -1
S>Ага, ну что ж, идея ясна. Возможно, это действительно доказательство утверждения номер 1. Хотя я бы не стал утверждать этого категорично — вдруг найдется опровержение этого доказательства .
Ну это я просто так придумал, первое что пришло в голову.
В принципе, большую разницу дает то, что C++ более низкоуровневый язык, плюс всякие надстройки фреймворка тормозят.
Но C# не позиционируется как язык для реализации каких-то алгоримтически сложных задач, так что это вряд ли можно считать большим минусом.
Опять С++ vs С#
От: vdimas Россия  
Дата: 05.11.04 08:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>С каких пор коллектив стал состоять из объектов, а не субъктов. Я привел список современных языков которые по мнению очень большого количества народа считаются очень стройно спроектированными и я даже сказал бы лидерами отросли. Довольно характерно, дизайнеры этих языков все как один выбрали "порочный" путь. И довольно характерно, что результат значительно превосходит предшественников. Люди создававшие все эти языки сделали свой выбор совершенно осознанно. Опты того же С++ ими учитывался. И к сожалению для С++ во многом опыт С++ был признан негативным.


Странно, но пока что ничего серьезного не было написано не на С++.
Приведи хоть одну серьезную (или коммерчески успешную) систему на дотнете или питоне?



26.11.04 17:38: Ветка выделена из темы ToString()
Автор: Геннадий Васильев
Дата: 03.11.04
— AndrewVK
15.12.04 18:36: Перенесено модератором из 'Философия программирования' — AndrewVK
Re[37]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.11.04 18:31
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Странно, но пока что ничего серьезного не было написано не на С++.

V>Приведи хоть одну серьезную (или коммерчески успешную) систему на дотнете или питоне?

Таких море. Просто понятие комерческого успеха сильно растяжимо. Есть и игры, и системы автоматизации, и море сайтав (хотел бы я посмотреть на сайт на С++). И не стоит забывать, что дотнету два года. На той же Яве на сегодня уже половина индустрии учетно-управленческого софта сидит. А вот С++ в этой области вообще не видно.

Что касается конкретных ссылок... я их не коллекционирую. На этом форуме они не раз пробегали. Можешь глянуть.

Ну, и глянь за одно на подпись в моем сообщении.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[38]: Опять С++ vs С#
От: vdimas Россия  
Дата: 09.11.04 00:25
Оценка:
Здравствуйте, VladD2, Вы писали:

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


V>>Странно, но пока что ничего серьезного не было написано не на С++.

V>>Приведи хоть одну серьезную (или коммерчески успешную) систему на дотнете или питоне?

VD>Таких море. Просто понятие комерческого успеха сильно растяжимо. Есть и игры,

Нет коммерчески успешных игр и не предвидится еще ооочень долго. Цикл разработки современной игрухи ныне 2-3 года, пока мы не слышали анонсов о том, что кто-то из заметных игроков на этом рынке начал писать на дотнете современный 3D-движок.

VD>и системы автоматизации

ИМХО, дотнет тут не у С++ рынок отбирает, а у VB (у них) и у Дельфи и 1С у нас


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

Правильно, сайты это да...
Тут дотнет отнимает рынок у ASP и PHP, опять же, не у С++, ибо на С сайты были, на С++ наверно уже нет (из-за того, что perl поспел одновременно с С++)

VD>Ну, и глянь за одно на подпись в моем сообщении.

Кстати, а что это? И где можно посмотреть?

---------
Да я и сам участвовал в разработке учетной системы на дотнете для штатовских магазинов мобильников, но не могу считать это "серьезным". Axapta — то да, но разве она целиком на дотнете?
Re[39]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.11.04 22:32
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Нет коммерчески успешных игр и не предвидится еще ооочень долго. Цикл разработки современной игрухи ныне 2-3 года, пока мы не слышали анонсов о том, что кто-то из заметных игроков на этом рынке начал писать на дотнете современный 3D-движок.


Видимо проблемы со слухом, так как уже даже есть вполне успешные проекты. Вот поищи в гугле ArenaWarsDemoEnglishAndGerman.exe, например.

Вот скриншотик:


VD>>и системы автоматизации

V>ИМХО, дотнет тут не у С++ рынок отбирает, а у VB (у них) и у Дельфи и 1С у нас

И у С++ в том числе.


V>Правильно, сайты это да...


А что ж так? Такой виликий языки и вдруг сайты не тяент? Не уж-то надежности не хватет?

V>Тут дотнет отнимает рынок у ASP и PHP, опять же, не у С++, ибо на С сайты были, на С++ наверно уже нет (из-за того, что perl поспел одновременно с С++)


Ага. Потому-что даже дохлые скрипты вроде ASP и PHP и те смогли у С++ тут рынок отнять. А ведь первые динамические сайты писались как раз на С/С++. CGI помнишь?

VD>>Ну, и глянь за одно на подпись в моем сообщении.

V>Кстати, а что это? И где можно посмотреть?

http://gzip.rsdn.ru/janus/article/article.xml

V>---------

V>Да я и сам участвовал в разработке учетной системы на дотнете для штатовских магазинов мобильников, но не могу считать это "серьезным". Axapta — то да, но разве она целиком на дотнете?

Погоди немного и код на С++ будешь искать в красной книге.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[40]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.11.04 22:32
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Вот еще достаточно интересное мнение по поводу некоторых трудностей при использовании языков со сборкой мусора для разработки игр.


Ага. Мнений море. Вот только чущь полная. Игры то работают. Сборка мусора в среднем занимает около 10 милесекунд с интервалом несколько секунд. А то и реже/быстрее.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.11.04 13:52
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Кроме того, CGI изначально считался относительно медленным, ибо запуск дополнительного процесса. В качестве альтернативы фильтры IIS знаешь?


Ты удивишся — знаю.

ГВ> С другой стороны, причём тут "отъятие рынка"? ASP и PHP скорее у HTML-кодеров рынок отнимают.


При том, что изначально рынок был тоже под С/С++, но народ понял, что кодировать нужно много, а софт получается серверным. Так что надежность кода и скорость кодирования людей стали не удовлетворять. На сегодня на С/С++ пишут веб-нутые приложения только мазохисты. Хотя конечно возможностей хватеет.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[42]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 12.11.04 17:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ГВ>>Кроме того, CGI изначально считался относительно медленным, ибо запуск дополнительного процесса.

AVK>Про FastCGI никогда не слышал?

Слышал, разумеется. Но "классика", всё-таки — это CGI.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[43]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 12.11.04 19:23
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Слышал, разумеется. Но "классика", всё-таки — это CGI.


И что с того?
... << RSDN@Home 1.1.4 beta 3 rev. 231>>
AVK Blog
Re[43]: Опять С++ vs С#
От: vdimas Россия  
Дата: 18.11.04 23:13
Оценка:
Вопрос на засыпку. Сейчас имеем DX9.

Какой DX по счету будет полностью на дотнете писан?
Re[43]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 09:40
Оценка:
Здравствуйте, vdimas, Вы писали:

V>мешало еще на тот момент то, что в юнихах не было единой модели threads. тогда как раз в линухе появились динамически подгружаемые модули, можно было бы развить до очень эффективной системы...


Ну так в виндах изначально были и потоки, и сервисы, и быстрый IPC для коммуникации. Однако ж и там оно не пошло.
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[41]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 09:40
Оценка:
Здравствуйте, vdimas, Вы писали:

V>панимашь, писать алгоритмы — это одно, а при разработке сайтов 90% работы — это проставление визуальных св-в у элементов. тут нужна среда, которая не требует компиляции. видел как сайт-девелопер работает? подкрутит что-то — тут же просмотрит страницу в соседнем окне, и т.д.


А как же JSP и ASP.NET? Там ведь компиляция.
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[44]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 09:40
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Какой DX по счету будет полностью на дотнете писан?


А зачем?
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[43]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 12:18
Оценка:
Здравствуйте, vdimas, Вы писали:

V>дык, компиляция "по-требованию"


Ну и что что "по-требованию"? Что от этого меняется?

V>(в ASP.Net более удачная, чем в JSP),


А в чем разница?

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


Для этого компонентная модель не нужна, достаточно умение делать dll.

V>осталось дождаться, когда на клиентской стороне в качестве языка скрипта к DHTML получит распространение C#, ибо писать страницу на ASP.Net/C# и делать вставки кода на JavaScript... в общем, ощущение корявости подхода не покидает.


Дык XAML.
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[45]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 13:21
Оценка:
Здравствуйте, vdimas, Вы писали:

AVK>>Для этого компонентная модель не нужна, достаточно умение делать dll.


V>Разумеется, технологических препятствий для реализации подобной системы на С++ нет.

V>Но вот скорость перекомпиляции оставит желать лучшего (ближайшие несколько лет, по крайней мере),

Вот с этого и надо было начинать. Причина таки в самом языке.

AVK>>Дык XAML.


V>это в ASP.Net 2.0 уже поддерживается?


А при чем тут ASP.NET? Это отдельная технология, пока в стадии альфы. Обещают сегодня выложить первый Avalon SDK CTP.
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[46]: Опять С++ vs С#
От: vdimas Россия  
Дата: 19.11.04 14:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>>>Для этого компонентная модель не нужна, достаточно умение делать dll.


V>>Разумеется, технологических препятствий для реализации подобной системы на С++ нет.

V>>Но вот скорость перекомпиляции оставит желать лучшего (ближайшие несколько лет, по крайней мере),

AVK>Вот с этого и надо было начинать. Причина таки в самом языке.


Ну блин, по кругу ходим. Если раньше ASP.Net не потянуло бы железо, то проблема, очевидно, была бы в C#.
Если через сколько-то лет станет приемлимой время перекомпиляции подобной системы на С++, то эта причина в языке исчезнет.

AVK>А при чем тут ASP.NET? Это отдельная технология, пока в стадии альфы. Обещают сегодня выложить первый Avalon SDK CTP.


Ну... значит пока подождет
Re[47]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 15:02
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Если через сколько-то лет станет приемлимой время перекомпиляции подобной системы на С++, то эта причина в языке исчезнет.


Вот когда станет, тогда и поговорим. А пока что этого нет.
... << RSDN@Home 1.1.4 beta 3 rev. 232>>
AVK Blog
Re[44]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 19.11.04 20:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ГВ>>Слышал, разумеется. Но "классика", всё-таки — это CGI.

AVK>И что с того?

Это, почти наверняка, сказалось на распространённости технологи. Уж коль скоро CGI была дискредитирована стереотипом, то...
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[48]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 19.11.04 20:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

V>>Если через сколько-то лет станет приемлимой время перекомпиляции подобной системы на С++, то эта причина в языке исчезнет.

AVK>Вот когда станет, тогда и поговорим. А пока что этого нет.

Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии. А проблему со временем отклика можно урегулировать.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[49]: Опять С++ vs С#
От: alexeiz  
Дата: 19.11.04 20:37
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


V>>>Если через сколько-то лет станет приемлимой время перекомпиляции подобной системы на С++, то эта причина в языке исчезнет.

AVK>>Вот когда станет, тогда и поговорим. А пока что этого нет.

ГВ> Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии. А проблему со временем отклика можно урегулировать.


ATL Server?
Re[45]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 20:51
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>>>Слышал, разумеется. Но "классика", всё-таки — это CGI.

AVK>>И что с того?

ГВ>Это, почти наверняка, сказалось на распространённости технологи. Уж коль скоро CGI была дискредитирована стереотипом, то...


Опять ты конспирологией занялся
... << RSDN@Home 1.1.4 beta 3 rev. 231>>
AVK Blog
Re[49]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 19.11.04 20:51
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


V>>>Если через сколько-то лет станет приемлимой время перекомпиляции подобной системы на С++, то эта причина в языке исчезнет.

AVK>>Вот когда станет, тогда и поговорим. А пока что этого нет.

ГВ> Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии.


Ну то есть кто то все таки мешает?
... << RSDN@Home 1.1.4 beta 3 rev. 231>>
AVK Blog
Re[46]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 19.11.04 21:55
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ГВ>>Это, почти наверняка, сказалось на распространённости технологи. Уж коль скоро CGI была дискредитирована стереотипом, то...

AVK>Опять ты конспирологией занялся

Да ну брось. Причём тут конспирология? Сам же знаешь, что не всегда технологии выбираются на основании их точной оценки и взвешивания.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[44]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.04 01:25
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Какой DX по счету будет полностью на дотнете писан?


Я не знаю еще не одного продукта МС который дожил бы без переписывания до 20 версии. Так что к 20-ой точно перепишут.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[46]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.04 01:25
Оценка:
Здравствуйте, vdimas, Вы писали:

V>собственно, к этому вопросу я и вел


А зачем он к этому велся? Что это не дает возможность писать игры на дотнете?

Ты скачал игрушку — то? Как она сильно тормозит?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[41]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.04 01:25
Оценка:
Здравствуйте, vdimas, Вы писали:

V>интерпретируемости не хватает.


А C# значит хватает?

V>а ты не знал, что С++ предназначен для компиляции?


Как я понимаю, ASP.Net-у интерпретируемости хватает. Ну, а так как ASP.Net-странички можно писать и на С++, то значит и ему хватает.

VD>>Ага. Потому-что даже дохлые скрипты вроде ASP и PHP и те смогли у С++ тут рынок отнять. А ведь первые динамические сайты писались как раз на С/С++. CGI помнишь?


V>прекрасно помню. в твоей фразе ключевое слово — "скрипты".

V>второе ключевое слово — "дохлые"

Это ты просто ключевые фразы пока плохо умешь выделять. В моей фаразе главное было "рынок отнять".

V>кстати, ситуевина.

V>есть сервак приложений на С++. К нему добавили вэб-интерфейс на ASP. так на чем сайт?

На земле. Лезит сайт.

V>панимашь, писать алгоритмы — это одно, а при разработке сайтов 90% работы — это проставление визуальных св-в у элементов.


А. Ну, знатокам виднее.


V> тут нужна среда, которая не требует компиляции.


Вроще VS с C#-ом?

V> видел как сайт-девелопер работает?


Ага. Видишь этот сайт? Вот на нем и видел.

V> подкрутит что-то — тут же просмотрит страницу в соседнем окне, и т.д.


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

V>и еще. эти ASP и PHP отобрали рынок у С++ в период WWW-бума, когда вчерашние кухарки переучивались на вэб-мастеров. (именно так и обстояли дела в штатах). Тупая несложная работа, а С++ программеру платить надо


А, ну-ну. Погоди немного и вообще работу отберут. Зачем платить больше, а получать меньше?

VD>>Погоди немного и код на С++ будешь искать в красной книге.


V>между словами "и" и "код" вставил бы слово "хороший".


Между буквами я и ...

V>а плохой я буду искать в исходниках очередного Ротора.


Ну, счастливых тебе поисков.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[47]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.11.04 01:25
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Ну блин, по кругу ходим. Если раньше ASP.Net не потянуло бы железо, то проблема, очевидно, была бы в C#.


А причем тут раньше?

V>Если через сколько-то лет станет приемлимой время перекомпиляции подобной системы на С++, то эта причина в языке исчезнет.


Ты ради хохмы создай страничку того же ASP.Net на МС++. Увидишь, что скорости компиляции за глаза хватает. Но МС++ все равно никто для этих целей не использует. И это потому, что толку от МС++ нет, а гемороя с ним больше. Т.е. потому, что в этой области он уже полностью пошел на свалку.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
C++ server pages
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.11.04 03:30
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ты ради хохмы создай страничку того же ASP.Net на МС++. Увидишь, что скорости компиляции за глаза хватает. Но МС++ все равно никто для этих целей не использует. И это потому, что толку от МС++ нет, а гемороя с ним больше. Т.е. потому, что в этой области он уже полностью пошел на свалку.


Вот не надо гнать, ладно?

Ходи сюда и смотри. Крайний апдейт — 18 ноября этого года.

И вообще, да поможет тебе Google.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[51]: Опять С++ vs С#
От: alexeiz  
Дата: 20.11.04 07:21
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

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


ГВ>>> Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии. А проблему со временем отклика можно урегулировать.


A>>ATL Server?


ГВ>Не, вот это: C++ server pages


Выглядит как-то примитивно. Конечно, если нужно иметь C++ код прямо внутри HTML, то это, наверное, единственное решение.
Re[52]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 20.11.04 08:03
Оценка:
Здравствуйте, alexeiz, Вы писали:

ГВ>>Не, вот это: C++ server pages

A>Выглядит как-то примитивно. Конечно, если нужно иметь C++ код прямо внутри HTML, то это, наверное, единственное решение.
А ты думаешь, JSP выглядит намного оригинальней? Принцип-то один и тот же.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: C++ server pages
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 24.11.04 17:51
Оценка:
Здравствуйте, VladD2, Вы писали:

ГВ>>Ходи сюда и смотри. Крайний апдейт — 18 ноября этого года.

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

ГВ>>И вообще, да поможет тебе Google.

VD>Спасибо, но я как-нибудь без этого.
Up on You.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[54]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 25.11.04 11:00
Оценка:
Дарней,

> C++ очень опасно применять для кода, который регулярно будет изменяться, особенно — если это серверный код.


Это почему?
Posted via RSDN NNTP Server 1.9 gamma
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[60]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.11.04 19:50
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Но вот как человек, который разгребает чужой код и пытается проконтролировать правильность кодирования — люто его ненавижу


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

Д>Многие люди отказываются от C++, и среди них немало людей с высокой квалификацией. И делают они это совсем не от хорошей жизни.


+1

Среди нашего топа таких людей не мало.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[61]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.11.04 02:35
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>VladD2,


>> Неплохо было бы аргументировать этот набор ничем не обоснованных заявлений.


ПК>Гм... Читать умеем?


Умеем. Остается выяснить умеем ли мы аргументировать.

ПК> Аргументация и/или примеры присутствуют. Если какие-то из аргументов полагаешь недостаточными, приводи контрпримеры, опровергай и т.п. Если есть какие-то конкретные положения, для которых аргументация отсутствует, указывай конкретно.


Довольно глупо переписывать половину твоих реплик.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[61]: Опять С++ vs С#
От: Дарней Россия  
Дата: 26.11.04 05:17
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Что-то я не очень понимаю, как unsafe поможет в достижении перечисленных выше моментов...


Просто для всего, что ты перечисил, в C# есть аналог или что-то на замену. (ну за исключением генериков, которые еще недоступны для большинства)
А вот для тех (редких) случаев, когда производительности C# не хватает — для них и нужен unsafe
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[44]: Опять С++ vs С#
От: LSL  
Дата: 26.11.04 17:12
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Какой DX по счету будет полностью на дотнете писан?


Неужели новый API WGF, который будет заменой DirectX и который появится в первой бете Лонгхорна будет построен по COM-модели ?

Windows Graphics Foundation [WinHEC 2004; 622 KB]
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[63]: ToString()
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 26.11.04 22:24
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


В текущем проекте, который уже 2 года живет, не было ни одного случая потери ресурсов из-за забытого using. Веришь?
... << RSDN@Home 1.1.4 beta 3 rev. 236>>
AVK Blog
Re[40]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.11.04 00:03
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Вот еще достаточно интересное мнение по поводу некоторых трудностей при использовании языков со сборкой мусора для разработки игр.


Для не верующих Фом...

Вот ссылка на сравнение двух 3D-движков. Ogre — исходный движек писанный на С++. Axiom — C#-порт Ogre.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[40]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.11.04 00:09
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Вот еще достаточно интересное мнение по поводу некоторых трудностей при использовании языков со сборкой мусора для разработки игр.


Вот еще ссылочка http://axiomengine.sourceforge.net/modules.php?name=Forums&amp;file=viewtopic&amp;p=926
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[64]: ToString()
От: alexeiz  
Дата: 29.11.04 07:52
Оценка:
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, Павел Кузнецов, Вы писали:


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


Д>Можно рассматривать это и как плюс. Большое количество скрытой активности в деструкторах часто очень осложняет жизнь. Кстати говоря, выброс исключения из Dispose не может обрушить прогу — в отличие от C++


Зато исключение в Dispose может оставить программу в неопределенном состоянии, и это явно хуже, чем "обрушить прогу". И кстати, не "обрушить", а вызвать terminate(), в котором ты волен произвести необходимые действия перед завершением (послать crash dump разработчику, например).
Re[65]: ToString()
От: Дарней Россия  
Дата: 29.11.04 08:29
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Зато исключение в Dispose может оставить программу в неопределенном состоянии, и это явно хуже, чем "обрушить прогу"


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

A>И кстати, не "обрушить", а вызвать terminate(), в котором ты волен произвести необходимые действия перед завершением (послать crash dump разработчику, например).


Программа перестанет работать, не сохранив своих данных, не завершив сеанс работы и т.п. Крэш дамп конечно поможет разработчикам, но юзеру от этого легче не станет
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[67]: ToString()
От: Дарней Россия  
Дата: 29.11.04 12:13
Оценка:
Здравствуйте, alexeiz, Вы писали:

Параллели между Dispose() и деструкторами С++ очевидны, но это все-таки не одна и та же вещь.
Я не сомневаюсь, что в случае C++ выброс исключения во время раскрутки стека приводит к неопределенному поведению. Но приведет ли к неопределенному поведению в .NET — это еще не факт. Я не сомневаюсь, что архитекторами эта проблема обдумывалась (в отличие от некоторых других ) — судить можно хотя бы по приведенному выше факту. Как показал тест — сначала завершаются вызовы Dispose для всех объектов текущего блока, и только затем продолжается раскрутка стека. Происходит это независимо от того, было ли выброшено исключение одним из вызванных методов, или нет.
Единственная неопределенность в данном случае — это вопрос о том, какое из исключений будет обрабатываться далее — то, которое изначально привело к раскрутке стека, или одно из тех, которые возникли во время процесса раскрутки. Судя по результатам эксперимента — обрабатываться будет то, которое было выброшено последним. Это действительно не очень хорошо, т.к. информация о предыдущих исключениях теряется. Однако, неопределенного поведения здесь все-таки нет.

Поэтому мне хотелось бы получить или детальные пояснения, или точные ссылки на оные. Потому что перекапывать целый раздел Юзнета в поисках неких туманных подтверждений твоей правоты — на это времени у меня уж совершенно нет.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[66]: ToString()
От: Павел Кузнецов  
Дата: 29.11.04 12:37
Оценка:
Дарней,

> A> И кстати, не "обрушить", а вызвать terminate(), в котором ты волен произвести необходимые действия перед завершением (послать crash dump разработчику, например).

>
> Программа перестанет работать, не сохранив своих данных, не завершив сеанс работы и т.п.

Все зависит от желания разработчика. Может и сохранить.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[67]: ToString()
От: Дарней Россия  
Дата: 29.11.04 13:16
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Все зависит от желания разработчика. Может и сохранить.


В принципе — можно. Если сначала удостовериться, что terminate вызван по причине исключения при раскрутке стека, а не какой-то другой. Не уверен, что такую проверку легко сделать.
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[69]: ToString()
От: Дарней Россия  
Дата: 29.11.04 13:48
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


Это и правда не очень хорошо. Но ответственность за вызов Dispose для дочерних объектов все равно лежит на программисте. А он может просто забыть вызвать их вообще — эффект будет тот же
На самом деле, для такого случая (достаточно редкого) можно сделать специальную обработку в виде блока try при каждом вложенном вызове Dispose. Это все равно лучше, чем делать такую обработку всегда, в каждом деструкторе
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[69]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.11.04 17:07
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

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


Ты уже если не знаешь, то старайся спрашивать а не понимать. Обработака диспоз делается по следующему паттерну:
using System;

class Test : IDisposable
{
    public Test(string name) { _name = name; }
    
    string _name;
    
    public void Dispose()
    {
        Console.WriteLine(_name + ".Dispose()");
        throw new Exception("Exception in Dispose... (" + _name + ")");
    }
}

class Program
{
    static void Main(string[] args)
    {
        try
        {
            using (Test t1 = new Test("t1"))
            using (Test t2 = new Test("t2"))
            {
                Console.WriteLine("in using...");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}


...
    static void Main(string[] args)
    {
        try
        {
            Test t1 = new Test("t1");
            try
            {
                Test t2 = new Test("t2");
                try
                {
                    Console.WriteLine("in using...");
                }
                finally
                {
                    if (t2 != null)
                        t2.Dispose();
                }
            }
            finally
            {
                if (t1 != null)
                    t1.Dispose();
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
}


Ну, и соотвествующий выводв:
in using...
t2.Dispose()
t1.Dispose()
Exception in Dispose... (t1)
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[68]: ToString()
От: Павел Кузнецов  
Дата: 29.11.04 18:57
Оценка:
Дарней,

> ПК>Все зависит от желания разработчика. Может и сохранить.


> В принципе — можно. Если сначала удостовериться, что terminate вызван по причине исключения при раскрутке стека, а не какой-то другой. Не уверен, что такую проверку легко сделать.


Я не вижу необходимости именно в такой проверке, т.к. все причины, по которым реализация может вызвать std::terminate, так или иначе связаны с обработкой исключений, и в равной степени фатальны для приложения. Может понадобиться отличать вызовы std::terminate() до инициализации, во время работы программы, и после завершения main(). Но как раз это сделать легко. Теоретически еще может понадобиться отличать вызовы, произошедшие в результате std::unexpected(), но и это делается легко.

15.5.1 The terminate() function

1 In the following situations exception handling must be abandoned for less subtle error handling techniques:
— when the exception handling mechanism, after completing evaluation of the expression to be thrown but before the exception is caught (15.1), calls a user function that exits via an uncaught exception,134)
— when the exception handling mechanism cannot find a handler for a thrown exception (15.3), or
— when the destruction of an object during stack unwinding (15.2) exits using an exception, or
— when construction or destruction of a non-local object with static storage duration exits using an exception (3.6.2), or
— when execution of a function registered with atexit exits using an exception (18.3), or
— when a throw-expression with no operand attempts to rethrow an exception and no exception is being handled (15.1), or
— when unexpected throws an exception which is not allowed by the previously violated exception-specification, and std::bad_exception is not included in that exception-specification (15.5.2), or
— when the implementation’s default unexpected_handler is called (18.6.2.2)
2 In such cases,

void terminate();

is called (18.6.3). In the situation where no matching handler is found, it is implementation-defined whether or not the stack is unwound before terminate() is called. In all other situations, the stack shall not be unwound before terminate() is called. An implementation is not permitted to finish stack unwinding prematurely based on a determination that the unwind process will eventually cause a call to terminate().

Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[70]: ToString()
От: Павел Кузнецов  
Дата: 29.11.04 19:18
Оценка:
Дарней,

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


> Это и правда не очень хорошо. Но ответственность за вызов Dispose для дочерних объектов все равно лежит на программисте. А он может просто забыть вызвать их вообще — эффект будет тот же


Именно это я и подразумевал под отсутсвием альтернативы деструкторам C++.

> На самом деле, для такого случая (достаточно редкого) можно сделать специальную обработку в виде блока try при каждом вложенном вызове Dispose. Это все равно лучше, чем делать такую обработку всегда, в каждом деструкторе


Там тоже не все так просто: в таком случае информация о неосвобожденных ресурсах будет потеряна. Об аналогичных проблемах в Java была целая статья в журнале Overload, "Handling Exceptions in finally" (Tony Barret-Powell). В on-line, к сожалению, найти не могу...
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[70]: ToString()
От: Павел Кузнецов  
Дата: 29.11.04 19:22
Оценка:
VladD2,

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

>
> Ты уже если не знаешь, то старайся спрашивать а не понимать. Обработака диспоз делается по следующему паттерну:
>
> using System;
>
> class Test : IDisposable
> {
>     public Test(string name) { _name = name; }
>     
>     string _name;
>     
>     public void Dispose()
>     {
>         Console.WriteLine(_name + ".Dispose()");
>         throw new Exception("Exception in Dispose... (" + _name + ")");
>     }
> }
>


Это ответ совсем на другой вопрос. Тенденция, однако...

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

т.е. код должен быть немного модифицирован:
class Test : IDisposable
{
     public Test(string name) { _name = name; }

     string _name;

     public void Dispose()
     {
         Console.WriteLine(_name + ".Dispose()");
         throw new Exception("Exception in Dispose... (" + _name + ")");

         // вот здесь должны быть добавлены вызовы других функций, в частности, Dispose других, возможно, содержащихся в Test объектов
     }
}
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[72]: ToString()
От: Павел Кузнецов  
Дата: 30.11.04 14:53
Оценка:
Дарней,

> ПК> Именно это я и подразумевал под отсутсвием альтернативы деструкторам C++.


> Такова плата за GC.


Не вполне... В C++/CLI введена возможность детерминированного вызова Dispose, например, для автоматических объектов при выходе за пределы блока.

> Если уж искать в языках недостатки, то можно еще много чего вспомнить... например, совершенно уникальный std::auto_ptr с его разрушающим копированием (честное слово — ума не приложу, как вообще комитет мог пропустить такие грабли)


Отчего же... Наоборот, хотят языковую поддержку для move constructors ввести. Это не "грабли", это "фича" — специальный способ указать на передачу владения. Если эта семантика не нужна, следует использовать другие указатели.

> В любом случае — C# меня вполне устраивает, и устраивает больше, чем C++


"Каждый выбирает для себя..."
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[70]: ToString()
От: Шахтер Интернет  
Дата: 02.12.04 01:58
Оценка:
Здравствуйте, folk, Вы писали:

F>Здравствуйте, Павел Кузнецов, Вы писали:


F>Понятно, что не стоит допускать ситуаций, когда при необработанном исключении генерируется еще одно. Но раз уж такое случается, то надо с этим как-то жить, и нетовский подход представляется мне более цельным, чем С++овый.


F>Этот код

F>
F>A a;
F>throw "exception";
F>

F>можно представить так без автоматического вызова конструкторов/деструкторов
F>
F>A a; // только выделение памяти на стеке
F>a.ctor();
F>try {
F>  throw "exception";
F>} catch(...) {
F>  a.dtor();
F>  throw;
F>}
F>a.dtor();
F>

F>разница только в одном — если деструктор A бросает исключение, то в первом примере получим terminate(), а во втором дальше полетит исключение, выброшенное деструктором.

F>В этом отличии и заключается нелогичность.


Да нет, это логично -- рапортуем о первичной ошибке. Если в процессе восстановления после ошибки возникла другая ошибка, то это вторичная ошибка, она менее значима. Это ситуация называется double error, и современные прцессоры, например, после этого уходят на перезагрузку.

F>Было бы логичнее предъявлять к деструкторам не более жесткие требования, чем к любым функциям, которые могут быть вызваны из catch.

F>Из catch может быть выброшено как "неожиданное" исключение (например пытаемся выделить память в обработчике и получаем bad_alloc), так и "ожидаемое" (специально выбрасываем новое исключение). Оба эти варианта справедливы и для деструкторов, а значит исключения из деструкторов (при уже активном исключении) должны приводить к тому же — замене старого исключения на новое, а не к terminate().

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

template <class T>
T * GetExceptionObject();


class MyException
 {
  public:
  
   void cascade(MyException);
 };

template <class T>
T * GetExceptionObject();

class Test
 {
  public:
  
   void cleanup() throw(MyException);
 
   ~Test();
 };

Test::~Test()
 {
  try
    {
     cleanup();
    }
  catch(MyException ex)
    {
     if( !uncaught_exception() ) throw;
     
     if( MyException *previous_ex=GetExceptionObject<MyException>() )
       {
        previous_ex->cascade(ex);
       }
     else
       {
        // cannot do anything, ex will be dropped
       }
    }
 }
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[71]: ToString()
От: folk Россия  
Дата: 02.12.04 07:55
Оценка:
Здравствуйте, Шахтер, Вы писали:

F>>Понятно, что не стоит допускать ситуаций, когда при необработанном исключении генерируется еще одно. Но раз уж такое случается, то надо с этим как-то жить, и нетовский подход представляется мне более цельным, чем С++овый.


F>>разница только в одном — если деструктор A бросает исключение, то в первом примере получим terminate(), а во втором дальше полетит исключение, выброшенное деструктором.


F>>В этом отличии и заключается нелогичность.


Ш>Да нет, это логично -- рапортуем о первичной ошибке. Если в процессе восстановления после ошибки возникла другая ошибка, то это вторичная ошибка, она менее значима. Это ситуация называется double error, и современные прцессоры, например, после этого уходят на перезагрузку.


Насчет значимости ошибок. Ты неявно предполагаешь, что вторая является следствием первой, но "вторая ошибка" совсем не значит "вторичная ошибка":
{
  some_resource res1; // деструктор бросит исключение независимо от res2
  some_resource res2; // конструктор бросит исключение
}

Почему же исключение из деструктора res1 вторично? Оно возникает позже, но они скорее равнозначны. Я не могу сказать, которое из них нужнее в общем случае, но пусть будет последнее для согласованности с поведением catch.

Насчет современных процессоров — это просто аналогия.
Мне ближе другая аналогия — если в catch-обработчике, отвечающем за восстановаление после ошибки, возникает ошибка, то дальше обрабатывается именно эта вторая ошибка. Т.е. прецедент в языке уже есть, и было бы логично, чтобы весь код, связанный с восстановлением после ошибок работал по единой схеме. Раз уж нет общего хорошего решения для ситуаций с одновременной генерацией нескольких исключений, то я бы предпочел более простую и понятную схему, а особо важные места обкладывал бы try/catch, завершая приложение вручную, если надо. Здесь был бы очень кстати флаг, показывающий что произошло более одного исключения.

F>>Было бы логичнее предъявлять к деструкторам не более жесткие требования, чем к любым функциям, которые могут быть вызваны из catch.

F>>Из catch может быть выброшено как "неожиданное" исключение (например пытаемся выделить память в обработчике и получаем bad_alloc), так и "ожидаемое" (специально выбрасываем новое исключение). Оба эти варианта справедливы и для деструкторов, а значит исключения из деструкторов (при уже активном исключении) должны приводить к тому же — замене старого исключения на новое, а не к terminate().

Ш>На самом деле, самым правильным решением было бы реализация каскадирования исключений. Т.е. один объект исключения должен уметь цепляться к другому. А для этого в современный С++ надо всего лишь добавить функцию, возвращающую текущий объект-исключение.


[]

Каскадирование — это хорошо, но все равно получается слишком сложный код, чтобы не допустить terminate().
Да и сама возможность прицепить что-либо (например описание контекста возникновения) к текущему исключению — нужная фича. К скожалению к std::exception фиг что прицепишь даже из catch.
На самом деле, люди не читают газеты, они принимают их каждое утро, так же как ванну. ©Маршалл Мак-Льюэн
Re[41]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 08.12.04 16:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Сборка мусора в среднем занимает около 10 милесекунд с интервалом несколько секунд. А то и реже/быстрее.


Уупс. Целых 10 миллисекунд?! Куда столько?! — этож почти целый кадр. Как говорится в малоизвестном стишке "вы охренели, братья румыны". За 10 миллисекунд я успеваю чисто софтварно отрендерить целую страницу мелкого текста (и Adobe Acrobat, кстати, тоже успевает).
Может все-таки, 10 микросекунд?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[44]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 08.12.04 19:40
Оценка:
Serginio1,

> ПК> если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму. Вопрос только в стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной.


> Выход в создании своего менеджера памяти с использованием валуе типов (массивов байт). Все зависит от задачи и нормально решаемо.


Гм... В чем здесь противоречие с выделенным?
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[42]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.12.04 21:43
Оценка:
Здравствуйте, McSeem2, Вы писали:

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


VD>>Сборка мусора в среднем занимает около 10 милесекунд с интервалом несколько секунд. А то и реже/быстрее.


MS>Уупс. Целых 10 миллисекунд?! Куда столько?! — этож почти целый кадр.


Это при самых худших обстоятельствах и на довольно дохлом железе. Да и один кадр из 100 мало кто заметит. Выделяя память в сильно фрагментированном хипе можно получить куда более ощутимые тормоза, и вроде как это никому сильно не мешает.

Часто происходит только сборка нулевого поколения. А она в 99% случае укладывается в микросекунды.

MS> Как говорится в малоизвестном стишке "вы охренели, братья румыны". За 10 миллисекунд я успеваю чисто софтварно отрендерить целую страницу мелкого текста (и Adobe Acrobat, кстати, тоже успевает).


Акробат пока не может. Особенно чисто софтрверно. Если бы в сотвере можно было выдавать 100 кадров в секунду, да еще и мелким текстом, то 3D-акселераторы были бы и нафиг не нужны.

MS>Может все-таки, 10 микросекунд?


Это уже сравнимо с тактами процессора. И такие результаты могут быть только в нулевом поколении, объем памяти которого подгоняется под размер кэша процессора.

PS

И все же, скачай таки ArenaWarsDemoEnglishAndGerman.exe и поиграй пору часиков. Заметишь хоть одну паузу, расскажи. Ну, а если не заметишь то перестань дезинформировать людей повторяя глупость про ЖЦ раз за разом.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[44]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.12.04 22:50
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Да не особо. 2 ГГц, 10 микросекунд — это 20000 тактов, не так уж и мало.


Минимальные требования для дотнета — это PII 450. Так что на 2 ГГц — это будет где-то менее 2.5 милисек. И опять же в худшем случае, плюс раз в квартал.


VD>>PS

VD>>И все же, скачай таки ArenaWarsDemoEnglishAndGerman.exe и поиграй пору часиков. Заметишь хоть одну паузу, расскажи. Ну, а если не заметишь то перестань дезинформировать людей повторяя глупость про ЖЦ раз за разом.

MS>В ответ на это я процитирую извесный мультик

MS>

MS> — Поздравляю тебя, Шарик. Ты балбес...


Ну, это уже откровенное оскорбление. Этак я тебе магу таких цитат привести, что оптекать затрахашся.

MS>Кого это я когда-либо дезинформировал насчет "ЖЦ"?!


Извиняюсь, я отвечал параллельно на два поста. Это были слова обращенные к ПК. Он уже тут очень долго расказывает сказку о "паузах" взыванных ЖЦ и вообще о невозможности создания игр из-за наличия ЖЦ.

MS> Кстати, что такое "ЖЦ"?


GC (сборщик мусора).

MS> А игрушку не хочу — там регистрироваться заставляют. Есть где-нибудь линк без регистрации?


Я качал без регистрации. Ссылок там выше крыши.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[46]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.12.04 00:01
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Т.е. сборка 1-го поколения — 2.5 — 7.5 миллисекунд.


Я уже кажется говорил, что слова о 30 мелисекундах — это неверная информация. К тому же хочу заметить, что на сегодня современный компьютер идет 3 ГГц процессором (у меня лично AMD 3500+, и вроде бы тендерция идет только к ускорению процессоров), да и память ресколько шустрее чем на PII (все же минимум 800 мегагерц против 66).

ПК> Все равно в среднем потеря кадра, т.к. времена сравнимы с временем пересчета состояния + отрисовки. Хотя уже, конечно, заметно лучше. К сожалению, при сборке второго поколения все равно будет заметные пользователю паузы (подергивания).


Все слава про подергивание не соотвествуют действительности. Я уже устал повторять:
Скачай игру поиграй.

Кадры выпадают в любой игре. И не по одному, а тысячами. 10 милисек — это потеря сотого кадра. Учитывая что таких затраты времени возникают очень редко, ты никогда в жизни не заметишь пропуска этого кадра. Намного более вероятным будет пропуск кадров в связи с недостаточной скоростью видиокарты/процессора или выполнением некой ресурсоемкой операции.

ПК>Не о невозможности, а об определенных проблемах разработки.


Это выдуманные проблемы. Они могут возникнуть только на очень дохлой технике.

ПК> Никто не говорит, что эти проблемы не решаемы.


Интересно как можно решить проблемы дерганья картинки вызванные базовым рантаймом?

ПК> Вопрос только в том, что разработчики предпочитают: решать эти плюс прочие проблемы, скажем, C#, или другие, связанные с использованием других языков. Все дела


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

Проблемы у ЖЦ есть. Но ты о них ни разу не упомянул. Зато постоянно повторешь одни и теже неверные утверждения.

В общем, глаза у тебя есть. Скачай игру убедись, что никакого дерганья нет. А в том, что игра польностью менеджед можно убидиться декомпилятором.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[47]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 09.12.04 00:16
Оценка:
VladD2,

> Все слава про подергивание не соотвествуют действительности. Я уже устал повторять:

> Скачай игру поиграй.

http://rsdn.ru/forum/?mid=938721
Автор: Павел Кузнецов
Дата: 09.12.04


> ПК> Никто не говорит, что эти проблемы не решаемы.


> Интересно как можно решить проблемы дерганья картинки вызванные базовым рантаймом?


"Ручной" работой с памятью.

> в том, что игра польностью менеджед можно убидиться декомпилятором.


Кстати, посмотреть декомпилятором, как именно там организована работа с памятью — хорошая идея.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[45]: Опять С++ vs С#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.12.04 08:40
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Serginio1,


>> ПК> если реализовать все критичные действия по работе с памятью вручную, как, например, это сделано в Quake, то можно эти эффекты свести к минимуму. Вопрос только в стоимости разработки с ручным управлением памятью на системе, для этого не предназначенной.


>> Выход в создании своего менеджера памяти с использованием валуе типов (массивов байт). Все зависит от задачи и нормально решаемо.


ПК>Гм... В чем здесь противоречие с выделенным?

В Том, что в Net вполне для этого пригодна правда с ограничениями на ссылочные типы.
и солнце б утром не вставало, когда бы не было меня
Re[47]: Опять С++ vs С#
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 09.12.04 17:34
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:


>> В Том, что в Net вполне для этого пригодна правда с ограничениями на ссылочные типы.


ПК>А как будет происходить создание/удаление объектов? Через MyAllocator.new()/MyAllocator.delete()? IMHO, без детерминированных деструкторов и возможности перегрузки operator new "ручная" работа с памятью значительно осложняется...

Можно и через TMyAllocator.Create TMyAllocator.Free
Так или иначе даже при хорошем менеджере памяти, создание своего специально заточенного под определенный размер менеджера памяти вполне тривиальная задача и в нативе.
Да и например Борландовский менеджер достаточно прост, что бы перенести его алгоритм для хранение валуе типов в нет.
и солнце б утром не вставало, когда бы не было меня
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.12.04 20:05
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>"Ручной" работой с памятью.


Как ты себе видишь "ручную" работу с менеджед-типами?

>> в том, что игра польностью менеджед можно убидиться декомпилятором.


ПК>Кстати, посмотреть декомпилятором, как именно там организована работа с памятью — хорошая идея.


Да нет там работы с памятью. Память боле не ресурс.

Декомпайлер тебе поможет убедиться, что весь проект создан с использовнием обычных менеджед-структур-данных, а стало быть память управляется ЖЦ.

ЗЫ

Я правильно понял, что игрушку ты уже скачал? Таки уже большой сдвиг.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[46]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 11.12.04 00:49
Оценка:
AndrewVK,

> Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.


А первого и второго?
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[47]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.12.04 10:12
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

>> Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.


ПК>А первого и второго?


Не измерял
... << RSDN@Home 1.1.4 beta 3 rev. 255>>
AVK Blog
Re[41]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 12.12.04 03:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот ссылка на сравнение двух 3D-движков. Ogre — исходный движек писанный на С++. Axiom — C#-порт Ogre.


Transparency, Overlays Off 
A - Average: 343.648800 Best: 372.639700 Worst: 271.316500 
A - Average: 343.435300 Best: 423.982700 Worst: 267.801300 
O - Average: 324.679688 Best: 325.349304 Worst: 0.789266 
O - Average: 320.316376 Best: 438.123749 Worst: 0.809061


Что-то тут не так с Worst FPS. Я готов допустить, что при некоторых условиях C# работает даже быстрее. Но чтобы он работал быстрее в 400 раз — не верю, ибо это противоречит законам природы и нарушает причинно-следственные связи . Следовательно, это не просто "порт", это существенная алгоритмическая переработка, позволившая достичь подобных результатов. Возможны так же разные исходные условия (разные видеоадапторы), так же не исключен вариант банальной алгоритмической ошибки (O(N^2) вместо O(N log N)) в исходном движке, исправленной в версии C#. В любом случае, данные тесты являются методологически некорректными.

Так что, внимательней надо быть с выбором сравнительных тестов.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[43]: Опять С++ vs С#
От: prVovik Россия  
Дата: 12.12.04 18:35
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Тут речь идет о невозможности применения Шарпа в 3D играх.

Хм, а разве кто-то это утверждал?

P.S.: А ты знаешь, что объем рынка игр для PC уже сейчас составляет около семи процентов и с каждым годом он неумолимо падает? Ну и о какой конкуренции шарпа с плюсами в компьютерных играх после этого вообще можно говорить? Ну займет он в лучшем случае один процент (хотя и в это слабо верится), а 99% достанется С++'у!!!
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[73]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.12.04 20:52
Оценка:
Здравствуйте, prVovik, Вы писали:

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


VD>>И уж если ты работаешь с ресурсами в диспозе, то ставь using или try/catch|finally защищающие код.

V>Гы, а что мешает делать то же самое в С++?

Тут вроде бы уже 100 раз это говорили. Теоритически ничего. Практически весь дизайн языка.

Ну, давай еще раз по пунктам:
1. Повторная генерация исключения в диспозе или вообще не приводит к фатальным проблемам, или приводит обычно к потере одного ресурса, так как остальные диспозы вызываются из любого положения. При этом с огромной долей вероятности потерянный ресурсный объек реализует и финалайзер, так что он будет подобран при первой же сборке мусора. Если он не успел попасть в первое поколение, то это вопрос нескольких десятых долей секунды (максимум секунд). В С++ же повтораное генерирование исключений обычно приводит к вылету всейго приложения. Именно по этому при малейшем сборее мы видим AV-диалоги у большинства приложений окружающих нас сегодня.
2. Необходимость ручного контроля в С++ не только за ресурсами ОС, но и за любыми динамически занятыми областями памяти. Это приводит или к ловле ликов и попыткам "окуратного" программирования, или к наклепыванию оберток на каждый чих. Четыре года назад наша контора придерживалась второго подхода, но тем не менее в конце концов пришлось писать нехилую систему отлова утечек памяти и в общемй сложнсоти убить не млао времяни на отладку в общем-то рабочего кода.
3. Отсуствие того же finally.
4. Ненацелленность многих С/С**-библиотек на автоматический контроль ресурсов. Вспомним хотя бы CreateFile или fopen.

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

Остается только один вопрос... Нафига козе баян?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[45]: Опять С++ vs С#
От: Павел Кузнецов  
Дата: 13.12.04 02:50
Оценка:
VladD2,

> VD>>Тут речь идет о невозможности применения Шарпа в 3D играх.


> V> Хм, а разве кто-то это утверждал?


> Утверждал. Я незнаю, что ты под этим имеш ввиду, но тут ПК вот утверждает, что это делать нельзя


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

P.S. На этом я данное обсуждение с тобой закачиваю, если, конечно, вдруг, не последует какая-то новая информация.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[46]: Опять С++ vs С#
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 13.12.04 08:22
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Фреймворк 1.1, янус в стабильном состоянии, AthlonXP 2.1ГГц. Сборка нулевого поколения 100-130 микросекунд. Сборка в самом тяжелом состоянии — 240 микросекунд.

А сколько штук объектов обрабатывается в этом цикле?
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[47]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.12.04 10:44
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>А сколько штук объектов обрабатывается в этом цикле?


Я ж говорю — реальное работающее приложение в стабильном состоянии.
... << RSDN@Home 1.1.4 beta 3 rev. 255>>
AVK Blog
Re[50]: Опять С++ vs С#
От: prVovik Россия  
Дата: 13.12.04 11:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Зато он поможет в реальной оценке задержек в реальном приложении.

Реальные приложения бывают разными...
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[52]: Опять С++ vs С#
От: prVovik Россия  
Дата: 13.12.04 12:25
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Я так понимаю вас не устроит любой тест, не доказывающий что .net это полный отстой?


А что, разве в этом топике был представлен хоть один тест, который что-то доказывал?
Ты сказал, что именно в янусе сборка мусора занимает не много времени. Ну замечательно. Как-бы никто и не спорил, что на .net'e можно писать программы... А тесты то где?
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[53]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 13.12.04 12:28
Оценка:
Здравствуйте, prVovik, Вы писали:

V>А что, разве в этом топике был представлен хоть один тест, который что-то доказывал?

V>Ты сказал, что именно в янусе сборка мусора занимает не много времени. Ну замечательно. Как-бы никто и не спорил, что на .net'e можно писать программы... А тесты то где?

А разве я их обещал?
... << RSDN@Home 1.1.4 beta 3 rev. 256>>
AVK Blog
Re[46]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 09:00
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Ну что за манера подменять позицию собеседника?.. Этого я не утверждаю и не утверждал. Речь шла о проблемах, которые может вызывать GC. Еще в первом сообщении на эту тему было указано, что проблемы решаемые.


Re[41]: Опять С++ vs С#
Автор: Павел Кузнецов
Дата: 11.11.04

> Ага. Мнений море. Вот только чущь полная. Игры то работают.

С интенсивной 3D графикой на .Net? Какие? Quake не считается, т.к. он написан очень своеобразно: ему GC вообще почти параллельна. Но писать так все игры никто не будет, ибо очень дорого:...


ПК>P.S. На этом я данное обсуждение с тобой закачиваю, если, конечно, вдруг, не последует какая-то новая информация.


Ну, тоесть ты согласен, что собственно предпосылок против того чтобы писать игры на дотнете нет? И что реальные игры на дотнете есть и очень даже неплохо работают?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[46]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 09:00
Оценка:
Здравствуйте, prVovik, Вы писали:

V>Честно говоря, не замечал за ним таких утверждений... Он вроде бы говорил только о применимости конкретно ГЦ, а не платформы вцелом.


У этой платформы ЖЦ обязательный элемент. Данне не являются управляемыми если они не управляются ЖЦ. Что до утверждений, то их было много, например:
Re[41]: Опять С++ vs С#
Автор: Павел Кузнецов
Дата: 11.11.04

> Ага. Мнений море. Вот только чущь полная. Игры то работают.

С интенсивной 3D графикой на .Net? Какие? Quake не считается, т.к. он написан очень своеобразно: ему GC вообще почти параллельна. Но писать так все игры никто не будет, ибо очень дорого:...


V>И вообще, тот факт, что есть игра на С# сам по себе еще ни о чем не говорит.

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

V> Потому, что:

V>1) стратегии — это такой жанр игр, в которых не требуется постоянный высокий фпс. Он может падать хоть до 10, и при этом пользователь не заметит особого дискомфорта. Более показательны в этом смысле были бы, например, шутер, или автосимулятор.

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

К тому же есть и 3D движки для FPS.

V>2) мы не знаем, как она работает,


Мы знаем.

V> а именно — исползуется ли активно там ГЦ во время игрового процесса.


А куда ж он (ЖЦ) денится?

V> Может там "operator new" вызывается только во время загрузки?


А может не нужно выдумывать? Есть же декомпиляторы которые показывают, что код содержит море мелких управляемых ЖЦ классов. И есть перфкаунтеры дотнетной памяти. Натрави Performance из "Administrative Tools" на процесс игрушки и погляди.

V>От общего объема рынка компьютерных игр. Ну про 7 процентов я, наверное, загнул , но процентов 10 есть...


Откуда дровишки? И каков этот рынок в денежном выражении?

VD>>Ты бы привел хоать какие-то ссылки подтверждающие свои слова.

V>А вот со ссылками трабл. Дело в том, что подобная информация стоит много денег . Но кое-что все-таки нашлось:
V>1)Вот эта картинка: http://www.jiad.org/vol4/no1/chou/chou_files/table1.gif
V>из статьи http://www.jiad.org/vol4/no1/chou/#AUnified

А... Смешные цифры. Значит весь рынок PC игр 3.5 лимона баксов. А я вот слышал, что продажи Думм3 уже перевалили за 4 миллиона. А игра стоит что-то около $50. Простенькая такая арифметика 4 мегабакса * 50... В общем, думаю ты понял. И Варкрафт 3 тоже несколько миллионов снял...

V>Ну и общая информация:

V>2) http://www.gamespot.com/all/news/news_6085583.html
V>3) http://www.release.ru/soft/newslog/2003/12/17/000820.html?m=comments

В обоих ссылках даже нет знака "%" или "$".

VD>>Я вот припоминаю информацию из Игромании... там вроде бы говорилось, что рынок PC-игр постоянно растет. И что миллионы стали срывать даже игры второго эшелона.

V>Ты, наверное, путаешь рынок PC-игр, с рынком игр вообще, который, действительно сильно растет, и обогнал уже, кстати, рынок киноиндустрии!!!

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

VD>>К тому, же почти все игры выходящие на ХБоксе выходят и на PC. Так что закат этому рынку не грозит.

V>Правильно, но замечу, что, даже, на ХБоксе игры пишутся совсем не на шарпе

Пока. Как видишь первые ласточки уже есть. Со временем народ поймет, что писать несистемный код на С/С++ — это тоже самое, что зарывать деньги в песок на поле дураков. Думаю, что когда появится официальный C# 2.0, и когда выдет в свет Феникс, разговоры о применении C# в любой сфере прикладного программирования (за исключением наверно приложений реального времени) уйдут в небытие.

VD>>Размеры рынка неимеют никакого отношения к возможности или невозможности создания игр на том же C#.

V>Влад, на С# МОЖНО делать игры, и на VB их тоже делать можно,

Речь шала о совершенно конкретном классе 3D-игр. Но теперь их можно делать ина ВБ.

V> и, даже, на JScript.


А это уже чушь. Если конечно речь идет о 3D-играх реального времени.

V>Но разговор не об этом...


Вот именно. И уж точно он, не о размерах рынков.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 19:45
Оценка:
Здравствуйте, Sinclair, Вы писали:

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


Думаю ты преувеличиваешь. С воспивали лет 10. Еще 5 лет назад многим певцам от С казалось, что С будут везде и всегда. На сегодня только самые отчаянные решаются на стольк смелые заявления.

Думаю, к 2010 тоже произойдет и с критикой дотнета.

А выход C# 2.0 и Феникса — это просто отправные точки когда в критике останется только само желание покритиковать.

ЗЫ

На написал ты хорошо.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.12.04 19:45
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Это время сборки нулевого поколения. О 10 миллисекундах речь шла для первого.


Для нулевого поколения на современных машинах характерна цифра 0 (т.е. < 1 ms.).

10 — это цира из ктитический. И ее даже во втором поколении редко получить удается. А оно в нормальных условиях собирается не чато.

В общем, Performance тебе в руки.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[47]: Опять С++ vs С#
От: prVovik Россия  
Дата: 14.12.04 23:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>И каков этот рынок в денежном выражении?

~10 миллиардов $$$

VD>А... Смешные цифры. Значит весь рынок PC игр 3.5 лимона баксов.

Это цифры только по восточной Азии (Япония, Корея и пр.)

V>>Ну и общая информация:

V>>2) http://www.gamespot.com/all/news/news_6085583.html
V>>3) http://www.release.ru/soft/newslog/2003/12/17/000820.html?m=comments

VD>В обоих ссылках даже нет знака "%" или "$".

А читать не пробовал?

In documents filed with the SEC last month, the company revealed its retail sales for the 13-week period ending November 1, 2003. The company reported just 7 percent of its total sales were PC games, compared to 64 percent of revenues coming from console games. Year-on-year percentage of sales derived from PC game accessories dropped 2 percent in the same 13-week period.


VD>Пока. Как видишь первые ласточки уже есть.

Какие? В мире еще не было создано ни одной коммерчески-успешной игры, ориентированной на .NET. Или я что-то пропустил?

VD>писать несистемный код на С/С++ — это тоже самое, что зарывать деньги в песок на поле дураков.

Бла-бла-бла....

VD>Думаю, что когда появится официальный C# 2.0, и когда выдет в свет Феникс, разговоры о применении C# в любой сфере прикладного программирования (за исключением наверно приложений реального времени) уйдут в небытие.

Что-то я не улавливаю связи между C#2 и приставками

VD>Речь шала о совершенно конкретном классе 3D-игр. Но теперь их можно делать ина ВБ.

А почему ты считаешь, что раньше было нельзя?
Например, DX-SDK испокон веков содержал примеры для VB.

VD>Вот именно. И уж точно он, не о размерах рынков.

Но текущий рынок не оставляет шансов в глобальной конкуренции C# с С++ при разработке "коммерчески серьезных" игр. Хотя, С# будет активно применяться при разработке маленьких шароварных игр типа пазлов, арканоидов и т.д., но это капля в море... ИМХО...
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[49]: Опять С++ vs С#
От: prVovik Россия  
Дата: 15.12.04 00:31
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Есть даже не на .Net, а на Java. Ил-штурмовик.

Про Java согласен.

ПК>Правда, куски там на C++,

Не просто куски, а целиком весь рендер, то есть код, работающий с 3D графикой. Показательный, кстати, пример
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[48]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 01:41
Оценка:
Здравствуйте, prVovik, Вы писали:

VD>>И каков этот рынок в денежном выражении?

V>~10 миллиардов $$$

Думашь плохой пируг?

VD>>А... Смешные цифры. Значит весь рынок PC игр 3.5 лимона баксов.

V>Это цифры только по восточной Азии (Япония, Корея и пр.)

Тоже не верю, так как я видил как минимум одну японскую игрушку с более чем двух миллионным тиражом (Хало что ли...). Даже при цене в 2 бакса она уже перекрывает эту цифру.

VD>>Пока. Как видишь первые ласточки уже есть.

V>Какие? В мире еще не было создано ни одной коммерчески-успешной игры, ориентированной на .NET. Или я что-то пропустил?

А причем тут "коммерчески успешной"? И кто тебе сказал, что та же ArenaWarsDemoEnglishAndGerman.exe не успешна с точки зрения коммерции?

V>Что-то я не улавливаю связи между C#2 и приставками


Ты много чего не улавливашь.

VD>>Речь шала о совершенно конкретном классе 3D-игр. Но теперь их можно делать ина ВБ.

V>А почему ты считаешь, что раньше было нельзя?

Потому что ВБ раньше был преспособлен восновном для создания формочного ГУИ. Производительность в 10 раз ниже средней сишной. Средства ООП на нуле. Другие парадигмы не поддерживались. Так что по жизни на нем делали только ГУИ редакторов уровней (Анрыл).

V>Например, DX-SDK испокон веков содержал примеры для VB.


Апи был значительно зарезан. В общем, это было действительно мало пригодное средство. Для сереьзных игр не очень подходящее. Сейчас де все уже совсем иначе. ВБ и ВБ.НЭТ имеют больше различий чем сходства.

V>Но текущий рынок не оставляет шансов в глобальной конкуренции C# с С++ при разработке "коммерчески серьезных" игр.


Я нивижу ни единой предпосылки к твоим словам. Кокуренция есть. Она развивается. Так что дело за временем и за энтузиастами.

V>Хотя, С# будет активно применяться при разработке маленьких шароварных игр типа пазлов, арканоидов и т.д., но это капля в море... ИМХО...


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

Ну, и это снисходительное выделение места "в углу" на фоне ArenaWarsDemoEnglishAndGerman.exe и http://www.axiom3d.org/ выглядят довольно смешно.

Думаю среди сильных мира сего дело будет развиваться так. Сначала дотнет появится в виде скриптовых движков и дополнительных средств. А со временем вытеснит нэтив код. Случится это по моим прикидкам году эдак к 2010-2015.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[49]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 01:41
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Есть даже не на .Net, а на Java. Ил-штурмовик. Правда, куски там на C++, плюс не могу сказать, что игра требует мало ресурсов по сравнению с аналогами...


Там не куски на С++, а вместо скриптов Ява. Так что это только первый шаг. А что касается ресурсов, то игра этого класса принципиально требует много ресурсов. Ява на этом фоне нерно курит в углу. Прада на ловэнд машинах она конечно обязана сказываться.

ПК> Коммерчески успешной ее, по-моему, более чем можно назвать. Полагаю, какая-то часть разработчиков со временем может использовать C# и для более-менее серьезных игр для PC.


Да время уже пришло. ArenaWarsDemoEnglishAndGerman.exe с точки жрения графики на уровне W3.

ПК> Но вот утверждать о поголовном переходе на C# в разработке игр в более-менее обозримом будущем, имхо, точно не приходится.


А что такое утверждение кто-то делал? Хотя если 10 лет считать обозримым будущем, то думаю если не погловное, то массовое точно должно случиться. Если уж виндовс станет весь гуи на дотнете крутить, то уж о проблемах ЖЦ говорить не прийдется.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[50]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 18:39
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>По-моему, ты путаешь объем продаж одной фирмы в одном регионе с деньгами, вырученными другой фирмой из того же региона, но в результате продаж по всему миру.


Возможно. Но обсуждать узость раныка на базе его части тоже довольно странно. Не находишь?

>> Думаю среди сильных мира сего дело будет развиваться так. Сначала дотнет появится в виде скриптовых движков и дополнительных средств. А со временем вытеснит нэтив код. Случится это по моим прикидкам году эдак к 2010-2015.


ПК>В том числе на приставках


Несомненно в том числе и на приставках. Не даром же МС делал ХБокс?

ПК>, где пирог намного лакомее, чем на PC, и где не ю?


Пироги обычно просто делят или не делят. Рынок PC-игр — это очень богатый рынок. И на нем более чем достаточно места.

PC-игры значительно более передовые вещи нежели приставочные. Приставки в виду некоторых проблем подхода не могут так быстро наращивать технологии. Так на РС прошло уже 7 поколений видиокарт. А та же Sony PS пока что пережила только два поколения.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[52]: Опять С++ vs С#
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.12.04 20:21
Оценка:
Здравствуйте, McSeem2, Вы писали:

VD>>Думаю, ты еще не раз задумаешся над вопросом кто из нас более вменяем.


MS>Ну давай вкурим твою фразу с точки зрения формальной логики. Допустим, что я являюсь невменяемым. Если так, то я никогда не признаю свою невменяемость по причине невменяемости и задумываться об этом не буду. Если же принять допуoщение о твоей невменяемости, то нафига мне об этом "не раз задумываться"?! Если же я все-таки буду "не раз задумываться", то это ставит под сомнение мою собственную вменяемость.


MS>С логикой у тебя точно не лады.


С логикой нелады у тебя:

MS>Если же принять допуoщение о твоей невменяемости, то нафига мне об этом "не раз задумываться"?

И:

MS>Так уж исторически сложилось, что я привык спорить с вменяемыми собеседниками.

Ну, и ко всему еще и продолжашь спорить.

MS>Мне вспомнилась цитата из известного произведения.

MS>

MS>- Вы, Шариков, чушь говорите. И возмутительнее всего то, что вы говорите это безапелляционно и уверенно.


Ну, что же этим, очередным, оскорблением ты сорвал аплодисменты почти всех тех кому так не нравится Влад или его мысли. И за одно расписался в полной своей несостоятельности как оппонента и трезво мыслящего человека. Так держать!
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[77]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.12.04 22:16
Оценка:
Здравствуйте, Glоbus, Вы писали:

VD>>У кого?


G>У тебя, старичек


Ты меня с кем-то путаешь. Я пока не старичем (30 все же не возраст), и истерики у меня не случаются.

G>А Dispose спасает нас от этого?


Программа останется жить. Это не мало.
А потом те кто не сталкивался с реальной практикой программирования на дотнете просто не понимают, что Dispose — это большая редкость. И проблемы с ним возникают крайне редко. А вот с деструкторами сплошь и рядом.

G>Не понимаю ваще о ком ты — какие невменяемые уроды, че это за твари такие невиданные? Я говорю о том, что ошибки в программах и всякие андефайнед-поведения от языка не зависят.


Ну, и я о том же. Ошибки она у криворуких. А это естественно не мы.
Какая разница на Шарпе ты пишишь или на ассемблере? Ошибки ведь от языка не зависят.
Мало ли что в спецификации Шарпа в первых строка написано:

A program that does not contain any occurrences of the unsafe modifier cannot exhibit any undefined behavior.

Мы то знаем, что так не бывает!


VD>>Расскажи это тем кто матерится на лики памяти и вылеты программ. Или... ах, да. Эти программы же пишутся криворукими уродами, а не нами.


G>Не знаю, о чем ты — кто же такие криворукие уроды?

G>Насчет мемори ликов — ну так будут у тебя не мемори лики, а какая-нить другая лажа, не знаю какая и гадать не буду.

А зачем говорить если не знаешь? Ты уж назови лажу, что есть в Шарпе нет в С++. А то выходит избавление от вечной головной боли — это вроде как и не достижение.

G> Если у человека как программера уровень низкий,


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

G> он напортачит на любом языке — что с гц что без. Серебрянной пули-то нету,


Откровенно говоря я еще не видел людей которые не ошибаются. Конечно бывают неопытные люди и откровенные ламеры которые могут в двух соснах запутаться. Но эта ситуация мало интересна, да и даже в ней безопасный язык, качественные библиотеки, избавление ума от необходимости следить за памятью и разными антиграбельными паттернами сильно облегчают жизнь. Даже если неопытный прграммист ошибется, на Шарпе я найду ошибку значительно быстрее чем на С++. Ведь поведение принципиально поределено. Ни один ламер не написав слова unsafe не сможет испортить память или перейти по случайному указателю.

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

G> понимаешь.. Язык с примочками не спасает от всех несчастий — он просто пытается заткнуть дыры насколько это возмжно.


Не понимаю. Вернее ты не понимашь. Ты смотришь на то что не понимашь и не можешь понять что это я в нем нашел. А не видешь ты то, что это не язык с примочками. Это язык более тщательно спроектированный. Его концепции стройны и логичны. А главное просты. Нет 200 разных нюансов в казалось бы простещих вопросах. Например:
Имена функций и указатели на функции
Автор: Павел Кузнецов
Дата: 21.11.04

Какая разница между new T и new T()
Автор: Андрей Тарасевич
Дата: 07.12.04

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

G> А насчет учить асм — очччень бы не помешало многим из тех, то себя называет прогарммером — не для того чтобы писать на нем все че ни попадя, а для того, чтобы выработался определенный способ мышелния.


Ага бто-инструционный. Т.е. вместо дизайна — битовые оптимизации на каждом шагу. Я уже не раз встречал подобных орлов. Это смерть любому серьезному проекту. Они обычно просто не способны мыслить абстрактно.

Конечно занать общие принципы работы процессора нужно. И знать ассмблер тоже неплохо. Плохо зацикливаться на необхоимости этих знаний.

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

VD>>Писать хорошие программы и после появления дотнета, и еще очень долго-долго после его смерти будет сущим адом. Мне искренне жаль тех кто этого не осознает. Я могу придумать интересную программу в считанные минуты (ну, максимум дни), а на ее реализацию мне нужны годы. И не просто мне. Годы нужны огромным коолективам. При этом очень часто получается так, что по прошествии многих лет от того плана, не побоюсь этого слова, от той изначальной светлой мечты, остается бледная тень. В итоге мы имеем глючный ворд и никуда не годных конкурентов. Мы имеем 10 лет назад марально устаревшие РСУБД вместо ООБД и ХМЛБД. Имеем игры интеллект ботов в которых ниже интеллекта таракана на кухне. В обещм, имеем полную задницу.


G>Ну и какое отношение языки программирования имеют к ообд и интеллекту ботов?


Прямейшее. Они не позволют абстрагироваться от часностей, а стало быть сложность основной задачи умножается (а то и возводится в степень) сложности борьбы с мелкими частностями с которыми вынуждает возиться выбранный язык/платформа.

G> Не путай прогресс в науке и прогресс в инструментарии. А язык программирвоания — это не более чем инструмент решения задачи.


Инструмент не инструмент... без разницы как его называть. Язык — это средство выражения мыслей. Можно сказать средство материализации мыслей. Ну, и за одно — это барьер между мыслью и ее воплощением.

Собственно инструмент, вроде текстового редаткора или утилиты рефакторинга, тоже имеет отношение к невозможности написать лучшего бота или ООБД. Ведь если они ускорят или упростят процесс материализации эдеи, то помогут решить стоящую задачу более качественно.

G>Я приветствую Писал на шарпе сам, знаю че это такое — да, приятная вещь, то только как я уже сказал для определенного круга задач.


Да нет этого круга. Это самовнушение. Есть области где дотнет как рантайм не способствует его применению. Эти области — это создание драйверов к анменеджед-ОС и реалтайм задачи. Других — нет.

G>А к чему это тысказал?


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

Так вот люди ввели finally так как это удобно. Шарп и так не простой язык, а одна из задач, стоявшая перед его разработчиками, была создать простой в использовании язык. Так что думая включать finally или нет они делали нелегкий выбор. Так что взгляд вроде "а я и без этого могу" для меня — это такой же взгляд из каменного века, как для тебя "а я и goto обойдусь".

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

Конечно можно писать и без finally. И даже возможно, что finally действительно не нужен в некоторой программе. Но так же возможно, что не использование finally говорит только о том, что программист не использовал потенциала языка и мыслил понятиями более низкоуровневого/менее мощьного языка.

VD>>Так и вижу себе архитектора системы планирующего места размещения грабель и благодарного программиста обнаруживающего их своим лбом.


G>Давай ты будешь предметный разговор вести. А то "грабли!грабли!" а сказать ничего толком не хочешь.


Да я то толком говорю. Это вот слова:

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

как раз уводят разговор в сторону.

Грабли не застовляют не использовать мощных возможностей. Они подстерегают тех, кто забывает о мелких нюансах и не "живет по паттернам".

VD>>Есть мнение, что решение любых задачь программирования — это процесс компоновки тех или иных паттернов и алгоритмов. И чем проще их компоновать, тем проще решать задачи.


G>Есть много разных мнений...


Так как из них ты разделяшь? Я то высказл такое академическое мнение о том, что процесс создания ПО — это в первую очередь процесс его проектировния.

Просто любые задачи являются компоновко. Нужно только уметь их компоновать. А лобовые решения обычно как раз ущербны.

VD>>Ну, да. Бесспорно! Задачи бухучета — это тупой последовательный вызов методов add/delete/update/print. Мы то с тобой как архитекторы это знаем. Не правда ли?


G>Да, мы калачи тертые... Раскинь-ка мне, почему такие сложные системы бухучета пишутся всеми кому ни лень — любая контора размером около 20 человек, не имеющих даже порой законченого высшего образования, с радостью берется слобать такой прожектец, чтоб на своем сайтиле в портфолио гордо вписать "системы бух. учета".


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

VD>>Скажи, так почему все таки бухгалтерские системы далеть на Шарпе проще? Ну, должно же быть этому логическое объяснение? Ну, не могия же это? Или магия?


G>Читаешь плохо?


Ну, или ты излагаешь. Третьего не дано.

G> Я ж сказал — потому что бух. системы по своей сути не несут никакой тяжелой алгоритмичесмкой нагрузки — с точки зрения разработки 80% времени уходит именно на кодирование


Стоп! А на что уходит 80% времени в других областях? И почему эти 80% нельзя устранить с помощь супер-пупер средств какого-нибудь С++?

G> (которое на шарпе конечно быстрее чем на плюсах, но далеко не намного )


Да чем же конечно? Ну, что там if за два в С++ что ли идет?

G> — то есть: нет никакого ресерча, зачастую не присутсвует оптимизация по скорости и данным (память и все такое — оно ведь не ресурс), то есть главное на что обращаем внимание — кодирование.


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

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

Прикинь как было бы здорово если бы перед создателями финансового и управленческого софта не стояли проблемы скорости и объема. Все данные оформляем в виде списков объектов, забираем в память и без напряга пересчитываем. Хотя пересчеты тоже напряжно писать. Лафа. Вот только на практике возникают опять частности. Данные все за раз в память не поднимишь. Вычислять каждый раз все тоже нельзя (каждое нажатие оператора выльется в недельный пересчет). Начинаются те самые оптимизации. Появляются разные структуры призванные ускорить рассчеты. Это усложняет модель. В итоге сложность вырастает до невироятных высот.

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

G> Да, на шарпе оно проще — все-таки


Та чем?

G>синтаксис попроще будет,


Чушь. Обем синтаксиса (размер граматики и ее описание) у Шарпа на треть больше чем у С++.

G> за ресурсами следить не надо


О! Вот это уже верные слова...
Отбпросим примитивные задачи, там где нужно просто миллион строк в столбик посчитать. Возьмем как раз сложные сферы требующие сложных моделей и нетривиальной логики. Что же, по-твоему, отсуствие необходимости слежения за ресурсами не дало бы приемущества в этих сферах? Ведь если я вынужден следить за освобождением памяти, то я уже не смогу столько же внимания потратить на основную логику.

G> — то есть по времени процентов 10-15 будет выигрышь по сравнению с теми же плюсами.


Даже предположим 10-15. Что они на дороге валяются? И что контроль памяти это единственно на что нужно отвлекаться программисту и архитектору?

G> Для прожекта где, 80% — это то самое кодирование — это приличный плюс.


Любой проэкт — это планирование и кодирование. Всякие там отладки есть просто досадные мелочи на которые приходится отвлекаться. Так вот среда лучше приспособленная для проектирования и сборки проекта из высоко абстрактных блоков дает приемущество над средствами позволющими работать с блоками меньшей абстракции или вовсе не поволяющей (или хотя бы даже не подталкивающие) их использовать.

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

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

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

По сути С++ убог до безобразия. Но благодаря метапрогрммным возможностям шаблонов в последние годы удалось залотать многие дыры этого языка.

Однако С++ имеет слишком плохую наследственность, в нем слишком много меликих нюансво не повзолящих оторваться от "земли". К тому же метапрограммирование на шаблонах очень сложно и доступно только специалистам очень высокого класса.

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

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


G>Могу ошибаться, но на жабе писаны некритичные по сокрости его части.


Ага. Логика игры. Совсем такая некритичная вещь. Ну, и сборка мусра (о которой тут рядом внушал ПК) тоже оказалась не критичной. Вот ведь как бывает?

G>Вопрос встречный: почему борланд ЖБульдер такой тормозный?


Я его не видел. Могу только препологать... Сильно торопились и не стали оптимизировать, или посчитали, что и так сойдет. Замечу, что IDEA и Эклипс тоже написаны на менеджед-продукте (Яве), но они почему-то не особо тормозят. Так же говорят довольно сносно работает ReSharper полностью написанный на дотнете. А те же http://arenawars.krawall.de/com/ вообще летает у меня на машине.

VD>>2. Почему я даже не мог подумать о создании собственного парсера на С++, а на Шарпе взялся и успешно его делаю?


G> Это твои маленькие интимные трудности о чем ты там думал


Это мои большие публичные победы в выборе правильного средства и подхода.

G> Я честно говоря не могу даже представить, что тебя сдерживало от написалова парсера на плюсах


Сложность и объем работ. Я как бы не за зарплату его пишу, а от случая к случаю. Межу отдыхом от дуракавалянием и основной работой (которой и так море).

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


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

G> — ты уж прости.


Бог простит. Что ты не понимашь, я пытаюсь объяснит вот уже второе писмо подряд. Поймешь, хрошо. Не поймешь, ну, не дано. Проживешь и без понимания.

G> Такая задача как написалово парсера от языка не зависит — можно хоть на бейсике сделать. Я вот прекрасно делал и делаю парсер на плюсах. Я могу и на шарпе написать без проблем. Могу и на паскакале (если вспомню его).


Я тоже могу. Но не без проблем. Тут я не так крут. А так как меньше всего проблем на Шарпе, вот и выбрал его. Причем явно не промазал.

VD>>3. Почему МС предпочел дотнет для реализации большей части АПИ Авалона? Ведь это же графика нового поколения. Что же они совсем дебилы выбрать ничего не дающие технологии? А ведь им еще и людей переучивать пришлось. Ведь у них раньше были одни С++-ники.


G>Что такое авалон,


http://msdn.microsoft.com/Longhorn/understanding/pillars/avalon/avnov04ctp/default.aspx

G> где применяется,


В большинстве GUI-я следующей версии Виндвс (Лонгхорне).

G> какие системные требования?


В Лонгхорне Лонгхорновские (пока не объявлены).
Для ХРюши и Вынь2003:

Microsoft "Avalon" Community Technology Preview requires Microsoft® Windows® XP Service Pack 2 or Microsoft® Windows® 2003 Server.
1. From the CD or download package, select autorun.htm and select the Installation link.
2. On the Installation page, install Microsoft® .NET Framework v2.0 Beta 1, the Microsoft "Avalon" Community Technology Preview.
3. Optional: Install Microsoft® Visual Studio® 2005 Beta 1.
4. Finally, install the WinFX SDK.
5. Follow the instructions in the WinFX SDK Setup wizard.


G> Если минимум на 3ГГц + 128 м видео — тада смело отвечу — мс предпочел дотнет для писалова апи для авалона шоб лучше продавались новые процы от интела


О! МС уже прцессоры Интела продает!

G>Насчет ничего не дающих технологий ты это зря...


Нет. Это ты зря.

G> Я ж говорил, что понимаю достоинства .нета, но в то же время я вижу грань их применимости. а ты вот похоже не очень.


И что же мешает тебе сформулировать аспкты этой грани? Ты тут пытался, но так смог.

G>Повторюсь в тридцатый раз. Если мы с тобой, мы вдвоем, как два реальных пацана, Влад, (понимаешь, без лишних людей, шоб это было нашей маленькой тайной), выйдем за пределы прожектов, которые делаются в 90% контор на просторах снг, то увидим, что в подавляющем большенстве случаев язык реализации есть третье дело.


Боюсь я не увижу. Я уже 30 лет смотрю и никак не могу видеть.

G> В наших с тобой странах специфика другая — в основном требуется просто кодинг, где да — шарп дает преимущество в 10%, которого вполне достаточно, чтоюбы контора, регшающая задачи на .нете обошла контору решающую точно такие же задачи на плюсах. Но как имне видется так будет не всегда.


Думаю, ты резко занизил процент. Я бы говорил где-то о процентах начинающихся с 100.

G>Каких ошибок? Синтаксических?


Скорее семантическийх.

G> Может быть.


Точно. Я бы даже сказал 100%.

G> Но синтаксические ошибки не критичны — они отлавливаются мгновенно на этапе компиляции и не увеличивают время разработки. Логические? Но тут тебе уже язык не поможет.


Мне помогает.

G> Если дизайн приложения крив,


Какое отношение дизайн имеет к ошибкам программирования?

G> или у программиста квалификация недостаточно высокая,


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

G> то на каком языке не делай, а его тока могила исправит.


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

G>Далее. Инетерсная фраза

G>

G>Шарп позволяет не заморачиваться на поддржку разных паттернов

G>О чем это было сказано — какие паттерны? кто на что замарачивается? Ну хоть один пример приведи граблей или там заморочек.

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

Та же фигня у программистов. Только в звисимости от языка уровень паттернов разный. У ассемблерщика есть такие паттерны как if, switch, for... ну ты понял. У сишника таких паттенов нет, так как они встроены в язык. Зато у С-ишника есть такие патерны как инкапсуляция, клсс, хэндл, колбэк. У С++ программиста таких паттернов нет, так как все нужно встроено в язык. За то у него есть такие паттерны, как интерфейс, ресурсная обертка, запрет присвоения в if-ах, обертка над указателями и т.п. У C# программиста таких... ну, короче, ты понял. У C#-программиста конечно тоже есть свои паттерны, но они уже ближе к паттернам проектирования GOF.

Надеюсь, я внятно изложил про то что я имею в виду под патернами?

G>Далее. Насчет сосредоточится на процессе проектирования. Не играет рояли на каком языке ты пишешь.


Ну, см. выше.

G> Если ты реально сосредотачиваешся на проектировании, то тебе должно быть очень параллельно, на каком языке будет реализована система.


Отнюдь. Проектирование, в отличии от процесса планирования фич, как раз четко завязано на язык реализации. Конечно его можно разделить на стадии совсем логического проектирования и физического (как в области РБД), но это всего лишь часность. Фактически архитектор должен составить четкое задание для исполнителей (программистов). И тут приходится проектировать в рамках имеющихся абстракций — паттернов. Если это ассемблерных софт, то проект окажется программой на С. Если сишный, то он будет смахивать на программу на С++, если С++-ных, то на програму на Шарпе, Шарповский — то на некий язык следующего поколения. Это конечно утрировано, но в общих чертах так оно и есть.

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

G> Во многих случаях с этим определяются уже после разработки структуры системы и детального его планирования.


Такие случае обычно не очень удачно кончаются.
Обычно со средствами определяются после этапа планированя фич (формирования требований к системе). А то и в процессе формирования общей идеи будущей программы.

VD>>Бесспорно нюансы есть везде. Вот только объем этих нюаносв и их уровень совершенно разный. Это как при сравненнии ассемблера и С. Вроде возможностей у асма даже больше. И нюансы есть у обоих. Но вот объем и характер нюансов совершенно разный.


G>Как я уже упоминал, это не играет рояли — человек с хорошим уровнем как программер способен писать на любом языке — язык эт овсего лишь инструмент.


Ну, то есть тебе нет разницы писать на асме или на на С++?
В общем то далее говорить не о чем. Ты думаешь на ассемблере и тебя ни в чем не переубедить. Чтобы ты меня понял ты должен начать думать на более высоком уровне.

G> Например. У знакомого в конторе работал человек-глыба по плюсам. Но его какого-то хрена засадили лобать на жабаскрипте минюшки и всякую подобеную лабуду. Он уже через неделю мог написать на жабаскрипте такой код, который работал и нормально отображался под любые браузеры, со всякими выплывающими фигнями и тп. Все-таки уровень знаешь ли...


Остается позвать этого человека сюда и поинтересоваться его мнением о безразличии к средствам разработки.

G>Не с целью поспорить — а откуда инфа, что мс переводит своих разработчиков на шарп?


Дык из МС. Плюс этот самый Авалон у меня сейчас на винте лежит и моей квалификации большее чем достаточно чтобы определить, что он в основном написан на C#.

G>А то что ява не претендует на универсальность — дык правильно делает. И плюсы не претендуют кстати тоже. И шарпу того же желаю


Да как раз С++ не только претендует, но и на сегодня является универсальным языком общего назначения.


VD>>А ты помнишь сколько писали приложений на С++ в 1987 году? А ведь С++-у было как раз 2 года от роду. Как раз как сейчас дотнету. МС начал переходить с С на С++ только в 90-ых. С момента появления С++, к тому моменту, прошло почти 10 лет.


G>Ну и что?


То что через десять лет ты будешь делать вид, что своих слов не говорил. Или оцениш насколько ты ошибался.

G> То есть думаешь что через 10 лет они перейдут на шарп? Сомневаюсь.


Боюсь тебя огорчить, но они уже частично перешли на шарп. И делают это все больше и больше. Думаю, ты удивишся увидив сколько кода в Лонгхорне написано на нем.

G> Хотя бы просто потому что щас конторы намного больше чем щас, а занчит более инертные. Это как минимум. А в реале как я уже сказал, то потому что для таких контор вопросы моды на новое не играет рояль. Играет рояль эффективность. А эффективность зависит в данном случае далеко не от языка. Если бы они писали на коболе и имели такой же успех как щас используя плюсы то вопрос — зачем переводить такие большие конторы на другие, новые, необкатанные рельсы, если учесть что выгоды сомнительны — качественного скачка не будет точно, а убчтки будут однозначно.


G>А что такое авалон и индига?


Это еще один менеджед-АПИ создающийся приемуществанно на Шарпе. На этот раз комуникационный. http://longhorn.msdn.microsoft.com/?//longhorn.msdn.microsoft.com/lhsdk/indigo/conunderstandingmessagebusserviceapplications.aspx

VD>>Выходит так, раз такая куча народу не понимает стольк простых истин.


G>Каких истин. Ни одной не было. Были рассуждения на тему...


Ты их просто не видшь. А они есть.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[53]: Опять С++ vs С#
От: McSeem2 США http://www.antigrain.com
Дата: 17.12.04 05:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, что же этим, очередным, оскорблением ты сорвал аплодисменты почти всех тех кому так не нравится Влад или его мысли. И за одно расписался в полной своей несостоятельности как оппонента и трезво мыслящего человека. Так держать!


Извини, Влад. Как там сказал главный злодей в Kill Bill-2, "I overreacted". Что же касается "аплодисментов", то это не те аплодисменты, которые мне льстят. Но люди имеют право, и мы с тобой живем в этом социуме, пусть даже и виртуальном. И должны относиться к этому с уважением.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[71]: ToString()
От: jazzer Россия Skype: enerjazzer
Дата: 17.12.04 09:43
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>На самом деле, самым правильным решением было бы реализация каскадирования исключений. Т.е. один объект исключения должен уметь цепляться к другому. А для этого в современный С++ надо всего лишь добавить функцию, возвращающую текущий объект-исключение.


Ш>
Ш>template <class T>
Ш>T * GetExceptionObject();
Ш>


только вот проблема в том, что тип исключения неизвестен во время компиляции.
Так что какой бы хорошей эта идея ни была, она нереализуема, пока мы можем выкидывать любые типы исключений.
Вот если лимитировать эти типы до наследников std::exception — тогда да.

С другой стороны, необходимость этого сомнительна.
Т.е. если у тебя сгенерилось исключение и началась раскрутка стека, во время которой опять возникает исключительная ситуация, то 90%, что она является следствием первой.
Если это не так, то в дизайне какой-то косяк.
По крайней мере, я не могу придумать реального примера.

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

На самом деле во всех вторичных случаях достаточно просто прописать в лог то, что случилось — если это необходимо, человек залезет в него и посмотрит, когда решит основную проблему. Но это вряд ли.
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[78]: ToString()
От: Bigger Российская Империя  
Дата: 17.12.04 15:14
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>По сути С++ убог до безобразия. Но благодаря метапрогрммным возможностям шаблонов в последние годы удалось залотать многие дыры этого языка.


Чем же он убог до безобразия, блин, а мне казалось, что С# — это кастрированный С++

VD>Однако С++ имеет слишком плохую наследственность, в нем слишком много меликих нюансво не повзолящих оторваться от "земли". К тому же метапрограммирование на шаблонах очень сложно и доступно только специалистам очень высокого класса.


Иногда отрыв от земли завершаеться падением на задницу (с) моё.

Наличие сборки мусора это не панацея от кривых рук.
Видел чудеса на VB 6, там крутые перцы вовсю Win API используют, но это не значит что VB круче вареных яиц

Vlad2 мне надо бросить C++ и пересесть на C#, только для моей задачи — это однозначно похороны

Программист — это шаман..., подарите бубен!
Re[79]: ToString()
От: VladD2 Российская Империя www.nemerle.org
Дата: 18.12.04 01:59
Оценка:
Здравствуйте, Bigger, Вы писали:

B>Чем же он убог до безобразия, блин,


Это уже обсуждалось сотню раз. Сделай поиск.

B> а мне казалось, что С# — это кастрированный С++


Казалось. Пороботай на нем пол годика и сам поймешь.

B>Иногда отрыв от земли завершаеться падением на задницу (с) моё.


Бедные птички.

B>Vlad2 мне надо бросить C++ и пересесть на C#,


Надо?

B> только для моей задачи — это однозначно похороны


Что за задача?
... << RSDN@Home 1.1.4 beta 3 rev. 207>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[80]: ToString()
От: Bigger Российская Империя  
Дата: 20.12.04 08:46
Оценка:
Здравствуйте, VladD2, Вы писали:

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


B>>Чем же он убог до безобразия, блин,


VD>Это уже обсуждалось сотню раз. Сделай поиск.


Да и так читаю все эти войны

B>> а мне казалось, что С# — это кастрированный С++


VD>Казалось. Пороботай на нем пол годика и сам поймешь.


B>>Иногда отрыв от земли завершаеться падением на задницу (с) моё.


VD>Бедные птички.


Птички на задницу не падают

B>>Vlad2 мне надо бросить C++ и пересесть на C#,


VD>Надо?


Типа решай сам, вот это мудро

B>> только для моей задачи — это однозначно похороны


VD>Что за задача?


Архивирование данных в SCADA, в режиме реального времени, заливка в MS SQL2K порядка 1млн.записей в секунду

Программист — это шаман..., подарите бубен!
Re[82]: ToString()
От: slegkapjan  
Дата: 21.12.04 08:47
Оценка:
S>>А вот это уже просто смешно. Смешно и ничего более. На чем написана ОС, браузер, компилятор, имейл-клиент и проч. и проч.?
VD>История скоро изменится (с) Назад в будущее.
Это далеко еще не факт.
Re[85]: ToString()
От: Dimonizhe  
Дата: 22.12.04 07:49
Оценка:
Здравствуйте, slegkapjan, Вы писали:

S>

[поскипано ] С++ супер мега турбо пупер дупер рулез с педалями.
S>...

S>Этот список можно продолжать еще очень долго. Я срашиваю у сторонников C#: "что же может предложить это еще одно сомнительное изобретение Майкрософт в ответ на всю мощь, скорость, экспрессивность, гибкость и богатсвто C++?"


Может предложить только одно — стоимость проектов бля бизнес приложений СУЩЕСТВЕННО ниже. Поддержка СУЩЕСТВЕННО дешевле.
А для бизнеса только этот пункт существенен. А все остальное никого не интересует.
Re[87]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 09:34
Оценка:
Здравствуйте, slegkapjan, Вы писали:
S>>Да-да-да. Продемонстрируй мне Code Access Security на С++ (неуправляемом).
S>Честно говоря не совсем понимаю термин "Code Access Security". Если под этим понимается доступ (чтение/запись) к коду, то это вполне возможно в рамках ОС.
А ты пойди и почитай. Грубо говоря, это возможность разрешать коду из пакета А выполнять код из пакета B, а коду из пакета C запрещать это делать.
S>>> Обратное утверждение не верно.
S>>И что же такого из плюсов нельзя реализовать на C#?
S>>>2) C++ более универсальный язык, чем C#. Все что можно написать на C#, можно написать на C++. Обратное утверждение не верно.
S>>И что же такого из плюсов нельзя реализовать на C#?
S>Операционную систему.
Ну-ну. А что, у нас есть примеры операционок на чистом С++? Или все-таки там фрагменты runtime на асме написаны?
S>Это вообще неспортивно вести спор таким образом. C# медленнее чем C++, и не стоит хамить раз уж нет достойного ответа.
Спортивно-спортивно. Просто ты несешь такую чушь и с таким апломбом. Ты хоть понимаешь, что выражение "ускорить любую программу" означает примерно то же самое, что и "сжать любой бинарный вектор"? И точно так же можно построить программу на C#, которая будет джиттиться в неулучшаемый код?
S>>А можешь подробнее изложить свои заблуждения об ограничениях легкости переноса C# на другие платформы?
S>Пожалуйста. Можно ли перенести программу на C# под Palm OS?
Да нет проблем. Ну нет (пока) фреймворка под палмос. Ну и что? Язык-то это как затрагивает?
S>>>5) C++ более гибкий язык -- вы можете программировать на уровне ассемблера, а можете использовать языковые средства сверхвысокого уровня. В случае с C# это не верно.
S>>Какие возможности С++ по программированию на уровне ассемблера отстутствуют в C#? Какие языковые средства сверхвысокого уровня С++ отстутствуют в C#? Чем можно безуспешно попытаться заменить метаинформацию в С++?
S>Любые средства C# можно успешно заменить средством C++.
Перечитай вопрос. Приведи пример успешной замены метаинформации в C# эквивалентным средством С++.
S>>>6) На C++ написаны терабайты кода, при желании в сети можно найти библиотки и исходные коды, решающие любые задачи: от операционной системы, до движка для игры.
S>>>7) Для программ на C++ не нужны мегабайты дополнительных библиотек.
S>>Да? А как же терабайты кода из пункта 6? Или они уже перестали быть нужны?
S>Опять неспортивное поведение.
А по существу?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[87]: ToString()
От: Dimonizhe  
Дата: 22.12.04 09:43
Оценка:
Здравствуйте, slegkapjan, Вы писали:


D>>Может предложить только одно — стоимость проектов бля бизнес приложений СУЩЕСТВЕННО ниже. Поддержка СУЩЕСТВЕННО дешевле.

D>>А для бизнеса только этот пункт существенен. А все остальное никого не интересует.
S>С этим абсолютно согласен.

Гуд. Рассуждаем дальше. Например, написание операционных систем — этот класс задач намного уже (читай, этим занимаются намного меньше людей) чем обычные бизнес системы.
Это значит, что ниша С++ должна стать и становится узкой за счет отбирание данной огромной области. Т.е. никто не говорит что С++ отстой. Просто в бизнесе ему делать нечего. Вот и все.
Re[89]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 10:37
Оценка:
Здравствуйте, slegkapjan, Вы писали:
S>Зачем запрещать что-то? Между C++ и C# есть разница в философии построения языка.
А, ну то есть вместо доказательства "на с++ можно все" мы переходим к опровержению необходимости этого "всего". Все же почитай про CAS. Вкратце: это делается для того, чтобы вредоносный код не мог вызвать нехорошую вещь. Например, вирус, который ты выкачал из интернета под видом видеокодека, не сможет полезть управлять сервисами. Потому, что ему не дано такого разрешения. И это несмотря на то, что вирус выполняется под твоими пользовательскими привилегиями. На C# я помечаю опасный метод атрибутом, который говорит "здесь нужен специальный пермишшн". И код, которому не выдан пермишшн, не сможет вызвать этот метод.
S>Для большиства операционок небольшая часть кода написана на ассемблере, остальное на C++. Опять же C# использовать вместо C++ в этой связке невозможно.
Почему?
S>>>Это вообще неспортивно вести спор таким образом. C# медленнее чем C++, и не стоит хамить раз уж нет достойного ответа.
S>>Спортивно-спортивно. Просто ты несешь такую чушь и с таким апломбом. Ты хоть понимаешь, что выражение "ускорить любую программу" означает примерно то же самое, что и "сжать любой бинарный вектор"? И точно так же можно построить программу на C#, которая будет джиттиться в неулучшаемый код?
S>Посмотри внимательнее на посты. Я не использовал термина "усокрить"
Ты написал, что любую C# программу ты сможешь заменить эквивалентной программой на С++, которая будет более быстрой. Тебе все еще неочевидно, что ты гонишь?
S>А скажи пожалуйста, ты думаешь что можно в принципе написать фреймворк C# для любой платформы?
Естественно! А что нам может помешать? Скажи пожалуйста, какие особенности C# могут помешать написать фреймворк на любой платформе?
S>>>>>5) C++ более гибкий язык -- вы можете программировать на уровне ассемблера, а можете использовать языковые средства сверхвысокого уровня. В случае с C# это не верно.
S>>>>Какие возможности С++ по программированию на уровне ассемблера отстутствуют в C#? Какие языковые средства сверхвысокого уровня С++ отстутствуют в C#? Чем можно безуспешно попытаться заменить метаинформацию в С++?
S>>>Любые средства C# можно успешно заменить средством C++.
S>>Перечитай вопрос. Приведи пример успешной замены метаинформации в C# эквивалентным средством С++.
S>Скажи конкретные вещи, как они должны работать и я тебе приведу аналог в C++.
Ну самое простое — есть приложение. К нему динамически подцепляются сборки (библиотеки). По команде пользователя создается инстанс произвольного класса из этой сборки, и вызывается произвольный метод по имени. Впрочем, зачем далеко ходить: давайте взглянем на .Net Explorer
Автор(ы): Андрей Мартынов
Дата: 24.12.2002
. Не мог бы ты воспроизвести его поведение средствами С++? Я подожду — в ближайшие год-два я не планирую уходить в оффлайн.
S>Я просто как раз-то и не понимаю сути вопроса. Ты можешь сказать конкретно что тебя интересует?
Вижу, что не понимаешь. Ты просто смотришь на C# через замочную скважину С++. Поэтому ты не видишь в нем почти что нихрена. Впрочем, именно про это была статья Пола Грэма. Это то же самое, как если бы чистый басик девелопер задавался вопросом "а нахрена нужен С++, если в нем нет даже номеров строк?!!"
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[91]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 11:39
Оценка:
Здравствуйте, slegkapjan, Вы писали:

S>А что может помешать вирусу модифицировать фреймворк и вызывать любые методы которые ему только вздумаются? Или же эта защита работает только для вриусов, написанных под .NET?

Да, только для вирусов, написанных на дотнет. К примеру, мы можем потребовать от кода, загружаемого на общественный сервер, быть написанным на .Net. При этом можно будет писать любой код, но работать будут только безопасные методы. Аналогичной возможности для С++ не существует.
S> При желании и для C++ можно придумать подобную защиту, и гораздо более действенную.
Попробуй. Можешь хотя бы на пальцах объяснить, как ты на С++ реализуешь код, принимающий решение о возможности вызова в зависимости от того, откуда сделан вызов?
S>А потому, что нельзя определить что-то через него же самого. Нельзя написать фреймворк для C# на C#!
Ну и что. Фреймворк для C# — это, собственно, та небольшая часть кода, написанная на, допустим, ассемблере. В чем разница?
S>>Ты написал, что любую C# программу ты сможешь заменить эквивалентной программой на С++, которая будет более быстрой. Тебе все еще неочевидно, что ты гонишь?
S>Скажи пожалуйста, а почему такое не может быть возможным?
Нет уж, это ты делаешь некоторое голословное утверждение. Будь любезен принести доказательство в студию. В науке, знаешь ли, действует презумпция недоказанности. Так что пока ты не приведешь метод, по которому ты выполнишь более быструю реализацию, аналогичную любой .Net программе, я буду считать твои заявления плодом религиозного экстаза.
S>Только воздержись пожалуйства от доказательств, содержащих такие гениальные идеи как неоптимизируемый код, самоускоряющиеся программы и проч. и проч.

S>>>А скажи пожалуйста, ты думаешь что можно в принципе написать фреймворк C# для любой платформы?

S>>Естественно! А что нам может помешать? Скажи пожалуйста, какие особенности C# могут помешать написать фреймворк на любой платформе?
S>Т.е. ты утверждаещь, что, положим, можно написать фреймворк для PIC? Или для палмы с 300 килобайтами хипа?
Именно это я и утверждаю. А почему бы, собственно, нет? JVM прекрасно работает на пальме. Чем .Net хуже?
S>Знаешь, есть такая функция GetProcAddress() Вполне можно сделать нечто подобное и для классов.
Знаю. Ты на приложение посмотрел? А теперь попробуй все же реализовать аналог на С++. Я даже не буду требовать, чтобы это работало для любых классов без доп. условий (как это работает в .Net). Иначе у тебя вообще ничего не получится. Попробуй-попробуй. И ты поймешь, что это не намного более удобно, чем реализация ООП с виртуальным множественным наследованием на макроассемблере.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[93]: ToString()
От: Курилка Россия http://kirya.narod.ru/
Дата: 22.12.04 12:24
Оценка:
Здравствуйте, slegkapjan, Вы писали:

S>>>Знаешь, есть такая функция GetProcAddress() Вполне можно сделать нечто подобное и для классов.

S>>Знаю. Ты на приложение посмотрел? А теперь попробуй все же реализовать аналог на С++. Я даже не буду требовать, чтобы это работало для любых классов без доп. условий (как это работает в .Net). Иначе у тебя вообще ничего не получится. Попробуй-попробуй. И ты поймешь, что это не намного более удобно, чем реализация ООП с виртуальным множественным наследованием на макроассемблере.
S>Опять же, все что ты сказал сугубо субъективно. Вполне можно реализовать очень даже удобную, работоспособную систему.

А теперь ответь на вопрос — сколько это займёт человекочасов, насколько это будет всё безглючнои оттестировано на реальных приложениях? Думаю это будет неслабое число человекочасов, далеко не с парой нулей
Re[93]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 12:43
Оценка:
Здравствуйте, slegkapjan, Вы писали:


S>>Попробуй. Можешь хотя бы на пальцах объяснить, как ты на С++ реализуешь код, принимающий решение о возможности вызова в зависимости от того, откуда сделан вызов?

S>См. выше. Просто поддержка будет не со стороны языка, а со стороны ОС -- что гораздо правильнее.
Не вижу выше никаких идей про то, как это можно было бы реализовать со стороны ОС. При этом так, чтобы можно было управлять этим из С++, не изменяя языка.

S>>Нет уж, это ты делаешь некоторое голословное утверждение. Будь любезен принести доказательство в студию. В науке, знаешь ли, действует презумпция недоказанности. Так что пока ты не приведешь метод, по которому ты выполнишь более быструю реализацию, аналогичную любой .Net программе, я буду считать твои заявления плодом религиозного экстаза.

S>Неужели ты этого сам не понимаешь? Как ты думаешь, можно ли, например, переписать zlib целиком на .NET, так чтобы zlib не отстовал от реализации на Си?
Нет, не понимаю. Твой вопрос не имеет никакого отношения к доказываемому утверждению. Заметь, что ты сделал два утверждения:
1. Для любой программы на C# существует эквивалентная программа на С++ с более высоким быстродействием.
2. Существуют программы на С++, для которых невозможно написать программу на C# с более высоким быстродействием.
Со вторым утверждением я не спорю. Можншь его не доказывать. Я прошу только доказать первое утверждение. Хинт: никакая программа на С++ не поможет в его доказательстве.
S>>>Т.е. ты утверждаещь, что, положим, можно написать фреймворк для PIC? Или для палмы с 300 килобайтами хипа?
S>>Именно это я и утверждаю. А почему бы, собственно, нет? JVM прекрасно работает на пальме. Чем .Net хуже?
Так, ну то есть этот пункт вопросов не вызвал?
S>>Знаю. Ты на приложение посмотрел? А теперь попробуй все же реализовать аналог на С++. Я даже не буду требовать, чтобы это работало для любых классов без доп. условий (как это работает в .Net). Иначе у тебя вообще ничего не получится. Попробуй-попробуй. И ты поймешь, что это не намного более удобно, чем реализация ООП с виртуальным множественным наследованием на макроассемблере.
S>Опять же, все что ты сказал сугубо субъективно. Вполне можно реализовать очень даже удобную, работоспособную систему.
И в третий раз говорю — попробуй вполне реализовать очень даже удобную, работоспособную систему. Пример приложения ты посмотрел? Доказательством справедливости можно считать
а) описание способ построения аналогичного приложения
б) само аналогичное приложение
Какой из способов ты выбираешь?
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[95]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 13:47
Оценка:
Здравствуйте, slegkapjan, Вы писали:


S>>1. Для любой программы на C# существует эквивалентная программа на С++ с более высоким быстродействием.

S>Пусть нам дана некоторая программа на C#, реализующая некий алгоритм. Т.к. с точки зрения управляющих конструкций C# является подмножеством C++, то мы можем написать программу на C++ действующую схожим образом. Уже на этом уровне, C++ должен быть как минимум не медленнее C#, т.к. C++ язык более низкого уровня. Однако у C# есть замечательная штука -- GC которая будет запускаться раз в N тактов и притормаживать всю систему.
Ага, ну что ж, идея ясна. Возможно, это действительно доказательство утверждения номер 1. Хотя я бы не стал утверждать этого категорично — вдруг найдется опровержение этого доказательства .
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[95]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 22.12.04 13:47
Оценка:
Здравствуйте, slegkapjan, Вы писали:
S>Что конкретно вызывает твои сомнения?
Отсутствие внятной аргументации существования такого метода. Еще раз: Это не я сделал голословное утверждение. Это ты сделал утверждение о том, что можно реализовать намного более действенную защиту, чем CAS, на С++. Я пока не вижу, как это можно сделать, не воспроизводя весь .Net Framework.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[47]: Опять С++ vs С#
От: Eugeny__ Украина  
Дата: 28.12.04 14:44
Оценка:
Здравствуйте, VladD2, Вы писали:

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


V>>собственно, к этому вопросу я и вел


VD>А зачем он к этому велся? Что это не дает возможность писать игры на дотнете?


VD>Ты скачал игрушку — то? Как она сильно тормозит?


Кстати, как-то нам в офис приносили игрушку(3D стрелялка) на java. Вполне, кстати, приличная. Я хотел слить себе, поковыряться в ней, но толи заболел, толи еще какая-то напасть, вобщем теперь не могу достать, и названия не помню. Интересно просто внимательно на нее глянуть, хотя бы ради академического интереса. Никто название или ссылочку не кинет?
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Примеры в студию!
От: SilverCloud Россия http://rodonist.wordpress.com
Дата: 02.01.05 10:14
Оценка:
Здравствуйте, slegkapjan, Вы писали:

S>Для большиства операционок небольшая часть кода написана на ассемблере, остальное на C++.

S>

Примеры операционок на плюсах можно?
Who needs information?
Re[42]: Опять С++ vs С#
От: Astaroth Россия  
Дата: 05.01.05 18:39
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Про FastCGI никогда не слышал?


Лично я про неё слышал, но ни разу не пользовался. Хотя как-то раз чуть-чуть не пришлось.
Увидев в доке, что каждый скрипт нужно прописывать в конфиге апача, я так сильно испугался, что сумел переубедить человека, который очень хотел делать сайт на Perl+FastCGI
Может, конечно, я чего-нить не так понял, если так — то расскажите кто-нить, как это выглядит на самом деле.
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[65]: ToString()
От: Astaroth Россия  
Дата: 05.01.05 18:49
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Да плевать ему на практику тысяч человек. Его теори незыблемы. Пробовать на практике ему в лом. Мне кажется все эти разговоры бессмысленны. Это упертость принципиальна. Надо завершать этот бессмысленный разговор.


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

WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[43]: Опять С++ vs С#
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 18:56
Оценка:
Здравствуйте, Astaroth, Вы писали:

A>Лично я про неё слышал, но ни разу не пользовался. Хотя как-то раз чуть-чуть не пришлось.

A>Увидев в доке, что каждый скрипт нужно прописывать в конфиге апача, я так сильно испугался, что сумел переубедить человека, который очень хотел делать сайт на Perl+FastCGI
A>Может, конечно, я чего-нить не так понял, если так — то расскажите кто-нить, как это выглядит на самом деле.

FastCGI это не конкретная технология, а принцип построения CGI-приложений.
http://en.wikipedia.org/wiki/Fastcgi

FastCGI is an extention to the CGI interface which keeps processes alive for multiple requests. The FastCGI interface uses a bidirectional connection, which can be extended across machines. The FastCGI interface also allows authentication a seperate CGI program. A single request could involve two or more CGI applications: One to authenticate, one to log the connection, and one to actually do the work. Multistage forms become much easier to code, and a large amount of parsing overhead is cut out.

... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[2]: C++ server pages
От: Astaroth Россия  
Дата: 05.01.05 19:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Что за выражения? Фу.


Кто бы говорил

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


Ситуации разные бывают. Вдруг людям производительность сильно нужна? Или какая-нить специфичная либа... А если и то, и другое — то уже без вариантов
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re[66]: ToString()
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 19:28
Оценка:
Здравствуйте, Astaroth, Вы писали:

Подобные письма следует направлять на moderator@rsdn.ru, а не писать в форум
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[86]: ToString()
От: bt  
Дата: 06.01.05 11:46
Оценка:
Здравствуйте, Sinclair, Вы писали:

...
S>И что же такого из плюсов нельзя реализовать на C#?

Не спора ради. Просто действительно интересно.

Я например не нашел в C# следущей возможности.

1. Переопределить для класса опрератор new

2. Переопределить для класса перегруженную версию оператора new,
который получает аргумент — указатель на область памяти (возможно ранее выделенную).
Re[50]: Опять С++ vs С#
От: Astaroth Россия  
Дата: 06.01.05 11:59
Оценка:
Здравствуйте, AndrewVK, Вы писали:

ГВ>> Да нет, по сути дела, никто не мешает и сейчас сделать некий аналог C++ server pages, и проблема в другом — не все хостеры будут рады такой технологии.

AVK>Ну то есть кто то все таки мешает?

Если я правильно понял, c++sp нужны тем, кому нужна сильно высокая производительность или написанные на cpp либы.
А таким людям безотносительно языка потребуется выделенный сервер.
Значит хостеры тут параллельны.
WinAmp играет: (умолк пока)
http://livejournal.com/users/breqwas
Re: Примеры в студию!
От: Rebus83 Россия  
Дата: 06.01.05 16:59
Оценка:
Здравствуйте, SilverCloud, Вы писали:

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


S>>Для большиства операционок небольшая часть кода написана на ассемблере, остальное на C++.

S>>

SC>Примеры операционок на плюсах можно?

BeOS — практически полностью, Symbian — практически полностью, Windows NT — некоторые части написаны на C++.
... << RSDN@Home 1.1.3 stable >>
Какая странная планета! — подумал Маленький принц. — Совсем сухая,
вся в иглах и соленая. И у людей не хватает воображения. Они только
повторяют то, что им скажешь...
Re[2]: Примеры в студию!
От: slegkapjan  
Дата: 07.01.05 07:54
Оценка:
У меня есть несколько вопросов к апологетам .NET:
1. Есть ли какие-то программные продукты, сделанные по технологии .NET, занимающиеся обработкой данных: компиляторы, архиваторы, СУБД, сервера, научное ПО. Т.е. есть ли примеры реализации крупных программ типа FineReader, Alias Maya, SQL Server etc.
2. Возможно ли чисто теоретически сделать компьютер с хардварным .NET фреймворком или хотя бы с хардварной поддержкой .NET-овского p-кода?
Re[3]: Примеры в студию!
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 07.01.05 11:52
Оценка:
Здравствуйте, slegkapjan, Вы писали:

S>1. Есть ли какие-то программные продукты, сделанные по технологии .NET, занимающиеся обработкой данных: компиляторы,


Компилятор Моно к примеру.

S> архиваторы,


Их последние лет десять всерьез уже никто не пишет.

S> СУБД,


Есть порт HypersonicSQL на дотнет.

S> сервера,


Полно.

S> научное ПО.




S> Т.е. есть ли примеры реализации крупных программ типа FineReader, Alias Maya, SQL Server etc.


BizTalk 2004 сойдет?

S>2. Возможно ли чисто теоретически сделать компьютер с хардварным .NET фреймворком или хотя бы с хардварной поддержкой .NET-овского p-кода?


Полностью вряд ли, а частично думаю можно.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[4]: Примеры в студию!
От: Andy77 Ниоткуда  
Дата: 07.01.05 23:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>> научное ПО.


AVK>


есть
Re[87]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.01.05 09:04
Оценка:
Здравствуйте, bt, Вы писали:
bt>Я например не нашел в C# следущей возможности.
bt>1. Переопределить для класса опрератор new
bt>2. Переопределить для класса перегруженную версию оператора new,
bt> который получает аргумент — указатель на область памяти (возможно ранее выделенную).
Как бы тебе так объяснить. Ты не обратил внимание на то, что перегрузка оператора new сопровождается обязательной перегрузкой парного оператора delete? Его отсутствие в C# сильно мешает выполнить подобные действия.
З.Ы. Ребята, подобные рассуждения — то же самое, что сожаление об отсутствии заводного рычага в комплектации тойоты
Автор: Sinclair
Дата: 08.10.04
.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[89]: ToString()
От: DEMON HOOD  
Дата: 09.01.05 09:56
Оценка:
Здравствуйте, slegkapjan, Вы писали:

S>>>>А можешь подробнее изложить свои заблуждения об ограничениях легкости переноса C# на другие платформы?

S>>>Пожалуйста. Можно ли перенести программу на C# под Palm OS?
S>>Да нет проблем. Ну нет (пока) фреймворка под палмос. Ну и что? Язык-то это как затрагивает?
S>А скажи пожалуйста, ты думаешь что можно в принципе написать фреймворк C# для любой платформы?

а ты думаешь, что нельзя?
... <<silent Rsdn@Home 1.1.4 beta 1 Windows XP 5.1.2600.0 >>
Re[90]: ToString()
От: slegkapjan  
Дата: 10.01.05 07:00
Оценка:
Возвращаясь к C++, надо понимать, что развитие C++ еще далеко не закончено. Быстро развивающаяся модель generic\meta programming может, и, скорее всего -- изменит стилистику высокоуровнего программирования в C++. Интересно, есть ли средства, подобные template-ам C++ в C#?

Еще я не понимаю почему не обсуждается гораздо более важный и интересный вопрос: C# vs. Java, потому что разговоры про то, что C# заменит C++ все же больше похожи на спекуляции.
Re[88]: ToString()
От: bt  
Дата: 10.01.05 14:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

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

bt>>Я например не нашел в C# следущей возможности.
bt>>1. Переопределить для класса опрератор new
bt>>2. Переопределить для класса перегруженную версию оператора new,
bt>> который получает аргумент — указатель на область памяти (возможно ранее выделенную).
S>Как бы тебе так объяснить. Ты не обратил внимание на то, что перегрузка оператора new сопровождается обязательной перегрузкой парного оператора delete? Его отсутствие в C# сильно мешает выполнить подобные действия.

Да не надо мне объяснять, то что я и так знаю. Ты писал

И что же такого из плюсов нельзя реализовать на C#?



Я тебе привел пример.
Пожалуйста ответь:
можно,
нельзя,
можно другим способом получить такой-же эффект (например возможно используя WeakReference)
не знаю.

Меня кстати больше интересует переопределение оператора new(void *, size_t), а в этом случае в C++ нет необходимости переопределять delete.


S>З.Ы. Ребята, подобные рассуждения — то же самое, что сожаление об отсутствии заводного рычага в комплектации тойоты
Автор: Sinclair
Дата: 08.10.04
.


З.Ы. Это просто "Аншлаг, аншлаг" какой-то.
Re[89]: ToString()
От: Sinclair Россия https://github.com/evilguest/
Дата: 11.01.05 06:14
Оценка:
Здравствуйте, bt, Вы писали:
bt>Я тебе привел пример.
bt>Пожалуйста ответь:
bt>можно,
bt>нельзя,
bt>можно другим способом получить такой-же эффект (например возможно используя WeakReference)
bt>не знаю.
Ок, отвечаю: нельзя. By design.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[90]: ToString()
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.01.05 10:16
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ок, отвечаю: нельзя. By design.


На самом деле можно
... << RSDN@Home 1.1.4 beta 3 rev. 274>>
AVK Blog
Re[91]: ToString()
От: bt  
Дата: 11.01.05 10:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


S>>Ок, отвечаю: нельзя. By design.


AVK>На самом деле можно


А вот это уже действительно интересно.
Если можно, вкратце расскажи: как?
Какие механизмы использовать? WeakReference?
Re[38]: Опять С++ vs С#
От: Максим Алексейкин США  
Дата: 11.01.05 14:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Таких море. Просто понятие комерческого успеха сильно растяжимо. Есть и игры, и системы автоматизации, и море сайтав (хотел бы я посмотреть на сайт на С++).


связка ISAPI + VC++. лично видел и сопровождал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.