Odpověď na názor

Odpovídáte na názor ke článku Řízení kotle Arduinem.

  • 2. 1. 2025 13:16

    MarSik

    Arduino standardní knihovna vznikla dávno před rokem 2011, takže nové best practices v C++ a nové styly API tam prostě nejsou a nebudou. A vycházela ještě ze starších projektů Processing a Wiring.

    Cílová skupina pro Arduino navíc nejsou profesionální embedded vývojáři. Primárně s ním začali umělci a akademici. Bez wifi (ESP přišlo až mnohem později). A i dnes je spousta kódu od bastířů, hardwerářů a lidí co napíšou co potřebují pro svůj problém (motto: scratch your own itch). Takže ten komentář "Dodělám později" není nic neobvyklého.

    Už jsme na to narazili v diskuzi o Fish. Lidi nemají obecně motivaci přepisovat starý kód do nového stylu, pokud to neopraví něco zásadního. A staré styly API snadno nezměníte, protože by to rozbilo veškerý starý kód (dekádu trvající přechod Python 2 vs. 3 nám buď varováním).

    Takže ano, ty vysokoúrovňové Arduino abstrakce neumí využít ten hardware naplno nebo neumožní libovolné skládání více asynchronních úloh (nebo neumí low power provoz).

    Pokud jste si nikdy nevšiml, průmyslové embedded kontroléry se snaží multitaskingu vyhnout! Superloop styl s pollingem je velice obvyklý. Nikdy jste se nezamyslel nad významem Arduino základních metod setup a loop?

    https://en.wikibooks.org/wiki/Embedded_Systems/Super_Loop_Architecture

    Mimochodem, zrovna ten ESP wifi koprocesor polling umí, jen si ho musíte zakomponovat do smyčky sám. Arduino vysokoúrovňové API je úmyslně jednoduché (viz cílová skupina).

    https://github.com/arduino/ArduinoCore-renesas/blob/main/libraries/WiFiS3/src/WiFi.cpp - je to jen práce se sériovou linkou.

    Komunita jako taková pak umí napsat i kvalitní kód, třeba EtlCPP (https://www.etlcpp.com/) je implementace STL kontejnerů a algoritmů pro prostředí bez dynamické alokace.

    Pro lidi více na profesionální straně spektra je tu pak třeba možnost použít PlatformIO (https://platformio.org/) a vyhnout se Arduino IDE úplně.

    Takže až příště budete nadávat na API a kvalitu, zamyslete se nad tím co používáte. On je totiž rozdíl mezi hobby a průmyslovým "nářadím". Arduino tudíž ani nemůže přejít na profesionální a detalní API, protože by tím odřízlo svoji cílovou skupinu (a staré projekty).