SapegoAL 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба Мне кажется, всётаки, что сравнение переходов ASM->C и C->C++ некоректно. Так как первый решает главную задачу - убирает зависимость программиста от процессора (не от переферии). Эта задача глобальна для эмбеддера. И эта задача решается как академически так и практически. Соответственно повышается переносимость, возможность заимствований. Вроде бы переход C->C++ академически решает те же задачи. Но, на мой взгляд дальнейшие шаги в данной области целесообразны лишь при однотипных задачах. Например, если программист непрерывно работает с графикой, то лучше потратить кучу времени написать и вылизать соответствующие классы работы с графикой. Но если он сегодня работает с ШД, а завтра с CAN, а послезавтра с графикой, то возникают нюансы. Собственно эти нюансы просты. Написал я свои классы на тему конечных автоматов - потратил время. Вылизал - потратил время. А далее написал 10 проектов никакого отношения к этому не имеющещих. Через 2 года у меня появилась тема где, казалось бы можно применить наработки по конечным автоматам. И что будет? Я потрачу минимум неделю чтобы всё вспомнить и проникнуться высоким уровнем моих наработок, ещё неделю чтобы соотнести то решение с новым проектом. Естественно выяснится, что в чистом виде это чуть-чуть не подходит. И надо добавить пару новых свойств и чуть подправить реализацию. Причём лучше это сделать так, чтобы новый класс работал бы и со старым приложением. Надо честно признаться (хотя бы себе), что создавать новый класс, производный от старого, учитывая что старый писали тоже вы и, учитывая, что вы просто не учли вот этот вот нюанс, что вылез в новом проекте, вы не станете. Далее вам опять придётся проникнуться всеми нюансами разработки вашего класса, опять потребуется время для написания и отладки, чтобы через год-два вам мифически было бы проще всё это использовать. Конечно, можно сказать что это произойдёт в случае низкого уровня программиста. А я вам возражу, что в случае низкого уровня программиста этот класс придётся переписать заново, а не чуть-чуть подправить. По-моему, С++ это всётаки удел крупных контор с большим коллективом программистов, с чётким разделением задач, с проектами близкой направленности, с хорошей документированностью наработок и т.д и т.п. Пытаться одному программисту "охватить необъятное" (читай ... изучить и использовать все новейшие течения в области программирования) будет провальным. Из-за физической невозможности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_man_show 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба В своей практике стараюсь сделать примеры применения своего "творчества", чтобы легче передавалось по наследству и самому быстрее въезжать, что наваял лет пять тому назад. Времени и терпения писать документацию по своим наработкам в 99% случаев не хвататет, поэтому примеры применения с коментариями выручают. Какой язык программирования при таком подходе уже не имеет значения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harvester 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба В чем же она заключается, наивность-то? :bb-offtopic: А Вы давно покупали книги по электронике/программированию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
halfdoom 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба А в чем плюс то голого сишного подхода? Никто не спорит, что все, что пишется на С++, можно сделать и на Си. Я же написал про портирование на множество платформ. На момент портирования NetBSD лишь для немногих из них был вменяемый компилятор С++. Соответственно и у нас имеется определенное количество наработок на голом С, причем многим из них уже за 10 лет. Смысла в переписывании нет. Вопрос - какими средствами и какой надежностью.Сисадмин говорит, что предыдущая инкарнация нашего сервера под FreeBSD имела аптайм 3.5 года и была обновлена из-за переезда на новое железо. Применительно к встраиваемым системам - посчитайте сколько процентов занимают данные и сколько алгоритмы. Нужно ли затевать ради этого мизера пляски с ООП? Вот в прикладных задачах С++ безусловно имеет преимущество благодаря возможностям инкапсуляции, наследования, да и просто более жесткой типизации. Ну и классика сравнения этих языков для встраиваемых систем: "есть два пути: можно грамотно использовать все возможности C либо ограниченный набор возможностей C++" - кто сказал это не помню, но сказано верно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба :bb-offtopic: А Вы давно покупали книги по электронике/программированию? Если я вижу стоющую книгу, я её покупаю не задумываясь, на конторские деньги либо на свои. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DRUID3 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба offtop А вы никогда не слышали как Торвальдс критикует микроядра? :) :bb-offtopic: Торвальдс и Си++ усиленно критикует. Авторитет Торвальдса все-таки сильно завышен. Нет, разумеется он молодец - написать свою до конца работоспособную ОС-ку еще в студенческие годы(когда вечно не хватает времени) и "раздать ее людям"... Но... Если задуматься - студенческую ОС без прикладного софта напарить можно разве что тем людям которые профинансировали "сапфировые носители" для украинской центральной библиотеки. Да и писать UNIX, пусть и самобытный, по книжке это не одно и то же, что придумать UNIX. Чувствуете разницу? В те далекие годы столменовский GNU и "опенсоус" набирали силу, появился GCC - который на данный момент, что бы там не говорили, является одним из лучших компиляторов. А что произошло бы если "опенсорщики" подхватив самые конструктивные идеи общими стараниями создали бы еще и ОС без изъянов? Не создали... И поныне... И именно благодаря Линусу и его Linux'у. Если какое-то из социальных потрясений не остановить - его нужно возглавить? Так? Кто и когда решил сделать ставку на архитектурную быдло-поделку - а первые версии ядра ну ничегошеньки из ряда вон выходящего не демонстрировали - навсегда останется под покровом тайны. Но факт фактом. И здесь понемногу начинает закатываться звезда Столмена - эдакого эксцентричного мечтателя и восходит Торвальдса - жизнерадостного практика со здоровым видом. Хм :rolleyes: , есть над чем задуматься... Даже в каком-то документальном фильме видел сценку - Столмена награждают премией Линукса - на что он сам в ответ язвит "Ха, это все равно что Хан Соло награждал бы премией Альянс Повстанцев" (прочтите эту фразу несколько раз... и подумайте)... Я когда-то Вам, sigmaN, не ответил(не было времени на развернутый ответ) что-же быдлокодерского в Линуксе. В самом коде - качественно ничего. Но в архитектуре - это "в лоб" написаный UNIX переживший несколько конструктивных потрясений. Ну каГбЭ бульварный роман написанный на безупречном русском ;) . Кстати темные силы мировой закулисы не столь коварны(там точно нет русских или украинцев - иначе голову Столмена нашли бы под Белой Церковью, в лесу, делов то :) ) сколь дальновидны. Ни для кого не секрет, что дикие народности типО иранцев, украинцев, русских и китайцев беззастенчиво используют свободное ПО (которое писАли люди со всего мира) в том числе и в военной технике. Не повод ли задуматься - а стОит ли при этом "раздавать" самое лучшее ;) ... P.S.: да, я сторонник теории заговоров и не стыжусь этого :tongue: ... P.P.S.: "диким народностям" стоит задуматься, что не все "свободное ПО" одинаково полезно , и верные инвестиции сеодня(инвестиции интеллекта в том числе) завтра могут обернуться качественным(ключевым) преимуществом в целой отрасли. Это на просто на каждом углу кричать "о, свободное ПО... а-а-а-а...у-у-у-у... э-э-э-э... Покупайте наше свободное ПО" :rolleyes: ... P.P.P.S.: готов поспорить, что та же история и с т.н. "нейронными сетями" - как по мне, то это "каша из топора". Жаль, что это уж совсем-совсем оффтоп... end_offtop linux_0.01.tar.gz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 7 сентября, 2010 Опубликовано 7 сентября, 2010 · Жалоба Блни, а зря оффтоп прикрыли. Вот щас про Торвальдса потроллить бы, а)))) Сисадмин говорит, что предыдущая инкарнация нашего сервера под FreeBSD имела аптайм 3.5 года и была обновлена из-за переезда на новое железо. Прям 3.5года без единого ребута??? Я в восторге! Лично я абсолютно согласен с Торвальдсом, что такие вещи как ядро ОС на С++ лучше не писать.И аргументирует он своё мнение. Один мой знакомый говорит что типа забивать гвозди можно и ноутбуком... Конечно, он на много круче, чем обычный молоток, но... улавливаете мысль, нам то гвоздь забивать надо и в деле забивания гвоздя - молоток зэ бэст. А ещё Торвальдс правильно сказал как-то что-то типа: компиляторы, языки - всё это инструменты в наших руках и если мы будем идти на поводу у своих инструментов или не делаем чего-то, потому что нам не позволяют наши инструменты, то как-бы пора бы может быть нам сменить профессию или поменять инструменты. (как-то так, за достоверность не ручаюсь) Но, конечно, тема вообще холливарная пошла....завязывать надо.. P.S. Без оффтопа жить тяжело. Чё, мож и вправду на шараге зарегиться...... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 8 сентября, 2010 Опубликовано 8 сентября, 2010 · Жалоба Один мой знакомый говорит что типа забивать гвозди можно и ноутбуком... Конечно, он на много круче, чем обычный молоток, но... улавливаете мысль, нам то гвоздь забивать надо и в деле забивания гвоздя - молоток зэ бэст.Сравнение некорректно. Ноутбук изначально не предназначен для забивания гвоздей. Есть такие специальные пневматические молотки, для которых гвозди выпускаются в кассетах. Вот это больше похоже - можно с чувством, не спеша, накачивая мышцу забивать ручным молотком, а можно нажав кнопку загнать пневматическим. Плата - стоимость инструмента (читай - необходимость изучать С++) и несколько более высокая стоимость гвоздей в кассете по сравнению с гвоздями россыпью в ящике (читай - некоторые накладные расходы типа кода вызова конструкторов). Но если покупать гвозди не по одинаковому количеству, а, скажем, закупить количество гввоздей, которое можно забить за час одним и вторым инструментом, то выясняется, что это количество гвоздей в кассетах уже подходит под понятие "мелкий опт" и по мелкооптовым ценам гвоздь даже с дополнительной кассетой стоит дешевле, чем гвоздь без кассеты по розничным. Вот такое сравнение мне кажется более похожим на C/C++. Ну или сравните лопату и экскаватор. Только лопату берите не с Джамшутом впридачу, а с профессиональным копателем. И посчитайте, сколько надо заплатить профессиональному оператору лопаты за рытье траншеи, скажем, м*м*км и сколько будет стоить та же работа, выполненная экскаватором с профессиональным оператором экскаватора за рычагами. И сравните затраченное в обоих случаях время. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 8 сентября, 2010 Опубликовано 8 сентября, 2010 · Жалоба Нет, точно пора завязывать, оффтоп же! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
halfdoom 0 8 сентября, 2010 Опубликовано 8 сентября, 2010 · Жалоба Прям 3.5года без единого ребута??? Я в восторге! Поскольку он периодически хвастался растущим аптаймом, то на 3 году я решил поинтересоваться "а не зря ли мы его кормим" (имелся в виду сисадмин). Действительно, uptime был за тысячу с лишним дней, все порты были аккуратно обновлены и даже пересобраны некоторые системные библиотеки и демоны. Но ядро оставалось прежним и перезагрузок не требовалось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
neiver 0 9 сентября, 2010 Опубликовано 9 сентября, 2010 · Жалоба Господа/Товарищи/Эмбеддеры/Радио коты (нужное подчеркнуть), я таки худо-бедно да дописал ранее обещенную статью про организацию ввода-вывода для МК семейства AVR на Си++. Собственно, статья состоит из двух основных частей. Первая - обзорная о том как ввод-вывод организуется на цистом Си. Вторая - как это можно сделать на Си++. Конструктивные комментарии/замечания/пожелания приветствуются. CppGpioForAvr.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 29 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Господа/Товарищи/Эмбеддеры/Радио коты (нужное подчеркнуть), я таки худо-бедно да дописал ранее обещенную статью про организацию ввода-вывода для МК семейства AVR на Си++. Отличная статья! И намного нагляднее, чем 6 страниц руками махать. Рекомендую разместить в разделе статей. Обсуждение здесь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Конструктивные комментарии/замечания/пожелания приветствуются.Опенофис показал множество опечаток. Периферия пишется через "е" - это сразу бросилось в глаза. Продолжаю читать. #define PortaBits (*((Bits*)&PORTA)) пропущен volatile static void Set() { *(uint8_t*)(PORT + __SFR_OFFSET) |= (1 << PIN); } Снова пропущен volatile typedef TPin<Porta, 0> Pa0; .... Pa0.SetDirWrite(); // <- разве тут не должно быть Pa0::SetDirWrite() ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
WHILE 0 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба void LCDwrite4(uint8_t value) { LDP &= ~(1<<LCD_D7|1<<LCD_D6|1<<LCD_D5|1<<LCD_D4); //clear data bus if(cmd & (1 << 0)) LDP |= LCD_D4; if(cmd & (1 << 1)) LDP |= LCD_D5; if(cmd & (1 << 2)) LDP |= LCD_D6; if(cmd & (1 << 3)) LDP |= LCD_D7; } В аргументе фукции value на cmd замените. А вообще-то отличная статья,спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 10 сентября, 2010 Опубликовано 10 сентября, 2010 · Жалоба Подход замечательный. Обязательно использую в ближайшем проекте - надо будет крутить несколько шаговиков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться