Здравствуйте, Хвост, Вы писали:
Х>Здравствуйте, gandjustas, Вы писали:
G>>Кстати тесты по быстродействию операций выделения-освобождения памяти в с++ и .NET я приводил — C++ сливает. G>>И это без умных указателей и прочей лабуды, с ними банальная вещь — работа с памятью — будет еще медленнее. Х>ты вообще в курсе про стек? наша песня хороша, начинай сначала? подавляющее число аллокаций в с++ происходит на стеке, заруби себе ето на носу, и там твой гц сливает аж не балуй.
Ну статистику в студию, что где происходит и кто кому сливает.
Я немало писал на С++ чтобы знать где и как выделяется память.
Или местые зубры не используют STL, динамический полиморфизм, паттерны? Все наверное на шаблонах и на стеке.
...В отличие от goto, с которым можно связать некоторую опасность, создающуюся при неумереннном использовании оного.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>P.S.: Но это всё не аргументы. По устоявшейся RSDN-овской традиции Настоящие Весомые Аргументы Против C++ должны содержать слова из такого ряда: фобия, замшелость, стереотип, мемори лик, проход по памяти, миллионы программистов, википедия, тузик, тряпка, рвать, мозг, затычка, косность. Можно даже шпаргалку составить.
Лучше мастер-класс на манер Владимира Кочеткова для начинающих холиварщиков.
Здравствуйте, Хвост, Вы писали:
Х>Здравствуйте, gandjustas, Вы писали:
G>>Если C++ так хорош, то почему на нем не пишут тысячи бизнес-систем? Х>потому что бизнес-логика может писатся хоть на скриптах, всем начхать на оверхед, упирается в базу обычно. То что интерфейс лагает слегка — не имеет ни для кого значения. Обсуждалось уже вроде.
так С++ такой крутой, с высокоуровневыми абстракциями и прочей лабудой, чего бы на нем не писать все это?
G>>Из игрушек кстати Halo 3 вполне на C#. Х>Пруфлинк. Могу допустить что там игровая логика написана на C#, но движок — никогда.
Движок — XNA, набери в гугле — сразу все увидишь.
Здравствуйте, Хвост, Вы писали:
Х>Здравствуйте, criosray, Вы писали:
C>>Здравствуйте, Хвост, Вы писали:
Х>>>покажи как мне выразить такую простую абстракцию: параметр метода — как ссылка на константный объект, C>>Это? C>>
Х>int main(int argc, char* argv[])
Х>{
Х> string fileName = getAppDir();
Х> fileName += "some.file";
Х> someFunc(fileName);
Х>}
Х>void someFunc(const string& fileName)
Х>{
Х> fileName = "wow!"; // тут компилятор ругается, в C# недоступен модификатор const для параметров ф-ции/метода
Х> // поетому оригинальная строка затрётся за милую душу. В С++ всё гуд. В C# - боль и печаль.
Х>}
Х>
В этом месте все сторонники C# начинают громко смеяться
1)строки в C# иммутабельны, при всем желании ты не затрешь строку, которую использует кто-то другой.
2)присваивание строковой переменной литерального значения приводит только к копированию ссылки, в отличие от C++
Поэтому о правильном поведении кода без const модно даже не задумываться, и работать это будет быстрее C++ного варианта.
Здравствуйте, Хвост, Вы писали:
Х>>>ты вообще в курсе про стек? наша песня хороша, начинай сначала? подавляющее число аллокаций в с++ происходит на стеке, заруби себе ето на носу, и там твой гц сливает аж не балуй. C>>Да где сливает-то? Покажите бенчмарки, основанные на реальном (желательно production) коде. Х>ээээ, даже не знаю что сказать как ты представляешь себе бенчмарки продакшн кода в плане аллокация на стеке vs аллокация c gc?
Так это Вы утверждаете, что сливает... Я ничего не утверждаю, а лишь прошу обосновать Ваши слова реальным кодом, а не синтетическими попугайчиками или, того хуже, Вашими догадками... Всего-то.
Здравствуйте, Хвост, Вы писали:
Х>>>покажи как мне выразить такую простую абстракцию: параметр метода — как ссылка на константный объект, Х>нет, вот ето
Это не ссылка на константный объект, а константная ссылка. В С# их нет и не особо надо. Это не сравнимо со всем многообразием граблей, возникающих в С++ благодаря голой арифметики указателей и ручному управлению памятью.
Х>>>или ммм... такую "фичу" как множественное наследование, C>>Множественное наследование — моветон, сродни goto. Это ХОРОШО, что его нету, иначе количество граблей, генерируемых индусами возразло бы экспоненциально. Х>ты как бы взгляни на библиотеки boost/wtl/atl, и покажи мне в каком месте в них множественное наследование является моветоном.
Библиотеки это вообще очень особая категория. .NET FW гораздо лучше спроектирован, чем boost/atl/wtl, не смотря на отсутствие множественного наследования, т.к. при грамотном дизайне правильнее одиночное наследование и множественная реализация интерфейсов (множественное наследование абстрактных классов в С++).
Х>>>или скажем, статический полиморфизм, слышал о таком? C>>Он конечно же есть в .NET Х>где?
Гугл отменили? http://www.dotnetspark.com/kb/433-polymorphism.aspx
Здравствуйте, criosray, Вы писали: C>Это не ссылка на константный объект, а константная ссылка.
мммм... ддя ссылок имхо монопенисуально, но по аналогии с указателями я привык называть так. C>В С# их нет и не особо надо.
да, конечно, нет в C# значит особо не надо
C>Это не сравнимо со всем многообразием граблей, возникающих в С++ благодаря голой арифметики указателей и ручному управлению памятью.
на дворе 2009 год. Впервые о смартпоинтерах заговорили афаир в 1996, STL стандартизован в 1998. примерно в 2002-2003-м промышленные компиляторы стали хорошо воспринимать стандарт.
Вот примерно с етих времён "голой арифметики указателей и ручному управлению памятью" становится всё меньше и меньше.
C>Библиотеки это вообще очень особая категория. .NET FW гораздо лучше спроектирован, чем boost/atl/wtl, не смотря на отсутствие множественного наследования,
т.к. при грамотном дизайне правильнее одиночное наследование и множественная реализация интерфейсов (множественное наследование абстрактных классов в С++). >>.NET FW гораздо лучше спроектирован
голословно >>т.к. при грамотном дизайне правильнее одиночное наследование и множественная реализация интерфейсов
голословно, можно пример правильного дизайна без множественного наследования и неправильного с множественным? Посмотри так же на CRTP.
Х>>>>или скажем, статический полиморфизм, слышал о таком? C>>>Он конечно же есть в .NET Х>>где? C>Гугл отменили? http://www.dotnetspark.com/kb/433-polymorphism.aspx
спасибо, про перегрузку уже обсудили, если ето единственное что ты видишь в статическом полиморфизме то C# тебя испортил.
Здравствуйте, gandjustas, Вы писали:
G>>>Если C++ так хорош, то почему на нем не пишут тысячи бизнес-систем? Х>>потому что бизнес-логика может писатся хоть на скриптах, всем начхать на оверхед, упирается в базу обычно. То что интерфейс лагает слегка — не имеет ни для кого значения. Обсуждалось уже вроде. G>так С++ такой крутой, с высокоуровневыми абстракциями и прочей лабудой, чего бы на нем не писать все это?
дык потому что мало C++ программистов, дорого они стоят, а бизнес-систем много. и поддерживать их будут программеры "на местах", а им лучше язык попроще дать, без острых углов.
G>>>Из игрушек кстати Halo 3 вполне на C#. G>Движок — XNA, набери в гугле — сразу все увидишь.
я вот призадумался, ты или не знаешь что такое движок, или толком не понимаешь что такое XNA, или ты так далёк от игростроя что почитав "интернеты" придумал свой мир где дотнет захватил игрострой :-D
p.s.
погуглил
Halo 3 вообще никаким боком к XNA не касается, что и не удивительно для игры класса AAA.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, ollv, Вы писали:
O>> Ну так и есть и ксамл WPF это хорошо иллюстрирует, и плюсам тянуться за гуями, мне кажется, вообще не стоит, за плюсами мегапреимущество в архитектурных и скоростных решениях, за счет высоких абстракций и шаблонов. Гуя же так ил иначе перекочует в XML подобное оформление, кстати при современных фреймворках с парсингом XML тандем его с плюсами мне кажется вполне приемлемым, даже удобным.
VD>Можно пример высокоуровневой абстракции которую нельзя воспроизвести на языке отличном от С++?
на каком конкретно? Если языки аля джава или дотнет, или нечто другое из структурных языков, то любой шаблон не привязанный к реальным сущностям является для них недостижимым. дженерики дотнета и не дорастут, а в джаве на сколько я знаю, темплейты так же весьма ограничены (по известным причинам).
Кроме того, на плюсах вполне реализуемы элементы не родственных стурктур, к примеру итерации for_each, find_if count_if, функторы, придают плюсам оттенки функциональных языков, но вообще метапрограммирование видоизменяет плюсы, а говорить, что это все можно реализовать в джава или дотнете — просто не знать плюсы. Даже простейший вызов из темплейтного метода непредопределенного класса с оператором () — уже недостижимая мечта для шарпа или жавы. Впрочем практика показывает, базовый функционал крупных проектов требующих гибкой архитектуры реализуется чаще на плюсах (во всяком случае в моей практике это именно так)
констрейны дают возможность предопределить поведение при компиляции. Да и еще, плюсы то развиваются, стандарт постоянно дополняется новыми фичами расширяюшими возможности, typeof это не последнее
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Здравствуйте, Anton Batenev, Вы писали:
AB>Здравствуйте, Хвост, Вы писали: Х>> Halo 3 вообще никаким боком к XNA не касается, что и не удивительно для игры класса AAA. AB>Я просто не в теме, расскажи, а что значит AAA?
Здравствуйте, ollv, Вы писали:
O>Здравствуйте, VladD2, Вы писали:
VD>>Здравствуйте, ollv, Вы писали:
O>>> Ну так и есть и ксамл WPF это хорошо иллюстрирует, и плюсам тянуться за гуями, мне кажется, вообще не стоит, за плюсами мегапреимущество в архитектурных и скоростных решениях, за счет высоких абстракций и шаблонов. Гуя же так ил иначе перекочует в XML подобное оформление, кстати при современных фреймворках с парсингом XML тандем его с плюсами мне кажется вполне приемлемым, даже удобным.
VD>>Можно пример высокоуровневой абстракции которую нельзя воспроизвести на языке отличном от С++? O> на каком конкретно? Если языки аля джава или дотнет, или нечто другое из структурных языков, то любой шаблон не привязанный к реальным сущностям является для них недостижимым. дженерики дотнета и не дорастут, а в джаве на сколько я знаю, темплейты так же весьма ограничены (по известным причинам).
Здравствуйте, Хвост, Вы писали:
Х>Здравствуйте, gandjustas, Вы писали:
G>>>>Если C++ так хорош, то почему на нем не пишут тысячи бизнес-систем? Х>>>потому что бизнес-логика может писатся хоть на скриптах, всем начхать на оверхед, упирается в базу обычно. То что интерфейс лагает слегка — не имеет ни для кого значения. Обсуждалось уже вроде. G>>так С++ такой крутой, с высокоуровневыми абстракциями и прочей лабудой, чего бы на нем не писать все это? Х>дык потому что мало C++ программистов, дорого они стоят, а бизнес-систем много. и поддерживать их будут программеры "на местах", а им лучше язык попроще дать, без острых углов.
Судя по форуму — совсем немало. А судя по вакансиям хорошему программисту на шарпе платят больше, чем хорошему программисту на С++.
G>>>>Из игрушек кстати Halo 3 вполне на C#. G>>Движок — XNA, набери в гугле — сразу все увидишь. Х>я вот призадумался, ты или не знаешь что такое движок, или толком не понимаешь что такое XNA, или ты так далёк от игростроя что почитав "интернеты" придумал свой мир где дотнет захватил игрострой :-D
Я отлично знаю что такое движок, даже сам писал что-то подобное, и даже дописал. А потом понял что херней занимался долго время.
Х>p.s. Х>погуглил Х>Halo 3 вообще никаким боком к XNA не касается, что и не удивительно для игры класса AAA.
Да ну. И на чем ты напишешь игру для XBox 360?
Здравствуйте, Хвост, Вы писали:
Х> AB>Я просто не в теме, расскажи, а что значит AAA? Х> Short answer: Х> High-quality games with high budget.
Не, хотелось бы для саморазвития. Что есть ААА, что есть BBB. В смысле какую-нибудь табличку сравнительную с приблизительными числовыми характеристиками.
Здравствуйте, ollv, Вы писали:
O> Кроме того, на плюсах вполне реализуемы элементы не родственных стурктур, к примеру итерации for_each, find_if count_if, функторы, придают плюсам оттенки функциональных языков
ржунимагу. шаблоны позволяют сделать то что уже есть в других языках
O>но вообще метапрограммирование видоизменяет плюсы, а говорить, что это все можно реализовать в джава или дотнете — просто не знать плюсы
Рассказываю тайны, большенство программистов на C# достаточно долго программили на плюсах и отлично его знают.
А вот наоборот — редко бывает.
O>Даже простейший вызов из темплейтного метода непредопределенного класса с оператором () — уже недостижимая мечта для шарпа или жавы.
Включай моз, для чего нужно переопределение скобок? Чтобы объект вел себя как функция, а это значит что возможностей функций не хватает.
Такие выкрутасы с перегрузкой от бедности языка, а обилиле подобных "фич" только повышают возможность создать нифига нечитаемый код.
O>Впрочем практика показывает, базовый функционал крупных проектов требующих гибкой архитектуры реализуется чаще на плюсах (во всяком случае в моей практике это именно так)
Какой гибкой архитектуры? C++ не умеет интеропать ни с какими другими языками, даже при интеропе с другой либой на С++ могут возникнуть проблемы.
O>констрейны дают возможность предопределить поведение при компиляции. Да и еще, плюсы то развиваются, стандарт постоянно дополняется новыми фичами расширяюшими возможности, typeof это не последнее
За последние 5 лет какое развитие было?
AB> Х> Short answer: AB> Х> High-quality games with high budget.
AB> Не, хотелось бы для саморазвития. Что есть ААА, что есть BBB. В смысле какую-нибудь табличку сравнительную с приблизительными числовыми характеристиками.
Чектого определения нет. Обычно просто обозначает высококачественную игру с большим бюдэетом. Предположительно, стоимость разработки AAA-игр сейчас начинается от 4 илиионов долларов (ссылку не найду, читал еще в прошлом году)
Здравствуйте, Mamut, Вы писали:
AB>> Х> Short answer: AB>> Х> High-quality games with high budget.
AB>> Не, хотелось бы для саморазвития. Что есть ААА, что есть BBB. В смысле какую-нибудь табличку сравнительную с приблизительными числовыми характеристиками.
M>Чектого определения нет. Обычно просто обозначает высококачественную игру с большим бюдэетом. Предположительно, стоимость разработки AAA-игр сейчас начинается от 4 илиионов долларов (ссылку не найду, читал еще в прошлом году)
AAA game means games that have almost unlimited budgets and are media events. Blizzard is the AAA game company these days. They won’t release anything that doesnt fall under AAA.