Вторник, 07 Апреля 2020, 13:27

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Форум игроделов » Программирование » C/C++ » Что же мне выбрать ?? C++ или C#
Что же мне выбрать ?? C++ или C#
SlavyanOOsДата: Воскресенье, 15 Августа 2010, 14:41 | Сообщение # 41
Problems, developer?
Сейчас нет на сайте
Quote (BetMora)
нет, он не отлично подходит для игр, из-за того, что сишарп разрабатывался для системного программирования

ТЫ писал что-то? Я - да, и знаю, что говорю!
ezhickovichДата: Воскресенье, 15 Августа 2010, 14:46 | Сообщение # 42
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (BetMora)
нет, он не отлично подходит для игр, из-за того, что сишарп разрабатывался для системного программирования

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

Добавлено (15.08.2010, 14:46)
---------------------------------------------

Quote (SlavyanOOs)
ТЫ писал что-то? Я - да, и знаю, что говорю!

Ну это какбэ общепринятое мнение....
Хотя и немного преувеличенное...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
XimikSДата: Воскресенье, 15 Августа 2010, 15:03 | Сообщение # 43
участник
Сейчас нет на сайте
с++ офк круче, но шарп легче, и с managed DirectX в последнее время набирает обороты..
ezhickovichДата: Воскресенье, 15 Августа 2010, 15:09 | Сообщение # 44
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (XimikS)
с++ офк круче, но шарп легче

Короче самый аффигеный способ писать на C++ в стиле C#... ( без шуток... )



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
zadrot_666Дата: Воскресенье, 15 Августа 2010, 18:46 | Сообщение # 45
почетный гость
Сейчас нет на сайте
Quote (SlavyanOOs)
ЧИСТО ООП НАПРАВЛЕННОСТИ

И что? Игры можно вообще и без ООП делать. Смотри исходники Quake 1\2\3.
В C# нельзя работать с памятью на низком уровне, что очень важно при разработке игр.
С# не мультиплатформен. С# годится лишь на написание игр на XNA для XBox 360. Усе.


Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine? © SHODAN.
ezhickovichДата: Понедельник, 16 Августа 2010, 09:48 | Сообщение # 46
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (zadrot_666)
И что? Игры можно вообще и без ООП делать.

Да, но таких людей часто называют твоим ником...

Quote (zadrot_666)
С# годится лишь на написание игр на XNA для XBox 360. Усе.

А PC куды дел?
хочешь сказать что для PC C# не годится?



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
zadrot_666Дата: Понедельник, 16 Августа 2010, 21:52 | Сообщение # 47
почетный гость
Сейчас нет на сайте
Quote (ezhickovich)
Да, но таких людей часто называют твоим ником...

Чё, кармака задротом_666 называли??? biggrin

Quote (ezhickovich)

А PC куды дел?
хочешь сказать что для PC C# не годится?

Для разработки игр для PC - не годится)
Почему?
1. платформа .нет
2. скорость низская. не веришь - посмотри тесты
3. отсутствие возможность писать на дх.(мс прекратила разработку менеджет дх давно). C OGL думаю дела обстоят так же.
4. невозможность низкоуровневого управления памятью
5. невозможно нормально вставлять asm код в C# код.


Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine? © SHODAN.

Сообщение отредактировал zadrot_666 - Понедельник, 16 Августа 2010, 21:53
ezhickovichДата: Понедельник, 16 Августа 2010, 22:29 | Сообщение # 48
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (zadrot_666)
C OGL думаю дела обстоят так же.

Как раз с ГЛ там дела нормально...

Без ООП ты никуда не денишся да и без .NET тоже...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
Dark_FalconДата: Понедельник, 16 Августа 2010, 23:29 | Сообщение # 49
постоянный участник
Сейчас нет на сайте
Quote
А PC куды дел?

Ну, если уж на то пошло, то помимо PS и XBOX, на XNA можно писать еще для Zune, и для Windows Phone 7.
Quote
2. скорость низская. не веришь - посмотри тесты

Ну, Microsoft никогда и не отрицала, что игры созданные на C++, будут работать быстрее, чем игры созданные в XNA например. smile Весь вопрос в том, сколько вы убьете времени и сил, создавая игру на C++, и сколько, создавая на XNA. Причем на XNA, создав игру для PC например, перевести ее на Xbox особого труда уже не составит. smile Тоесть опять же, сэкономите кучу времени.
Но в любом случая, я согласен с тем, что на C# хорошо создавать различные программы и редакторы. Собственно многие разработчики игр, так и делают. Все чаще при установке игр, требуется Framework. Правда это не потому, что сами игры написаны на C#, а потому, что программы к игре написаны на C#. Ну, например, бенчмарк к Far Cry 2 написан на C#. Neverwinter 2 требует framework.И так далее... Я не знаю ни одной известной игры, написанной на C#... Их просто нет, и врятли они появятся в ближайшее время.
bumДата: Вторник, 17 Августа 2010, 00:22 | Сообщение # 50
почетный гость
Сейчас нет на сайте
Я не являюсь большим поклонником .NET и специалистом по данной технологии, поскольку последние несколько лет пишу большей частью на Python'е, но в данном случае заступлюсь за C#. Впрочем это касается не только C#, а любого современного языка высокого уровня (C++ уж извините, но таковым не является).

1. На практике, процент задач требующих жуткой оптимизации по скорости выполнения очень мал. Вообще скорость выполнения большинства задач не является критическим фактором. В самом деле, конечному юзеру глубоко наплевать на то, выполняется задача за 0,1 секунды или за 0,01 секунды. Кроме того большая часть программистов врядли способна соревноваться в написании оптимального кода с современными компиляторами. Поверте, написать медленный код на Ассемблере намного легче чем на C# или даже Python.
2. Зато есть другой важный фактор - скорость разработки. Сегодняшний рынок IT (не только разработки игр, а вообще) очень динамичен и если вы потратите лишнее время на разработку, то пропустите вперед конкурента, и как итог - потеряете деньги. Конечно же скорость разработки на C# будет в несколько раз выше чем на C++ и просто глупо этим не пользоваться. Причем скорость в том числе обеспечивается и меньшими затратами на отладку, поскольку допустить ошибку в коде на C++ несоизмеримо проще, а найти сложнее. Кроме того, программирование на относительно низкоуровневых языках, как тот же C++, порождает проблему преждевременной оптимизации. В свое время еще Дональд Кнут писал, что преждевременная оптимизация - зло. Вместо того чтобы сосредоточиться на задаче и решать ее, программист занимается оптимизацией какого-то блока программы не влияющего напрямую на решение задачи. В итоге разработка затягивается, а на выходе мы не получаем не то, что быстрого кода, а даже и хоть как-то работающего.
3. .NET так же как и Java, и некоторые другие подобные платформы поддерживает JIT. Т.е. при первом запуске ваш код автоматически компилируется в машинный код конкретной платформы, и при следующих запусках будет уже запускаться он. В такой ситуации разница в скорости между программой написанной на C++ и программой на C# может быть вообще мизерной. Что касается разнообразных тестов, то их можно накопать сколько угодно с разных сторон, но они все синтетические, в реальной жизни задачи более разнообразны.
4. Ручное управление памяти в C++ чем многие так гордятся, на практике порождает только проблемы, поскольку вместо решение конкретной задачи программист занимается борьбой с компилятором и устранением утечек памяти. Современные языки со сборщиком мусора этой проблемы не имеют, поскольку умеют освобождать память автоматически.
5. Тот же .NET вполне себе позволяет при желании использовать библиотеки написанные на обычном C++, поэтому если уж так нужно что-то оптимизировать, то флаг в руки.
6. Большая проблема .NET - отсутствие полноценной кросплатформенности. Впрочем, есть Mono, так, что сейчас на C# можно вполне нормально писать и под Linux.

Все это не означает, что C++ плох. Нет. У него все еще есть своя ниша которую он успешно занимает. Но извините меня, каждый инструмент хорош к месту. А C++ и C#, как и другие языки - это всего лишь инструменты, и ничего более. Именно по этому часто просто глупо стараться использовать для всего проекта один и тот же язык. Пишите на том, что повысокоуровней и попроще. Проверяете, тестируете, вылавливаете медленные места. Если скорость где-то вас не устраивает, то локализуете такие места и выносите их во внешние библиотеки которые можно написать на том же C++, а может и чистого C хватит. Во всех остальных случаях, применение низкоуровневых инструментов - это трата пустая времени.

Не знаю почему, но иногда многие преподносят C++ как супернавороченный язык со сверхвозможностями, почти как панацею от всего. Извините, но выглядит со стороны это не более чем желание показать у кого длиннее. Тем более, что многие C++ программисты свой язык понимают откровенно слабо. У некоторых наступает просто разрыв шаблона когда они узнают, что в C++ записи a[10] и 10[a] являются полностью эквивалентными. Некоторых воспитанных на современных IDE (как тот же VS например) ставят в тупик вопросы по написанию make-файлов. А все это вещи которые дают понимание языка. Если вы считаете, что знать C++ это круто, то это нифига не так. C++ это давно уже обычно, привычно и банально. Если же считать показателем крутости сложность языка для среднестатистического программиста, то любой программист на Lisp, Erlang или Haskell должен по идее смотреть на C++ программистов как на говно.

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

Сообщение отредактировал bum - Вторник, 17 Августа 2010, 00:29
zadrot_666Дата: Вторник, 17 Августа 2010, 01:13 | Сообщение # 51
почетный гость
Сейчас нет на сайте
Quote (Dark_Falcon)
Ну, Microsoft никогда и не отрицала, что игры созданные на C++, будут работать быстрее, чем игры созданные в XNA например.

Я говорил про C++\C# а не про С++\XNA))
Quote (Dark_Falcon)
Причем на XNA, создав игру для PC например, перевести ее на Xbox особого труда уже не составит.

Берешь готовые кросс-платформенный движок, и пишешь на нем игру. И уж там можно не ограничиваться лишь ПК или XBOX.

Который раз говорю, призвание С# - системные приложения, утилиты. Для игр - C\C++. ИМХО делать игры на C# почти тоже самое что делать игры на каком ни будь Heskell'е или SmallTalk'е) И когда я говорю игра - я подразумеваю сложную 3D игру, а не 2D тетрис с псевдо-графикой 1\0.

Quote (bum)
C++ уж извините, но таковым не является

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

Quote (bum)
В самом деле, конечному юзеру глубоко наплевать на то, выполняется задача за 0,1 секунды или за 0,01 секунды.

За то конечному юзеру уж совсем не наплевать на то, выполняется задача за 0,1 секунды или за 1 секунду.

Quote (bum)
2. Зато есть другой важный фактор - скорость разработки. Сегодняшний рынок IT (не только разработки игр, а вообще) очень динамичен и если вы потратите лишнее время на разработку, то пропустите вперед конкурента, и как итог - потеряете деньги

Сейчас основная конкуренция на рынке игр - картинка. Если пишешь свой движок, то надо разработать легко расширяемую архитектуру.
К примеру, S.T.A.L.K.E.R. делали 6 лет, а картинка только улучшилась. Ничто не мешает "подлатывать" программу по мере разработки если надо.

Quote (bum)
4. Ручное управление памяти в C++ чем многие так гордятся, на практике порождает только проблемы, поскольку вместо решение конкретной задачи программист занимается борьбой с компилятором и устранением утечек памяти.

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

Quote (bum)
Современные языки со сборщиком мусора этой проблемы не имеют, поскольку умеют освобождать память автоматически.

Открою тебе страшный секрет - язык сам по себе ничего делать не может. В C# кстати сборщика мусора нету.

Quote (bum)
Но извините меня, каждый инструмент хорош к месту

С++ давно уже нашел себе место как язык для разработки сложных систем.

Quote (bum)
Тем более, что многие C++ программисты свой язык понимают откровенно слабо

Ну это проблема уже не языка. А вообще интересно откуда такая инфа. Проводил социологический опрос?

Quote (bum)
Lisp, Erlang или Haskell должен по идее смотреть на C++ программистов как на говно.

Но на деле все наоборот biggrin


Look at you, hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine? © SHODAN.
bumДата: Вторник, 17 Августа 2010, 09:26 | Сообщение # 52
почетный гость
Сейчас нет на сайте
Quote (zadrot_666)
То есть ты хочешь сказать что C++ не высоко-уровневый язык? Или ты его окрестил несовременным? Заранее благодарю, поржал. biggrin

Нет, C++ конечно же является языком высокого уровня, ведь это не ассемблер. Но он не является современным языком высокого уровня. Он появился более 25 лет назад и на протяжении 80-90-х был действительно крут. А по современным меркам он уже довольно устаревший. Именно поэтому сейчас идет разработка нового стандарта C++0x в котором заявлено реально много плюшек (в том числе наконец-то заявлены лямбда-функции). Можно почитать о нем на Википедии: http://ru.wikipedia.org/wiki/C%2B%2B0x Но, нужно время пока разработчики компиляторов это все реализуют и еще время чтобы этим начали пользоваться. Пока же C++ застыл в своем развитии на уровне 90-х.

Quote (zadrot_666)
За то конечному юзеру уж совсем не наплевать на то, выполняется задача за 0,1 секунды или за 1 секунду.

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

Quote (zadrot_666)
Это надо иметь очень уж кривые руки растущие из задницы, что бы приходилось занимается борьбой с компилятором и устранением утечек памяти.

Ну, большинство программистов свято уверены, что их то руки точно не кривые. Но даже такие популярные проекты как Firefox (я про старую версию 2.x) жрут память только так. Потому, что как только твоя программа разрастается, то очень легко многое пропустить. Слишком самонадеянно считать, что дело только в кривизне рук.

Quote (zadrot_666)
Открою тебе страшный секрет - язык сам по себе ничего делать не может. В C# кстати сборщика мусора нету.

Спасибо за открытие срашного секрета конечно, но если рассматривать язык в отрыве от его реализации, то какой в этом практический смысл?
Что касется сборки мусора, то она таки есть в C#, само собой на уровне CLR. Вот вам линк из MSDN - http://msdn.microsoft.com/ru-ru/library/ms228629%28VS.90%29.aspx

Quote (zadrot_666)
С++ давно уже нашел себе место как язык для разработки сложных систем.

В том, то и дело, что давно. Пока C++ двадцать лет топтался на месте - мир вокруг него двигался вперед.
Вот вам ссылка на рейтинг TIOBE. Это очень синтетический рейтинг, поэтому не нужно воспринимать его буквально, но основные тенденции он выражает, можете оценить тренд за последние почти десять лет: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Quote (zadrot_666)
Ну это проблема уже не языка. А вообще интересно откуда такая инфа. Проводил социологический опрос?

Это действительно возможно не проблема языка, но от этого не легче. У него высокий порог вхождения и быстро изучить его не получится. Проводил ли опрос? Можно и так сказать, работа способствует.

Quote (zadrot_666)
Но на деле все наоборот biggrin

Это вам так кажется.


Сообщение отредактировал bum - Вторник, 17 Августа 2010, 09:28
SlavyanOOsДата: Вторник, 17 Августа 2010, 09:36 | Сообщение # 53
Problems, developer?
Сейчас нет на сайте
А вы не задумывались над тем, что то что вы напишите на C++ будет адски глючить, плохо использовать память? На C++ сделать плохую программу легко! на C# же есть встроенный сборщик мусора и глюков с памятью не должно быть!
SlavyanOOsДата: Вторник, 17 Августа 2010, 09:39 | Сообщение # 54
Problems, developer?
Сейчас нет на сайте
Quote (zadrot_666)
И что? Игры можно вообще и без ООП делать. Смотри исходники Quake 1\2\3. В C# нельзя работать с памятью на низком уровне, что очень важно при разработке игр. С# не мультиплатформен. С# годится лишь на написание игр на XNA для XBox 360. Усе.

И что? Да ООП сильно облегчает разработку! Вы этого понять никак не можете! Q1\2\3 делалась в старое время, когда компы были слабыми и ООп было не очень популярно. Насчет памяти - я и без нее обхожусь. Если руки прямые, то и это можно сделать! C# не мульти, я тебя уверяю скоро все изменится! насчет XNA - и под виндой ее юзаем, + можно заюзать SlimDX, все будет быстро! Еще я писл врапер под NET Xors'a, все было ОК! C# - подходит!
ezhickovichДата: Вторник, 17 Августа 2010, 09:47 | Сообщение # 55
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (bum)
Тем более, что многие C++ программисты свой язык понимают откровенно слабо.

Что поделать - знач так хотят учить или засела в голове идея своего супер ВОВ и ещё ничего не освоив его начинают писать аппсалютный говнокод, но всем твердят, что супер программисты C++...
К сожалению таких много...

Quote (zadrot_666)
А вообще интересно откуда такая инфа. Проводил социологический опрос?

Да нужно быть слепым чтобы это не видеть...

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

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

Quote (bum)
C++ уж извините, но таковым не является

Я не спорю, что со временем его роль, как самого широко распространённого и гибкого ЯП пройдёт, только вот будет это не раньше чем через 5-6 лет.
Для текущего уровня развития технологий C++ является языком высокого уровня.

Добавлено (17.08.2010, 09:47)
---------------------------------------------

Quote (SlavyanOOs)
А вы не задумывались над тем, что то что вы напишите на C++ будет адски глючить, плохо использовать память?

Смотря как писать и какая писака села за компьютер...
Не знаю как вы, но я стараюсь предусмотреть возможные проблемы с памятью...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
bumДата: Вторник, 17 Августа 2010, 09:58 | Сообщение # 56
почетный гость
Сейчас нет на сайте
Quote (ezhickovich)
Я не спорю, что со временем его роль, как самого широко распространённого и гибкого ЯП пройдёт, только вот будет это не раньше чем через 5-6 лет.
Для текущего уровня развития технологий C++ является языком высокого уровня.

Ну, я ж не говорю, что C++ совсем плох. Это не так. И будет он еще долго популярным, а если в него привнесут новые плюшки, то проживет еще дольше. Поскольку как бы не были крутыми технологии вроде .NET или Java, как бы не увеличивалась популярность скриптовых языков, вроде Python, Ruby, JavaScript и пр., а все равно для таких языков как C++ ниша остается и никуда они просто так не денутся.
SlavyanOOsДата: Вторник, 17 Августа 2010, 09:58 | Сообщение # 57
Problems, developer?
Сейчас нет на сайте
Quote (ezhickovich)
Смотря как писать и какая писака села за компьютер... Не знаю как вы, но я стараюсь предусмотреть возможные проблемы с памятью...

ezhickovich, ну ты это ты! biggrin А какая нибудь нубяра, пришедшая с гамака....
nilremДата: Вторник, 17 Августа 2010, 10:19 | Сообщение # 58
Просветленный разум
Сейчас нет на сайте
Quote (bum)
У некоторых наступает просто разрыв шаблона когда они узнают, что в C++ записи a[10] и 10[a] являются полностью эквивалентными.

Сказал это своему компилятору. Он с меня долго ржал.

Quote (bum)
Я не являюсь большим поклонником .NET и специалистом по данной технологии, поскольку последние несколько лет пишу большей частью на Python'е, но в данном случае заступлюсь за C#. Впрочем это касается не только C#, а любого современного языка высокого уровня (C++ уж извините, но таковым не является).

Первое предложение является ключевым.
Делать выводы о языке нужно не на основе чужого мнения, а на основе личного опыта. Ведь работать с языком придется именно тебе, а не советчику. Люди разные. В этом случае и мнение спецов ничего не значит. Ведь Билл Гейтс запросто скажет, что Линукс гавно. Но разве это так? Сколько людей, столько и мнений.
Есть лишь свое я. В любом случае собственное мнение самое правильное, даже если это и не так)

ЗЫ: Чет я нить спора потерял. Человек вроде спросил, что выбрать ему, а не что нравится вам.


Windmill 2

WindMill 2D Game Engine
SlavyanOOsДата: Вторник, 17 Августа 2010, 11:44 | Сообщение # 59
Problems, developer?
Сейчас нет на сайте
nilrem, просто каждый советует, то что ему нравится!
bumДата: Вторник, 17 Августа 2010, 11:48 | Сообщение # 60
почетный гость
Сейчас нет на сайте
Quote (nilrem)
Сказал это своему компилятору. Он с меня долго ржал.

Интересно какой у вас компилятор и какие у вас там опции понаставляны? У меня вот сейчас под рукой - GCC 4.4.3 и Visual C++ 6. И там и там данная конструкция обрабатывается идентично и совершенно корректно. И это нормально. Могу объяснить даже почему: поскольку запись a[10] с точки зрения компилятора является ничем иным как более короткой формой записи конструкции *(a + 10) , то по той же аналогии 10[a] является всего лишь эквивалентом *(10 + a). Это обычная арифметика указателей и я не вижу с чего тут ржать. Вот вам скриншот кстати, чтобы смеялось меньше (он кликабелен):

Вот вам еще ссылка на книгу Кернигана и Риччи (кстати это автор языка C который лежит в основе C++) C Programming Language: http://net.pku.edu.cn/~course/cs101/2008/resource/The_C_Programming_Language.pdf
Откройте там 5-ю главу и почитайте про указатели и массивы, может перестанете удивляться.

Вот еще обсуждение данной особенности массивов на StackOverflow: http://stackoverflow.com/questions/381542/in-c-arrays-why-is-this-true-a5-5a
Можете еще по ходу изучить интересный тред там же о малоизвестных особенностях языков программирования: http://stackoverflow.com/questions/1995113/ Думаю узнаете много нового.

Quote (nilrem)
ЗЫ: Чет я нить спора потерял. Человек вроде спросил, что выбрать ему, а не что нравится вам.

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


Сообщение отредактировал bum - Вторник, 17 Августа 2010, 11:50
Форум игроделов » Программирование » C/C++ » Что же мне выбрать ?? C++ или C#
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2020 Рейтинг