Langage de programmation "alternatif"

Bonjour.

N'étant pas très "accro" au C et assimilés (de plus 2 versions de WinAVR ont planté en violation d'accès) et trouvant le Pascal trop cher (280€), je voudrais savoir si quelqu'un a une expérience positive ou négative avec Bascom (moins de 100€ et qui apparemment permet même la programmation directe de l'Arduino, du moins figure-t-il dans la liste des "programmateurs" ).

Merci d'avance ...

Le langage "natif" des micros avr est le C si on met de coté l'assembleur.
Toutes les bibliothèques que tu trouvera seront en C/C++.
Sur ce forum je n'ai pas de souvenance "de plantages en violation d'accès", faut-il voir une origine dans ton PC ?

De nombreux débutants se mettent au C/C++ (j'en ai fait parti à 65 ans passés) et au final cela se passe pas trop mal.
Perso je préfère transpirer un peu plutôt que de sortir le porte-monnaie.

Merci pour ta réponse, mais quand je pose une question sur UN langage ce n'est pas pour qu'on cherche à me convertir à un AUTRE. Quant aux économies de bouts de chandelles ... Je ne parle pas ici d'un certain Pascal qui coûte plus de 1000€.

J'ai acheté le livre sur la question de chez Publitronic (déjà plus de la moitié du prix du BasCom), j'ai fait des essais et conclu que C(++) n'est pas pour moi.

Je suis habitué sous Windows à Delphi et VB(A sous Excel) et je n'ai AUCUNE envie d'en changer pour des questions de MODE. De toute manière le SEUL langage vraiment natif des microprocesseurs/contrôleurs est l'assembleur, j'en ai même fait il y a déjà plus de 30 ans sur C64/6502.

C'est comme si je posais une question sur Windows et qu'en retour on essayait de me "convertir" au pingouin ou au Mac !

Quant à mon OS, c'est W7 Pro x64. Il faut aussi dire que la dernière version de WinAVR date déjà un peu, à tel point que certains se demandent s'il est encore suivi ...

Au passage j'ai remarqué un peu tard que quelqu'un avait déjà posé la même question sur ce forum, mais en Anglais ... il y a plus de 4 ans ! Preuve que je ne suis pas tout seul.

Si si faut virer Windows et passer sur unix... :slight_smile:

Plus sérieusement

Le C ou C++ n'est pas une mode. C'est le langage dominant de programmation proche du matériel et les outils de la chaîne de production logicielle sont optimisés sur unix et très tournés vers le C

chacun fait comme il veut - bascom pourquoi pas, c'est un compilo pour avr et Le langage a la syntaxe du basic + des fonctions dédiées aux microprocesseurs. Vous resterez donc en territoire syntaxique connu mais vous avez un effort conséquent à faire sur la liste des fonctions spécialisées (gestion des composants tcp-ip, I2C,...) et il apporte un mode "simulation"

Cela dit il y a des points négatifs:

  • c'est un outil confidentiel, il n'y a pas qu'un seul basic, chacun des outils à ses spécificités
  • ce n'est pas un investissement dans des compétences importantes pour le marché (si c'est dans vos objectifs)
  • pas d'effort de marché sur l'optimisation du compilateur et code généré (donc des performances)
  • Le forum ne pourra rien pour vous, communauté confidentielle en anglais ou allemand
  • vous ne pourrez pas utiliser les milliers de librairies et codes dispos donc difficile de jouer avec tous les capteurs et shields spécifiques du marché. Vous êtes dépendant des fonctions existantes et sinon faut tout développer vous même ou récupérer du code d'autres utilisateurs avec pb de conflits de zone d'étiquettes par exemple (namespace)
  • pas d'approche objet donc logiciels un peu plus complexes à déveloper, structurer, maintenir - tout dépend donc de votre ambition pour vos projets
  • vous vous retrouvez bien sûr confiné au monde des processeurs AVR, pas d'ESP8266, pas de M0, ou MKR1000 etc.

Mon avis tout personnel c'est que passer au C depuis vos connaissances Basic n'est pas super compliqué intellectuellement et l'effort sur l'apprentissage des fonctions des librairies standard sera équivalent à celui que vous aurez à fournir pour les fonctions dédiées aux couches basses des AVR.

Passer ensuite au C++ est un peu plus de travail conceptuel (comprendre l'approche objet) mais vous n'êtes pas obligé de devenir un pro du C++ pour utiliser les librairies, juste savoir comment on crée un objet et appelle une fonction dans l'objet (genre je crée un objet horloge RTC et je demande ensuite à mon horloge quelle heure il est. C'est inclure une librairie dans l'outil, et 2 lignes de code. Lisez le code basic pour DS1307 visible que vous devrez avoir à intégrer - toute la gestion I2C n'est dans aucune abstraction )

Donc si vous voulez vous y mettre sérieusement je vous recommanderais aussi d'investir votre temps sur le C, votre retour sur investissement sera bien meilleur à tout point de vue.

Mais bien sûr c'est votre choix - Vous êtes sur le forum arduino, les participants que vous interrogez sont plus experts sur les outils qu'ils utilisent et donc nos réponses sont sans doute peut être un peu biaisées, j'ai essayé d'être le plus juste possible

Salut
Il y a les pyboards sur lesquels on développe en python...

Ici, tu trouveras sans doute assez peu de réponses à ton problème. La grande majorité des personnes développe en C la différence étant plutôt l'environnement de développement IDE Arduino ou IDE tiers.

Si tu n'es pas attaché plus que ça à la plateforme Arduino il y a:
La pyboard, comme dit ci-dessus, qui utilise micro-python https://micropython.org/ C'est pas mal, il faut évidemment aimer python. L'avantage c'est que tu peux développer en interactif dans une console et télécharger ton code en Flash. Le forum est assez actif.

Espruino qui utilise Javascript http://www.espruino.com/. Même remarques que pour micro-python concernant le langage et le forum.

Si tu tiens absolument au basic, des personnes on porté Basic sur la plateforme Arduino mais là c'est interprété donc les performances sont plus limitées:

Il y a d'autres implémentations de Basic mais je n'ai pas les liens sous la main.

En effet dans ce cas je pense qu'il vaut mieux oublier l'Arduino.
L'ESP8266 est programmable en LUA (bon j'ai abandonné vu le manque de stabilité du truc, mais c'est un langage sympa).
Sinon le Raspberry Pi est programmable en...tout ce qu'on veut :slight_smile: tout en offrant des GPIO. C'est une bonne solution quand on n'a pas besoin de grosses perfs sur les GPIO. L'API en Python est vraiment très simple.

Sinon sur l'Arduino, pour "faire du C sans faire du C" y'a les trucs genre Ardublock ou Minibloq.

Lorsque j'ai commencé la programmation,vers les année 1978, c'était le Pascal pur, puis je suis passé au turbo Pascal, puis au Pascal Objet et enfin à Delphi : que du bonheur. De temps en temps je me tournais vers le C, mais cette syntaxe me donnait des boutons, et d'ailleurs, m'en donne toujours.

Mais il faut se résoudre à la réalité : le monde de l'Arduino : c'est du C, C++.

Si vous voulez continuer avec du Pascal, vous aurez à vous créer tout un tas de bibliothèques ou bien alors de les traduire du C, C++ au Pascal, Pascal Objet, ce qui nécessitera forcément des connaissances en C, C++ : autant les utiliser directement.

Petite digression :j'ai aussi voulu programmer dans l'environnement Android avec du Pascal ... pfouuu .. j'ai aussi migré au Java.

Fondamentalement, qu'est ce que j'aurais aimé continuer à programmer en Pascal. Mais faut avouer que c'est énormément de travail, rien que pour ce faire plaisir.

Et puis, si vous alliez vivre dans un pays avec une langue totalement étrangère à la votre, n'essayeriez-vous pas d'apprendre cette langue plutôt que d'utiliser un traducteur de langue ?

Allez, bienvenu dans le monde Arduino et bon courage, quelle que soit l'option que vous aurez choisie.

Cordialement.

Pierre

La question initiale se rapporte à l'expérience que l'on pourrait avoir du Bascom vis-à-vis de la programmation d'un Arduino. La mienne étant inexistante sur ce sujet, je n'en parlerai donc pas.

CEPENDANT, il me semble que la question sous-jacente est plutôt celle d'un débutant sur Arduino qui se dit, avec une certaine angoisse, que ça va être difficile pour lui de porter ses savoir-faire de programmeur en Delphi et VB(A sous Excel) vers autre chose qui s'appelle C/C++.

D'abord, pour paraphraser ChPr, Welcome on board !

Ensuite il faut rappeler l'intérêt de démarrer en C/C++ sur Arduino, c'est la gigantesque montagne de tutoriels qui existent, dont certains très bien faits pour des niveaux débutants comme pour des niveaux très avancés, ET un forum très fréquenté par des milliers d'aficionados et très utile.

DONC il me semble que le choix d'un langage de programmation pour Arduino doit d'abord se faire en fonction de la quantité et de la qualité de l'information disponible sur le sujet.

Dans C/C++ il y a C, qui ne pose aucun problème insurmontable pour qui a déjà programmé dans un autre langage, y compris en Basic. Ensuite, les programmes (sketchs) que l'on peut développer soi-même peuvent être à 99% du C, et se contenter d'inclure des commandes issues de librairies comme Serial.println("blabla") qui est une utilisation de la "méthode" (fonction) println de la "classe" Serial développée par d'autres et incluse dans l'IDE.

Les tutoriels pour démarrer sur Arduino sont légion, et celui-ci (certes en anglais) me parait très bien :
http://www.electricallab.gr/e-yliko/arduino/1009-c-programming-for-arduino/file

Et puisque tu nous dis avoir déjà tâté de l'assembleur dans ta jeunesse, l'IDE permet d'inclure de l'inline assembleur dans du C/C++ dans des portions de code qui doivent pédaler très vite, voire d'inclure un fichier développé totalement en assembleur.

Merci à tous mais je n'ai pas besoin de bibliothèques, seulement de gérer les ports parallèles dans une boucle "à l'ancienne", avec peek et poke comme aux premiers temps du PET2001 (1979 pour moi), ou en définissant des variables ad-hoc, et uniquement avec des entiers, même pas de virgule flottante. Donc pas de I2C, TCP/IP, etc, juste l'horloge en temps réel et des nombres aléatoires, et là BasCom "suit" ... Quant à diffuser quoi que ce soit, mes utilisations sont tellement spécifiques qu'elles n'intéresseront personne. Enfin, j'ai 63 ans et demi, un peu tard pour faire carrière dans l'informatique. :slight_smile:

Bref, j'en conclus que BasCom n'est pas si mauvais pour ce que je compte en faire. Et dans le pire des cas il y a aussi un assembleur intégré.

Quant à la notion de réalité de la situation, si nos ancêtres avaient pensé comme cela on serait encore à l'époque féodale ... >:( )

Topic considéré comme résolu.

lemiceterrieux:
... Enfin, j'ai 63 ans et demi,

:slight_smile: Moi, j'en ai 71 et même si je ne veux pas faire carrière, j'en apprends tous les jours.

Cordialement.

Pierre

@lemiceterrieux
Si vous voulez programmer en Basic, je ne pense pas qu'Arduino soit la meilleur solution.
j'ai longtemps utilisé les PicBasic, qui sont d'une grande simplicité d'utilisation et programmables en Basic avec les peek & les poke.
http://www.lextronic.fr/R5213-modules-picbasic.html

@phm78

Une différence fondamentale est que les PicBasic ont un interpréteur alors que Bascom produit du code compilé natif.

phm78:
@lemiceterrieux
Si vous voulez programmer en Basic, je ne pense pas qu'Arduino soit la meilleur solution.

je ne suis pas forcément d'accord, c'est un raccourci. Bascom est un compilateur (pas interprété) qui est vraiment centré sur processeur AVR. donc il fait un boulot tout à fait correct pour cela.

Dans le contexte tel que décrit par @emiceterrieux de besoins extrêment limités, pas d'ambition particulièrement challenging sur ses programmes etc, alors c'est tout à fait jouable, avec les restrictions de ma réponse #3. mais Bascom vous permettra de vous amuser sans pb pour ce que vous voulez faire. Donc si ça vous fait plaisir, faut pas vous gêner!

Personnellement je trouve que le C et le C++ ou Java marquent leur age, que les langages plus modernes comme Swift sont bcp plus avancé dans la capacité d'expression et la rigueur qu'ils imposent, mais que dans la vie il faut être ouvert à tout.

Je reste partisan de se poser la question de quel est l'outil (au sens large) le plus adapté pour une tâche donné plutôt que de se dire je sais manier un marteau est-ce que je ne pourrais pas l'utiliser avec des vis plutôt que d'apprendre à utiliser un tournevis...

Le langage de programmation une fois qu'on a pigé l'objet et le non objet (si je mets à part quelques langages amusants, temps réel etc) ça reste une affaire de syntaxe - on s'y retrouve assez vite. Le plus long reste toujours ce qui est autour du language, les bibliothèques et frameworks dédiées. ce sera le cas aussi avec Bascom... il y aura une courbe d'apprentissage.

Je reviens doucement à la programmation apres de nombreuses années d' absence pourtant ma formation de base est informaticien industriel il y a plus de 30 ans et meme n'ayant pas été un grand fan du C/c++ je l' utilisais à l' époque et maintenant pour l arduino ca marche plutot bien.
Pour le reste j' utilise le python sur rpi.

Je voudrais demander a JML en quoi ca consiste le swift? je ne connais pas mais ca fonctionne sur arduino?

Non c'est pas pour ARDUINO - c'est un truc qu'Apple a mis dans le domaine public il y a un ou deux ans et qui est en train de monter en usage côté appareil mobiles et serveur

C et Java sont en recul (mais restent dominants) alors que VB, Objective C ou Swift bien que tres recent (2 ans) est déjà liste des langages utilisé et continue à progresser et ça fait toujours plaisir de voir l'assembleur aussi demandé :slight_smile:

Et si vous regardez au niveau de la demande du marché salaires des développeurs pour les langages, objective C et Swift sont bien rémunérés (mieux qu'un programmeur c ou c++)

J'aime beaucoup l' assembleur ca me rappelle ma jeunesse mais j' avoue ne pas oser m y remettre à mon age.
Je vais deja continuer à jouer un peu avec le php et python coté rpi et le C sur arduino :slight_smile:

Deja que ma liaison i2c ne fonctionne plus depuis mon dernier upgrade sur rpi plus moyen de lui faire lire 4 pauvres float venant de l arduino ca commence a m enerver si quelqu un a une idée je suis preneur.

CelticLord:
Deja que ma liaison i2c ne fonctionne plus depuis mon dernier upgrade sur rpi plus moyen de lui faire lire 4 pauvres float venant de l arduino ca commence a m enerver si quelqu un a une idée je suis preneur.

Des détails ?

Une différence fondamentale est que les PicBasic ont un interpréteur alors que Bascom produit du code compilé natif.

Oui merci j'avais compris.
Je ne vois pas bien pourquoi vous posez une question ici puisque vous rejetez radicalement toutes les approches proposées pour vous aider.
Si vous voulez programmer Arduino en Basic, prenez Bascom et éclatez vous avec peek & poke...:slight_smile:

J-M-L a oublié de dire que Swift ne tourne ni sur Windows, ni sur Linux et que ce n'est pas prêt de changer.