189 похожих чатов

Я по молодости думал, что это наша отечественная специфика, но

нет - говнокод в embedded - явление, увы, интернациональное. И если там где Embedded Linux там еще обычно все не так плохо, то чем ниже уровнем (особенно под bare metal или под крохотные rtos), тем страшнее. Об этом
не раз уже говорили здесь на хабре (в первой половине одной нашумевшей статьи, например, да и еще много где в комментариях).
Объяснения этому можно найти разные. Долгое время специфика embedded состояла в том, что сам по себе функционал у железок был весьма ограничен и прямолинеен (несколько основных функций), время не жизни, а точнее развития продукта не слишком большое (сделали изделие и клепаем много лет, ну или спустя N лет выйдет новая железка), а ресурсы очень ограничены (нужно экономить каждый байт и каждый такт, иначе трындец). В подобных условиях о читаемости и архитектуре никто, понятное дело, думать не будет.
Времена поменялись, железо сделало огромный скачок (STM32 имеющий в десятки раз больше мегагерц и килобайт чем ATmega8, стоит меньше центов чем та своё время), а вот функционал стал наоборот более сложным и разнообразным, и нередко сильно разрастается со временем.
В этом плане embedded-мир сильно отстает от "большого IT" - те через подобное прошли еще 20-30 лет назад, успешно преодолели подобные болезни роста и разработали огромное количество рекомендаций, принципов и инструментов, как нужно делать сложные информационные системы чтобы получилось хорошо. Многие (понятно дело, что не все, но многие) из них отлично применимы и с пользой впишутся и в embedded-мир - вот только нередко embedded-разработчики не то что не хотят к ним приглядеться и оценить, какую выгоду им это даст, чтобы разработка была более эффективной, а их программы были более надежны и гибкие - а отвергают все "чужое" даже не глядя (например, с пеной у рта доказывая что "DevOps в эмбеддед невозможен").
Возможно здесь дело в известном снобизме ("мы тут реальные дела делаем, каждый опкод нашего процессора наизусть знаем, а вы без своего сборщика мусора ничего написать вообще не можете"), помноженном на банальную денежную зависть (веб-формошлеп в банке может получать в 2-3 раза больше эмбеддера на производстве), что влияет на восприятие, а может в чем-то другом.
На Quora.com, помнится, кто-то спросил, мол, эмбеддеры, почему у вас часто бывает такой говнокод? Ответ, набравший больше всего голосов, звучал как "Я вообще по образованию electrical engineer и меня всему этому не учили". И тут я прям завис. Многие "высокоуровневые программисты" тоже самоучки без образования - и то, что я описал выше, они освоили самостоятельно. А тут "меня этому не учили" и всё. Мне этого не понять. Возможно корни действительно растут из того, что многие эмбеддеры пришли в программирование со стороны железок, и мнение что "разработать железку - вот это настоящая сложность и искусство доступное не многим, а программу написать - вообще фигня, даже обезьяна на коленке справится" действительно распространено с соответствующими последствиями.

2 ответов

29 просмотров

все так

Хрень полная.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта