Войти
ПрограммированиеФорумОбщее

Движок на Си (5 стр)

Advanced: Тема повышенной сложности или важная.

Страницы: 14 5 6 716 Следующая »
#60
1:59, 11 июня 2019

u960
> жесть какая то, не пишите больше код
это не жесть какая-то, это Си такое-то.
(реально, весь код написанный на сях, вот такой - с макросами)

u960
> то есть конструкция do..while у нас ничего не стоит?
сейчас ковырял форк hexen. там тоже дофига do...while (и не то в защите макросов, но и просто вместо "(void)переменная" (эм, в сях не было такой фичи как???)


#61
8:13, 11 июня 2019

u960
> можно код, а то не понятно.
uhexen

#if id386 /* fpu stuff with x86 asm */
ASM_LINKAGE_BEGIN
void  MaskExceptions (void);
void  Sys_SetFPCW (void);
void  Sys_LowFPPrecision (void);
void  Sys_HighFPPrecision (void);
void  Sys_PopFPCW (void);
void  Sys_PushFPCW_SetHigh (void);
ASM_LINKAGE_END
#else
#define MaskExceptions()  do {} while (0)
#define Sys_SetFPCW()    do {} while (0)
#define Sys_LowFPPrecision()  do {} while (0)
#define Sys_HighFPPrecision()  do {} while (0)
#define Sys_PopFPCW()    do {} while (0)
#define Sys_PushFPCW_SetHigh()  do {} while (0)
#endif

#62
8:17, 11 июня 2019

u960
> Вот не надо вводить людей в заблуждение, ни кто не обмазывается макросами,
ну вот например из yquake2

#define DotProduct(x, y) (x[0] * y[0] + x[1] * y[1] + x[2] * y[2])
#define VectorSubtract(a, b, c)  \
  (c[0] = a[0] - b[0], c[1] = a[1] - b[1], c[2] =  \
   a[2] - b[2])
#define VectorAdd(a, b, c) \
  (c[0] = a[0] + b[0], c[1] = a[1] + b[1], c[2] =  \
   a[2] + b[2])
#define VectorCopy(a, b) (b[0] = a[0], b[1] = a[1], b[2] = a[2])
#define VectorClear(a) (a[0] = a[1] = a[2] = 0)
#define VectorNegate(a, b) (b[0] = -a[0], b[1] = -a[1], b[2] = -a[2])
#define VectorSet(v, x, y, z) (v[0] = (x), v[1] = (y), v[2] = (z))
#63
8:20, 11 июня 2019

Опять нытье пошло.

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

war_zes
> (void)переменная" (эм, в сях не было такой фичи как???)
Была, и есть. И в плюсах тоже есть.

int foobar;
(void)foobar; // ясно говорим компилятору что переменная не используется 
#64
8:32, 11 июня 2019

mr.DIMAS
> Если человек пишет код как умственно отсталый, то он так будет писать на любом
Да, но хороший код на плохом языке тоже не написать.
Си слишком ограничен, из-за чего вся эта макросная магия и длиннющие имена функций. Которая в нормальных ЯП считается говнокодом.

Я еще понимаю людей пишущих на orthodox c++... но зачем писать на Си?

#65
8:36, 11 июня 2019

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

war_zes
> о зачем писать на Си?
Быстрее и удобнее. C++ перегружен вещами, которые программист должен оформить для удобства компилятора. (Тот же void, например... Если это не имеет значения для программы, зачем программисту об этом думать?)

#66
8:38, 11 июня 2019

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

#67
10:38, 11 июня 2019

Круто, поставил звёздочку.
Правда я не особо понял, зачем добровольно отказываться от фич C++ и писать на Си? Благодаря инлайну с шаблонами у C++ производительность может быть даже выше.

mr.DIMAS
> После того как там показал движок, мне 24 звездочки прилетело в гитхабе, так
> что видимо не насрать.
Это только с того треда на gamedev.net? А то я там особой дискуссии не увидел, всего 5 постов.
Видимо надо мне тоже свою Intra на англоязычных форумах продвигать. Только надо сначала её на английский перевести: комментарии, вывод демо-примеров и нормальный ReadMe написать.

#68
10:48, 11 июня 2019

gammaker
Как я могу отказываться от фич C++ если пишу на совершенно другом языке :) ?

gammaker
> Это только с того треда на gamedev.net? А то я там особой дискуссии не увидел,
> всего 5 постов.
> Видимо надо мне тоже свою Intra на англоязычных форумах продвигать. Только надо
> сначала её на английский перевести: комментарии, вывод демо-примеров и
> нормальный ReadMe написать.
Да, с одного треда за несколько дней всего. Естественно что лучше продвигать свои творения глобально, а не только на закостенелое СНГ.

#69
11:44, 11 июня 2019

mr.DIMAS
> Плохой по каким критериям?
по читаемости.
Я просматриваю много опенсурсных проектов. код на Си читается сложнее чем код на С++ (именно чужой, когда ничего о нем не знаешь).

Все потому что код на Си так или иначе сбивается в неструктурированную кучу. В нем нет решений для группировки кода по его логике кроме разделения по файлам - но никто не будет под каждые 2-3 функции создавать свой файл.
Тогда как в С++ есть много решений для группировки кода. Сгруппированный код всегда читается проще... Да даже выражение "расставить всё по полочкам" как бы на это намекает.

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

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

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

#70
11:56, 11 июня 2019

war_zes
> Тогда как в С++ есть много решений для группировки кода.
К сожалению, они весят больше самого кода. Плюс, на Форуме я выяснил, что большинство программистов вообще не читает C++ код. Тупо заценивает картинку отступов, отмечая пару "главных" условий/циклов. Отсюда - постоянные проблемы с граничными условиями и, следовательно, стоны о недостаточно умных указателях и массивах...

war_zes
> В с++ им уже создали альтернативу и можно полностью от них отказаться.
И вместо решения задачи тратить время на соблюдение правил.

war_zes
> Из-за этой неструктурированности очень сложно понять к чему относится та или
> иная функция и с какими функциями взаимодействует та или иная структура.
Это от неумения программировать, а не от языка.

P.S. Самое же примечательное, что рассуждать о правильных C++ программах приходится чисто теоретически. В природе таковых не встречается. А если и удается получить на Форуме решение задачи, то с оговорками: "Говнокод, но вам и так сойдет".

#71
12:00, 11 июня 2019

mr.DIMAS
> Плохой по каким критериям?
Много ручной работы и необходимость дублировать функционал?

#72
12:03, 11 июня 2019

Zegalur
> Много ручной работы и необходимость дублировать функционал?
Ищутся недостатки C, а не C++.

#73
12:09, 11 июня 2019

Народ, по движку есть что сказать?

#74
12:09, 11 июня 2019
gudleifr
> Ищутся недостатки C, а не C++.
В крестах тех самых недостатков чуть по-меньше будет.
Там есть шаблоны, auto, RAII, классы и прочие радости жизни.
Страницы: 14 5 6 716 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.