LINUX.ORG.RU

Embedded C: вопросы на собеседованиях

 , ,


4

5

Я знаю, на лоре много сишников и ембедщиков. А проводящих собеседования на работу еще больше.

Так вот, уважаемые отбиральщики мужей у жен специалистов на должность embedded C developer, что вы обычно на собесах спрашиваете?

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

Знаю, в гугле такого много, но хочется от живых людей примеры, а не от индусов, пиарящих себя и свой сайт.



Последнее исправление: untitl3d (всего исправлений: 3)

Ответ на: комментарий от Harald

А как и кем проводится верификация писечки регистранта? Огласите регламент. И какие уже были прецеденты?

Djanik
()
Ответ на: комментарий от Djanik

Все выше сказанное тобой относится к stl и boost?

Разумеется, да. Я говорил об общем подходе к написанию и сопровождению кода грамотными разрпботчиками. Что касается библиотек «Эс-Ти-Эл» и «Буст», то грамотный разработчик вряд ли станет их использовать их во встраиваемых системах.

Enthusiast ★★
()
Ответ на: комментарий от Enthusiast

То есть ты предлагаешь перед использованием boost изучить его код? А зачем, если все работает? Ну ладно. А почему другие этого не делают? Они неграмотные разраработчики?

Djanik
()
Ответ на: комментарий от Djanik

А почему другие этого не делают?

те, кто изучили код буста, его не используют. а кто не изучили - используют.

во многих знаниях - многия печали.

alysnix ★★★
()
Ответ на: комментарий от Enthusiast

Однако дальше твоим проектом будешь уже управлять не ты, а «библиотекарь» Джамшут, по прихоти которого библиотека может быть вообще заброшена.

Зачем завязываться на обновления библиотеки? Если надо, чтобы работало, делаешь свою ветку библиотеки от конкретной версии и с ней работаешь. Если вдруг что-то вокруг поменялось критично для программы и в новой версии библиотеки эти изменения появились, то делаешь разовый переход.

monk ★★★★★
()
Ответ на: комментарий от monk

Зачем завязываться на обновления библиотеки? Если надо, чтобы работало, делаешь свою ветку библиотеки от конкретной версии и с ней работаешь.

В этом случае ты не получишь исправления ошибок из обновляемой библиотеки.

Enthusiast ★★
()
Ответ на: комментарий от Enthusiast

В этом случае ты не получишь исправления ошибок из обновляемой библиотеки.

В 99% случаев они будут в тех функциях, которые твоя программа не использует. В остальном 1% их можно исправить в своей ветке и это надёжнее, чем обновлять всю библиотеку.

monk ★★★★★
()
Ответ на: комментарий от monk

В 99% случаев они будут в тех функциях, которые твоя программа не использует. В остальном 1% их можно исправить в своей ветке и это надёжнее, чем обновлять всю библиотеку.

Тогда возникает вопрос: «Зачем тащить в проект 99 процентов дырявого, ненужного хлама, если нужен всего 1 процент полезного кода?».

Я думаю, что станет гораздо понятнее стоит ли сидеть на необновляемом старье, если заменить слово «библиотека» на «ядро Линукса». Можно сидеть на ядре 2.6.32, надеясь на то, что все ошибки уже выловлены. На деле разработчики ядра исправляют ошибки лишь в новых, поддерживаемых ядрах, а старье уже никто даже не смотрит. С библиотеками все тоже самое.

Enthusiast ★★
()
Ответ на: комментарий от Enthusiast

На деле разработчики ядра исправляют ошибки лишь в новых, поддерживаемых ядрах, а старье уже никто даже не смотрит.

За последние пятнадцать лет умудрились из ядра сделать монолитного МОНСТРА …

anonymous
()
Ответ на: Хммм... от Moisha_Liberman

Наличие образования и/или срока службы в армии. Нет? Мимо.

Я наоборот воспринимаю откос от армии как тест на интеллект. Если не смог откосить, то это подозрительно, значит мозгов не хватило откосить.

fulmar_lor
()
Ответ на: комментарий от Enthusiast

Тогда возникает вопрос: «Зачем тащить в проект 99 процентов дырявого, ненужного хлама, если нужен всего 1 процент полезного кода?».

Предположим, надо нарисовать пару кнопочек и окошко для ввода переносимо для Win/Lin/Mac. Можно взять готовые wx/GTK/Qt и в несколько строк получить то, что надо. А можно попробовать из одной из них выдрать именно тот код, который нужен для отрисовки пары кнопочек и окошка. Объём работы во втором случае будет на порядки больше.

Я думаю, что станет гораздо понятнее стоит ли сидеть на необновляемом старье, если заменить слово «библиотека» на «ядро Линукса».

Нет. Нельзя написать систему, которая от ОС использует только пару сисколлов, а остальные части ядра не использует совсем. А значит, все части ядра, которые реально используются (при загрузке, опросе устройств, многозадачности) необходимо поддерживать в актуальном состоянии.

Можно сидеть на ядре 2.6.32, надеясь на то, что все ошибки уже выловлены.

Существует большое число систем на очень старых ядрах линукса, причём как раз по теме этой ветки: видеокамеры, шлагбаумы, ворота, турникеты, …

monk ★★★★★
()
Ответ на: комментарий от fulmar_lor

Если не смог откосить, то это подозрительно, значит мозгов не хватило откосить.

Угу. А если не смог своровать у работодателя, значит тоже мозгов не хватило. Вот поэтому некоторые работодатели с большим подозрением относятся к откосившим: умный и аморальный сотрудник может быть опасен для организации.

monk ★★★★★
()
Ответ на: комментарий от fulmar_lor

Небось, миопия или плоскостопие у тебя, умник? А может быть насиловал свой мозг, чтобы защитить никому не нужную диссертацию?

anonymous
()
Ответ на: комментарий от fulmar_lor

Пацифисты служат альтернативную службу. А аморальные люди ищут возможность нарушить закон. Не надо их смешивать.

monk ★★★★★
()
Ответ на: комментарий от fulmar_lor

Я говорю про легальные способы.

Легальные. Но от этого не менее аморальные, так как целью является желание избежать исполнения законной обязанности. Также как есть легальные способы использовать ресурсы работодателя для личного обогащения в ущерб этому работодателю. И человек, который воспользовался легальными способами из первой группы, с большой вероятностью воспользуется и легальным способом из второй.

monk ★★★★★
()
Ответ на: комментарий от monk

Легальные. Но от этого не менее аморальные, так как целью является желание избежать исполнения законной обязанности.

Зато потом очень классно убивать людей по команде и не считать это аморальным. А если законом тебя обяжут ноги раздвинуть и наклониться?

fulmar_lor
()
Ответ на: комментарий от fulmar_lor

Зато потом очень классно убивать людей по команде и не считать это аморальным

ишь чего удумали! живых людей с автоматами, убивать!

alysnix ★★★
()
Ответ на: комментарий от Djanik

Судя по его объявлением о поиске сотрудников на одном известном сайте вилка 40-60тыс.

anonymous
()
Ответ на: комментарий от fulmar_lor

Зато потом очень классно убивать людей по команде и не считать это аморальным.

Как я уже писал, пацифисты вправе выбрать альтернативную службу.

А если законом тебя обяжут ноги раздвинуть и наклониться?

Если ты принимаешь гражданство РФ, то принимаешь обязательство выполнять все обязанности гражданина. Если обязанность гражданина для тебя позорна, то ты вправе отказаться от гражданства РФ. Желание же получить все привилегии гражданина, но не выполнять обязанности, свидетельствует как раз об аморальности. И аргумент «А если законом тебя обяжут ноги раздвинуть и наклониться?» очевидно будет применён и к правилам внутреннего распорядка и соглашению о конфиденциальности у работодателя.

monk ★★★★★
()
Ответ на: комментарий от monk

Как я уже писал, пацифисты вправе выбрать альтернативную службу.

Ты не уловил. Не пацифист => аморален.

Если ты принимаешь гражданство РФ, то принимаешь обязательство выполнять все обязанности гражданина. Если обязанность гражданина для тебя позорна, то ты вправе отказаться от гражданства РФ. Желание же получить все привилегии гражданина, но не выполнять обязанности, свидетельствует как раз об аморальности.

Я боюсь на это отвечать, потому что будет 5.3.

И аргумент «А если законом тебя обяжут ноги раздвинуть и наклониться?» очевидно будет применён и к правилам внутреннего распорядка и соглашению о конфиденциальности у работодателя.

Если ты нарушаешь людоедские правила, то это не значит, что ты все правила будешь нарушать.

fulmar_lor
()
Ответ на: комментарий от fulmar_lor

Угу...

воспользоваться одним из миллиона способов откосить.

Единственный более-менее толковый способ откосить это продолжить обучение в аспирантуре. Но таких людей крайне мало. И это, повторю, единственная уважительная причина в контексте нашего обсуждения. Хотя, как работать человеку, если он вплотную занят получением научной степени, тут тоже вопрос.

Если Вы думаете что внезапно возникшее хроническое заболевание это повод, то нет. Нужно предоставить всю медицинскую информацию. Диагноз, время возникновения, развитие. В полном объёме. Если Вы инвалид, то это ещё смотреть надо, т.к. компании Вас могут защитать как определённую соц.ответственность, но тут тоже на усмотрение руководства. Что там за инвалидность и т.д. и т.п. Если человек просто хронически болен то тоже надо смотреть. Не будет ли он просто место занимать.

Если Вы имеете в виду многодетного отца, то он и на работе под вопросом, т.к. вероятнее всего ему работать будет некогда.

Городские легенды про то, что если с собой взять приятеля и взасос до дёсен пожахаться с ним в кабинете военкома не работают. Типа, пять минут позора и свободен. Во-первых, Вам выдадут направление в психо-неврологический диспансер. Во-вторых, скорее всего всё таки загребут, т.к. гребут даже таких. Зачем не знаю, видимо, на поржать. В третьих, даже если получите белый билет, то первое обращение в ПНД (а оно много где требуется) и позор до конца жизни.

Надеюсь, Вы не имеете в виду освобождение от службы по неснятой судимости или отбытому сроку заключения…

Так что, нет, у Вас была хорошая попытка, но это так не работает. Я готов выслушать что-нибудь про «миллион способов» в разрезе УК РФ, ст. 328, если не ошибаюсь.

Так что, выходом была бы альтернативная воинская служба, но тут вместо года служить придётся несколько больше, так что стоит ли овчинка выделки, я не знаю. Современная годичная экскурсия в армию это для понимания. Вы смотрите на армию, армия на Вас. Может, и понравитесь друг-другу. Те же ВДВ уже на 70-80% укомплектованы контрактниками. Для многих это действительно социальный лифт.

Хотя, лично я и не против тех, кто будет пожизненно на 23 февраля караем подарками в виде трусов-носков-крема для бритья. Я их даже полузащитниками родины называть не буду. =)))

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: комментарий от fulmar_lor

Да.

Зато потом очень классно убивать людей по команде и не считать это аморальным.

Иногда приходится и убивать. Иногда и умирать. Всякое бывает. А что предлагаете? Кто-то первым готов до нуля разоружиться?

А если законом тебя обяжут ноги раздвинуть и наклониться?

Я не совсем понимаю – Вы боитесь что Вам прикажут это сделать или боитесь что наоборот, не прикажут? Ну вот, например…. Мы тут с уважаемым @alysnix малость ЦАХАЛ повспоминали. Фоточка оттуда. Хорошие попцы. Но женские. Мужские как-то не в почёте, знаете ли.

С другой стороны, если честно, то не вызывают доверия люди, которые не осилили найти в себе каких-то сил взять в руки оружие. Или пройти альтернативную службу. Но предпочитали и предпочитают откручиваться всякими левыми способами. Видимо, именно такие люди и занимаются такими вещами как сливы информации из банков и иных коммерческих структур. Ну, досливались, деточки.

Насколько я помню, ст. 183 УК РФ сейчас планируют расширить, дополнив теперь уже уголовной ответственностью за разглашение коммерческой или банковской тайны сроком до двух лет. Т.е., теперь это будет не административка как раньше, а уголовка. Пара лет, насколько я помню.

Не надо. Не ходите в армию, не вкуривайте что к чему и что зачем. Будете бедокурить – будут и проблемы. Объяснять и уговаривать смысла нет, да и просто тратить время незачем.

Moisha_Liberman ★★
()
Ответ на: комментарий от monk

Не...

Вот поэтому некоторые работодатели с большим подозрением относятся к откосившим: умный и аморальный сотрудник может быть опасен для организации.

Именно «ума» в понимании нормального человека там как правило и нет.

Насколько я видел откосивших, это отдельные такие индивидуумы, которые хорошо заметны по «громким воплям». Если баба купила машину, значит, насосала. Если мужик денег заработал, значит своровал. Кругом коррупция… Ну и всё такое.

Их сейчас в интернетах полно. Хоть не заходи.

Moisha_Liberman ★★
()
Ответ на: комментарий от Enthusiast

+1!

Что касается библиотек «Эс-Ти-Эл» и «Буст», то грамотный разработчик вряд ли станет их использовать их во встраиваемых системах.

Именно так. Я понимаю что тут одно безграмотное и бестолковое существо набросило про stl и «бюст» (я в курсе как пишется boost, но здесь просится именно бюст). Но мы говорим об эмбеддинге. Я даже заметил что это существо, роящееся вокруг сайта, как правило, набрасывает на вентилятор какие-то кажущиеся ему умные слова в случайном порядке, а потом умные люди сидят и разбирают что же оно там вякнуло и зачем. Даже если по своей бестолковости оно и не в тему вякнуло.

Итак, позвольте на примере. Я достаточно хорошо и плотно знаком с такой продукцией TI как cc1310/1350/1352 и ещё рядом микросхем, но остановимся на этих.

Да, это эмбеддинг, эмбеддинговее просто некуда.

Чтобы было понятно о чём мы говорим, вот вид отладочной платы. Вид чуть больше натуральной величины. Вон, посредине сс1310. Оно и есть. Остальные микросхему малость «мощнее», но нам без надобности тот же BLE в данный момент.

Дальше. Вот блок-схема сс1310. Тут есть Cortex-M0 для организации радиоканала. Там есть патентованное решение EasyLink, на основании которого мы создаём свой радиопротокол. Скорость в зависимости от мощности источника питания и наличия внешней антенны (простой диполь на готовых модулях, о них ниже) может достигать от 50-60 байт в секунду на 20 км. на открытой местности и до… Короче, много, если эти модули стоят в пределах некоего безумного дома и расстояние в пределах «квартиры».

Cortex-M3, который мы программируем. И пол-процессора на опрос/управление всего что крепится «сверху» на данный модуль. В Cortex-M3 есть AES-NI. Т.е., можно прикриптовать потоки данных.

Сам по себе модуль. Да, 420р., да его просто впаиваем, прошиваем, подаём питалово и работаем. Это я показал модуль для самого ходового в России диапазона в 868MHz, есть и на 433 и на 915.

Это я показал о чём речь. Теперь открываем статью на habr. Прямо всё по теме. Я позволю себе цитировать оттуда некоторые моменты и комментировать их. Сразу – Linux тут при том, что среда разработки тут у меня линуксовая. И да, это про эмбеддинг, напоминаю ещё раз.

и с операционной системой TI-RTOS

Да, там есть bare metal решения и TI-RTOS. TI-RTOS это ОСРВ, которая вшита в процессор сразу. Она в теории является POSIX-совместимой. Т.е., можно использовать pthreads и погнали. На самом деле, нет. Чтобы не плодить лишние сущности, я бы рекомендовал использовать сразу то, что есть в TI-RTOS для потоков – Task();. И не снашать мозг. Это прямо сразу.

С++ как таковой. В состав компилятора входит такой минимум, что по сути там можно только объявить класс как таковой, а дальше придётся работать теми функциями (с!) которые есть в API. И беглое гугление показывает что TI в своей CCS не особо разбегаются насчёт С++. Ну не нужен в эмбеддед он ни кому.

Однако, если почитать нашего пациента, то там:

Сразу отметим, что исходные коды представлены на языке С, часто это не слишком удобно, многие языковые конструкции выглядят громоздко, по сравнению с аналогами на плюсах, но создателей больше волновала совместимость кода, нежели синтаксический сахар. Хотя, можно было бы создать и С++ версию библиотек, условная компиляция известна давно и используется повсеместно, но это влечет за собой дополнительные материальные издержки. Наверняка, руководство фирмы знает, что делает, а мои замечания являются некоей «диванной аналитикой», но мне кажется, что я тоже имею право на свое мнение.

Ну хорошо что он хоть понимает немного степень своей «ограниченности». Да, в ГПТУ ему похоже про С ничего не говорили, утёнок сразу привык к С++.

Дальше.

В рассматриваемом случае все хорошо, единственный возникший вопрос — почему значения по умолчанию не константны, наверное, это наследие проклятого прошлого.

Чуть выше до бестолочи уже начинало доходить что TI-RTOS это ОСРВ для целого семейства процессоров и константы могут различаться для разных процессоров. Но, как видим, здравая мысль погасла в мраке черепа.

в широко известной FREE-RTOS

А чё не в оффтопике? Его же можно и на ARM запускать? Ладно, это я уже издеваюсь. Всё проще – человек просто не в состоянии принять существующие правила игры. И хочет не как того требует производитель, а как ему привычнее… Тогда зачем себя мучать?

Отметим, что на плюсах у нас есть возможность, полностью отсутствующая на С, всю инициализацию очень красиво спрятать «под капот», но возможные аргументы в пользу второго решения я уже озвучил.

Д,Б. Не научили прятать под капот инициализацию в С? Ясно… Там идёт дальше 6 пунктов и там прекрасно просто всё. Например:

управляющий объект именован, в С красивого решения этой проблемы нет, вернее, решение с анонимным экземпляром есть и я его давал в давнем посте, но множество правых скобок не дает назвать этот вариант по-настоящему красивым, в плюсах есть решение обалденной красоты, но что мечтать о несбыточном;

Мда… Да наш поциент – поэт, не иначе! =)))

Вообще, это я комментировал ни что иное как инициализацию железа и самой по себе ОС. Т.е., у нас есть готовое изделие, там вшит какой-то код. Говорю же – из перечисленных там шести пунктов прекрасны все.

Там ещё пассажик есть:

но для описания аппаратных объектов — а я и не знал, что так можно, хотя вполне себе работает.

Да, С это не наша сильная сторона, но критики полно. Заметно.

Moisha_Liberman ★★
()
Ответ на: +1! от Moisha_Liberman

В один не влезло.

(как же я ненавижу такие вещи, но в С иначе просто нельзя)

Угу, брателло, по ходу, тебя забыли спросить.

Дальше круче. Ну понятно что есть некий API системы. Чувак честно пытается поработать с UART_read()/UART_write(). Логично казалось бы. Но тут дураку дали стеклянный МПХ. Т.е., возможность при отладке заглянуть в сырцы реализации. Разбил, обрезался и предсказуемо обвиняет:

Сказать, что данный конкретный модуль (файл ringbuf.c) мне не понравился — это не сказать ничего, написано просто ужасно и лично я бы на месте такой уважаемой компании авторов данной части выгнал с позором (можно еще взять меня на их место, но боюсь что уровень зарплат наших индийских коллег меня не устроит), но, наверное, я чего то не знаю.

Не знаете. Точно. Если долб… (ясно, да?) не понятно, то это внутренности реализации в самой ОС и Вас, милейший, они и близко волновать не должны, т.к. Ваша задача проста – берёте предоставленный API и молча, задраив клюв, реализуете поставленную перед Вами задачу для конкретного процессора, я замечу и не факт что для другого будет точно такая же реализация. За свою реализацию, которая не касается внутренностей ОС, Вы по идее должны получить денег. А уж TI сами как-нибудь разберутся. Они продают своё железо и код миллиардами копий.

Дальше я просто комментировать не буду, материться начну.

Но всё же, исходя и «примера работы» вот этого оленя, я не могу не задать несколько вопросов.

Вот как так получается что при условии того, что люди уже и на Луне побывали (говорят) и на Марс железки отправляют, С++ кому-то нужен в эмбеддед? Не, ну серьёзно? Что, проблема того же Седжвика прочесть? Там и про списки и ещё много про чего написано? Почему этот дятел гундит что-то про С++-библиотеки, которые сожрут место? Он там заботится о «тактах» ниже, но он не понимает что данная ОСРВ по максимуму сделана возможно более лёгкой?

Второй вопрос – если всё-таки прочесть Седжвика, научиться писать очереди сообщений, положим, мы считываем с некоего датчика данные с какой-то периодичностью, складываем их в список и потом в сеансе связи с определённой переодичностью пуляем через радиоканал. Зачем здесь stl и/или бюст? Ну серьёзно? Задача на полчаса работы (лично пробовал), а память и ресурсы забиты каким-то говнищем. Смысл в такой трате ресурсов? Дать возможность работы неосиляторам С? Ну разве что.

В общем, эмбеддингу противопоказаны недо-С++овцы. Которые кроме слов stl и бюст не понимают что всё хорошо применять в меру. А уж в С можно и по-проще и по-круче. Да и нужно на вот таком железе.

Как-то вот так, в общем.

===========================

Господа. Просьба. Учитывая то, что ряд клоунов в данной теме не в курсе цен за работу по рынку, это представители наших соседей с территорий на юго-запад от Москвы, я настоятельнейшим образом прошу их не просвещать по данной теме. Эти калеки не в состоянии даже найти цены за работу на «всем известном сайте». Да, вот настолько они тупы и необучаемы. Хотели бы вы их видеть среди своих коллег? Не думаю. Кроме того, учитывая определённые реалии я так понимаю, скоро они сами на свет-газ-горячую воду-за деньгами полезут. «Оккупанты» (т.е., мы с вами) туда не горим желанием возвращаться и нести всё это с собой. Пока они на сайте не могут найти суммы, но это не под эмбеддинг же писать, рано или поздно найдут. И тут возникнет проблема у руководства. Как правило, в вакансиях пишут о наличии-отсутствии ДМС. Но беда в том, что в России по ветеринарии нет ДМС. А он тут только такой и нужен. =)))

@alysnix, чтобы не плодить комментов, я готов поведать Вам ту хладную историю почему тут эта чихуахерня (блин, никогда не мог это слово написать, но Вы поняли) заливается лаем и норовит мне в штанину вцепиться. Я не зря там выше фразочку ввернул про свою лёгкую скорбь насчёт сдетонировавших пердаков. Это оно мне так в любви объясняется. От ненависти до любви один же шаг… =))) Оно выделяет себе в кровь гормон «попаболил» едва мой ник завидит. =))) Правда, оно бывает изредка, когда мне не лень, посылаемо. Это уже привычно. Дежурные мелочи. =))) Если будет интересно, то напишу отдельным комментом, т.к. один чёрт снесут.

Moisha_Liberman ★★
()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)
Ответ на: комментарий от Djanik

Я бы еще обязательно спросила про характеристики нелинейных КИХ-фильтров.

_не_линейный КИХ фильтр? Это что ещё за монстр такой?

Waterlaz ★★★★★
()
Ответ на: комментарий от Djanik

Мне не очень понятно применение термина КИХ к медианной фильтрации

Waterlaz ★★★★★
()
Ответ на: В один не влезло. от Moisha_Liberman

я делал прошче.

когда встала задача программировать am1808 от Ti… я просто написал свой микро рантайм для с++, на плюсах же. написал микроскопический шедулер для переключения контекста, сделал короче пару обьектов ожидания, корутины, и задачку решил. на с++. в качестве типа HAL, дергал кой чего из их STARTERWARE, или как там она у них называется.

с++ нормальный язык и для ембеда. только не надо там использовать ничего из std и всяких там бустов, rtti и прочего.

то есть в данном случае на плюсах было написано все.

alysnix ★★★
()
Ответ на: В один не влезло. от Moisha_Liberman

С++ кому-то нужен в эмбеддед?

Не все делают сушилки для трусов на базе примитивных процессоров. Например в ПО Lockheed Martin F-35 Joint Strike Fighter 10 млн. строк кода. И оно написано, в большей части на с++. А теперь сними фуражку и подумай почему С не обеспечивает требований военных для misson critical систем на объемах в миллионы строк?

Djanik
()
Ответ на: комментарий от Djanik

А особо веселят байтоебы на Кортексах, у которых за всю жизнь размер проекта не превышал 10 тыс. строк. Но мнение имеют и про stl и про буст. Типичные селюки от программирование, за всю жизнь ничего сложнее какого то сранного радиомодуля со скоростью 60 байт не сделавшие.

Djanik
()
Ответ на: комментарий от Djanik

Например в ПО Lockheed Martin F-35 Joint Strike Fighter 10 млн. строк кода. И оно написано, в большей части на с++.

Видимо поэтому у них то пушка не работает, то радар из-за ошибок в ПО.

почему С не обеспечивает требований военных для misson critical систем на объемах в миллионы строк

С++ тоже не обеспечивает. Что наглядно видно на примере F-35.

monk ★★★★★
()
Ответ на: комментарий от Djanik

А особо веселят байтоебы на Кортексах, у которых за всю жизнь размер проекта не превышал 10 тыс. строк.

С таким подходом что Вы делаете в embedded?

monk ★★★★★
()
Ответ на: комментарий от Djanik

И оно написано, в большей части на с++

а по меньшей - на си… хотя я вообще противник си(ну если только драйвера и только ради пущей переносимости)…но аргументы ваши не очень.

alysnix ★★★
()
Ответ на: комментарий от monk

Я никакакого отношения к embedded не имею. Когда изучала С++ преподаватель рассказывал про различные сферы применения в промышленности. В том числе и про F-35 и марсоход. И почему С++ более применим для создания ответственных приложений.

Djanik
()
Ответ на: комментарий от alysnix

Аргументы не мои, это специалисты Lockheed Martin приняли такое решение. В программировании авионики они точно разбираются.

Djanik
()
Ответ на: комментарий от Djanik

Аргументы не мои, это специалисты Lockheed Martin приняли такое решение. В программировании авионики они точно разбираются.

ПО таких штук - это не только авионика и не столько авионика. может там вся авионика на си написана? там микс и си и плюсов. понятно, что плюсы сверху, си - снизу…как раз там, где авионика.

alysnix ★★★
()
Последнее исправление: alysnix (всего исправлений: 1)
Ответ на: комментарий от monk

Истребитель поставляется в 14 стран мира. Заказчикам было поставлено 700 истребителей пятого поколения F-35, эксплуатируются на 21 базе по всему миру. Обучено более 1460 пилотов и 11 025 единиц обслуживающего персонала, а общий налет F-35 превысил 430 тысяч часов».

Вряд ли заказчиков устроил самолет с неработающей пушкой.

Djanik
()
Ответ на: комментарий от Djanik

Я никакакого отношения к embedded не имею.

Ясно. Просто это реально отдельная ниша, когда лишние 10КБ кода — это более дорогая микросхема, а микросхем тех нужны миллионы. Поэтому байты важны.

И почему С++ более применим для создания ответственных приложений.

Если брать только C++ и C и считать, что все остальные языки внезапно пропали, тогда согласен. Но я бы ответственные приложения писал на Ada или, на худой конец, на Java. Вероятность навернуть всю программу случайной опечаткой всё-таки значительно меньше.

monk ★★★★★
()
Ответ на: комментарий от Djanik

Из-за пушки ввод в эксплуатация на 4 года отложили:

http://getbug.ru/oshibki-po-samogo-dorogogo-istrebitelya-f-35-zaderzhivaet-ego-vvedenie-v-ekspluatatsiyu-2019-goda/

https://nplus1.ru/news/2016/03/09/f35

Но это не очень помогло:

https://iz.ru/841003/2019-02-01/pentagon-vyiavil-kriticheskie-problemy-u-istrebitelia-f-35

https://inosmi.ru/military/20200312/247037487.html

Сообщается, что в самолетах F-35 были выявлены 883 ошибки проектирования. … Для 273 недостатков были найдены решения, но вопрос о них остается открытым, поскольку, для того чтобы приступить к их исправлению, требуется или больше средств, или больше испытаний.

Это уже не только про ПО, но заказчиков «всё устроило» только потому, что им деваться некуда.

monk ★★★★★
()
Ответ на: комментарий от monk

Но я бы ответственные приложения писал на Ada или, на худой конец, на Java.

на жабе ф35 упал бы во время сборки мусора.

alysnix ★★★
()
Ответ на: комментарий от monk

https://docs.oracle.com/javase/realtime/doc_2.0_u1/release/JavaRTSGarbageCollection.html

вопрос. зачем эти навороты со сборкой, если можно писать программы с детерминированным временем жизни обьектов или владением, где объект владелец будучи убитым, убивает тех, кем владеет. сборщики не нужны как класс.

alysnix ★★★
()
Ответ на: комментарий от alysnix

А когда хорошие технические решения что-то решали? С явой проблема мирового уровня и она неисстребляема.

untitl3d
() автор топика
Ответ на: комментарий от alysnix

Так я и написал, что если доступна Ada, то лучше на ней. В любом случае это лучше, чем когда любая сервисная функция может вызвать UB и обрушить всю программу.

21 сентября 1997 г., во время маневров у побережья Кейп-Чарльз, Вирджиния , член экипажа ввел ноль в поле базы данных, вызвав попытку деления на ноль в диспетчере удаленной базы данных корабля, что привело к переполнению буфера , в результате чего вышли из строя все машины в сети, что привело к отказу силовой установки корабля.

monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.