AlexandrY 3 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 2 hours ago, Сергей Борщ said: Для этого достаточно знать этот язык на необходимом уровне. Пенять языку за недостаточность своих знаний - глупо. Я ж потому и дал ссылку на статью чтоб поняли другую точку зрения. Да, это вина языка если его не понимают. Как самые опытные пилоты сажали Б-17 на брюхо, так и самые опытные пользователи С++ в embedded все время бессознательно ходят по граблям. А потому что язык не адаптирован к ожиданиям разработчиков под встраиваемые системы. И прошла целая война пока поняли что не так в Б-17. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 7 hours ago, DASM said: Совершенно нечитабельные плюсы стали, особенно в последних стандартах С этим соглашусь, я и сам плохо понимаю некоторые фишки Си++17. Но... никто же не заставляет вас их использовать. Ваш компилятор может поддерживать Си++14(17), а писать вы там можете хоть в стиле Си, используя только те инструменты, которы енеобходимы. 7 hours ago, DASM said: 30 летний развод и натягивание сов на глобусы Ну... а компиляторы-то есть для встраиваемых систем? 7 hours ago, DASM said: А если драйвер для USB написать надо.. "да пошел ты в Ж, насяльник" Не соглашусь. Я как раз пишу только для встраиваемых систем, и драйвера в том числе (spi, dma, usart, ethernet, qspi, emc,) + драйвера для микросхем (часы, расширители портов ввода-вывода, АЦП, ЦАП и т.п.). Использую наследование, полиморфизм и инкапсуляцию. Соответсвенно: классы, перегрузка функций, виртуальные функции, переопределение операторов и тому подобное, и так далее. Это очень удобно. Но не навязываю свой подход. Все уже взрослые) 7 hours ago, DASM said: Не, я не спорю, если вариться в кровавом энтерпрайзе, митапить тимлидить монадить мокать стабить паттернматчить и очковтиратить - супер язык. Отчасти это справедливо для программистов ПК. Туда иногда действительно идут в силу обманчивой простоты программирования. В итоге экзешник с консольной программой весит 20 мБ (не шутка). А делает простую вещь: конвертирует файл из одного формата в другой. 4 hours ago, AlexandrY said: А потому что язык не адаптирован к ожиданиям разработчиков под встраиваемые системы. Так, а какой, всё таки, адаптирован? А то я пишу, и пока ничего подобного не замечаю) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 34 minutes ago, haker_fox said: Соответсвенно: классы, перегрузка функций, виртуальные функции, переопределение операторов а вот Линус не дал это протащить в ядро, и где он и где вы? да я сам пользую, только чертыхаюсь при этом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 5 minutes ago, DASM said: а вот Линус не дал это протащить в ядро, и где он и где вы? А что, равнение на Линуса - новый тренд?)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба Just now, haker_fox said: А что, равнение на Линуса - новый тренд?)) а что? На успешные проекты равняться плохо? Из известных эмбеддед на ++ знаю Арудуино............. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 23 minutes ago, DASM said: а что? На успешные проекты равняться плохо? Смотря какой успех вам нужен? Финансовый, удовлетворение личного интереса, признание окружающих, гордость за себя любимого? Ну и потом, я предпочитаю свое головой думать)) Ведь я только несу ответственность за свой проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба Я так понимаю, по вариативным шаблонам у нас один Антон специалист? Остальные мастера в другом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба Я прошу прощения за задержку с ответом. Неожиданно навалилась куча дел по работе :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба Считаю, мне ничего не даст передача параметров из шаблона класса в шаблон функций этого класса. В вариативном шаблоне, допустим, передал я параметры. Но мне нужно использовать, например, только для двух пинов из шестнадцати, причем, не первых двух, а любых. То есть, нет никакого механизма выбора конкретных параметров из всего набора. Поэтому буду делать, как говорил - отдельный класс порта на все 16 ножек, и отдельные классы на 1, 2, 4, 8. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба Допустим, сам класс может предоставлять базовый адрес порта и структуру регистров. Также он может давать функции установки/сброса/смены режима битов порта по маске. А вложенный шаблон класса (типа моего PinBus) - содержит лишь набор ножек, и умеет вычислять маски. Вот и удобство. Я редко во всё это погружаюсь, поэтому быстренько набросать не получается :-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 35 minutes ago, ViKo said: Считаю, мне ничего не даст передача параметров из шаблона класса в шаблон функций этого класса. В вариативном шаблоне, допустим, передал я параметры. Но мне нужно использовать, например, только для двух пинов из шестнадцати, причем, не первых двух, а любых. То есть, нет никакого механизма выбора конкретных параметров из всего набора. Поэтому буду делать, как говорил - отдельный класс порта на все 16 ножек, и отдельные классы на 1, 2, 4, 8. А где вы этот перевод откопали, если речь о variadic .. ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 3 hours ago, haker_fox said: Так, а какой, всё таки, адаптирован? А то я пишу, и пока ничего подобного не замечаю) Ешё бы замечали, для этого надо как минимум поработать с пятеркой разных систем. Когнитивные искажения не замечают даже когда точно знают что они есть. А вы хотите заметить даже не будучи уверенным. Сначало надо поверить. 1 hour ago, ViKo said: Я так понимаю, по вариативным шаблонам у нас один Антон специалист? Остальные мастера в другом? Вы к сожалению изобретаете велосипед который потом вам будет мешать в кладовке. Мэйнстримный подход - это сделать объект пинов и сделать объект операций с пинами. Если откроете какую-нибудь ось, то увидите что все делают операции с пинами через файловую абстракцию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 11 декабря, 2019 Опубликовано 11 декабря, 2019 · Жалоба 6 часов назад, DASM сказал: А где вы этот перевод откопали, если речь о variadic .. ? Это не перевод, а мои дилетантские размышления. Предполагал использовать шаблон с переменным количеством аргументов. Но не подходит. Или вы спрашиваете о самом термине "variadic"? https://ru.m.wikipedia.org/wiki/Вариативный_шаблон 7 часов назад, AHTOXA сказал: Допустим, сам класс может предоставлять базовый адрес порта и структуру регистров. Также он может давать функции установки/сброса/смены режима битов порта по маске. А вложенный шаблон класса (типа моего PinBus) - содержит лишь набор ножек, и умеет вычислять маски. Вот и удобство. Я редко во всё это погружаюсь, поэтому быстренько набросать не получается :-) Я насчет масок думал когда-то... Не хочу терять описания битов порта в виде структуры свойств (номер, тип, скорость, др.). А из них формировать маски для регистров порта, получается, нужно делать не в классе, а снаружи. Вручную. 6 часов назад, AlexandrY сказал: Мэйнстримный подход - это сделать объект пинов и сделать объект операций с пинами. Если откроете какую-нибудь ось, то увидите что все делают операции с пинами через файловую абстракцию. Отдельные пины - неэффективно. Вот если эти объекты да собрать в порт. Представляется сложным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 12 декабря, 2019 Опубликовано 12 декабря, 2019 · Жалоба 3 hours ago, AlexandrY said: Если откроете какую-нибудь ось, то увидите что все делают операции с пинами через файловую абстракцию. А не лишнее ли это, если к примеру, речь идёт о Cortex-M0? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 65 12 декабря, 2019 Опубликовано 12 декабря, 2019 · Жалоба 18 часов назад, ViKo сказал: Стивен Прата вас не поддержал бы. В каком месте не поддержал? В вашей цитате я не увидел, чтобы было сказано, что лямбда - это функция. Термин "лямбда-функция" вовсе не означает, что это именно функция. Этот термин идёт из языков, где функции являются объектами первого класса, поэтому там лямбда - это функция. В С++ же функции не являются объектами первого класса, поэтому простая функция не может быть лямбдой. Лямбда-функция в С++ - это анонимный функтор. Согласитесь, что функтор и функция - это разные вещи. Первый - это объект (первого класса в том числе), вторая просто код. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться