Прямой эфир

0
MISRA защищает от подводных камней С, а не ошибок логики. Если лабать код, даже не проверяя что на выходе получилось, то естественно будет как в топике.
  • avatar
  • Vga
  • 30 апреля 2017, 15:19
0
Ну наконец-то, срач дискуссия все же разрастается.

Дело в том, что тупое следование ВСЕМ рекомендациям MISRA, во-первых, просто не возможно. о чем и сообщается в доках на MISRA-C Compliant ПО, например, вот MISRA-C violations in CMSIS library.

Во-вторых, это совершенно не спасает от ошибок или говнокода, о чем и рассказывается в этой статье, т.к. либа STM32Cube HAL тоже MISRA-C Compliant.
+1
Флаг Вам в руки и паровоз навстречу.
Жалко Ваших заказчиков (если они есть)которым придется отдуваться за супер программистов, которые не желают ущемлять свою свободу воли (то есть свободу писать гавнокод) и следовать правилам, часть из которых для нормальным людей (не супер программистов с раздутым ЧСВ) очевидна и должна соблюдаться, часто менее очевидна и совершенно не спорна, поскольку спорить там не о чем, НИКАКОГО вреда следование правилам причинить НЕ МОЖЕТ, а польза несомненна, а часть в стандарте честно названа рекомендованной, а не обязательной.
«В Уставе караульной службы каждая строчка написана кровью людей, которые пытались делать по-своему» — вперед на грабли, они Вас заждались.
«Обычный человек учится на своих ошибках, умный — на чужих, дурак не учится вообще» — мне кажется, мы имеем в Вашем лице последнюю категорию.
  • avatar
  • GarryC
  • 30 апреля 2017, 12:53
0
Причем здесь Линус.

Ядро Linux значит написано с учетом всех обязательных (99 для MISRA C 1998, 121 для MISRA C 2004) её правил? Как насчет другого ПО, в частности для MCU?

Треть этих правил — боян, они были известны и применялись без всякого упоминания MISRA.

Еще треть — просто спорны.

Ну и последняя треть по тем или иным причинам просто не будут выполняться многими кодерами, т.к. являются чистым и тупым бюрократизмом и ущемлением свободы воли и выбора ПРОГРАММИСТА и заказчика.

Намного проще тогда уже — просто исключить язык Си, как потенциально очень опасный, из многих сфер человеческой деятельности. MISRA — это чистая бюрократия, ее надо почитывать, но тупо следовать всем ее указаниям — не нужно, конечно, если это не прямо указано в ТЗ (любой каприз за ваши деньги).
+1
Мне особенно понравилось сравнение с Линусом. Сразу вспомнилось «Галантерейщик и кардинал — страшная сила». Очень классно звучит от человека, который, судя по его комментам, не способен понять, что такое надежный код.
  • avatar
  • GarryC
  • 30 апреля 2017, 11:31
0
Видео, что-то не понял как его вставить не ссылкой.
  • avatar
  • HOMEZ
  • 29 апреля 2017, 15:53
0
Воу-воу-воу, сколько экспрессии! :) Я даже с трудом вспомнил пароль и авторизовался тут, чтобы расставить плюсы-минусы и написать этот комментарий. :D

Так-то я тоже адепт MISRA и периодически воинствующий противник кубических ардуин. :) Давайте глубоко вдохнем, выдохнем и пойдем дальше рисовать схемы и писать код, оставив некоторых наших коллег за изготовлением мультивибратора из STM32F4. Все равно заказчик, намучившись с такими решениями, в итоге придет к нам. ;)
  • avatar
  • _YS_
  • 29 апреля 2017, 14:43
+3
Бля, у меня аж подгорает! Так-то я не особо писатель комментариев клавиатурой не по делу, но.

Зачем вы себя ведете как школьник? Ну что это, блять, за херня? Или что это? Тут говно, там говно — везде говно! Или у вас весна, что ли? Вышли на улицу прогуляться, насобирали подснежников, и теперь «везде говно»? Не удивительно.

MISRA — нормальный стандарт. Все эти «тут нельзя, там нельзя», динамически нельзя, инициализировать только тут, и прочее. Все это имеет под собой здравое зерно и призвано обрисовать менее эфемерные рамки для того, чтобы создавать более безопасные системы. Прикладывать нужно просто правильной точкой, а не жопою, и все будет нормально.
Какая разница, на чем, блять, писать в каком веке? Есть бизнес (у вас от этого, что ли, бомбит?), есть бизнес-задачи, есть стандарты и инструменты, есть исполнители и есть результат. Если исполнители отлично справляются с задачей бизнеса, не гонят говнокод, то какая нахуй разница, какие они при этом используют стандарты и инструменты? Да хоть из палочек, камешков и желудей. Работает, стабильно, выполняет? Ок. Тем более, речь идет о проверенных временем палочках и камешках, а не о том, как сейчас принято у «модных и молодых»: возьмем NodeJS, и напишем на нем сервер нагруженной и важной информационной системы! Вот где мудаки живут. Да там хоть идеальный код вгони, сраный NodeJS сыпется сам по себе от каждого чиха. Поэтому и палочки, поэтому желуди, поэтому камешки. И клетка 2х2. Не нравится — не еште. А говнокод можно и из палочек сложить, будто бы тяжело очень.

Отладчик — хорошая штука и полезное подспорье. Но иногда валиться может в таком непредсказуемом месте, что отладчик не особо выручит (хоть и немного поможет). А еще бывают эрраты. Надо курить маны, читать существующие эрраты, вкуривать в код. Все равно. Мы находили пару эррат в 407, промудохались знатно. И таки-да, что-то пробовали писать в ST — толку ноль. Забили хуй.

Касательно куба. Это инструмент, хороший коммерческий инструмент с хорошей задумкой, на самом деле. Более того, пользуемся им в разной степени постоянно. Особенно по лапкам пощелкать, чтоб мозги не напрягать понапрасну. Что касается его библиотек. Ну, как сказать. Дареному коню в зубы не смотрят. Код там странный, местами неоптимальный, много косяков (косяков, а не опечаток!). Периодически то железо косо инициализируется, то маллочница пробирает, то еще что-то. За индусов (индийцев все же?) говорить не буду — китайцы, русские, СШПцы, европейцы (блять! какой у них криворукий код в большинстве) — все косячат одинаково. Просто применять все это надо, опять же, с умом. Где-то, где надо релёй щелкнуть, лампочкой мигнуть и уснуть — пойдет (хотя, с кубом можно внезапно не проснуться после этого). Где-то, где нужно быстродействие и уверенность, а не слабоумие и отвага — курить маны, писать код. Можно и кубовский за основу взять, хотя, как выяснилось в работе, проще сразу начать свой писать. Вот и все. А чужие косяки искать — очень муторная тема.
Опять же, все выщелачивается до тупо точки приложения, которая должна быть не жопою, а головою.

P.S. А что, если Java, то сразу говнокодирование? За такой гниловатый базар можно и ответить ведь.
0
Видео фстудию))
  • avatar
  • basil
  • 29 апреля 2017, 09:28
+2
Вообще чужие ошибки искать ебанесся-) Особенно в объемном коде. Особенно если нужно срочно-)))
  • avatar
  • basil
  • 29 апреля 2017, 09:20
0
Наши тоже двигают. Забугорный хайтек.
+100500
  • avatar
  • basil
  • 29 апреля 2017, 09:17
0
Обычно хватает просто прогнать и посмотреть в отладчике.
Если бы…
  • avatar
  • Vga
  • 29 апреля 2017, 09:15
0
Хрен там. С точностью до наоборот

Обычно хватает просто прогнать и посмотреть в отладчике.

А в данном конкретном случае челу просто необходим был трассировщик J-Trace за 1-2 килобакса, хороший DSO (цифр.осцилл) или 100/200 МГц логич.анализатор. Возможно, что тогда можно было бы все сделать быстрее и даже без долгого медитирования над реф.мануалом.

Я даже год назад так вот решил проблему в 1С 8.3 (которую я нихуя не знаю — там только описание — 4 толстенных талмуда) одному «уважаемому и солидному челу». Нашел модуль/документ в конфигурации, с которым была проблема, и прогнал в отладчике — там просто оказалось, что не заполнена какая-то константа или поле в одном из справочников. Заполнили, и ошибка перестала вылетать и все стало считаться очень чудесно. Все сказали, что я «голова» и «гений», даже «заработал десятку» на один раз поесть в ресторане. А что там делается в этих портянках (а они там сотни и тысячи строк кода) я так и не понял и даже не смотрел, что смотреть, если ничего не понимаешь. Ну так-то все понятно: условия, циклы, свойства, методы, но что конкретно делают и для чего эти все объекты из объектной модели 1С — полный ноль понимания, только очень смутно, чисто по названию.
-1
MISRA — это говно. Это мое ИМХО. Ну или чисто для автомобильных кодеров, т.к. это ихний стандарт и это ИХ проблема и ИХ попоболь. Что, почему-то, совершенно не помешало Тойоте говнозакодировать монолитный спагетти говнокод c гоуту и с магическими цифрами.

Писать в 21 веке на ANSI Си 89-го года, да еще кастрированном и выхолощенном MISRA по самое не могу на 70% его возможностей (это нельзя, это тоже нельзя, это опасно). Пусть эти мудаки идут нахуй, или создают себе для автопромышленности язык типа Паскаля или еще чего изначально ограниченного и защищенного. А лучше всего — пусть юзают готовые системы на ПЛК — там это уже все продумано — все что можно уже защищено и анально огорожено.

Нехуй им лезть в Си, да и ваще в MCU. Хорошо, что я не работаю на автопром (как и Линус и многие и многие другие) и могу спокойно обходиться без ихних иезуитских инквизиторских нравоучений. Лучше уже тогда ваще не изучать Си и не писать на нем, а сразу же уходить в программирование ПЛК или в говнокодирование на Java, ПХП или 1С.
0
Суперслоу! Но т.к. караоке в любом случае рендерилось в virtualdub, то можно и потерпеть =D
0
Ы. И как, сносно работало? VSFilter и без того весьма тормозной был >_<
  • avatar
  • Vga
  • 28 апреля 2017, 17:08
0
Хм, когда-то я делал караоке к анимешкам (т.е. сопровождение текста песни текстом на экране с какими-то видеоэффектами) и занимался оформлением субтитров. Вот этот фильтр часто использовался для оформления + скрипты на луа для программы aegisub, с помощью которых делалась анимация (строка разбивалась на отдельные слоги со своими эффектами оформления, точечки, кружочки, пятна и т.д.). Эффекты задаются тегами в субтитрах — цвет, шрифт, размер, граница, тень, перемещение и т.д. И захотелось сделать теги самопальные, а потом и подключить теги, заданные из внешних скриптов (обработка в нём точек пути текста до растеризации и обработка заливки поточечно) =)
Как-то так~
0
Я, помню, lua для интереса цеплял к VSFilter
С какой целью?)
Хотя выглядит, как и стоит ожидать, ужасно><
Регэкспы, сэр!
  • avatar
  • Vga
  • 28 апреля 2017, 16:31
0
Я, помню, lua для интереса цеплял к VSFilter (DirectShow фильтр, плагин VirtualDub и т.д.) — видеофильтр для рисования субтитров…

Регэкспы получились, вроде. Хотя выглядит, как и стоит ожидать, ужасно><
<regex value="(?<=\[ERROR\]\s)(.*?)(?=\.)" />
0
С луа круче и интереснее! Я бы сделал так только поэтому :D Ну и мне кажется, на луа можно сделать более лаконичные описания.
А так если этого хватает, то никакой нужды менять, конечно, нет.
  • avatar
  • Vga
  • 28 апреля 2017, 15:31