|
C++ и ООП для микроконтроллеров AVR |
|
|
|
 |
Ответов
(1 - 14)
|
May 10 2009, 07:44
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата и программировать на нем конечно можно, но по моему убеждениею неэффективно и громоздко. Понимаете ли, многие не видят разницы между ООП, C++, STL и т.д. Конечно, темплейт типа vector уложит бедный AVR в могилу тут же. Некоторые фичи ООП имеет смысл применять для упрощения писанины - наглядный пример - устройство критической секции в ScmRTOS (хотя, лично мне больше нравится цикл for). Часто полезна перегрузка операций - опять же, для уменьшения писанины. Полновесная работа с объектами обычно упирается в ограниченность ресурсов. Хотя, есть любители, которые пользуют это дело во всю.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
May 10 2009, 09:10
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата нашел единственное объяснение, для чего там был использован C++, это идеальный способ существенно запутать все что можно запутать. Думаете на Plain C нельзя запутать? Код main(O,_){for(_?--O,main(O+2,"?DKwhQH?b@`JD|?dA@TIT?qpEzR?hB@hTB?BHB@hTB" "?Po@SdB?"[O]):5;O&&_>1;printf("%s",_-'?'?_&1?"||":" ":(_=0,"\n")),_/=2);}
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
May 10 2009, 10:56
|

Гуру
     
Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515

|
Программирование в ООП обычно требует динамического выделения памяти. Что является чистым идиотизмом в embedded. Ибо в автокомпьютере, которые управляет зажиганием не должно быть ситуаций - "не могу выделить память для объекта". А в этм случае динамическое выделение лишается какого-либо смысла. Значит его вполне заменяет статическое. (Т.е. динамическое выделение памяти не имеющее отказов в условиях конечной памяти - есть статическое выделение). А это значит, что все объекты создаются заранее. А в системе где все заранее определено я бы использовал ООП исключительно из-за личных пристрастий (к примеру, нравится так абстрагироваться).
Я, лично, сишному менеджеру кучи не доверяю и никогда не использую. Неужели я могу доверять механизмам ООП, которые скрыты еще сильнее? Ембеддерская программа принципиально не должна содержать эксепшены.
Но я человек, который использует Си, как более удобный ассемблер (порок воспитания). Возможно, реальность - другая.
--------------------
On the road again (Canned Heat)
|
|
|
|
|
May 10 2009, 11:13
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Программирование в ООП обычно требует динамического выделения памяти. ... Я, лично, сишному менеджеру кучи не доверяю и никогда не использую. ... Ембеддерская программа принципиально не должна содержать эксепшены. Во-во. Смешались в кучу кони, люди... То, о чем я говорил. Никакого отношения динамическое выделение памяти к ООП не имеет. Нет такого понятия - "сишный менеджер кучи". Может быть - менеджер кучи в составе библиотек, поставляемых с каким-либо компилятором. Эксепшены - это такая удобная форма goto. Или, даже longjmp, если быть точным.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
May 10 2009, 11:29
|
Местный
  
Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205

|
Цитата Никакого отношения динамическое выделение памяти к ООП не имеет. Дык если взять STL, то там куда не плюнь, везде динамическое выделение памяти, а без STL, С++ это скорее "Си с классами".
|
|
|
|
|
May 10 2009, 12:45
|

Частый гость
 
Группа: Свой
Сообщений: 135
Регистрация: 20-01-07
Из: Одесса – Харьков
Пользователь №: 24 616

|
Об ООП хорошо думаю  , но в AVR ООП тесно. Какая необходимость использовать ООП в AVR, когда есть С? Цитата(n_bogoyavlensky @ May 10 2009, 08:21)  Что вы думаете по поводу ООП для микроконтроллеров AVR на языке C++?
--------------------
:) Иду по жизни с паяльником ……………………
|
|
|
|
|
May 11 2009, 00:04
|

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

|
Цитата(DpInRock @ May 10 2009, 22:07)  ОП имеет смысл когда есть что наследовать и есть кому. К счастью, такие ситуации возникаю довольно часто. К счастью, потому что это не даст погубить ООП. Цитата(DpInRock @ May 10 2009, 22:07)  Внутри одной законченной программы, которая никогда не будет иметь связей с другими программами эти все ситуации заранее определены. А следовательно, физического смысла не имеют. Видимо многие несколько другого мнения, раз используют ООП, не имеющий физического смысла. Цитата(DpInRock @ May 10 2009, 22:07)  А городить ООП только из-за перегрузки функций, имхо - лишнее. Писанины все-таки больше. Наверно писанины будет меньше, если городить нечто подобное на Plain C. Цитата(DpInRock @ May 10 2009, 22:07)  ООП имеет сермяжный смысл для большой группы программ, которые как-то взаимодействуют. И ООП не столько способ исполнения программы, сколько способ ея написания. Т.е. фича для программиста. Некая парадигма существования. Без комментариев. Цитата(DpInRock @ May 10 2009, 22:07)  А так, конечно, очень удобно, что в структуру можно нормальным и явным образом добавлять функции. Безусловно. Иногда очень удобно. Это тоже без комментариев. Цитата(DpInRock @ May 10 2009, 19:56)  Но я человек, который использует Си, как более удобный ассемблер (порок воспитания). Возможно, реальность - другая. Вообще, как Вы можете говорить после этого о достатках и недостатках ООП?
--------------------
Выбор.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|