Не иначе как его вчерась хозяин шпандырем отчесал за то, что отказался перегружать операторы и использовать объекты.
_________________ Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет. J. Ganssle
Имхо, применительно для AVR Ваня Жуков прав. Писать на Си++ для тини13/26/2313 вряд ли кто будет, там и Си не очень. Для компьютера - да Си++ хорош и то из-за наличия библиотек классов. И то вытесняется другими языками программирования. Для AVR полно библиотек на Си, наверное можно использовать в программе написанной на Си++, а надо ли. Простите за off. По теме: http://kazus.ru/forums/showthread.php?t=17357
Да... Паша там молодец!!! Раздал "сёстрам по серьгам"... На ДиАхтунге тоже тема проскакивала... но в "ворошиловские стрелки" толпой народ, почему-то, не повалил... видать "не поняли счастья своего безмерного и безмятежного"...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Имхо, применительно для AVR Ваня Жуков прав. Писать на Си++ для тини13/26/2313 вряд ли кто будет
Таки да. Но дело в том, что (к счастью) Tiny13 на сегодняшний день не единственный процессор (и даже не самый мощный), к тому же далеко не все программы укладываются в килобайт кода, а крайне ценное мнение Вани высказано о языке в целом безотносительно области его применения. И опубликовано письмецо отнюдь не в разделе "Программировуем Tiny13", а, заметьте, "Языки программирования". Здесь весьма уместно мнение профессора Преображенского по аналогичному поводу:
Цитата:
вы в присутствии двух людей с университетским образованием позволяете себе с развязностью совершенно невыносимой подавать какие-то советы космического масштаба и космической же глупости
Да и вообще в качестве авторитетов в части программирования лучше ссылаться на Дейкстру, Вирта или Кнута, как-то весомее получается. Каждый должен заниматься своим делом:
Цитата:
Ванька покривил рот, потер своим черным кулаком глаза и всхлипнул. "Я буду тебе табак тереть, -- продолжал он, -- богу молиться, а если что, то секи меня, как Сидорову козу. А ежели думаешь, должности мне нету, то я Христа ради попрошусь к приказчику сапоги чистить, али заместо Федьки в подпаски пойду."
Высечь и впрямь не мешало бы... Так, для порядку.
_________________ Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет. J. Ganssle
Да и вообще в качестве авторитетов в части программирования лучше ссылаться на Дейкстру, Вирта или Кнута, как-то весомее получается. Каждый должен заниматься своим делом:
Да как-то это:
ArtDen писал(а):
1. Код проще читается. Не надо напрягать мозги при виде RST_PORT &= ~RST_PINMASK;. Выражение RST_Pin::Off(); гораздо понятнее. 2. Нереально допустить такое ошибки как RST_PORT &= RST_PINMASK; С каких это пор знание ассемблера обязательно для программирования на МК?
не вяжется с этим:
Цитата:
Дейкстра многократно предостерегал от попыток превратить разработку программ в некий тривиальный процесс; по его мнению, программирование, в сути своей — чрезвычайно сложная научная и инженерная деятельность, и никакие новые методы и инструменты не смогут кардинально изменить это положение — они лишь освобождают программиста от части рутинной работы. Попытки же превратить программирование в простое занятие, доступное каждому, обречены на провал.
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Не вяжется, но не язык тому виной, и уж тем более не объектная парадигма.
Критиковать конкретное решение конкретной задачи - конструктивно. Автор ознакомится с альтернативными предложениями, сравнит со своим собственным и либо убедится, что его решение оптимально, либо увидит его слабые стороны и будет думать, как улучшить.
Отвергать решение на основании того, что некто тиснул невнятную статеечку в интернетах по предмету, в котором сам толком не разобрался и потому напрочь отрицает, крайне неконструктивно.
Предлагаемое решение не идеально, но вовсе не по причинам, указанным в письме Вани Жукова Константину Макарычу.
_________________ Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет. J. Ganssle
написал же off не для холивара: мне, например, больше понравились комментарии к злосчастной статье Вани. Тема С++ для микроконтроллеров мне интересна. Где бы посмотреть примеры на С++ для AVR (про ScmRTOS знаю). (к счастью) Tiny13 на сегодняшний день не единственный процессор (и даже не самый мощный) Получается С++ придется применять на жирных Mega (особенно если использовать STL и исключения), а по мнению профи, на этом форуме и не только на этом, вместо Mega надо применять ARM.
Отвергать решение на основании того, что некто тиснул невнятную статеечку в интернетах по предмету, в котором сам толком не разобрался и потому напрочь отрицает, крайне неконструктивно.
Предлагаемое решение не идеально, но вовсе не по причинам, указанным в письме Вани Жукова Константину Макарычу.
Так, всё таки... решение не идеально... отвергаем???
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
Получается С++ придется применять на жирных Mega (особенно если использовать STL и исключения)
Тут вовсе не в жире дело. Языки общего назначения (как С и С++) создаются для решения определенных классов задач, а не под конкретные микросхемы.
Есть задачи, которые превосходно укладываются в рамки объектно-ориентированного анализа и проектирования. Для них использование С++ вполне органично. Есть задачи, которые более естественно решаются структурными методами. Туда тоже можно притянуть объекты за уши, но получится не слишком элегантно. Чтобы сделать правильный выбор, нужно достаточно хорошо знать и то, и другое. Чем знаний меньше, тем решение необоснованнее (и одновременно категоричнее, что мы и видели в злополучном письме дедушке).
HHIMERA писал(а):
Так, всё таки... решение не идеально... отвергаем???
Я думаю, каждый должен решить это для себя сам.
Лично мне оно не слишком понравилось, поэтому лично я воздержусь от его копирования. Но набираться наглости и говорить от лица всего прогрессивного человечества, как Ваня, все-таки не стану, тем более что оно (человечество) меня на это не уполномочило. Если кому-то решение пришлось впору, это его осознанный выбор.
Любая абстракция хороша, когда помогает решать задачи, и плоха, когда мешает. У меня не возникло ощущения, что мне она окажется полезной в своем нынешнем виде.
_________________ Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет. J. Ganssle
Добавил active state (активное состояние) для пина, чтобы соответствовать оригинальной библиотеке для STM32 (и изначальным макросам для AVR по мотивам которых эта либа была написана). Теперь можно добавлять 'L' или 'H' (по умолчанию стоит 'H'), чтобы указывать активное состояние пина ('H' - 1, 'L' - 0):
Код:
typedefPin<'B', 0, 'L'> LED1Pin; typedefPin<'B', 1, 'H'> LED2Pin; //'H' можно не писать: Pin<'B', 1>
_________________ Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет. J. Ganssle
Опрос, проведенный Embedded.com, показал, что 68% респондентов используют для разработки встроенного ПО язык С. По какой причине они предпочитают C, а не C++? Частично это объясняется доступностью инструментальных средств. Но помимо этого многие разработчики даже не подозревают, какие возможности открывает перед ними объектно-ориентированный подход.
Угу... видать не все очки носят... не видят просто...
Цитата:
Подчас репутация C++ страдает из-за того, что он услужливо выполняет за вас некоторые весьма дорогостоящие операции (например. передачу громоздких объектов по значению). Есть способы надежно защититься от этой непрошенной помощи, например, объявив закрытый конструктор копирования для таких классов. Аналогично можно защититься от возврата объекта по значению.
Вот только "Бюро медвежьих услуг" и не хватало...
Цитата:
Резюме автора: программисты используют C++ для встроенных разработок намного реже, чем следовало бы, причем это связано не с объективными недостатками языка и/или компилятора, а скорее с незнанием и склонностью верить ничем не подтвержденным слухам.
Вообще смахивает на примитивный маркетинг... типа "Тогда мы идём к вам!"(С)... А пытаться доказывать, что 68% респондентов "тупо ошибаются и просто верят слухам"... по крайней мере - глупо...
Если ещё и вспомнить, что ни С, ни С++ не находятся в списке рекомендованных для применения в ответственных приложениях... и учесть, что поиск багов и ошибок, учитывая большую развитость и сложность С++, более затруднителен, то становится очевиден и понятен выбор 68% респондентов... использующих для разработки встроенного ПО язык С...
_________________ "Я не даю готовых решений, я заставляю думать!"(С)
1. Нога определяется только в одном месте (1 строка). На си ради этого надо писать три строки: 2. Меньше вероятность допустить ошибки перепутав порты или биты 3. Лучшая читаемость 4. Проще переносить код между аппаратными платформами
1) Ну, если точнее, то, в худшем случае, четыре строчки! 2) Это можно получить дефайнами. 3) И это можно получить дефайнами. 4) И это можно получить дефайнами тоже.
Если речь идёт о "написал в одном месте правильно и используй где хочешь", то перефразирую, практически, запретную для этого сайта реплику из известного сериала: Как, тебе не нравятся дефайны? Просто ты не умеешь их готовить!
СпойлерНичего не мешает написать вот так. Кому что-то мешает - читай подпись под сообщением.
Код:
#define LED1 B, 1 #define LED2 B, 2
voidmain() { char a;
PIN_INIT_AS_INPUT(LED1); PIN_PULLUP_ON(LED1); a = PIN_GET(LED1); PIN_PULLUP_OFF(LED1);
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения