ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
24 февраля
1572247 Топик полностью
EmbedProg (Сегодня, 06:41, просмотров: 6) ответил Make_Pic на Пожалуйста подскажите ссылку на скачивание электронной версии книги на русском Reаl-Тime C++. Эffективный к0д для встр@иваемых систеm
Книга книге рознь. Каждая книга для своего читателя. Далее я рассказываю чем эта книга является для меня. 

1. Название книги искажено. Оригинальное название "Real-Time C++ Efficient Object-Oriented and Template Microcontroller Programming". Эффективное здесь объектно-ориентированное программирование и темплейтное программирование, а вовсе не эффективный код. Встраиваемых систем (громкий профессиональный термин) нет. Обещают микроконтроллер. А ведь кто-то купится на обещанное, на встраиваемые системы и на эффективность кода.

2. "Эффективный" что-то там - давно заезженное клише книжек начала-середины 2000х. Эффективный питон, эффективный эксель, эффективный менеджмент, и так далее. Не исключено даже что это клише какого-то западного издательства.

3. Определенная ложь, бравада или "преувеличение" содержится и в оригинальном названии книги. Если полистать с полчасика книгу, то как и ожидалось, не обнаруживается никакого Real-Time C++. Или хотя бы каких-то особых техник. Логично, поскольку он не существет.

4. Настораживает Arduino взятый в качестве подопытного "микроконтроллера".
5. В переводе (на сайте издательства доступна первая глава) настораживает перевод GND как "заземление".

6. В схемотехнике банального включения светодиодов брасается в глаза включение на вытекающий ток (придирка и Atmega бронебойна по току как танк, но все же).

7. Вызывает удивление первый же пример, в качестве кода взята светодиодная "мигалка", она же "Blinky".
Неужели у профи не нашлось бы примера индустриального кода? Да хотя бы тривиальный ring buffer. Зачем выписывать очередной HelloWorld?
Эта мигалка на первый взгляд еще и не рабочая, потому что для того чтобы она стала мигалкой, должна быть задержка.

8. C++ код автора даже банального вкл-выкл светодиода намеренно переусложнен, причем не только синтаксически, но и концептуально.
Профи, мягко говоря, не стремятся писать подобное:
*reinterpret_cast<volatile bval_type*>(port) &= static_cast<bval_type>(~bval);
*reinterpret_cast<volatile bval_type*>(port - 1U) |= bval;
*reinterpret_cast<volatile bval_type*>(port) ^= bval;
Без namespace-то конечно никуда. Кстати и класс здесь по своей сути излишество. И тогда уж почему класс не финализирован и почему он в глобальном namespace?
Когда элементарнейшие вещи превращены в развесистую лапшу, в несколько "экранов" текста это говнокод, антипаттерн, поддержка такго кода затруднена.
Вообще, весь дальнейший код автора вызывает вопросы. Так например он усиленно использует печать в cout и << что само по себе в embedded явный антипаттерн,
простое включение iostream сразу же добавляет 140кб к прошивке в FLASH.
9. Далее в первой главе автор шаблонизирует код (т.е. по сути делает его параметризованными макросами) и на основании этого делает далеко идущие выводы.
Но так ли это? Почему бы сразу не построить эффективный код без заведомых заморочек и излишеств?

10. Настороживает обилие всевозможных "Hello World"'ов на github книги.
У меня нет последних изданий книги, только издание 2013 года. Советую быть внимательным, так как с 2013 года язык C++ претерпел несколько редакций стандарта, например lerp добавлен в C++20.
В разных местах автор зачем-то усиленно называет самый обыкновенный C++ код "Real-Time".
Я бы даже сказал он спекулирует на понятии real-time, там где никакого real-time в действительности нет и это самый обыкновенный C++ и его техники. А вот действительные, настоящие realtime техники в аппаратном понятии hard realtime книга не затрагивает.
Очень быстро автор сваливается в листинги C++ кода без обсуждения, без анализа во что этот код превращается (ассемблера) и особо без примеров.
Мой вердикт таков: книга конечно интересна и содержит полезные вещи. Но она вызывает разочарование, потому что она не оправдывает ожиданий. Она совсем не о том, о чем заявляет название. И даже если повсюду писать слово "Realtime" никаким "Realtime" это не является, а является самыми обыкновенными техниками повышения производительности давно известными, скажем, в игростроении или просто высоконагруженных системах.
В общем вердикт: Книга полезна. Но не разочаруйтесь.