|
|
  |
Embedded C++, Кто какие библиотеки использует? |
|
|
|
Sep 8 2012, 09:14
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(dxp @ Sep 8 2012, 08:54)  А что это вот такое: Код C++-code requires significant additional costs on verification staff Какой смысл стоит за этой фразой? У меня вариант такой: "У нас нет специалистов достаточной квалификации, способных понимать и сопровождать С++ код, поэтому пишите на С". Они под MISRA сидят, вероятно. Это ужасно, но, говорят, что надёжно.
|
|
|
|
|
Sep 8 2012, 09:31
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (_Pasha @ Sep 8 2012, 16:14)  Они под MISRA сидят, вероятно. Это ужасно, но, говорят, что надёжно. Конечно, надёжно, когда самые могучие возможности С, такие как, например, адресная арифметика, запрещены. Ещё надёжнее вообще не писать код. У меня друг работал 8 лет в крупной успешной телекоммуникационной чешской компании, подробно рассказывал про тамошние дела. Действительно, доходило до того, что отдельным подразделениям, преимущественном состоящим из местных чехов, корпоративно запрещали, например, использовать STL, т.к. использовалось это без должного понимания, что приводило к ужасному неработоспособному, несопровождаемому коду. Но те в массе только рады были. DSP группе, где он работал, не запрещали.  MISRA - привязать себя к стулу, чтобы не упасть. Но в один прекрасный момент упасть вместе с ним. Это весьма больнее.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Sep 8 2012, 10:02
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
QUOTE (halfdoom @ Sep 8 2012, 16:45)  Эти ребята усердно пытались уговорить переписать все на Аде - это у них база. Я не очень хорошо знаю этот язык, но по их утверждениям его встроенные возможности позволяют избегать большого числа ошибок (какие-то модули верификации). Вдобавок, С используется по причине наличия огромного количества библиотек, а С++ вызывает чуть ли не ужас. Спасибо, интересно. QUOTE (halfdoom @ Sep 8 2012, 16:45)  Насколько я понял, после нескольких серьезных проколов именно с С++, специалистов по нему из штата исключили. Ну, почти та же история, что и в той чешской компании. Разница только в том, что там подошли дифференцировано - у кого получается, тем разрешили. Точнее не так - у кого не получается, тем запретили. Уже когда-то говорил, повторю - у С++ есть только один серьёзный объективный недостаток - этот язык сложный.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Sep 8 2012, 10:33
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 6-02-08
Из: Новосибирск
Пользователь №: 34 789

|
Заинтересовало упоминание языка Ада в задачах, где требуется надежность и т.д. В свое время читал "общеразвивающую" инфу про то, что этот язык был специально создан по заказу МО США именно для сложных, высоконадежных систем, например, для ПО на каких-нибудь крылатых ракетах, истребителях... Полез сейчас в инет посмотреть (ради любопытства) "а на чем написано ПО для А-380, F-35?" Нашел инфу про F-35, про А-380 искать пока лень. Но насчет ПО для F-35 я был несколько удивлен, хотя и ожидал чего-то подобного. Если коротко, то на С++. Один из слайдов документа (ссылка ниже) содержит фотографию Joint Strike Fighter (F-35 Lightning II) и ниже подпись со стрелочкой, указывающей на самолет, "C++ inside". SafetyCriticalC++Presentation.pdfНа других ресурсах по этой же теме (софт для F-35) приводятся данные что первоначально там была "солянка" из Ады, С, С++, ассемблера, но потом было решено все 100% кода перевести на С++. Документ достаточно интересный и, мне кажется, заставляет задуматься насчет использования С++ в эмбеддед и холиварах типа С vs. С++.
|
|
|
|
|
Sep 8 2012, 11:22
|

Профессионал
    
Группа: Свой
Сообщений: 1 003
Регистрация: 20-01-05
Пользователь №: 2 072

|
Цитата(mikeT @ Sep 8 2012, 13:33)  SafetyCriticalC++Presentation.pdf Документ достаточно интересный и, мне кажется, заставляет задуматься насчет использования С++ в эмбеддед и холиварах типа С vs. С++. Ничего нового, очередная демонстрация известных проблем обоих языков и костылей для их решения. Правда, что имел в виду автор под фразой "C is insufficiently specified" остается загадкой. Цитата(_Pasha @ Sep 8 2012, 12:14)  Они под MISRA сидят, вероятно. Нет, MISRA ни разу не упоминалась. По данным контрразведки еще одна российская фирма и поляки претендуют на этот контракт, если здесь кто есть из них, может дополнят (hint: директор той фирмы весьма колоритный ирландец).
|
|
|
|
|
Sep 8 2012, 13:28
|
Профессионал
    
Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528

|
Цитата(mikeT @ Sep 8 2012, 17:33)  и ниже подпись со стрелочкой, указывающей на самолет, "C++ inside". Это покруче будет:
По теме. Если у программера в голове кю вместо мозгов - ни MISRA, ни ADA не поможет, всё равно не полетит.
--------------------
Russia est omnis divisa in partes octo.
|
|
|
|
|
Sep 8 2012, 18:15
|

Частый гость
 
Группа: Свой
Сообщений: 103
Регистрация: 17-05-09
Из: Ижевск
Пользователь №: 49 190

|
Цитата(alx2 @ Sep 7 2012, 10:16)  А что именно? Мне кроме исключений (которые можно отключить при компиляции) ничего в голову не приходит... RTTI - даже на декстопе забавная штука
--------------------
Шизоидный холерик
|
|
|
|
|
Sep 9 2012, 00:58
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (alx2 @ Sep 7 2012, 14:16)  Почему у Вас new/delete потянули дополнительные 260 килобайт, ума не приложу. А вот и я не знаю... но стоит убрать эти операторы, как код становится 40 кБ... С другой стороны, не зря же свои менеджеры памяти "выдумывают", значит проблема есть... З.Ы. Компилятор у меня Code Sourcery...
--------------------
Выбор.
|
|
|
|
|
Sep 9 2012, 22:30
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(dxp @ Sep 8 2012, 06:49)  Сегодня С++ - мэйнстрим в embedded, это факт. Смотря что называть в embedded мэйнстрим - в вашем понимании - возможно, про это я уже намекал, в моем - нет http://techcrunch.com/2012/09/05/eric-schm...ations-per-day/и С++ в ядре Linux нет и не будет, потому что он там не нужен, а для middleware основной язык Java (хотя надо признать С++ там тоже есть) . Есть проекты которые переходят с С на С++ - например GCC начал миграцию, но это либо далеко не embedded мэйнстрим или далеко не такие значимые проекты чтобы называть их мэйнстримом. PS и телеком тоже понятие растяжимое http://www.rsdn.ru/article/erlang/GettingS...dWithErlang.xml
Сообщение отредактировал sasamy - Sep 9 2012, 23:21
|
|
|
|
|
Sep 10 2012, 05:11
|

Местный
  
Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091

|
Цитата(haker_fox @ Sep 9 2012, 05:58)  А вот и я не знаю... но стоит убрать эти операторы, как код становится 40 кБ... Но Вы-то, в отличие от нас, узнать это можете - достаточно заглянуть в map-файл... Вы, надеюсь, использовали nothrow-версию оператора new? А вот с такими реализациями: Код void * operator new(size_t n) throw() { return malloc(n); } void operator delete(void *p) { free(p); } тоже тянет 260 кбайт? Цитата(haker_fox @ Sep 9 2012, 05:58)  С другой стороны, не зря же свои менеджеры памяти "выдумывают", значит проблема есть... К языку программирования это не имеет никакого отношения. Язык C++ позволяет использовать любой менеджер памяти (включая использование нескольких менеджеров одновременно - для разных объектов разных). Свой менеджер памяти может потребоваться писать по тысяче разных причин - это зависит от решаемой задачи. И необходимость писать свой менеджер не означает, что все прочие существующие менеджеры плохи. Это всего лишь означает, что они не подходят для данной конкретной задачи. При этом для другой задачи какой-то из них может подойти гораздо лучше, чем "выдуманный" Вами. Но это совсем другая тема - не о языках программирования...
--------------------
Всего наилучшего, Alex Mogilnikov
|
|
|
|
|
Sep 10 2012, 05:25
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Ada, насколько я знаю, очень хороший язык. Ну а erlang я всем рекомендую освоить хотя бы на начальном уровне - очень сильно меняет взгляд на построение надёжного софта. По сложности освоения примерно соответствует питону. C++ против C - это старый холивор. В принципе, C++ можно использовать, но нужно резко и жёстко ограничить подмножество используемых технологий. Я бы, например, разрешил только STL, классы только для описания модулей, никакого наследования кроме как от интерфейсов. Ну и если позволяют ресурсы, то использовать другой язык.
|
|
|
|
|
Sep 11 2012, 05:56
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (alx2 @ Sep 10 2012, 13:11)  Но Вы-то, в отличие от нас, узнать это можете - достаточно заглянуть в map-файл... Вы, надеюсь, использовали nothrow-версию оператора new? Я не знаю Использовал так CODE int* p = new int[ 1000 ]; QUOTE (alx2 @ Sep 10 2012, 13:11)  А вот с такими реализациями: CODE void * operator new(size_t n) throw() { return malloc(n); } void operator delete(void *p) { free(p); } тоже тянет 260 кбайт? Попробую... QUOTE (alx2 @ Sep 10 2012, 13:11)  Но Вы-то, в отличие от нас, узнать это можете - достаточно заглянуть в map-файл... Вы, надеюсь, использовали nothrow-версию оператора new? Честно говоря, никогда не пользовался map-файлом... видимо пришло время) Спасибо!
--------------------
Выбор.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|