- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
template <typename T> struct Pool { static std::vector<T> data; };
std::vector<tbphys::Body> Pool<tbphys::Body>::data;
std::vector<Ball> Pool<Ball> ::data;
std::vector<Wall> Pool<Wall> ::data;
std::vector<Bat> Pool<Bat> ::data;
std::vector<Brick> Pool<Brick> ::data;
template <typename T, typename U> struct List
{
typedef T Head;
typedef U Tail;
};
struct End {};
typedef List<tbphys::Body, List<Brick, List<Bat, List<Ball, List<Wall, End> > > > > Components;
typedef List<Brick, List<Bat, List<Ball, List<Wall, End> > > > DrawableComponents;
typedef List<Brick, List<Ball, List<Bat, End> > > MovableComponents;
const size_t badindex = size_t(-1);
struct GameBody
{
size_t self,body,bat,brick,wall,ball;
template <typename T> size_t& IndexOf ();
template <> size_t& IndexOf <tbphys::Body> () {return body;}
template <> size_t& IndexOf <Bat > () {return bat;}
template <> size_t& IndexOf <Brick> () {return brick;}
template <> size_t& IndexOf <Wall > () {return wall;}
template <> size_t& IndexOf <Ball > () {return ball;}
template <typename T>
T& AddComponent ()
{
size_t index = Pool<T>::data.size();
Pool<T>::data.resize(index+1);
T& result = Pool<T>::data[index];
result.hostIndex = self;
IndexOf<T>() = index;
return result;
}
template <typename T> void SetBadIndex ()
{
IndexOf<T::Head> () = badindex;
SetBadIndex<T::Tail> ();
}
template <> void SetBadIndex <End> () {}
};
defecate-plusplus 22.10.2012 15:28 # +4
TarasB 22.10.2012 15:41 # +2
Кстати, странно, что из той крестотемы до сих пор не выложили сюда говноиерархию из трёх крестоклассов, в которой тоже участвовали крестошаблоны.
defecate-plusplus 22.10.2012 15:51 # 0
но в порядке крестобреда можно и вот так сделать:
http://ideone.com/3nkale
TarasB 22.10.2012 16:02 # 0
где?
стасики тут как наиболее понятный мне способ представить данные так, чтобы было удобно сопоставлять типу данные. То есть чтобы можно было в шаблонном методе написать Pool<T>::data. что-то там...
В Аде вот шаблонные модули для этого лучше приспособлены.
defecate-plusplus 22.10.2012 16:10 # +4
body,bat,brick,wall,ball;
что это?
эти члены апдейтятся размером соответствующего массива минус один
> стасики
возможно, когда-нибудь ты отвыкнешь от глобальных переменных и однопоточности
TarasB 22.10.2012 16:14 # 0
Про глобальные переменные я где-то говорил уже.
3.14159265 22.10.2012 16:24 # 0
Да про них все кому не лень говорят.
Update: А, так ты "за"?
defecate-plusplus 22.10.2012 16:24 # 0
и вычищать себя из массива им тоже не надо?
TarasB 22.10.2012 18:50 # 0
3.14159265 22.10.2012 16:31 # 0
Всё правильно, но в уже ведь стадартизировали thread_local.
Хотя вряд ли Тарас имеет в виду это.
defecate-plusplus 22.10.2012 16:34 # +3
3.14159265 22.10.2012 17:03 # +4
Осторожней.
Ведь сейчас где-то в крестоВселенной произошел сбой из-за деления на ноль, потом вылетел эксепшен и появилась новая черная дыра.
roman-kashitsyn 22.10.2012 17:07 # +2
Ждём крестолюба ViktorB.
3.14159265 22.10.2012 17:14 # +2
Хлопцi якщо зустрiнете його, то передайте нехай вже вирiшить хто ж вiн - Вiктор чи Павлiк.
defecate-plusplus 22.10.2012 17:24 # +3
Хотя, учитывая, что ТарасБ - воин света и добра, он возьмет банальное Кристиан или Христофор.
3.14159265 22.10.2012 19:28 # +4
>ТарасБ - воин света и добра
Наоборот. Тарас - тролстлое, злое и безпощадное порождение Ады, а вот его брат-близнец как раз и должен быть добрым антиподом несущим свет, доброту и кресты в массы.
>Крестофор
for (int i=0;i<n;i++)
TarasB 22.10.2012 19:30 # +3
АХАХА НУБАС111
3.14159265 22.10.2012 19:30 # +1
Abbath 22.10.2012 20:32 # +2
bormand 22.10.2012 20:39 # 0
Abbath 22.10.2012 21:08 # +1
govnomonad 23.10.2012 04:18 # +5
ananimause_legion 25.10.2012 00:48 # −1
defecate-plusplus 25.10.2012 00:59 # +1
ananimause_legion 25.10.2012 01:30 # +1
bormand 25.10.2012 05:59 # +2
unsigned underflow и overflow (в отличие от их signed аналогов ) вполне определены стандартом (иначе как писать всякую криптографию и прочие байтоебства?), и ни в коей мере не являются UB. Так что это просто вечный цикл.
HaskellGovno 22.10.2012 22:34 # +2
HaskellGovno 23.10.2012 20:05 # +2
Но больше всего мне понравился шаблонный инклуд: include<iostream>
HaskellGovno 23.10.2012 20:09 # +2
http://ideone.com/5nVzSE
3.14159265 23.10.2012 20:13 # +2
>int i : boost::irange(0, n)
Неявное признание бустовцами того факта что питоновский for хорош, а for(;;) не нужен и может быть заменен while ( ну за исключением области видимости счетчика).
TarasB 23.10.2012 20:25 # 0
3.14159265 23.10.2012 20:28 # 0
Там же другой, императивной версии forа, которая сахар над while loop нету?
TarasB 24.10.2012 09:43 # 0
HaskellGovno 24.10.2012 12:58 # −1
defecate-plusplus 20.11.2012 15:41 # +3
ну всё пиздец, теперь запрещено называть дельфинов дельфинами, крестопроблемы - крестопроблемами, а негров - неграми
уютненький остаётся последним оплотом здравого смысла и всеобщей доброты
TarasB 20.11.2012 15:42 # +2
defecate-plusplus 20.11.2012 15:48 # +1
а что плохого в назойливых крестопроблемах, кроме того, что они неразрешимые и ежедневно колют глаза?
или в гладких и добрых дельфинах, которые так радуются, когда им почешешь лысую голову...
кого это способно обидеть?
TarasB 20.11.2012 15:56 # +2
Мои оппоненты неоднократно по старой привычке употребляли слова "да ты просто тупой дельфин, потому и не шаришь", ну и я решил, что у меня есть прекрасная возможность не тратить нервы на них, а просто сообщать обо всех случаях тому самому модератору, что выдал мне крестобан.
После, кажись, третьего моего забаненного оппонента модератор и создал тему, что на дельфинов наезжать нельзя. Видимо, обеспокоился переполненностью тюрем.
defecate-plusplus 20.11.2012 16:05 # +2
TarasB 20.11.2012 16:08 # +1
defecate-plusplus 20.11.2012 16:17 # +3
и ведь теперь никто не узнает о новых крестопроблемах, старые со временем позабудут, упоминание дельфей в мировом интернете станет в точности 0 - что же ты наделал?
TarasB 20.11.2012 16:24 # +1
И мне плохо не будет, я про крестопроблемы и так могу рассказывать, только не так толсто, ну и что?
Например, тут http://www.gamedev.ru/flame/forum/?id=169332 я разве на кого-то наехал?
defecate-plusplus 20.11.2012 16:37 # +4
посмотри, даже у нуба недостаточная степень батхёрта
и вообще, флейм без дельфинов и крестопроблем - секс с резиновой женщиной в противогазе
roman-kashitsyn 20.11.2012 18:17 # +2
Щикарно > Ссылка на массив из указателей на int.
LispGovno 20.11.2012 18:04 # 0
>ну всё пиздец, теперь запрещено называть дельфинов дельфинами, крестопроблемы - крестопроблемами, а негров - неграми
http://www.gamedev.ru/flame/forum/?id=169380
А вообще кто-ты такой? Как ты раньше меня заметил тему? Я заметил только после твоего поста.
Пойду читать. Запасся попкорном.
3.14159265 20.11.2012 19:06 # +1
Позабавило сходство говнокода с holywars.ru и сайтом про PHP.
А геймдева к сожалению нет.
roman-kashitsyn 22.10.2012 17:04 # +3
P.S. У тебя объявлены typelists, но они нигде не используются. Запости код, в котором они используются, наверняка там можно словить лулзов.
TarasB 22.10.2012 18:48 # 0
Вызывается это просто: SetBadIndex <Components> ();
roman-kashitsyn 22.10.2012 20:03 # 0
TarasB 22.10.2012 18:52 # +1
Вот начало этой веселухи: http://www.gamedev.ru/flame/forum/?id=167890
3.14159265 22.10.2012 19:13 # +2
Правда возникают вопросы: "А нахуя?" и без конкретного примере непонятно зачем такое говно вообще надо?
Дальше по треду запахло фабриками фабрик и я перестал читать.
TarasB 22.10.2012 19:37 # +2
Я хотел сделать богомерзские полиморфные объекты с виртуальными функциями, но магистр Крестосвета Пушков наставил меня на путь истиный.
Сначала я для каждого типа компонента писал свою процедуру добавления, потому что они по разному назывались и объединить их во что-то единое не получалось. Но я вспомнил про специализацию шаблонов и смог на списках типов сделать то, что хотел!
3.14159265 22.10.2012 19:16 # +3
А чо. На геймдеве тоже есть хороший контент.
Но к сожалению это ни разу не игры.
PS. Тебе как раз на аву соёдет.
TarasB 22.10.2012 19:35 # +2
Если бы я по-прежнуму был жалким дельфином, я бы за эту неделю добавил уровни, всякие фичи, запилил бы меню и бонусы, а кому это надо? Кому бы я потом смог похвастаться на форуме своей изъёбистой архитектурой? Ну ладно, если я это делаю для себя, а если бы я это делал по работе, то чем бы я ебал мозг заказчику? Только С++ предоставляет программисту возможность заполнить написанием программы сколько угодно длительный промежуток времени! В С++ есть для этого всё: куча различных возможных извращений, долгая копиляция, хитрый синтаксис, возможноть поделить 1 на 2 и получить ноль.
А Дельфи... Чем может похвастаться это галимое убожество?
3.14159265 22.10.2012 19:44 # +2
Непонятно другое - "за что банить?". Это ж весело читать.
>Только С++ предоставляет программисту возможность заполнить написанием программы сколько угодно длительный промежуток времени!
Parkinson law in action.
TarasB 22.10.2012 19:46 # 0
eth0 22.10.2012 19:53 # +6
TarasB 22.10.2012 19:56 # +1
wvxvw 22.10.2012 21:14 # 0
myaut 23.10.2012 06:43 # +2
> Да, а ещё отсутствие проверок в vector::[] даже в отладочном режиме
У тебя же какая-то древняя студия. Они в какой-то момент переключились на STLPort, там есть макрос _STLP_DEBUG, который включает такую проверку.
ananimause_legion 25.10.2012 00:54 # 0
roman-kashitsyn 22.10.2012 20:16 # +1
TarasB 22.10.2012 20:20 # 0
И сдаётся мне, на проектах такого размера (который пишется в 1 рыло) его и не будет.
И да, дело тут скорее не в С++, а в чём-то более глобальном.
Lure Of Chaos 23.10.2012 10:36 # +4
TarasB 23.10.2012 10:38 # +3
Lure Of Chaos 23.10.2012 11:11 # 0
TarasB 23.10.2012 11:43 # 0
Lure Of Chaos 23.10.2012 11:55 # +1
я ж не катадин предлагаю
TarasB 23.10.2012 12:08 # +1
Lure Of Chaos 23.10.2012 12:18 # 0
HaskellGovno 23.10.2012 18:23 # 0
>тады тока обжЦе
Он про Андроид
TarasB 23.10.2012 20:27 # 0
У меня украинский типоойпад. Покетбук называется.
Lure Of Chaos 23.10.2012 23:02 # 0
TarasB 24.10.2012 09:44 # 0
Lure Of Chaos 24.10.2012 10:08 # 0
TarasB 24.10.2012 10:18 # 0
Lure Of Chaos 24.10.2012 11:20 # +1
и самое шикарное: www.stepgames.ru/node/233
roman-kashitsyn 24.10.2012 11:22 # 0
TarasB 24.10.2012 11:25 # 0
roman-kashitsyn 23.10.2012 12:27 # +2
> Bat
> Wall
> Ball
bormand 23.10.2012 20:44 # +1
Lure Of Chaos 23.10.2012 23:03 # 0
назвали Аркашей
TarasB 24.10.2012 09:44 # 0
bormand 24.10.2012 13:17 # +2
TarasB 24.10.2012 13:28 # +1
roman-kashitsyn 23.10.2012 18:49 # +4
Зачем усложнять себе жизнь и писать лишний код, если можно возложить рутинную работу на компилятор и стандартные библиотеки? Let's robots do the dirty job.
TarasB 23.10.2012 20:26 # 0
Вызов виртуальной функции это переголова
TarasB 24.10.2012 13:29 # +1
Жаль, что работает лишь для функций 1 параметра
Божественный язык...
defecate-plusplus 24.10.2012 13:40 # +1
TarasB 24.10.2012 13:58 # 0
defecate-plusplus 24.10.2012 14:02 # +5
О камень так хватила их,
Что только брызги засверкали.
TarasB 24.10.2012 14:25 # +2
bormand 24.10.2012 15:07 # 0
Спасибо, пофапал.
TarasB 24.10.2012 15:58 # 0
TarasB 25.10.2012 18:59 # 0
3 против
настоящее искусство никогда не бывает однозначно хорошим!
3.14159265 25.10.2012 21:58 # +2
Так даже в убогой джаве можно с женериками дойти до безумия.
#11878
У меня много раз на практике были случаи когда женерики давали отрицательный кпд - собственно когда у класса 3 и больше параметра - это уже хуйня.
Иногда проще их не писать, заткнуть ворнинг и откастить явно, кода всего-то навсего 3 буквы.
> (T)
Чем дрочиться с кучей женериков, которые в яве далеко неидеальны. Тем более там нету var, auto что добавляет пиздеца.
http://habrahabr.ru/post/153225/
http://eax.me/haskell-bread-task
http://habrahabr.ru/post/153845/
Не в тему, но тоже оверинжининг. Тебе должно понравится.
И снова сорри за хаброту.
TarasB 25.10.2012 22:15 # +1
bormand 25.10.2012 22:59 # +1
> язык
А посоны и не знали...
TarasB 26.10.2012 09:42 # +2
http://ru.wikipedia.org/wiki/Delphi_(язык_программирования)
bormand 26.10.2012 10:18 # 0
Мой уютный мир навсегда разрушен ;(
3.14159265 26.10.2012 14:38 # +1
Можно даже с передаваемыми аргументами дойти до безумия.
Кстати тоже эмпирическое правило - когда в методе более 3-х аргументов в большинстве случаев он говно.
Но из этого ж не следует что языки допускающие 42 аргумента - говно.
А языки где можно передать только 1 аргумент - оптимальны.
TarasB 26.10.2012 14:42 # 0
3.14159265 26.10.2012 14:50 # 0
Это был типа намёк на биндинг и карринг.
LispGovno 25.10.2012 22:27 # −2
LispGovno 25.10.2012 22:29 # −2
показательно
roman-kashitsyn 26.10.2012 11:49 # 0
HaskellGovno 26.10.2012 12:43 # 0
откуда инфа? где почитать?
roman-kashitsyn 26.10.2012 13:06 # +4
Конечно, план и начальный дизайн (мне кажется правильным слово "модель") очень нужны, без них вообще ничего не сделаешь. Но это не тот уровень, где нужны шаблоны: тут нужно выделить сущности, разработать алгоритмы и принять ограничения, наложенные на систему. Но до абстрактных фабрик, в моём представлении, на этом уровне дело дойти не должно.
Мне близок подход "bottom up", исповедуемый многими практиками. Сделай сначала что-нибудь, а потом уже улучшай, дорабатывай и выделяй абстракции. Главное - не бояться переписывать код.
defecate-plusplus 21.11.2012 11:39 # +3
так что все крестобляди, джавобляди и шарпобляди (прости, Тарас, дельфей там почему-то нет, хотя есть даже кобол) могут найти интересующую их линейку и бесплатно без смс (но с регистрацией) замерить и сравнить с эталоном из палаты мер и весов
http://www.brainbench.com/xml/bb/common/testcenter/freetests.xml
bormand 21.11.2012 11:48 # +1
TarasB 21.11.2012 11:58 # +1
roman-kashitsyn 21.11.2012 12:07 # +2
bormand 21.11.2012 17:35 # +1
P.S. Вот интересно, что не так в этих строчках: Варианта "все три нормальны" не было.
defecate-plusplus 21.11.2012 17:40 # +2
bormand 21.11.2012 17:44 # 0
Спасибо!
defecate-plusplus 21.11.2012 17:48 # 0
3 минут не хватает чтобы расписать на бумажке кто от кого и в каком порядке
ну и у них там есть явно бажный пример, когда минимум два варианта верны:
мол, выберите, что не скомпилируется
char s[] = "string";
char * const cp = s;
cp[3] = 'a'; // компилируется
std::cout << cp << std::endl;
char * p;
const char * const ccp = p; // аналогично
bormand 21.11.2012 17:54 # 0
P.S. Или там полно похожих вопросов?
defecate-plusplus 21.11.2012 17:56 # 0
выберите, что скомпилируется
bormand 21.11.2012 18:02 # 0
defecate-plusplus 21.11.2012 18:08 # +2
я еще ведь не такой старый, нееет!
bormand 21.11.2012 18:17 # +1
DBdev 21.11.2012 18:26 # 0
Да Вы зажрались, товарищ.
С 4.67 в топ-10 по абсолютному\региональному рейтингу не вошли случайно?
defecate-plusplus 21.11.2012 18:28 # 0
у меня 3 и 4.76
потом начал проходить второй раз, вопросы очень сильно повторяться начали, неспортивно
DBdev 21.11.2012 19:17 # 0
bormand 21.11.2012 19:01 # 0
LispGovno 22.11.2012 11:06 # 0
Даже если второй вариант удалить, то при инстанцировании при выборе между 1ым и 3им должна быть амбигити. Так что эти варианты нормальны только по отдельности. Как разные перегрузки не канают.
defecate-plusplus 22.11.2012 11:35 # +2
типа foo<int, int>(...)
в общем случае компилятор съест это определение
а 1 + 2 не съест уже просто после декларации
TarasB 22.11.2012 13:44 # +1
defecate-plusplus 22.11.2012 13:47 # +1
но вопрос стоял именно так - в каких из этих трех строк компилятор начнет ругаться уже сейчас
defecate-plusplus 22.11.2012 09:43 # +1
а дельфийный отдел до сих пор не может нового сотрудника найти
даже с целью дообучить в процессе
TarasB 22.11.2012 10:03 # +1
defecate-plusplus 22.11.2012 10:09 # 0
да думаю, такая проблема везде, где осталась разработка на дельфях
TarasB 22.11.2012 10:14 # +1
defecate-plusplus 22.11.2012 10:16 # 0
базы данных дельфинам разрабатывать никто не даст, но понимать, как вызвать по имени хранимую процедуру и отобразить полученные данные в гриде он должен
на дельфях сейчас только и делают, что толстые клиенты, ты не знал?
TarasB 22.11.2012 10:20 # 0
defecate-plusplus 22.11.2012 10:31 # +4
игры на дельфи?
тотол коммандёр безплаттно без смс?
на самом деле, знание теории бд и практики очень помогает в жизни и прибавляет к зарплате
но наши дельфины самостоятельно sql не пишут, более того, это порицается
только вызов хранимых процедур, заботливо написанных для них нашими ораклоидами
только хардкор
DBdev 22.11.2012 13:02 # +2
Можно даже не учить ЯП, а знать только бд и прилегающие декларативные языки... Никогда не забуду одного BI девелопера, который при виде .NET кода в скриптах сразу умывал руки.
> только вызов хранимых процедур, заботливо написанных для них нашими ораклоидами
blessed way by Microsoft and Oracle inc. для толстых клиентов
> только хардкор
Хардкор был бы в прямых запросах к БД.
3.14159265 22.11.2012 19:45 # +2
Только из-за того что все повымерли и/или переучились на пыху с решеткой.
Хитрый план Тараса?
roman-kashitsyn 22.11.2012 21:47 # +1
guest 23.11.2012 10:44 # 0
знакомый кума свояка на базаре слыхал, что на Коболе всех съели и запили сайлонским чаем
defecate-plusplus 23.11.2012 11:38 # +1
жирный капитализм в том и состоит, что пока есть дойная корова (бизнес-продукт на коболе, до сих пор приносящий прибыль), будут нужны единицы 1/млн, чтобы это говно поддерживать
guest 23.11.2012 13:37 # +1
как и в прочих городских легендах присутствует правдоподобный элемент - GB не самое приятное место в плане налогов
guest 23.11.2012 10:46 # 0
на самом деле
> с целью дообучить в процессе
также означает потолок вознаграждения
вот и не клюет
defecate-plusplus 23.11.2012 11:36 # 0
зарплаты рыночные, московские
придет готовый опытный специалист - будет получать по рынку как готовый опытный специалист
придет перспективный - будет получать как перспективный
guest 23.11.2012 13:46 # 0
это наводит на мысли о том, что у вашего CFO свое особое мнение о рыночных зарплатах
если даже стажеров позиция не привлекает...
defecate-plusplus 23.11.2012 13:54 # 0
себе нового крестовика я нашёл за 2 недели, как была дана отмашка - в связи с расширением срочно найти траляля
в консалтинг тех писателя нашли за месяц
даже нового тестера нашли
а дельфины всё ищут, вот уже 2 месяца ищут
какая сейчас рыночная зарплата для приличного дельфина, принимаемого на работу? - 70-120к, я думаю
для малограмотного дельфина - в районе 50, плюс минус десятка, в зависимости от его малограмотности
т.е. вряд ли сильно отличается от вилок для с++
и да, за эту волну собеседований я таких образчиков насмотрелся, что таких стажеров я бы и за бесплатно не взял