- Си vs Си++. Понеслась :-) il-2(1947 знак., 13.01.2022 06:46 - 08:13, dao, полностью)
- == 1. Разработчики на Asm, никогда не программировавшие на Си. st256(807 знак., 15.01.2022 10:32)
- Вспоминю ассемблер как "как молоды мы были, как верили в себя".
Никакой не страшный сон, завидую себе. Группа №2 по си скрестиками. - Бapбoc(14.01.2022 00:56)
- C выучишь ты K&R прочтя. Кресты же учишь много лет. Процесс
трансцедентен. - RxTx(13.01.2022 23:18)
- Кто то из великих сказал : если вам не надо более одного экземпляра
класса, не используете ООП. А в железках как правило всегда так. - IBAH(13.01.2022 19:33)
- Пишу на Си, Питоне и поддерживаю некоторое количество старого кода
С++. Cкpипaч(459 знак., 13.01.2022 18:51)
- Собсно, с этой целью давно придумана MISRA и подобные вещи для
контор, работающих в областях где "все придумано до нас". s_h_e(116 знак., 14.01.2022 00:05)
- Ничего неожиданного в этой мысли нет. Я думаю, это главная причина,
по которой руководители проектов не любят C++ - придёт программист,
который слишком хорошо знает язык, потом уйдёт, а в его коде сам
Страуструп ногу сломит. С другой стороны, нечитаемые программы люди
вполне успешно пишут на чём угодно. - йцyкeн(13.01.2022 20:18)
- Какая проблема писать на С как на Паскале? Всего лишь пара
ограничений. - VLLV(13.01.2022 20:00)
- Я думаю, что с некоторого уровня зрелости, хороший знаток языка
сможет специально писать программу просто и понятно. В крайнем
случае, если заинтересовать, может оставлять достаточно
комментариев, чтобы через пять лет смог быстро разобраться даже не
знаток. - Nikolay_Po(13.01.2022 18:57)
- "Настоящий Программист напишет программу на Фортране на любом языке
программирования"(С) - mse homjak(13.01.2022 18:54)
- Я недавно делал большой проект на меге. Сложный, с кучерявой
логикой и не простой электроникой. Естественно я говорю о своем
уровне. Так вот когда в систему начали ссыпаться пожелания от
пользователей я понял что сама по себе структура кода не позволит
масштабировать, править и добавлять сущности. Точнее можно но на
код страшно смотреть. Tpoeшник(90 знак., 13.01.2022 11:31)
- Классификация по уровням не полная. Мне лично понравилась такая: framer(375 знак., 13.01.2022 10:27, картинка)
- Асм не переносим, поэтому и результат дискуссии был предсказуем. У
++ нет такого решающего преимущества, есть лишь некие плюсы и
минусы, коих немало. Поэтому и живы оба языка, да еще ++ подпирает
молодое поколение языков без груза легаси. - Andreas(13.01.2022 09:17)
- не уверен что такая аналогия уместна - Nikolay801_(13.01.2022 09:08)
- Ага, как и с английским symbions(80 знак., 13.01.2022 08:59)
- Тема ЧСВ не раскрыта. Типа вы ниасилили плюсы, а я мегамозг одной
строчкой иероглифов делаю то, что вы там макросами лепите в 10
этажей. Естественно, в такой ситуации весьма затруднительно
осознать, что гораздо продуктивнее просто выдавать хороший сишный
код, а не догонять постоянно бешеный принтер "плюсы NNNN" :-) - SciFi(13.01.2022 08:26)
- Это утешительная мысль. Адепты Асма ею тоже утешаются. Хотя отличие
конечно есть. Все дело в бешеном принтере :-) il-2(170 знак., 13.01.2022 08:33)
- Открываю внезапную тайну! Тайна: RxTx(339 знак., 13.01.2022 22:50)
- На самом деле, между АСМом и Ц нет принцыпиальной разницы. Ц, это
АСМ некого абсрактного ЦПУ. Конешно, это шаг от голого АСМ в
сторону ЯВУ, но не сам ЯВУ, бо позволяет слишком многое. Вот
Пасквиль, это ЯВУ: никаких "шаг влево, шаг вправо". - mse homjak(13.01.2022 12:20)
- Не согласен. Пусть сначала плюсы осилят "C99 designated
initializers", но у них кишка тонка. Не надо оттуда ересь таскать.
LightElf по делу ругает стандартизаторов >>> SciFi(1 знак., 13.01.2022 08:38, ссылка)
- А как плюсы могли пройти мимо? Разве что годами только МК были... POV(251 знак., 13.01.2022 08:15)
- Вчера наковырял мелкую "собачью" утилитку (в моем случае - для AVR
студии, в которой нет штатной возможности "postbuild" в проекте).
Бросаем утилитку в каталог, где создается HEX. В этом же каталоге
должен лежать BAT файл для постобработки (в моем случае BAT файл
готовит файл для загрузки и запускает загрузчик). Запущаем.
Утилитка отслеживает HEX файл и запущает BAT при его изменении,
например, при компиляции. Может кому пригодится... Гyдвин(1 знак., 14.01.2022 07:40, dao, ссылка, полностью)
- А меня устроили штатные возможности АСтудии или IAR. Например
ВАТ-файл на Питоне одним файлом для максимальных выпендросов, или
просто СМD-файл для примера к АСтудии. maleon(428 знак., 14.01.2022 17:13 - 17:49, ссылка, картинка)
- А кто смотрит за смотрящим? Однажды запустившись, утилита остается
в памяти до перезагрузки? - VLLV(14.01.2022 10:49)
- Примерно тот же функционал на vbs. Имя файла, за которым следить, и
запускаемый файл править прямо в тексте. AlexBi(236 знак., 14.01.2022 10:45)
- Круто, спасибо symbions(198 знак., 14.01.2022 08:58)
- Видео. Гyдвин(1 знак., 14.01.2022 08:03, ссылка)
- Ха! Samsung хочет сожрать Infineon или NXP? Якобы Evgeny_CD(1 знак., 14.01.2022 00:48, dao, ссылка, полностью)
- Местами спорная, местами интересная статья о будущем мобильных
платформ Evgeny_CD(1 знак., 14.01.2022 22:06, dao, ссылка)
- Мутная статья про доступ к COM порту из WEB приложения Evgeny_CD(1 знак., 14.01.2022 15:57, dao, ссылка, полностью)
- Про тонкости работы сетей в контейнерной инфраструктуре. Когда TCP
быстрее UDP Evgeny_CD(1 знак., 14.01.2022 14:14, dao, ссылка, полностью)
- свежак KGP для мелко армов: klen(2011 знак., 06.12.2021 12:37, dao, ссылка, полностью)
- А есть хоть какой-то шанс, что в gcc завезут __builtin_rbit ?
Простой пример VladislavS.(200 знак., 02.01.2022 11:33)
- У вас в двух последних предложениях есть противоречие - или С++
таки хороший - тогда почему нельзя написать универсально (под вашу
платформу результат будет работать быстро, под не вашу - собираться
и тормозить, но Вы же и не обещали оптимизацию по скорости, но зато
собирается и работает), или таки не очень хороший (хотя для
использования всех фич железа без использования асма - подходит -
но тогда С остаётся кому нужна переносимость) - symbions(09.12.2021 09:09)
- Совет не использовать C вредный, необдуманный. Патетика. Но мысль о
том что C++ тяжел и непрост - верна. Результат использования C++
продемонстрирован в этой теме на примере std:stringstream -
желающим предлагается вступить в борьбу за уменьшение размера.
"Состояние души когда между asm/c++ стирается граница" тоже
патетика, поскольку абсолютно вся культура C++, в особенности
современная расчитана именно на высокий уровень, про ассемблер речи
не идет, и большинство C++ RxTx(105 знак., 08.12.2021 01:16)
- Думаю, что здесь не вина языка, а вина ... создателей
std-библиотеки, большая часть которой написана так, что чёрт ногу
сломит. - Kceния(08.12.2021 08:20)
- Почему следует использовать C? Потому что это оптимально. Embedded
проекты в большинстве своем небольшой величины, разрабатываются и
поддерживаются небольшим количеством разработчиков, и содержат
механизмы наиболее корректно (достаточно) выражающиеся средствами
C. Именно по этой же причине C используется в системном
программировании UNIX, LINUX, RTOS, Windows, причем C++ считается
Deprecated. - RxTx(08.12.2021 01:23)
- "люди!! не пишите код для эмбеддед на С - он вяжет Вам руки и ноги
и выкалывает глаза," - остаётся вопрос как понять идеологию языка и
научиться применять его? Не синтаксис, не понять что такое
объект-класс-темплейт, а научиться применять язык как инструмент.
Если проще - как постигнуть дзэн? - Dingo(07.12.2021 20:17)
- вроде как плэйнси тут ни в чём не виноват.. фyтбoлиcт(1 знак., 07.12.2021 07:59,
, ссылка)
- Так, возможно, возможно, я понял, о чем говорил Мастер Klen. И
вообще смысл С++ в embedded. Evgeny_CD(4056 знак., 06.12.2021 23:30, ссылка)
- Мне не нравится постановка "правильно использовать". Имею к плюсам
лютую идиосинкразию, хотя и прокачал некоторые скилы по теме. Меня
вообще в разработке ПО расстраивает привязка к неязыкам (асм) и
диалектам (плюсы). Особенно к такому, ИМХО, костыльному набору
диалектов, как C++ Embedded. Развивайте. Успехов! Всё будет Rust:) - Vit(06.12.2021 21:25)
- Я нашел библотеку для тренировки Klen. POCO Это старый, хорошо
продуманный проект. Интересно, во что его удастся утрамбовать Klen Evgeny_CD(2 знак., 06.12.2021 21:14, ссылка, ссылка)
- сразу сообщаю - вброс говна на вентилятор про С vs С++ это как
повод задуматься как улучшить то чем мы занимаемся - разработкой.
никого испачкать не планирую :) ну так на всякий случай - вдруг
религиозные чувства задену. мнение не может совпадать с дорогой
редакцией и я конечно неправ :) - klen(06.12.2021 15:31)
- Наброшу. framer(546 знак., 06.12.2021 17:47, картинка, картинка)
- РАЗБОР предложенного случая framer klen(3302 знак., 06.12.2021 19:25)
- Вот интересное замечание. Да действительно, где объекты только с
пустым конструктором и не используются то прироста кода нет.
Оптимизатор их чикает. Но если вызвать со списком инициализации
тогда прирост кода есть. Есть разница между: framer(602 знак., 06.12.2021 21:33, картинка)
- Был такой проект - uSTL. Да сплыл. This library is obsolete. Please
use the official gcc C++ standard library. Evgeny_CD(1 знак., 06.12.2021 20:39, ссылка)
- ETL - Embedded Template Library Evgeny_CD(2 знак., 06.12.2021 20:50, ссылка, ссылка)
- EASTL - Electronic Arts Standard Template Library, (старая 2007)
для встроенных систем, игровых приставок и т.д. и исходники. Costic(50 знак., 14.01.2022 17:26, ссылка, ссылка)
- Смотрите на гитхабе ustring и uvector - альтернатива std::string и
std::vector, для embedded решений без проблем с фрагментацией кучи. Totoro(2 знак., 03.01.2022 01:26,
, ссылка, ссылка)
- Написание собственного аллокатора - задача не тривиальная, а
алгоритмами аллкокации могут заниматься целые кафедры вузов. Часто
достаточно обычного placement new, например, для буферов
приёмопередатчиков его хватает с головой. Да и в std-контейнерах
особой нужды нет, для своих проектов я реализовал stl-совместимые
кольцевой буфер, связный список и кое-чего ещё по мелочи. - evgeniy1294(06.12.2021 20:35)
- Спасибо! Однако страшно стало. Если "newlib" каждый раз под новый
MCU переписывать, пусть даже с 10го раза будет навык это делать, то
затраты времени будут велики. А можно какой-нибудь "HAL",
средствами C++20, конечно, выделить, чтобы все остальное было
архитектурно независимо. Evgeny_CD(103 знак., 06.12.2021 20:30)
- Большое спасибо за детальный разбор. - framer(06.12.2021 19:53)
- Еще если бы карта этих зависимостей была бы доступна...тогда можно
было бы построить пространство фич С++, и в нем жить в проекте. - Evgeny_CD(06.12.2021 18:02)
- Какой компилер? - Evgeny_CD(06.12.2021 17:59)
- Это с LTO? - Nikolay_Po(06.12.2021 17:50)
- Уговорил. Будем кодить на исконно-посконном ЦЭ :) - Гyдвин(06.12.2021 13:47)
- Спасибо! Если грань между C++ и asm стереть, то это будет хуже, чем
большой проект на asm. Переносимости по архитектуре не будет.
Совместимость с C++25 (условно) не факт что будет. Лучше уж
хардкорно, на асме. Иначе надо знать два дзена - С++ и asm. - Evgeny_CD(06.12.2021 13:37)
- Где там что про асм? Ключи компилятору, какие возможности
использовать. Вроде всё на этом. - Dingo(06.12.2021 14:31)
- Ерунду пишите, Евгений. Или я вас неправильно понимаю. Вся прелесть
в том, что современный компилятор, с отлаженной оптимизацией LTO,
стирает грань между программированием на ассемблере и
программированием на С++. Надписанный на C++ код, оптимизируется
компилятором на уровне инструкций контроллера, считай, в
ассемблере. Делая использование ассемблера разработчиком
бессмысленным. Nikolay_Po(647 знак., 06.12.2021 13:54)
- я удивлен и сильно обрадован.... оказываеццо есть все таки надежда
и свет в нашем стаде эмбеддед програмеров! Вы почти точно выразили
ситуацию и мысли которыми руководствоваться комитет по стандарту.
единственное уточнение - современный С++ позволяет программисту
указать компилятору. как бы помогать ему генерить этот самый
правильный и эффективный асм код, ты как бы пишешь на асме но
категориями высокоуровнего С++. Фокус в том что при этом не
теряется независимость от klen(803 знак., 06.12.2021 14:50 - 14:55)
- Можно подробнее, где в низкоуровневой части С++ улучшения по
сравнению с С, которые позволяют программисту помогать компилеру
лучше генерить код? - Evgeny_CD(06.12.2021 14:54)
- самое поверхностное и понятное, шаблоны, ссылки, constexpr consteval, constinit, lamda, примеры где проглядывается связь именно с таргетом и его
инструкциями и регистрами я приведу пожже и мы это разберем. это
чуть посложнее. Все дело в том что С++ вниз умеет протолкнуть
больше информации об организации данных и их связях. - klen(06.12.2021 15:02)
- Странно, что сейчас виртуальные функции и перегрузку операторов не
ценят. По-моему, они - самое лучшее в С++. - Costic(06.12.2021 21:29)
- Шаблоны, ссылки, лямбды - мне кажется это не про оптимизацию, а про
упрощение кодирования. А все сорта const... это исключительно от
разделения компиляции и линковнки. Если предположить, что
разделения нет, то компилятор сам может догадаться, где нужно
вызвать функцию sin(x) , а где заменить на константу sin(1) - AlexBi(06.12.2021 15:43)
- Жалкое подобие левой руки, эти ваши шаблоны с константными
выражениями! То ли дело на макросах препроцессора навернуть! - LightElf(06.12.2021 15:26)
- Почитал, например, про consteval, не увидел какого-то особого,
высшего смысла. Evgeny_CD(1 знак., 06.12.2021 15:20, ссылка)
- Зайдем с другой стороны. Хороших книг по C++ с прицелом на ebedded
катастрофически мало. Тайное знание никак не удается
распространить. - Evgeny_CD(06.12.2021 15:04)
- Я лох в С++, но мне понимается обратное. Скорее С можно натьюнить
так, особенно, если специфическими GCC расширениями и прагмами
пользоваться, чтобы код стал более эффективным. - Evgeny_CD(06.12.2021 15:01)
- Я понял Klen так, что он предлагает широко использовать asm вставки
в накуренном C++ коде - Evgeny_CD(06.12.2021 14:05)
- Вредные советы для С++ программистов Evgeny_CD(1 знак., 14.01.2022 14:16, dao, ссылка, полностью)
- Huawei планирует построить собственный завод по производству чипов
и поможет ей SMIC Evgeny_CD(1 знак., 14.01.2022 14:30, dao, ссылка)
- Любопытно. 3 технологических прорыва 2020–2021 — до чего дошло
человечество? Evgeny_CD(1 знак., 14.01.2022 14:21, dao, ссылка, полностью)
- Хабр. Собственный zigbee2mqtt на C++ с бустом и исключениями Evgeny_CD(1 знак., 14.01.2022 14:08, dao, ссылка)
- Нетривиальное. Настройка MikroTik для маскировки параметра TTL при
раздаче трафика. Чтобы ОПСОСы не палили Evgeny_CD(1 знак., 14.01.2022 14:05, dao, ссылка)
- [Сервера и суперкомпьютеры на ARM архитектуре] Сводный системный. Evgeny_CD(3553 знак., 15.11.2019 22:31, dao, полностью)
- Пока Evgeny_CD не добрался :). "Просто о шаблонах C++", кстати,
первый коммент от некого @fk01 Chum_A(1 знак., 12.01.2022 17:12, dao, ссылка, полностью)
- Хабр. Правила и рекомендации по комментированию в коде Evgeny_CD(1 знак., 14.01.2022 00:57, dao, ссылка)