|
Как писать на С++ при создание приложений под ARM, Примеры |
|
|
|
 |
Ответов
|
Jun 22 2011, 04:57
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Расказ про ООП конечно увлекательный, но стоит учитывать, что как только вы вылезете за область применения, описанную dxp (наследование от интерфейса и поточная обработка), то тут же вся система станет крайне неустойчивой. Конкретно: множественное наследование сразу ставит крест на проекте, перегрузка функций и операторов приводит к очень хитрым багам, развесистая иерархия наследования приводит к хрупкости системы - очень высокая связность элементов... Использование паттернов не имеет отношения к С++, но в микроконтроллерах не имеет особого смысла. Куда можно в AVR засунуть синглтон?! Использование шаблонов С++ сильно тормозит компиляцию и плохо контролируется по расходу памяти. В общем, это неправда, что С++ оправдан везде, где оправдан С.
|
|
|
|
|
Jun 22 2011, 06:40
|

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

|
Цитата(andrewlekar @ Jun 22 2011, 11:57)  (наследование от интерфейса и поточная обработка), то тут же вся система станет крайне неустойчивой. Почему? В чём причины неустойчивости? Цитата(andrewlekar @ Jun 22 2011, 11:57)  Конкретно: множественное наследование сразу ставит крест на проекте, Поясните? И причём тут множественное наследование? О нём вообще ни слова не было сказано. Цитата(andrewlekar @ Jun 22 2011, 11:57)  перегрузка функций и операторов приводит к очень хитрым багам, К очень хитрым (уж куда более хитрым) багам приводит неаккуратная работа с памятью и невнимательное использование адресной арифметики, а это чисто сишные вещи. Цитата(andrewlekar @ Jun 22 2011, 11:57)  развесистая иерархия наследования приводит к хрупкости системы - очень высокая связность элементов... А голова-то на что? Средства-то надо применять осмысленно и к месту, а не ради них самих, о чём было сказано выше. Цитата(andrewlekar @ Jun 22 2011, 11:57)  Использование паттернов не имеет отношения к С++, но в микроконтроллерах не имеет особого смысла. Куда можно в AVR засунуть синглтон?! Да как обычно - чтобы избавиться от зависимости порядка создания объектов при раздельной компиляции файлов проекта. Затраты на него копеечные. Цитата(andrewlekar @ Jun 22 2011, 11:57)  Использование шаблонов С++ сильно тормозит компиляцию Да, несколько секунд лишних, обычно, приходится потратить.  Цитата(andrewlekar @ Jun 22 2011, 11:57)  и плохо контролируется по расходу памяти. Это только если использовать бездумно и не представлять себе, во что выливается та или иная языковая конструкция. На сях тоже можно начать бездумно маллоки метать направо и налево, и будет "плохо контролируемый расход памяти". Цитата(andrewlekar @ Jun 22 2011, 11:57)  В общем, это неправда, что С++ оправдан везде, где оправдан С. Технически с точки зрения эффективности везде. А то, что голову надо включать, так это универсальное правило для любого ЯП. Единственное, с чем соглашусь, что С++ требует больше времени на изучение в силу много большего разнообразия и сложности самого языка. Это его единственный объективный недостаток перед С.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 22 2011, 07:38
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата Поясните? И причём тут множественное наследование? О нём вообще ни слова не было сказано. С++ позволяет множественное наследование, вот и упомянул. Просто перечисление объективных недостатков языка. Цитата К очень хитрым (уж куда более хитрым) багам приводит неаккуратная работа с памятью и невнимательное использование адресной арифметики, а это чисто сишные вещи. Адресная арифметика - это также и чисто микроконтроллерная область. И хоть вы на чём пишите, залезать в неё придётся. А неаккуратная работа с памятью более вероятна как раз в С++, потому что там куда чаще встречается динамическое размещение объектов. Цитата Да как обычно - чтобы избавиться от зависимости порядка создания объектов при раздельной компиляции файлов проекта. Затраты на него копеечные. Ага, сначала создавать себе проблемы, используя С++, а потом мужественно их решать  Цитата А то, что голову надо включать, так это универсальное правило для любого ЯП. На С++ голову уж слишком сильно нужно включать. Язык должен ограничивать программиста в его бурных устремлениях, а чрезмерная гибкость С++ позволяет выстрелить себе в ногу и успешно завалить проект. С со статической аллокацией - вот правильный выбор программиста микроконтроллеров.
|
|
|
|
|
Jun 22 2011, 08:32
|

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

|
По сравнению с уважаемым dxp, я вообще не программист  Но, тем не менее, позволю изложить и свою точку зрения. QUOTE (andrewlekar @ Jun 22 2011, 16:38)  Адресная арифметика - это также и чисто микроконтроллерная область А к чему это уточнение? С адресами на любой платформе работать приходится. QUOTE (andrewlekar @ Jun 22 2011, 16:38)  А неаккуратная работа с памятью более вероятна как раз в С++, потому что там куда чаще встречается динамическое размещение объектов. Не обязательно на Си++ размещать объекты динамически. Я не размещаю. А если размещаете, то нужно делать это корректно. QUOTE (andrewlekar @ Jun 22 2011, 16:38)  На С++ голову уж слишком сильно нужно включать. Ну так это инструмент профессиональный QUOTE (andrewlekar @ Jun 22 2011, 16:38)  Язык должен ограничивать программиста в его бурных устремлениях, а чрезмерная гибкость С++ позволяет выстрелить себе в ногу и успешно завалить проект. С со статической аллокацией - вот правильный выбор программиста микроконтроллеров. А почему Вы считаете, что разработчики компилятора знают лучше, что мне можно, а что - нельзя. В этих случая Pascal нужно выбирать. Он ограничивал.
--------------------
Выбор.
|
|
|
|
|
Jun 22 2011, 09:00
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата(haker_fox @ Jun 22 2011, 14:32)  А почему Вы считаете, что разработчики компилятора знают лучше, что мне можно, а что - нельзя. В этих случая Pascal нужно выбирать. Он ограничивал. Потому что разработчики компиляторов умные, а программист только-только Hello World освоил.  Pascal - это хорошо, но лучше Java или .NET. Вообще во всём мире С++ верно помирает, а вы наоборот в контроллеры его суете. Цитата(sergeeff @ Jun 22 2011, 14:44)  Все ваши высказывания от недостаточного знания и опыта работы с С++. На С++ я успел поработать и мне не понравилось. И шаблоны, и ОО, и перегрузки - основные фичи С++ - разводят страшную грязь в коде. Да, при хорошем опыте программист научается ходить по этим граблям, но новый программист в проекте будет разбираться очень долго.  Цитата(sergeeff @ Jun 22 2011, 14:44)  1. По поводу статической аллокации в С. И что тут такого сильно удобного? А если памяти не хватает все сразу и навсегда разместить? Не сталкивались с таким?
2. В С++ ошибки при работе с динамической памятью как раз резко сократились за счет того, что многие вещи делает компилятор автоматически (конструктор/деструктор). Один говорит, что статическая аллокация хороша при малом объеме ОЗУ. Другой наоборот. Да, бывает, что без динамической аллокации не обойтись - тогда приходится идти на компромисс. Что-то я не слыхал, чтобы в С++ где-то резко сократились ошибки памяти. Наоборот, прибавилось ошибок. Утечки памяти - фирменная фича неуправляемого С++. В бусте напихали целую кучу умных указателей для борьбы с утечками и всё равно регулярно где-то подтекает на больших проектах.
|
|
|
|
|
Jun 22 2011, 11:30
|

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

|
QUOTE (andrewlekar @ Jun 22 2011, 18:00)  Потому что разработчики компиляторов умные, а программист только-только Hello World освоил.  if(разработчики_компилятор != программисты) { мир_в_хаосе_и_я_ничего_не_понимаю_в_нем(); panic_kernel(&мой_мозг); } Дайте маленькому ребётенку острый нож, и получите тот же эффект: ребенок будет считать нож злом и говорить всем, что ножом нельзя пользоваться QUOTE (andrewlekar @ Jun 22 2011, 18:00)  Вообще во всём мире С++ верно помирает, а вы наоборот в контроллеры его суете. Да? А мужики-то не знают  Может будем в МК вставлять .NET и Java сразу? QUOTE (andrewlekar @ Jun 22 2011, 18:00)  На С++ я успел поработать и мне не понравилось. И шаблоны, и ОО, и перегрузки - основные фичи С++ - разводят страшную грязь в коде. Да, при хорошем опыте программист научается ходить по этим граблям, но новый программист в проекте будет разбираться очень долго.  Это все субъективно. Есть люди и с противоположным мнением. Кстати, не каждый новый программист код на чистом Си разберет. Я бы скромно предложил закрыть тему, как воинствующую))) QUOTE (zltigo @ Jun 22 2011, 20:14)  хотя наверное приличный, потому-что BOIS для XT у которой сдохла оная пззушка я таки написал Мое Вам уважение! Я дальше самописного бутлоадера (на нулевой дорожки дискеты) и попытки написать примитивную миниОС в защищенном режиме IA32 не ушел. Но это было в далеком 2004 году, сейчас я немного взрослее стал))) Хотя, надо признаться, опыт был неплохой получен. Также делал окна в текстовом режиме, кнопочки и т.д. и т.п. Все на ассемблере...
--------------------
Выбор.
|
|
|
|
Сообщений в этой теме
Hellper Как писать на С++ при создание приложений под ARM Jun 18 2011, 20:15 Danis Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 18 2011, 20:21 scifi Цитата(Danis @ Jun 19 2011, 00:21) Доволь... Jun 18 2011, 20:53 zltigo QUOTE (Hellper @ Jun 18 2011, 23:15) тяну... Jun 18 2011, 20:36 haker_fox QUOTE (Hellper @ Jun 19 2011, 05:15) и тя... Jun 19 2011, 03:03 gladov Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 20 2011, 04:34 dxp Цитата(gladov @ Jun 20 2011, 11:34) С++ п... Jun 20 2011, 07:32  gladov Цитата(dxp @ Jun 20 2011, 11:32) Два, нет... Jun 21 2011, 06:40   dxp Вынужден категорически не согласиться по всем пунк... Jun 21 2011, 08:47    scifi Цитата(dxp @ Jun 21 2011, 12:47) Если вы ... Jun 21 2011, 09:21  777777 Цитата(dxp @ Jun 20 2011, 11:32) Почему в... Sep 22 2011, 04:49   andrewlekar Цитата(777777 @ Sep 22 2011, 10:49) О как... Sep 23 2011, 04:49    777777 Цитата(andrewlekar @ Sep 23 2011, 08:49) ... Sep 23 2011, 05:52     dxp Цитата(777777 @ Sep 23 2011, 12:52) Во-вт... Sep 23 2011, 07:02 haker_fox QUOTE (gladov @ Jun 20 2011, 13:34) и еще... Jun 20 2011, 08:07  MrYuran Цитата(haker_fox @ Jun 20 2011, 12:07) 3.... Jun 20 2011, 09:54 klen Цитата(gladov @ Jun 20 2011, 08:34) С++ п... Jun 20 2011, 10:45 Axel Цитата(gladov @ Jun 20 2011, 07:34) ...пр... Jun 20 2011, 11:22 demiurg_spb Цитата(Hellper @ Jun 19 2011, 00:15) Посо... Jun 20 2011, 11:35 Danis ТС, позвольте не большой, скромный вопрос к Вам. З... Jun 20 2011, 12:15 GDI ringbuffer-dlya-embedded - пример кода, и даже не ... Jun 20 2011, 13:11 Hellper Цитата(GDI @ Jun 20 2011, 17:11) ringbuff... Jun 20 2011, 16:05 brag Да, стоит сделать new, как c++ тянет библиотечный ... Jun 21 2011, 08:09 brag согласен, обзор полностью верный. и применять тот ... Jun 21 2011, 09:33 scifi Цитата(brag @ Jun 21 2011, 13:33) пример ... Jun 21 2011, 09:39  Axel Цитата(scifi @ Jun 21 2011, 12:39) ...где... Jun 21 2011, 10:14  dxp Цитата(scifi @ Jun 21 2011, 16:39) При вс... Jun 21 2011, 11:58   scifi Цитата(dxp @ Jun 21 2011, 15:58) В общем,... Jun 21 2011, 14:37    Danis Цитата(scifi @ Jun 21 2011, 17:37) Другим... Jun 21 2011, 15:55 brag ЦитатаПри всём уважении, это голословное утвержден... Jun 21 2011, 10:30 Danis dxp, как у вас терпения хватает писать такие длинн... Jun 21 2011, 13:27 brag dxp, спасибо большое за обзорчик, вроде все и так ... Jun 21 2011, 22:18 haker_fox dxp, спасибо за шикарные ответы!!!
Н... Jun 22 2011, 01:05 MrYuran Цитата(andrewlekar @ Jun 22 2011, 08:57) ... Jun 22 2011, 06:38   Danis Цитата(andrewlekar @ Jun 22 2011, 11:38) ... Jun 22 2011, 08:28     MrYuran Цитата(andrewlekar @ Jun 22 2011, 13:00) ... Jun 22 2011, 09:32     shreck Цитата(andrewlekar @ Jun 22 2011, 16:00) ... Jun 22 2011, 10:34     SergeyDDD Цитата(andrewlekar @ Jun 22 2011, 12:00) ... Jun 22 2011, 11:22   Danis Цитата(andrewlekar @ Jun 22 2011, 11:38) ... Jun 22 2011, 08:37   sergeeff Цитата(andrewlekar @ Jun 22 2011, 10:38) ... Jun 22 2011, 08:44 Danis Цитата(andrewlekar @ Jun 22 2011, 08:57) ... Jun 22 2011, 06:53 haker_fox QUOTE (andrewlekar @ Jun 22 2011, 13:57) ... Jun 22 2011, 08:13 dxp . Jun 22 2011, 06:29 dxp Цитата(haker_fox @ Jun 22 2011, 08:05) Не... Jun 22 2011, 07:37 Dima_G Цитата(Hellper @ Jun 19 2011, 03:15) Таки... Jun 22 2011, 08:35 zltigo История моей жизни. Когда-то очень давно, когда ко... Jun 22 2011, 11:14 Danis Кстати, прорабатывается новая версия стандарта С++... Jun 22 2011, 11:31 MrYuran Цитата(Danis @ Jun 22 2011, 15:31) Кстати... Jun 22 2011, 11:45 brag Пописал немного кода на С++ использованием динамич... Sep 21 2011, 22:05 dxp Цитата(brag @ Sep 22 2011, 05:05) Про кон... Sep 22 2011, 07:25 777777 Цитата(dxp @ Sep 22 2011, 11:25) Правда? ... Sep 22 2011, 15:40 sergeeff КодПро конструкторы и деструкторы правда пришлось ... Sep 22 2011, 09:51 brag ЦитатаЧем же так конструкторы не угодили? Это прос... Sep 22 2011, 12:11 dxp Цитата(brag @ Sep 22 2011, 19:11) НО. Нек... Sep 22 2011, 13:03 ReAl Насколько я понимаю, вот тут конструктор object бу... Sep 22 2011, 12:32 brag ЦитатаНасколько я понимаю, вот тут конструктор obj... Sep 22 2011, 12:47 brag ЦитатаObject& GetObject()
{
static Object ... Sep 22 2011, 13:13 dxp Цитата(brag @ Sep 22 2011, 20:13) Хе, еще... Sep 22 2011, 13:19 brag ЦитатаБольшинство объектов в программе, как правил... Sep 22 2011, 13:32 sergeeff Цитата(brag @ Sep 22 2011, 16:32) init ни... Sep 22 2011, 13:37 brag ЦитатаЕстественно, это стандартная реализация иниц... Sep 22 2011, 13:41 Dima_G Компилятор ничего не знает о потоках, процессах и ... Sep 22 2011, 14:38 brag ЦитатаКомпилятор ничего не знает о потоках, процес... Sep 22 2011, 15:05 Dima_G Цитата(brag @ Sep 22 2011, 22:05) Qt+gcc ... Sep 22 2011, 15:16 sergeeff Цитата(brag @ Sep 22 2011, 18:05) Qt+gcc ... Sep 22 2011, 15:21 brag ЦитатаЛично налетал на гонки в синглтоне. Компилят... Sep 22 2011, 16:09 Dima_G Цитата(brag @ Sep 22 2011, 23:09) а реали... Sep 23 2011, 04:30 brag еще вопрос по поводу реюза кода. Как, на пример, в... Sep 22 2011, 17:45 AHTOXA Цитата(brag @ Sep 22 2011, 23:45) Нужно, ... Sep 22 2011, 18:32 brag а код? -ffunction-sections , а потом это все вручн... Sep 22 2011, 18:44 brag Реализовал через манипуляцию ld -r, линкер-скрипты... Sep 22 2011, 22:54 dxp Цитата(777777 @ Sep 22 2011, 22:40) Что з... Sep 23 2011, 04:50 brag Цитатаочитайте про "Placement new". Это ... Sep 23 2011, 10:15 MALLOY2 Ссылка в тему С++ & Cortex Sep 23 2011, 11:35 brag Хe, и множественному наследованию (по крайней мере... Sep 23 2011, 16:25 andrewlekar Множественное наследование от интерфейсов разумеет... Sep 23 2011, 17:22 BlackHead Вот набрёл на библиотеку С++
http://xpcc.sourcefor... Oct 5 2011, 10:21 kikos Лет 20 назад один из заказчиков (пожилой американс... Oct 31 2011, 13:32 Сергей Борщ QUOTE (kikos @ Oct 31 2011, 16:32) На воп... Oct 31 2011, 13:49  Forger Цитата(Сергей Борщ @ Oct 31 2011, 17:49) ... Oct 31 2011, 18:14 ReAl Цитата(kikos @ Oct 31 2011, 15:32) Более ... Nov 1 2011, 06:27 IgorKossak Господа критикующие, напоминаю, тема звучит Как пи... Nov 1 2011, 08:32 brag Как можно реализовать такую вещ без кривоты, rtti,... Dec 10 2011, 02:55 Forger Цитата(brag @ Dec 10 2011, 06:55) Как мож... Dec 10 2011, 07:09 alx2 Цитата(brag @ Dec 10 2011, 07:55) Как мож... Dec 11 2011, 10:37 neiver Массив указателей на объекты базового класса - это... Dec 10 2011, 07:29 brag ЦитатаДля полноты картины, расскажите, для чего ва... Dec 10 2011, 15:37 dxp Цитата(brag @ Dec 10 2011, 22:37) массив ... Dec 10 2011, 17:39 brag ЦитатаЕсли я правильно понял, что требуется работа... Dec 10 2011, 18:11 dxp Цитата(brag @ Dec 11 2011, 01:11) stl не ... Dec 10 2011, 21:44 brag да просто проект такой, что проще свое написать, ч... Dec 10 2011, 22:59 kan35 Писать на С++ под ARM точно так же как на любую др... Dec 11 2011, 09:52 brag Спасибо.
но это тоже не то, массив указателей все ... Dec 11 2011, 13:32
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|