Message
par michel06 » sam. 08 12, 2007 15:45
Je relis ce sujet sur lequel j'avais posté iil y a quelques mois mais personne n'avais répondu ou commenté mon mai... Vous vous faites de sacrés noeuds avec les langages de programmation, le temps réel etc...
J'ai une assez grande expérience de l'informatique "embarquée/temps réel" moderne, je suis enseignant/chercheur en informatique et je travaille depuis pas mal d'années dans me monde des systèmes embarqués et de la robotique.
On distingue effectivement le "bas niveau" sur lesquel travaille Romain, qui est essentiel, et là des langages type C/C++ sont la norme, et le "haut niveau", c'est-à dire la "macro-commande". Les cpu aujourd'hui, que ce soint dans le monde mobile (Windows CE/Mobile/linux embarqué à base d'ARM par ex) ou dans le monde classique, sont infiniment plus puissante que ce que l'on trouvait dans nos flips. On sait aujourd'hui contrôler des robots mobiles en C# ou en Java sans aucun problème lié à ce que l'on appelle "le temps réel". On a même plus besoin d'un OS "temps réel" tels que certains Linux temps réel, CE, VxWorks ou Qnx utilisé dans les pinball 2000. Un bête XP suffit pour controller un robot, commander ses moteurs, lire ses capteurs, calculer de nouvelles positions etc... On envoit des ordres et on lit en pseudo parallèle grace à des librairies spécialisées comme la CCR de Microsoft par exemple (Concurrent Runtime) qui facilitent grandement l'écriture de programmes effectuant des tâches en parallèle. Je pourrai rentrer dans les détails si vous le souhaitez.
Les systèmes embarqués dans les véhicules sont majoritairement écrits en Java à l'aide du framework OSGI et là aussi, on a de la lecture et de la commande parallèle.
Les OS dessous ne sont pas "temps réel" mais comme le bas niveau lui l'est, si on perd quelques millisecndes par-ci par-là ce n'est pâs bien grave.
Croyez-moi, le temps réel dans un flipper c'est de la rigolade par rapport aux contraintes de la robotique. Et on peut très facilement envisager de programmer toute la logique de haut niveau (les règles, l'équivalent des scripts vpinmame + code des roms= avec un langage de haut niveau.
Critiquer java, C# etc... à ce niveau-là n'a aucun sens. 95% de Vista a été re-écrit en C# par exemple, ça bouffe certe plus de mémoire mais les performances sont comparables, je peux vous communiquer des articles scientifiques à ce propos. Idem pour Java, son apparente lenteur pour les néophytes est souvent assimilée au temps que met le logiciel à se lancer (il faut charger la JVM, etc... ce qui est long) mais une fois que tout est en mémoire, les perfomances sont le plus souvent comparable à du C/C++.
Quel intérêt à travailler avec ces langages plutot qu'en C/C++ ? Justement, ils sont de plus haut niveau et on développe plus rapidement...
Robosoft développait à 100% en C/C++ sous Linux temps réel. Ils ont lancé une gamme de robots sous CE/XP + le Microsoft Robotic Studio, ils ont redéveloppé tout leur middleware en C# autours de ces outils et en quelques mois tous leurs softs ont été portés sur cette nouvelle architecture. Les perfs sont là et les temps de développement réduits de trois quart. Je ne fais pas l'apologie de Microsoft ici, c'est juste pour dire que de nos jours on peut envisager sans aucun problème de développer une appli "flipper" au-dessus des cartes de romain dans absolument n'importe quel langage, un framework (ensemble de librairies) permettant de faire de la programmation parallèle étant un plus indéniable, il existe de tels frameworks pour Java (OSGI), pour C# (la librairie CCR), etc.
Avec le Robotic Studio on développe des "services" par exemple "service de controle des lampes", "service de controle de la puissance" etc... et ces services sont à la fois des services temps réel et des services web (on peut appeler un URL pour avoir l'interface de test/debug dans son navigateur).
Etc... le PDG de Robosoft m'a acheté mon the Machine Bride of Pinbot et c'est aussi un passionné de flip. Il m'a dit "mais c'est comme un robot !" Ben oui.
Borne mame, flippers Guns and Roses, Beat Time 1967, Diamond Lady, Simpsons Data East, Elvira, Arena, Hot Shots, Alien Poker (prêté), Black Knight 2000, Elvira, Ali, Riverboat Gambler, TNMT, Doctor Dude, Timeline, Raven