Big DataData & StockageDéveloppeursLogicielsOpen SourcePCPoste de travailProjets

Dossier : Raspberry Pi et développement

0 0

Depuis quelques années, le Raspberry Pi est devenu un élément incontournable des bidouilleurs en informatique, des geeks en quête d’outils pour s’initier à la programmation, mais aussi des développeurs les plus aguerris. Silicon.fr vous dresse un aperçu des capacités de développement avec le pico-ordinateur.

Apprendre à programmer sur Raspberry Pi

Le Raspberry Pi a été créé initialement pour favoriser l’apprentissage de la programmation auprès des plus jeunes. Il représente toutefois aussi une opportunité pour le monde IT.

Les langages de programmation dédiés aux débutants sont en effet à la portée de tous les métiers. Ainsi, un ingénieur travaillant sur un outil d’automatisation centré sur un Raspberry Pi et ses ports d’entrées-sorties sera en mesure de créer lui-même le code validant le bon fonctionnement de son prototype, sans devoir passer par la DSI. Même au sein d’équipes informatiques, ces outils – qui sont en général des interpréteurs – permettent de créer des applications en un temps plus court qu’avec des solutions comme le C.

Python…

Sous Linux, Python est une des offres de programmation proposées en standard. Il est d’un accès relativement facile pour les débutants, tout en permettant de créer des applications business de qualité professionnelle. Un environnement de développement basique, mais efficace, est de la partie : Idle. Le tout est accessible sous licence Open Source et livré gratuitement avec Raspbian.

Autre avantage de Python, c’est un interpréteur. Le code se veut ainsi plus facile à déboguer et à maintenir que celui compilé en langage machine. De plus, le code créé sur un PC x86 installé sous Linux devrait fonctionner directement sur Raspbian. La portabilité du code Python adapté à Windows demeure pour sa part plutôt bonne. Une valeur sure donc, en cinquième position du classement Tiobe des langages de programmation de juillet 2015.

… ou Basic ?

Le Basic a longtemps été une référence pour débuter dans la programmation. Il est souvent critiqué pour son manque de fonctionnalités avancées. Mais cela a bien changé avec les dialectes modernes, qui sont finalement assez proches d’offres comme Python.

Pour les traitements lourds, BBC Basic est une solution particulièrement intéressante. De suffisamment haut niveau, ce langage intègre un assembleur et peut être compilé via diverses offres, dont ABC (un produit commercial proposé au sein de DDE). De nombreux composants permettent de faciliter la création d’applications desktop ou le pilotage de périphériques. Problème, cette offre ne fonctionne pas sous Linux, mais sous RISC OS, système d’exploitation digne d’intérêt, mais à réserver – en entreprise – aux applications embarquées et non aux usages desktop ou serveur, pour lesquels il n’est plus aujourd’hui adapté.

Les alternatives

Pratiquement tous les interpréteurs demeurent faciles d’accès. En particulier les offres dédiées au monde du web, qui pourront aisément être adaptées à d’autres usages. Node.js, Perl, Python, Ruby, TCL sont tous disponibles sous Raspbian.

Certains compilateurs sont eux aussi abordables. BaCon est méconnu, mais permet de générer du code C depuis un dialecte de type Basic. C’est une des offres les plus prometteuses du marché. Très portable, BaCon fonctionnera sur les machines Linux x86 comme ARM. Enfin, Java ne devra pas être oublié. À bien des égards – et à juste raison –, les professionnels le considèrent comme le Basic du monde des entreprises.

Java SE, un first class citizen

Le Raspberry Pi a droit à un traitement de faveur de la part d’Oracle. La firme propose en général des versions embarquées de Java pour les machines ARM. Java Micro Edition, Java Micro Edition Embedded et Java Standard Edition Embedded sont assez largement accessibles sur plate-forme ARM, mais pas le Java Standard Edition si commun au monde x86.

Sauf sur Raspberry Pi. Oracle propose en effet une version du JDK adaptée aux machines Linux pourvues d’un processeur ARMv6 ou v7. Dans la pratique, ce sont toutefois les Raspberry Pi 1 et 2 qui sont directement visés par cette offre. On retrouve en effet mention du Raspberry Pi dans toute la documentation liée à cette solution. Le JDK 8u33 est actuellement accessible sur le site d’Oracle.

Version complète et standard de Java SE 8, cette mouture de Java propose tous les raffinements existants sur les machines traditionnelles, dont le support graphique et JavaFX. Notez que Java SE 7 est lui aussi accessible sous Raspbian, mais sans JavaFX cette fois-ci. Grâce à Java SE, le Raspberry Pi pourra réutiliser sans soucis le code Java conçu pour les PC classiques.

Pour le middleware c’est Red Hat

Oracle aime le Raspberry Pi. La firme a été jusqu’à dédier un cours Java Embedded à cette carte mère ARM (les ressources de cette formation sont librement accessibles en ligne).

Mais la firme boude encore le Raspberry Pi pour les applications business. Point de Java EE donc. Peu importe. Il y a un acteur qui croit dur comme fer au Raspberry Pi et autres machines ARM : Red Hat. Avec la prochaine version de son OS, Red Hat proposera un support de qualité professionnelle autour de cette architecture processeur. Depuis plusieurs années déjà, l’éditeur fait des démonstrations de sa stack middleware JBoss sur Raspberry Pi. Et la firme ne vise pas seulement le marché des serveurs ARM.

Le Fog Computing est en effet un domaine où les offres middleware ont une carte à jouer. Le Fog Computing est une approche qui consiste à déléguer une partie des traitements de données aux objets connectés. Ces derniers ne se bornent ainsi plus à capter des informations qu’ils font remonter de façon brute sur Internet : ils effectuent un traitement de base permettant de structurer ces données et de les rendre plus pertinentes, en enlevant par exemple les relevés inutiles.

Cisco a mis le Fog Computing au cœur de son offre IoT. Mais ce sont bien des solutions middleware, comme JBoss, qui devraient marquer des points dans ce secteur, en facilitant le déplacement de la couche business vers l’objet connecté.

Les alternatives

L’OpenJDK (1.7 ou 1.8) est une autre pile Java accessible sur le Raspberry Pi, et proposée d’ailleurs directement avec certains OS Linux. C’est ainsi cette solution qui est livrée en standard avec le système d’exploitation de Red Hat. Autre possibilité, GCJ, un des composants clés de GCC qui permet de créer des applications natives depuis du code Java.

C/C++ à toutes les sauces

Le couple C/C++ reste le plus populaire du classement opéré par Tiobe Software. Il est essentiel pour développer des applications de bas niveau, en particulier dans le monde Unix, où le C est omniprésent. Ceci en fait une des solutions de base pour programmer sur un Raspberry Pi, centré par défaut sur l’OS Raspbian.

GCC, le standard

GCC est de loin la suite d’outils de compilation la plus commune au monde, en particulier sur les OS non propriétaires, où il s’agit souvent de la seule offre viable proposée en standard pour compiler du code C/C++. Il est à noter que GCC n’est pas limité à ces deux langages de programmation : Ada, Fortran, Java ou encore Objective-C sont également à sa portée.

Le support des standards C11 et C++11 est relativement avancé et la portabilité maximale. Le code conçu en C compilé sur un PC x86 Linux via GCC devrait pouvoir être recompilé sans problème sur Raspbian. La compatibilité entre des OS différents demeure plus aléatoire, chose d’autant plus logique qu’elle dépendra des librairies utilisées et des interfaces kernel proposées. Côté optimisations, GCC est un projet que les concepteurs de processeurs suivent de près, et au sein duquel ils apportent leur contribution. Chose valable aussi pour ARM ou Broadcom.

DDE, l’oublié

Pour ceux qui veulent un compilateur capable de produire du code bien adapté au monde des puces ARM, il existe toutefois une alternative à GCC : DDE. Cette offre n’est compatible qu’avec RISC OS, système à réserver aux applications embarquées et incompatible avec Linux. Quel intérêt alors pour le monde business ? Sa proximité avec l’ARM C/C++ Compiler (armcc).

Il serait faux de dire qu’armcc descend de DDE, tout comme il est faux d’affirmer que l’homme descend du singe tel que nous le connaissons. Toutefois, ces deux solutions descendent d’un produit commun, signé Acorn Computers. Le code généré présentera donc d’étranges similitudes. Un élément intéressant pour ceux qui veulent un compilateur proche d’armcc, pour une fraction de son prix. À noter également que DDE propose l’un des assembleurs ARM les plus complets du marché.

L’offre d’ARM n’est pas accessible en mouture compatible avec Raspbian. Il faut ainsi ‘crosscompiler’ le code depuis une machine x86, ce qui peut s’avérer fastidieux. DDE fonctionne directement sur un Raspberry Pi et propose un autre avantage : il est moins cher (35 livres au sein du NutPi, soit environ 49 euros).

Les alternatives

D’autres alternatives à GCC existent. Clang tout d’abord, qui s’appuie sur le projet Open Source LLVM et s’avère disponible sur Raspbian. Il n’est pas installé par défaut avec l’OS, ni aussi optimisé que peut l’être GCC. Il convient toutefois de ne pas l’écarter.

Autre offre, française celle-ci, TCC du très talentueux Fabrice Bellard. TCC fonctionne sur les plates-formes ARM. Le code généré reste peu optimisé, mais est compilé à la vitesse de l’éclair, ce qui permet d’envisager d’effectuer la phase de compilation à la volée, avant le lancement de l’application. Cette caractéristique en fait le plus embarqué des compilateurs C pour le Raspberry Pi.

Big Data et calcul

Le Raspberry Pi a les faveurs des grands éditeurs. Oracle lui dédie une version de Java SE, Microsoft une mouture de son OS Windows 10 et Red Hat ne l’oubliera pas dans RHEL 7.2.

Le monde du calcul fait aussi les yeux doux au Pi. Wolfram Research a été remarquable dans ce domaine. Fin 2013, l’éditeur américain livrait une version Raspberry Pi de sa solution de calcul formel. Une mouture gratuite pour un usage non commercial et incluant – pour la première fois – le Wolfram Language. Il aura fallu attendre plus d’un an et demi pour pouvoir disposer de ce langage de programmation dans la version PC de Mathematica.

L’éditeur a fait ici preuve d’audace, mais aussi d’astuce. Il s’est trouvé a bon compte un public pour son Wolfram Language, en allant directement le chercher sur une plate-forme conçue pour les programmeurs curieux. De plus, cet outil permettra de traiter des données captées par le Raspberry Pi, avant de les faire remonter sur le réseau, en particulier vers le collecteur Wolfram Data Drop, qui pourra alimenter le portail de traitement de données en mode Big Data Wolfram|Alpha. Dès 2013, Wolfram Research avait donc très intelligemment anticipé l’arrivée du Fog Computing, qui consiste à déléguer certains traitements aux objets connectés.

Et Matlab ?

Wolfram Research a réussi un beau coup avec la version Raspberry Pi de son offre Mathematica. Mais quid de l’autre ténor du marché, Matlab ? Réponse courte : nada. L’éditeur propose toutefois un package de support adapté au Raspberry Pi, qui permettra de faire remonter des données en provenance de ses différentes interfaces d’entrées-sorties.

Pour ceux qui veulent développer in situ sur le Raspberry Pi avec Matlab, il faudra passer par d’autres solutions que celles de MathWorks. Le logiciel Open Source Scilab, géré par une société française (Scilab Enterprises), est probablement le logiciel le plus proche de Matlab. Il est accessible dans les dépôts logiciels de Raspbian. Autre star Open Source du calcul numérique, GNU Octave… et le langage de programmation du même nom.

D’autres alternatives existent, comme Maxima, côté calcul formel, ou FreeMat, qui pourra trouver des usages aussi bien dans le secteur du calcul numérique que du calcul formel.

R, champion du Big Data

Langage de programmation dédié au traitement statistique de données, R monte en puissance très rapidement chez les data scientists. Microsoft va l’adopter au sein de SQL Server 2016 et Oracle le propose en option pour Database 11g.

Solution accessible sous licence Open Source, R est aussi compatible avec le Raspberry Pi et pourra – là encore – être utilisé dans le cadre de traitements de données déportés sur un objet connecté basé cette carte mère. Là encore un bon candidat pour du Fog Computing. R pourra ainsi être utilisé à la fois côté objet (Fog) et côté serveur (Big Data).

.Net avec ou sans Windows

Les plates-formes Java et .NET sont les plus populaires dans le monde des applications business. Le Raspberry Pi sera un excellent candidat pour développer à l’aide des solutions Microsoft.

La firme de Redmond propose en effet une mouture de son OS Windows 10 dédiée à cette carte mère ARM low cost. Windows 10 IoT Core n’est pas un OS desktop complet, mais il permet d’accéder à tous les périphériques du Raspberry Pi et de créer des applications proposant, au besoin, une interface graphique.

À bien des égards, développer pour Windows 10 IoT Core est similaire à la création d’applications pour Windows Embedded. Seul regret, il faudra passer par une version ‘complète’ de Windows pour la phase de mise au point du code, assurée par Visual Studio 2015 (ou d’autres offres, comme SharpDevelop). Pas de développement direct depuis le Raspberry Pi donc.

En plus du développement C/C++ et d’applications universelles en JavaScript, il sera aussi possible de créer du code en C# pour Windows 10 IoT Core. Le code .NET généré à l’aide de Visual Studio 2015 pourra ainsi être déployé sur le Cloud Azure de la firme, sur des PC et serveurs Windows, mais aussi sur des objets connectés, via Windows 10 IoT Core.

L’Open Source pour l’in situ

Pour développer directement avec les langages de la plate-forme .NET sur les différentes versions du Raspberry Pi, il faudra passer par des solutions Open Source : l’OS Linux Raspbian et le projet Mono, clone libre de la plate-forme .NET. Ce dernier est livré en standard dans les dépôts logiciels de Raspbian. L’environnement de développement MonoDevelop sera parfait pour créer des applications C# sur le Raspberry Pi.

Quid de l’interopérabilité avec l’offre de Microsoft ? Tout comme le code Java, le code .NET compilé est portable. La machine virtuelle Mono sera ainsi en mesure d’exécuter la plupart des applications .NET, y compris ASP.NET.

Attention toutefois aux applications desktop. Mono utilise en effet des frameworks différents de ceux de la plate-forme .NET signée Microsoft. Seul réel point de contact entre les deux, WinForms (Windows.Forms), une solution maintenant ancienne, mais qui est aussi efficace que portable. Une application WinForms bien écrite (sans appels natifs) fonctionnera indifféremment sous Windows, OS X, Linux… et Raspbian, l’OS de base du Raspberry Pi.

Linux ou Windows ?

Reste LA question : le code Mono pourra-t-il être déployé sur Windows 10 IoT Core ? A priori non, Windows 10 IoT Core demandant des applications universelles et non des exécutables classiques. Une courte phase d’adaptation/recompilation du projet suffira toutefois, dans la plupart des cas, à passer de Mono à Windows 10 IoT Core.

Et cette opération peut se révéler rentable. Lors de premiers tests, il s’avère que le code .NET s’exécute jusqu’à 5 fois plus rapidement sous Windows 10 IoT Core (.NET 4.5) que sous Raspbian (Mono 4.0.1). La vitesse de traitement sur un Raspberry Pi 2 est même très proche de celle obtenue sur un Core i5 (source). Une implémentation très efficace de la part de Microsoft.

Un RAD nommé Xojo

Lorsque nous parlons de développement rapide, Python (avec l’environnement de développement Idle), Basic et Java viennent immédiatement à l’esprit.

Mais le monde des solutions RAD (Rapid Application Development / Développement rapide d’applications) propose bien plus que cela, avec des environnements de développement centrés autour de langages de programmation et de frameworks dédiés, le tout visant à améliorer au maximum la productivité des développeurs.

Pi + Xojo = RAD

Très attendu sur le Raspberry Pi, Xojo va adapter la prochaine édition de son RAD pour lui permettre de créer des applications dédiées à cette plate-forme. Le développement se fera toujours depuis un PC fonctionnant sous Windows, OS X ou Linux, mais le Raspberry Pi sera proposé comme option de déploiement.

Le support du Raspberry Pi sera proposé sans surcoût aux possesseurs d’une licence Pro de Xojo 2015r3. Assez curieusement, autant il est possible de créer des applications desktop en mode Linux/x86, autant sur les puces ARM il ne sera permis que de générer des applications en ligne de commande pour l’OS Raspbian.

Ceci sera toutefois suffisant pour proposer des applications serveur ou des logiciels intégrant une interface web (via le même framework que celui proposé sous les autres OS). Un premier pas intéressant, mais qui devra être transformé par l’éditeur en une offre plus aboutie, afin d’espérer se démarquer de la concurrence.

(French) Gambas ou (Blaise) Pascal ?

Xojo devra en effet compter avec la concurrence d’autres solutions, Open Source cette fois-ci.

Œuvre d’un talentueux développeur français, Gambas se veut proche – dans l’esprit – de solutions comme VisualBasic, tout en étant bien plus sophistiqué. Cette offre permet de créer des applications complexes, qui seront interprétées ou compilées et pourront utiliser des frameworks graphiques divers (GTK+ ou Qt, suivant les besoins). Gambas est accessible dans sa dernière version sur Raspbian.

Autre solution qui ne devra pas être écartée, Lazarus. Ce RAD est compatible avec Delphi, célèbre offre commerciale s’architecturant autour d’une version objet du langage de programmation Pascal. Lazarus est accessible en version native sur le Raspberry Pi et permettra de créer des applications complètes, qui seront compilées à l’aide de Free Pascal. À noter, un support exhaustif des ports d’entrées-sorties du Pi, qui seront directement pris en compte. Le Wiki de Free Pascal dédie une de ses pages à l’utilisation de Lazarus sur le Raspberry Pi.

Les alternatives

D’autres solutions ne sont pas à proprement parler des RAD, mais s’en rapprochent très fortement, du fait d’une grande facilité d’utilisation dans le cadre de la création d’applications (y compris desktop). Citons ainsi le couple Java + NetBeans ou encore Mono + MonoDevelop. Des outils très efficaces et particulièrement bien adaptés au monde business.