![]() |
Показать все 79 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Почему мы знаем С++, но пишем движки по-прежнему на "Си с классами" (https://hlfx.ru/forum/showthread.php?threadid=4807)
Почему мы знаем С++, но пишем движки по-прежнему на "Си с классами"
Любопытная статья на тему "C vs C++"
http://eax.me/c-vs-cpp/
Особенно рекомендуется тем, кто не знает, чем С++ отличается от С. Вернее, знает по тому что пишут в учебниках - про то, что в С++ есть классы и инкапсуляция, а в С нет, ну короче вот это всё враньё. 
Те, кто, например, знает, что сугубо классовый и инкапсулированный Direct3D можно свободно использовать в С, узнают/вспомнят из статьи, чем опасно использование С++ в реалтайм-программах типа игровых движков.
Ну а Jackhammer, в котором некоторые диалоги открываются по полсекунды, отлично иллюстрирует, во что это в итоге выливается. И если редактору это ещё можно простить, то движку - уже нет.
А я, в свою очередь, который уже год при разработке Volatile балансирую на острие ножа - с одной стороны, пытаясь совмещать фичи С++, упрощающие написание, compile-time проверку, понимание и поддержку кода, с простотой, производительностью и низкоуровневым доступом (там где он нужен) языка С. Но, конечно, мало кто это в итоге оценит - народу куда важнее красочные шейдеры.
Личный опыт по теме всячески приветствуется. 
XaeroX
Ты читал Ben Klemens 21st Century C? Если читал, что про неё скажешь?
Там довольно доступная глава как раз про реализацию ООП-фишек в ANSI C.
nemyax
Неа, не читал. Поделишься ссылкой на эту главу?
Лучше работать на старом движке, чем на новом. Ту же самую дилемму приперли сюда, что лучше, кто хуже. Оба хуже - это однозначно. Лучших никогда не бывает. Приходится искать компромисс, между тем или иным, а не сравнивать как тупой блогекомментартор из yt или vk или fb.
http://www.codenet.ru/progr/cpp/ccpp.php
http://www.linux.org.ru/forum/development/311369
https://habrahabr.ru/post/262461/
http://www.cyberforum.ru/holywars/thread46728.html
https://toster.ru/q/125143
Авторов Мадженты мнение услышать было бы любопытно.
Блог вроде интересный, добавил в закладки
code:
void func() { FILE* file = fopen(....); scope(exit) fclose(file); //do stuff. }
За попытки переложить менеджмент памяти на сторонние библиотеки, умные указатели и встроенные средства языка погромисту надо отрубать руки. Память надо уметь выделять самому. Хапнул большой кусок и вручную там разместил всё нужное. А потом удалил за один вызов. Вот как надо.
Тогда фргаментация стремится к нулю.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
nemyax
Да в сорцах даркплейса же. 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Чего ж там тормозного? Там же ровер есть.
Если сильная фрагментация - то да, ровер будет часто промахиваться. А если дефрагментировать клумпингом - то это будет отнимать время.
Ну вот аллокация в пулы - довольно тормозная штука. Правда всплывает это не сразу. Помнится советский кодер в первоначальной реализации своей травы аллокал каждый кустик по отдельности. И всё было в порядке, память не дефргаментировалась. Но аллокация какой-нибудь сотни тысяч кустиков занимала порядка 60-90 секунд.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Никогда не писал на C++, всегда писал только на "Си с классами". А для всего остального есть MasterCard C#.
Сабж: потому что Си++ и шаблоны вырвиглазны. И, если не трахаться с парсингом сайтиков и 1С, процентов 60 этого не особо нужны.
Если бы не строки. Эти сраные строки. Эти мерзкие сраные строки.
Вообще, вопрос этого треда кто-то (мб даже XaeroX) закрывал год назад, приводя аргументом статью Страуса про то что Си устарел.

И другие гнидогадоидные языки с вечнодырявыми виртуальными машинами по 200МБ в дистрибе. И попробуй только не обновись - сразу в очередную дыру тебя и отымеют.
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]



>вечнодырявыми виртуальными машинами
оценки есть?
__________________
http://www.moddb.com/mods/monorail-quest

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
>Ты меня троллить собрался?
Нет, мне интересно. Если _наивно_ рассмотреть вероятности -- то получается, что в коде с GC ошибка менее вероятна (тем более, что у CG автоматически больше тестеров чем у твоего кода). Ты говоришь что это не так, вероятно вследствие каких то дыр в абстрации CG. Приведи примеры что бы это было очевидно, или (хотя бы) понятно.
>Ждава по дырности идёт за флэшом.
Дыры были именно в GC, или в одной из уймы функций стандартной библиотеки?
__________________
http://www.moddb.com/mods/monorail-quest
thambs я вообще _что-то_ коворил про GC?
Добавлено 20-07-2016 в 22:33:
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Сборщик мусора - это однозначно тормозная вещь, которая может начать собирать мусор в самый неподходящий момент. В этом плане мемпулы куда лучше, т.к. они управляются погромистом. В принципе если скилл достаточно высок, то можно и собственную кучу написать, как Кармак 
Вообщем я за максимально простые методы управления памятью - так быстрее. Все эти смарт-поинтеры и сборщики мусора - не более чем попытка переложить ответственность и нежелание учиться работать с памятью.
А с памятью вообще на удивление мало кто умеет работать и учиться нехотят, боятся экзепшен поймать. Дык.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Сейчас посмотреть, даже говнять не надо. Написал в бложике пост в поддержку единой россии и публикация шедро оплачена.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Crystallize куча она и есть куча. Вот смотрел цельнометаллическую оболочку? Там был рядовой Куча.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Он был неправильная куча. Pyle вместо heap.
>тормозная вещь
а если скорость не играет роли?
__________________
http://www.moddb.com/mods/monorail-quest
Crystallize
Да нет никаких мемпулов в системе, есть process heap.
А разработчики свои собственные менеджеры памяти называют как им заблагорассудится. Хоть в честь пони, хоть в честь пикачу.

__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Навряд ли кучу полностью разворуют - вон она какая большая. Что-нибудь да останется 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
>Всё равно надо уметь с памятью работать
Ну это-то естественно.
Мне просто непонятна позиция тов. Икс-Вайдера, который ругает, наверное, все высокоуровневые языки. Вроде-же разумно, что если нужна "арифметика" -- делаем всё вручную по хардкору, если нужна "бухгалтерия" -- пускай низкоуровневыми вещами автоматика занимается.
__________________
http://www.moddb.com/mods/monorail-quest

__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Какой еще заговор. Причина большинства, так называемых "заговоров", равно как и настоящих заговоров - банальная жадность и инстинктивное стремление к доминированию. Виртуальные машины пихают, потому что порог вхождения намного ниже, тормоза компенсируют новым железом, но рано или поздно мы упрёмся в какой-нибудь физический предел и всё это закончится.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Немножко оффтоп:
https://habrahabr.ru/company/infopulse/blog/306328/
XaeroX Это как в политике?
Crystallize
В смысле?
XaeroX ну типа научился сидеть в парламенте и толкать речи, а больше ничего и не умеешь. Аналогично, научился писать на плюсах, а переучиться уже не сможешь.
Crystallize нет, это значит "назад только в труп-мешке". 

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Угу, и я о том же.
Как сейчас в рекламе модно говорить? "Пожалуй, магазин номер один в Новосибирске". И не подкопаешься: пожалуй, да, а пожалуй и нет.
XaeroX кстати, слово "отличными" означает и "отличными от нуля". Так что - не прикопаешься. 
Кстати, внезапно мне подумалось: я пишу на Си с классами потому что оно сочетает читабельность, простоту, модель ООП и скорость выполнения. Автор ЦПП пишет, что копирование строки в Си++ отличается от копирования строки в Си аж в несколько листов кода. Он подразумевает все проверки, терминирование, выделение памяти и пр.пр.пр. Только, вот, мне strncpy() при грамотном подходе хватает. Другое дело - когда надо много всяких хреней склеивать, но нечасто (пример - код MOTD).
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
Копирование строки в плюсах - это вызов оператора копирующего присваивания std::string:
std::string s2 = s1;
А этот оператор такой же библиотечный, как и strcpy, только лишь
>Си
>читабельность
громкий смех в зале, местами переходящий в истерику.
__________________
http://www.moddb.com/mods/monorail-quest

XaeroX
не, я исключительно про c-style синтаксис -- не про семантику, а исключительно про восприятие глазами. у шаблонов, конечно, всё ещё нечитабельней.
>давно не ковырялся
вот недавно поковырялся -- и у меня до сих пор БУГУРТ.
__________________
http://www.moddb.com/mods/monorail-quest

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
http://www.stolyarov.info/books/cppintro
вот эту книжку Столярова не читали? мне очень нравится.
14 минут убил на попытки скопировать цитату из гребучего Окуляра под прыщами. Ничего ен вышло. 
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
XaeroX неа. Давным давно уже эти потребности софтом перекрыты. Ну если конечно не имеются в виду специфичные среды, которые относятся непосредствнно к разработке чего-либо, а непосредственно к нуждам бизнеса. Притом оно зачастую еще и халявное, от того же гугла.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
ну я про них и говорю, давно уже там все потребности перекрыты. А задачи для погромистов - адапатация к местным условиям, не более того. Вы например в курсе, что тот же 1С не пользуется популярностью за рубежом?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~ ты у нас брокер из 90-х? 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Если не ошибаюсь, компьютеризация биржи началась в начале 80х, возможно даже раньше.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
~ X ~
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
| Временная зона GMT. Текущее время 07:12. | Показать все 79 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024