[07:22:51] <vlad3> valexey: не хочешь обновить аватарку? www.shareimage.org/images/dxj81eq62eeffpmm3g5j.jpg
[12:25:12] <valexеy> vlad2: попрошу моего шамана с лягушкой не путать!
[16:24:51] <valexey> .
[17:03:54] <valexey> "Зашел на сайт Московской Патриархии. Серьёзный такой корпоративный сайт — всё как полагается — новости, документы... Сложнее всего было найти документ, называемый Библией. Символично..."
[17:04:47] <valexey> "Применение нового закона с его возрастными цензами меня как-то немного раздражает, потому как я вижу, например, цифру 16+ и не могу закончить сложение не имея второй цифры в задаче."
[17:21:32] <valexey> "программисты - они тоже разные бывают. я как-то с четверть часа слушал как наш дир объяснял одному желтопрограммнику - почему нельзя сначала 0,45 округлить до 0,5, а уж потом и до 1!"
[17:42:19] <vlad3> Гхм... Шаман?
[18:18:46] <valexey> vlad2: да. это ж один из петроглифов
[18:20:31] <vlad2> Гы. Просто я сначала увидел лягушку, потом твой петроглиф - и он однозначно ассоциировался с лягушкой ;) Потом сфоткал лягушку :)
[18:20:40] <valexey> :-)
[18:57:07] <valexey> Чак Норрис поддержал супругу: "Мы не можем более смотреть на происходящее со стороны, пока наша страна погружается в пучину социализма. Или кое-чего значительно хуже".
[18:57:27] <valexey> vlad2: у вас там все действительно плохо? ходит дух социализма? :-)
[19:11:11] <vlad2> Бабло побеждает на всех фронтах.
[19:11:52] <vlad2> И то, что "romney" созвучно "money" - в высшей степени символично.
[19:12:10] <valexey> ну, то есть таки никакого социализьма? :-)
[19:12:46] <vlad2> Даже видимости :)
[19:13:06] <valexey> а хто такое romney?
[19:13:10] <valexey> лингва такого не знает
[19:14:04] <shaggie> фамилия же
[19:14:05] <vlad2> Дык, кандидат.
[19:14:24] <shaggie> раз лингва не знает, значит нет кандидата
[19:15:01] <valexey> :-)
[19:15:07] <valexey> это республиканец какой-то?
[19:15:39] <valexey> vlad2: блин. микроконтроллерщики такие микроконтроллерщики.. они даже на "высокоуровневом и безопасном" обероне пишут низкоуровнево и опасно: http://forum.oberoncore.ru/viewtopic.php?f=115&t=4066#p74235
[19:16:00] <valexey> и в высшей степени странно что с астробе не идет нормально библиотеки которая позволила работать без SYSTEM'а
[19:16:22] <valexey> ибо в Wired с этим как раз все хорошо. и принципиальных проблем как бэ нет.
[19:17:11] <valexey> тьху, Wiring конечно
[19:17:14] <vlad2> А как же плата за абстракцию?
[19:17:24] <vlad2> (если без SYSTEM)
[19:18:25] <valexey> ну в сях нет этой платы :-)
[19:19:05] <valexey> а если правильно расширить Оберон, то и там не будет
[19:19:11] <valexey> даже если компилятор не оптимизирующий
[19:21:05] <valexey> в докладе автор астробе этого долго бил себя пяткой в грудь и говорил что в Обероне нет необходимости соблюдения всех 100500 правил стиля кодирования Mitr'а (если название на напутал) ибо они там соблюдаются автоматически
[19:21:23] <valexey> И при этом искаропки предлагается в каждом модуле использовать SYSTEM?! Что-то тут не так
[19:22:04] <valexey> vlad2: а еще там есть расширизм который добавляет массивы на стеке с неизвестной на этапе компиляции длинной
[19:22:08] <valexey> то есть такое вот alloca
[19:22:24] <valexey> что конечно же резко повышает надежность, ога.
[19:23:42] <valexey> особенно если учесть что памяти там мало (8 Кб на стек и кучу и глобальные переменные) и оно может кончиться ВНЕЗАПНО.
[19:24:48] <valexey> или, если там проверка не стоит, стек может залезть в хип. они могут начать перекрываться
[19:24:53] <valexey> то есть кто-то что-то затрет.
[19:25:13] <valexey> а если там рантайм проверка есть, то это ощутимый оверхед на вызов функции.
[19:27:31] <vlad2> Не знаю. Мне кажется, что alloca не так плох для контроллеров... Где ж ему еще быть?
[19:28:06] <vlad2> С определенным поведением в случае переполнения.
[19:28:10] <valexey> Там где стек безразмерный :-)
[19:28:28] <valexey> Ну, ты же понимаешь что в микроконтроллере нет mmu?
[19:28:33] <vlad2> По дефолту. И с возможностью отключить проверку в конкеретнои месте.
[19:28:41] <valexey> То есть контроль на уровне аппаратном отсутствует.
[19:28:47] <vlad2> Да, понимаю.
[19:29:06] <valexey> То есть на каждый чих (вызов функции, вызов alloca) нужно делать проверку
[19:29:30] <vlad2> Да. Все равно это лучше, чем хип.
[19:29:38] <valexey> Кстати, именно поэтому в mitr'e запрещена рекурсия
[19:29:54] <vlad2> А как можно запретить рекурсию в языке типа оберона?
[19:30:01] <vlad2> Оно ж там неявно может быть.
[19:30:07] <valexey> В style guide запрещена
[19:30:19] <valexey> В том числе неявная. Есть утилиты анализа кода
[19:31:08] <valexey> Так вот, если рекурсия запрещена, то при статическом автоматическом анализе кода мы можем выяснить сколько у нас будет использовано стека. В самом плохом случае.
[19:31:46] <valexey> а если у нас alloca с не константой в аргументе, то все
[19:31:48] <valexey> приехали
[19:34:04] <valexey> vlad2: а чем плох пул в хипе?
[19:34:18] <vlad2> Да не. Это безкомпромиссный вариант. Ничего хорошего не выйдет. Рекурсию запрещать глупо. И отдавать все на откуп статическим анализаторам - тоже. Проще прогнать на тесте, который будет гарантировать проверку на непревышение заданного размера стэка или глубины рекурсии.
[19:34:23] <valexey> в плане быстродействия - будет в точности то же самое что со стеком
[19:34:30] <valexey> (ибо аппаратного стека нет)
[19:34:52] <vlad2> Я не говорил, что плохо :) Просто в таком виде он мало отличается от стэка ;)
[19:35:07] <valexey> vlad2: это в mitr'e запрещено. то есть во всех мишн критикал системах
[19:35:30] <vlad2> Что запрещено?
[19:36:15] <valexey> ща скажу точно.  а то опять навру
[19:37:29] <valexey> вот этим запрещено: http://ru.wikipedia.org/wiki/MISRA_C
[19:38:30] <valexey> MISRA митром каким-то обозвал.. позор на мою голову!
[19:39:58] <valexey> /* Rule 70: Required */
/* Functions shall not call themselves either directly or indirectly. */
[19:41:10] <vlad2> Ну слушай. Вирт вот "запретил" множественный RETURN. И чего?
[19:42:07] <valexey> ну, тут понимаешь какая штука - вирт там много чего придумал, и где это все применяется? А за текст MISRA (за доступ к тексту того что там запрещено) люди добровольно платят деньги
[19:42:08] <vlad2> Ты сам говорил, что в этой области еще ничего не пахано.
[19:42:14] <valexey> А потом пишут анализаторы
[19:42:21] <valexey> А потом соблюдают :-)
[19:43:04] <valexey> угу. не пахано. си статически хреново анализировать :-) те решения что есть - они дороги и ынтырпрайзны в плане юзабельности
[19:43:13] <vlad2> Ну вот я со своим свежим взглядом из другой области говорю: все это выглядит переусложнением по сравнению с другими способами обеспечить тот же самый результат.
[19:43:27] <vlad2> Естесвенно, что я могу быть очень не прав.
[19:43:34] <vlad2> Потому что из другой области и все такое.
[19:44:08] <valexey> просто понимаешь в чем дело, проверять что-либо в рантайме обычно в микроконтроллерах поздняк. ну проверил ты что инвариант у тебя нарушился и что дальше?
[19:44:26] <valexey> твое исключение никто не увидит. корки никто не посмотрит
[19:44:54] <valexey> вообще все уже забыли про сущствование тебя. думают что у них унитаз сам работает, без электроники :-)
[19:45:57] <valexey> поэтому, по крайней мере в бытовой автоматике, вполне достаточно watchdog'a, который, если сколько-то времени его счетчик не сбрасывают, тупо перегружает/запускает с начала программу.
[19:45:58] <vlad2> В смысле что делать - как обычно, reset.
[19:46:17] <vlad2> Плюс запись в нужную ячейку флэшки кода ошибки.
[19:46:21] <valexey> там каунтер небольшой - он проверяет раз в секунду или около того
[19:46:22] <vlad2> Который потом можно считать.
[19:46:42] <valexey> Да никто считывать не будет. То есть флеш ты этими записями очень быстро убьеш.
[19:46:56] <valexey> А если не видно разницы, то нафига границы массивов проверять вообще?
[19:47:02] <vlad2> Ну если никто счтывать не будет, то просто reset :)
[19:47:35] <vlad2> Дык, предсказуемый результат (reset) против undefined behavior.
[19:47:41] <valexey> а вот такты процессора - дороги. разбрасываться ими чтобы получить тот же ресет что случится все равно…
[19:48:07] <valexey> В том то и дело что оно вполне себе defined - ресет будет если не по той дорожке пойдешь :-) Просто не сразу а чуть погодя.
[19:48:07] <vlad2> Не, я ж говорил, если тактов не хватает - пожалуйста, отключай проверки.
[19:48:59] <valexey> В общем, фигли теоретизировать - пробовать надо по граблям этим побегать лично
[19:49:08] <vlad2> Да, согласен.
[19:50:17] <valexey> кстати, отсутствие например хардварной инструкции для умножения целых чисел сразу приводит к неприятным последствиям - нельзя точно сказать стоимость умножения
[19:50:25] <valexey> сколько тактов процессора оно сожрет
[19:50:47] <vlad2> Кстати, вот в авто именно тако сделано - все работает, но на очередной смене масла можно считать код ошибки и починить что надо.
[19:51:20] <vlad2> Если ошибка серьезная - то лампочка загорается (езжайте в сервис). Но все поять таки продолжает работать.
[19:51:55] <valexey> системы бывают обслуживаемые и не обслуживаемые. МК очень часто в необслуживаемых.
[19:52:52] <vlad2> Необслуживаемых в общем случае не бывает, мне кажется.
[19:53:07] <vlad2> Вот выпостил ты мильен необслуживаемых плееров.
[19:53:42] <vlad2> Я тебе 10 тысяч юзеров начали звонить в кастомер сервис и жаловаться, что оно не проигрывает диски.
[19:53:47] <valexey> бывает-бывает. скажем ёлочные гирлянды (там тоже МК стоит)
[19:53:52] <vlad2> Вот что ты будешь делать?
[19:54:13] <valexey> какие-нибудь лампы дневного света
[19:54:16] <vlad2> Причем репродьюса у пользователей нет.
[19:54:19] <valexey> и прочих расходный материал :-)
[19:54:29] <vlad2> Да хоть лампы.
[19:54:33] <vlad2> Одна фигня.
[19:54:57] <valexey> две разные - перепрошивать их (обслуживать) дороже чем просто выдать юзеру новую.
[19:55:01] <vlad2> Одно делать ихъять у юзера лампу и устранить ошибку в следующем партии.
[19:55:06] <valexey> c новой прошивкой :-)
[19:55:22] <vlad2> Другое дело - год искать багу, пока конкурент наживаетсяч на твоей ошибке.
[19:55:40] <vlad2> Перепрошивать никто не будет. Но багу можно быстрее найти.
[19:56:20] <valexey> у флеша ресурс - 10000 записей. если процессор постоянно крутится в ресет-режиме, думаешь как долго флеш продержится?
[19:56:46] <vlad2> Ну блин. Записывать только первую ошибку. Делов то. Лучше, чем ничео.
[19:57:22] <valexey> кроме того, чтобы записать во флеш, нужна программа. причем нефигового размера. если у тебя уже жопа, то где гарантия что эта прога тебе туда вообще запишет что-то?
[19:57:40] <valexey> и где гарантия что оно именно запишет а не убьет прошивку целиком?
[19:58:50] <vlad2> Конретный вот случай. На аккордах (хонда) была бага, что у них автомат переключался на пониженную на высоких скоростях со всеми плохими последствиями. Сколько бабла ты тотратишь на репродьюс такой баги без нормальной диагностики?
[19:59:20] <valexey> МНОГО
[19:59:57] <valexey> Но мы сейчас просто приходим к тому, что МК дофига где используются и единого хорошего и правильного решения для всех задач не выйдет.
[20:00:02] <vlad2> Угу. Соизмеримо с количеством бабла на отзыв и починку всей партии.
[20:01:09] <valexey> То есть в любом случае думать надо в каждом проекте думать. Это сложно и вообще ужасно. Вместо того, чтобы заучить талмуд заповедей и их тупо исполнять, приходится думать своей головой!
[20:02:39] <valexey> но вообще, сейчас со всем этим постепенно становится проще - любой унитах может выйти в интернет и зарепортить багу. ну то есть сейчас уже почти так.
[20:03:21] <vlad2> Угу :) И подцепить парочку вирусов заодно :)
[20:03:33] <valexey> сейчас в принципе даже на восьмибитке можно по сетке бросить данные
[20:03:51] <valexey> ну, это сложно будет - флеш может быть защищен от записи :-)
[20:04:14] <valexey> а область данных не может содержать код (гарвардская архитектура в МК самая распространенная)
[20:12:33] <vlad2> Ниче, прогресс он такой :)
[20:12:39] <valexey> в общем, разработка под МК отличается сильно. хотя любительская разработка под какую-нибудь netduino (http://netduino.com/) уже весьма напоминает разработку под десктоп или там сервер. Половина проектов там уже не с железками связано, а чисто софтверные заморочки. Аля - json parser, или там - легковесный веб-сервер ну и тому подобное. Аж читать тошно :-)
[20:13:40] <valexey> хотя, возмжно это не столько от железки зависит, а от контенгента. под netdiono же пишут .net'чики (под нее софт пишется на с#/vb.net в студии и отлаживается там же)
[21:37:06] <vlad2> Че-то алексус так обострился.
[21:37:37] <vlad2> Ну пришел info21 в очередной раз. Ну поплевались все. Так что ж теперь?
[21:37:59] <vlad2> Причем info21 особо и не приставал к нему.
[22:21:43] <valexey> vlad2: магнитные бури + луна. + испоганена интересная алексусу тема.
[22:22:30] <valexey> похоже время пришло и надо отложить микроконтроллеры и общение на форуме в сторону. и заняться созданием системы которую не сможет разрушить случайна залетевший дятел
[22:31:43] <valexey> дас. Илья тоже оказывается любит играть на публику. У нас он ратует за русские название терминов, вон с моим write ahead log спорил, а сам, когда расслабляется, вот такое пишет:
[22:31:46] <valexey> "По поводу look-ahead - разумеется, Вы правы, относительно предельных случаев, что можно создать эффект позиционирования... Ну, это для ридера возможны такие фокусы. Для врайтера уже нет..."
[22:31:56] <valexey> http://forum.oberoncore.ru/viewtopic.php?f=29&t=3640&start=100#p74377
[23:10:59] <vlad2> Хе-хе.
[23:12:04] <vlad2> Че-то форум тормозит.
[23:24:48] <valexey> "Я не люблю языковые войны. Они — удел неудачников, потому что они спорят о неверных вещах. Для меня PHP неуправляемый инструмент, а в руках других он творит чудеса. То же можно сказать о C++."
[23:24:51] <valexey> http://habrahabr.ru/post/147767/
[23:30:39] <valexey> "
Это очень помогает, когда приходится решать проблемы производитльности, а также при отладке. Я помню случай, когда один из клиентов моей компании прислал скриншот ошибки в Windows 2000, на котором были видны состояние маленького участка памяти и регистров. Используя только эту информацию и зная версию программы, мы смогли обнаружить проблему с нулевым указателем и ее причину."