[00:53:54] <valexey> vlad2: ну, почему же? препроцессор же тупой как валенок в сях
[00:54:40] <valexey> собственно в дишной  IDE раскрывали на лету во что преобразуется код после компиляции, а там используемый метаязык как бэ тьюринг-полон, в отличае от макросов.
[03:13:55] <vlad2> Да там проблема не в тьюринг-полноте. А в опциях компиляции :) Т.е. ИДЕ и компилятор должны быть единым целым. А у единого целого есть другие проблемы.
[10:08:38] <valexey> vlad2: дык это же не только для сей типично. Например у джавы та же история
[10:09:02] <valexey> IDE и компилятор обязаны быть едиными
[13:24:14] <kemiisto> valexey: как в ББ!!!111 :D
[15:59:41] <valexey> kemiisto: в ББ компилятор в среду вообще никак не интегрирован
[16:07:23] <kemiisto> как обычно
[16:07:25] <kemiisto> КЛЕВЕТЫ!
[16:07:27] <kemiisto> :)
[16:18:02] <valexey> скорее комплименты
[17:36:47] <vlad2> Ага. Сначала засунут компилятор в IDE. Потом формат файлов сделают бинарным. И вот уже железный vendor lock.
[17:38:10] <vlad2> А уж если авторы IDE не предусмотрят какой-то фичи, то конкретный пользователь будет страдать :) Поэтому фич становится более 9000. Ну и понеслось - все те же глюки и тормоза.
[18:00:00] <vlad2> Новый топик доставляет самими названием: http://forum.oberoncore.ru/viewtopic.php?f=34&t=3631&sid=7cbac35654d24850f07d3197e19fe0a8
[18:00:52] <kemiisto> :-D
[18:22:41] <valexey> vlad2: клеветы!!! ББ же не тормозит!
[18:23:58] <valexey> наш андроидовый нанопроект дорос до необходимости рефакторинга (примерно 1000 строк кода, ога). завтра будем рефакторить :-)
[18:24:19] <vlad2> Это который со студенткой? :)
[18:24:31] <valexey> ога
[18:25:41] <vlad2> В ББ нет 9000 фич. Пользователи страдают :)
[18:26:32] <vlad2> А бинарные файлы помогают прочувствовать "специфику" :)
[19:37:43] <valexey> пользователи страдают именно от 9000 фич!
[19:37:50] <valexey> в такой IDE же хрен разберешься!!11
[19:38:24] <kemiisto> valexey: info21, перелогиньтесь! :D
[19:43:52] <valexey> в том то и фича ББ : плотная удобный маленький пакет с компилятором, средой разработки (не только ПО!) и документирования, и при этом никакого вендор лока из за 9000 фич!
[19:44:53] <kemiisto> ОЛОЛО!
[19:46:06] <valexey> единая среда для программиста, техписателя, ученого/исследователя и электронщика!
[19:46:50] <kemiisto> ещё пару постов и ты навечно останешься в той комнате, где сейчас находишься!
[19:46:53] <kemiisto> :)
[19:47:18] <valexey> в смысле?
[19:47:35] <kemiisto> в смысле ни в какие двери не пролезешь! :D
[19:48:31] <valexey> гм. я что-то не понял.
[19:48:56] <valexey> ругаю ББ - плохо, ибо тролль. хвалю ББ - тоже плохо, и опять тролль.
[19:49:01] <valexey> вам не угодишь!
[19:49:13] <kemiisto> ну вывод то очевидный же!
[19:52:53] <valexey> э?
[19:53:03] <kemiisto> ты - тролль!
[19:53:05] <kemiisto> :D
[19:53:12] <kemiisto> поэтому
[19:53:17] <kemiisto> что-бы ты не говорил
[19:53:21] <kemiisto> выходит толсто!
[19:53:24] <kemiisto> :)
[19:53:32] <kemiisto> ЛОГИКА!
[19:54:54] <valexey> Да, кроме того, что среда единая, и язык будет единый. КП отлично подходит как для создания больших компонентных систем, создаваемых профессиональными программистами, так и для инженерных и научных рассчетов, также он идеален в качестве языка для встраиваемых системы, то есть для всевозможных микроконтроллеров и так далее (которыми занимаются электронщики).
[19:55:22] <valexey> Единая среда, единый язык => сплоченный коллектив => успех компании!
[19:57:51] <valexey> А за счет простоты языка, порог вхождения будет крайне низок, следовательно овые работники (например выпускники ВУЗов) начнут полноценно работать уже через неделю. Им не придется продираться через лабиринт из ненужных "фич" которые были бездумно воткнуты в такие языки, как java, c++, c#, perl, python, js.
[19:59:02] <kemiisto> ОГМ
[19:59:13] <kemiisto> Оберон Головного Мозга :D
[20:00:07] <kemiisto> vlad2: вызывай бригаду скорой помощи!
[20:00:15] <kemiisto> тут обострение у человека!
[20:00:17] <kemiisto> :)
[20:00:38] <kemiisto> нужна срочная госпитализация
[20:00:49] <kemiisto> и недельку под капельницей С++
[20:00:50] <kemiisto> :D
[20:02:38] <vlad2> Угу.
[20:03:01] <vlad2> Нет. Лучше его недельку заставить пописать на ББ.
[20:03:09] <vlad2> Рабочий проект.
[20:03:23] <valexey> э? а может не надо сразу высшую меру применять?
[20:03:35] <kemiisto> а что!
[20:03:41] <kemiisto> я за двумя руками!
[20:08:30] <valexey> я просто недавно увидел такой код (в одном из наших проектов):
[20:08:36] <valexey> static ML_INLINE ML_UInt8 _MPEGTS_GetPacketSize(const ML_UInt8 *buf, ML_Int32 size)
{
    ML_Int32 i;

    if (size < (TS_FEC_PACKET_SIZE * NUM_CONSECUTIVE_TS_PACKETS))
        return 0;
 
    for (i=0; i<NUM_CONSECUTIVE_TS_PACKETS; i++) {
        if (buf[i * TS_PACKET_SIZE] != 0x47)
            goto try_fec;
    }
    return TS_PACKET_SIZE;

try_fec:
    for (i=0; i<NUM_CONSECUTIVE_TS_PACKETS; i++) {
        if (buf[i * TS_FEC_PACKET_SIZE] != 0x47)
            goto try_philips;
    }
    return TS_FEC_PACKET_SIZE;

try_philips:
    for (i=0; i<NUM_CONSECUTIVE_TS_PACKETS; i++) {
        if (buf[i * TS_PH_PACKET_SIZE] != 0x47)
            return 0;
    }
    return TS_PH_PACKET_SIZE;
}

[20:11:06] <vlad2> Крэп.
[20:11:19] <valexey> и понял, что ББ рулез :-)
[20:11:45] <vlad2> Не знаю. Не уверен, что чувак на ББ такой же херни не напишет.
[20:11:55] <vlad2> Тут банальный лекбез нужен.
[20:12:03] <vlad2> ликбез
[20:12:31] <vlad2> На тему "когда надо применять goto"
[20:13:04] <vlad2> "волшебные числа"
[20:13:06] <kemiisto> vlad2: ликбез должен проводить info21. Ликбез будет коротким! :D
[20:13:42] <valexey> особенно если разрешить огнестрел в россии :-)
[20:13:47] <valexey> за что info21 так ратует
[20:13:55] <valexey> vlad2: а где там волшебные числа?
[20:14:11] <valexey> и да, ББ тут помог бы - там же нет goto
[20:14:40] <vlad2> 0x47
[20:15:01] <valexey> дык это ж разборщик вполне определенного формата. Это признак заголовка пакета
[20:15:06] <valexey> Без этого как бэ никак :-)
[20:15:10] <vlad2> try_fec и try_philips - это отдельные функции.
[20:15:33] <valexey> не. в отдельные функции это вытаскивать вообще не стоит
[20:15:39] <valexey> стоит просто переписать в один цикл.
[20:15:42] <vlad2> const int packet_head_signature = 0x47;
[20:15:51] <valexey> а смысл?
[20:16:08] <valexey> если вдруг станет не 47, то это будет уже совсем другой формат
[20:16:14] <valexey> это ж MPEG-TS
[20:16:19] <valexey> ISO-стандарт
[20:16:33] <vlad2> Ну блин - значит объявить внутрни функуии.
[20:16:50] <valexey> зачем? :-)
[20:17:13] <valexey> я знаю что магические числа это плохо (абстрактное зло, да), но в данном случае их по сути нет.
[20:17:28] <vlad2> В данном случае - их целых 3.
[20:18:13] <valexey> какие же?
[20:19:28] <valexey> а переобзывание 0x47 только затруднит чтение исходника и отладку :-)
[20:19:43] <vlad2> В трех местах. Чтоб я знал, что это заголовок пакета, а не ты мне рассказывал ;)
[20:20:15] <valexey> хотя, если назвать это как const int x47 = 0x47; , то наверно можно пережить, да :-)
[20:21:16] <valexey> ну, блин. смотри сам - это модуль который занимается только чтением потока определенного формата. то есть все форматозависимое в нем. название функции тоже как бэ неиллюзорно намекает. если ты не знаешь mpeg-ts, значит ты зря открыл этот модуль и один фиг тут ничего не поправишь и не поймешь.
[20:22:00] <vlad2> Все эти циклы просятся в одну функцию check_signature(). Тогдв бы я сказал, что да, константа излишняя - и так понятно.
[20:22:37] <vlad2> Название оригинальной функции как раз ни разу не намекает.
[20:22:47] <vlad2> Пока не проанализируешь все три цикла.
[20:24:15] <valexey> домой!
[20:24:18] <vlad2> int possible_packet_sizes[] = {...};
[20:24:27] <vlad2> for (...)
[20:24:57] <vlad2> if (check_signature(size))
[20:25:02] <vlad2> return size;
[20:25:28] <vlad2> один цикл, один return
[20:26:18] <vlad2> Хотя лично я бы написал через std::find_if :)
[20:27:10] <vlad2> Чтоб без циклов и без ретурнов из циклов :)
[22:11:04] <valexey> vlad2: stl не используется
[22:11:08] <valexey> шаблоны не используются
[22:11:15] <valexey> даже классы уже почти не используются :-)
[22:11:38] <kemiisto> Oberon Way!
[22:11:41] <kemiisto> :)
[22:12:46] <valexey> зато широко используется void*
[22:13:00] <kemiisto> фу
[22:13:06] <kemiisto> нестрогая типизация
[22:13:09] <kemiisto> АЦТОЙ!
[22:13:12] <kemiisto> ;)
[22:15:19] <valexey> а где она строгая?
[22:16:17] <kemiisto> valexey: эх ты! никак не запомнишь!
[22:16:26] <kemiisto> не ГДЕ, а У КОГО!
[22:16:28] <kemiisto> :D
[22:18:26] <valexey> точнее так: void* никак не противоречит строгой типизации
[23:21:16] <vlad2> Ладно, пусть будет без шаблнов и с return из цикла.
[23:43:35] <valexey> vlad2: у тебя 62.76.42.10 открывается?
[23:47:27] <valexey> kemiisto: ты тоже проверь
[23:47:50] <kemiisto> valexey: It works!
[23:47:56] <valexey> гут