mercredi 5 août 2015

Arduino sketch et C++

Cette Article est une réaction à l'article d'Elliot Williams paru sur Hackaday.com le 28 juillet 2015. La question est la suivante: est-ce qu'un sketch Arduino est un programme C++?

L'argument d'Elliot Williams est que derrière la scène, l'environnement Arduino est basé sur C++ et que la syntaxe des sketch Arduino est la même que la syntaxe de C++. Un sketch Arduino est simplement pré-traité pour y apporter les éléments manquants pour en faire un programme C++ compilable par GCC.

Arduino refence

Jetons un coup d'oeil au manuel de référence du langage Arduino. En effet tous les éléments de la syntaxe sont les même que ceux du C++. Mais est-il question ce classes, objets, etc? non.

Le langage Arduino est un sous-ensemble du langage C++. Un sous-ensemble d'un ensemble n'est pas l'ensemble lui-même.

Si on ajoute des éléments du C++ qui ne sont pas dans la référence du langage Arduino comme par exemple des classes d'objets et des instances d'objets, le script va compiler correctement donc c'est du C++ dit M. Williams.

Personnellement je considère que tout fichier qui a besoin d'être pré-traité avant d'être compiler avec gcc n'est pas du C++ à proprement parler même si les éléments manquant peuvent-être ajoutés manuellement dans le fichier sketch. par exemple les prototypes de fonctions ne sont pas requis dans la référence du langage Arduino mais ils le sont par C/C++. Arduino utilise donc un pré-traitement qui lui est propre et qui sert entre autre à ajouter ces prototypes de fonctions ainsi qu'à ajouter un #include pour la librairie Arduino.

exemple

Voici un exemple d'un sketch Arduino auquel j'ai ajouter une classe C++. le pré-traitement Arduino transforme le sketch en fichieer .cpp suivant:

On voit que le pré-traitement ajoute des directives #line ainsi que la directive #include "Arduino.h" ainsi que les prototypes void setup(); et void loop();

Pourquoi est-ce que j'insiste sur ces détails? A cause de la philosophie d'Arduino. Arduino a été créé pour simplifier l'utilisation des microcontrôleurs pour les rendre accessibles aux non spécialistes. C'est ce qui fait tout l'intérêt d'Arduino. Les spécialistes n'utilisent généralement pas Arduino, car ils n'en ont tout simplement bas besoin et pour eux l'IDE Arduino est d'une utilisation frustrante car cet environnement simplifié n'offre pas les outils auxquels ils sont habituer.

Donc lorsque certains comme M. Williams, veulent expliquer aux utilisateurs d'Arduino qu'en fait ceci c'est du C++ alors moi je dis qu'ils non pas compris l'objet du projet Arduino: garder ça le plus simple possible pour que les amateurs puisse utiliser la plateforme avec une difficulté d'apprentissage minimisée. Si éventuellement ces amateurs deviennent des professionnels ils n'auront plus besoin d'Arduino.

Aucun commentaire:

Publier un commentaire