Choix d'un langage de programmation

Vous venez de déballer votre Raspberry Pi et vous vous posez des questions ? C'est ici que ça se passe !

Modérateur : Francois

Lodwig
Messages : 9
Enregistré le : jeu. 26 déc. 2019 19:21

Choix d'un langage de programmation

Message par Lodwig » sam. 28 déc. 2019 09:16

Bonjour,

Je me pose la question d'un choix de langage de programmation relativement polyvalent. En effet, je souhaite réaliser un truc (application?) qui se situe à la croisée des chemins entre le monde de la domotique et celui de l'internet des objets (IoT).

Un peu d'histoire :
Il y a une vingtaine d'année, j'ai appris les langages web PHP, HTML et CSS parce que c'était la grande envolée de ces technologies. Je m'en suis servi pour réaliser quelques sites web à l'époque (depuis quelque chose qu'on appelerait blog aujourd'hui au vu des moteurs actuels jusqu'a des jeux en ligne)
Les études passant par la, ces technologies sont largement passées au second plan (voir nettement plus loin) au profit de java, matlab (scolarité, donc largement sur le déclin) et VBA (mode professionnel, toujours d'actualité)
J'ai récemment voulu me simplifier la vie en développant un site me permettant de numériser mes recettes de cuisine (petite passion) et surtout de gérer les menus et les listes de course nécessaire. Je me suis alors rendu compte que la logique de programmation était encore la, mais qu'une bonne partie de mes souvenirs étaient basées sur des fonctions obsolètes (au revoir mysql_ bonjour PDO). J'en ai donc profité pour me remettre a jour (un peu) et surtout me rendre compte que les évolutions en terme de langage et de pratique ont creusés un joli fossé enter mes connaissances et le monde actuel...

Je me rends compte également qu'en fonction de mes besoins (estimés) futurs, le langage PHP risque de vite montrer ses limitations parce que je souhaites travailler sur des choses plus dynamiques que des interactions clients-serveurs dans le sens humain-Site web.

La question que je me pose est donc celle ci (en fait, elle évolue avec la rédaction de ce topic) :
PHP peut il me permettre d'arriver à quelque chose de satisfaisant ? J'avoue avoir des doutes, peut être lié au fait que je ne suis pas retourné suffisamment loin dans le langage, d'ou :

Quel langage de programmation pourrait s'avérer suffisamment versatile que pour générer en même temps des GUI, tout en permettant d'avoir des fonctions dynamiques en backend permettant d'interroger d'autres sources d'information ?

Pour information, m'intéressant a la domotique, je suis également en train de m'intéresser a l'embarqué en jouant avec des Arduinos (sur une station météo pour le moment et après de petits robots pour me faire la main)

Les langages que j'ai trouvés qui semblent pouvoir répondre à la demande sont :

Python : parce que dès qu'on parle raspberry, on finit par parler python ... J'y ai acquis quelque base en programmant/suivant des tutos sur un bot pour twitter (lié a mon application de cuisine)

NodeJS : je suis tombé a quelques reprises sur le topic lui étant dédié sur ce forum. J'ai peur que comme PHP, ce langage soit trop orienté web (et peur de lancer un troll sur cette phrase). J'avoue ma méconnaissance (quasi) totale sur le sujet.

C: Complexe mais justement séduisant par cette complexité qui permet d'être polyvalent. Il pourra me servir également sur l'arduino.

J'ai également lu le post de Flexter (viewtopic.php?f=3&t=5622) qui semble avoir un questionnement proche du mien, mais je n'ai pas voulu "polluer" son topic par le mien

Merci d'avance pour vos réponses. (et pardon pour la tartine)

cbalo

Re: Choix d'un langage de programmation

Message par cbalo » sam. 28 déc. 2019 11:46

Bonjour et bienvenu.

Pour moi, php n'est pas mort, loin de là, il y a mille possibilité de lui fournir de la réactivité client (ajax/ javascript etc...)
Je l'utilise depuis 15 ans et je continue.

VBA : c'est préhistorique et abandonné à part quelques PME et autre associations qui ne peuvent pas investir dans le développement de vrais applications.

VB : c'est comme le COBOL, ça reste parce que dans le mode professionnel, il y a des milliers de grosses appli qui tournent avec et que ça coûterait trop cher pour les réécrire ou migrer vers .Net
VB est remplacé par .net et un membre du forum a fait un super tuto pour installer l'environnement de dev sur rasbperry et faire son premier dev, tu trouveras ce tuto sur le forum.

Mais passons :

En fait tu as déjà trouvé la réponse à ta question :
Si tu veux un langage web réactif moderne : => node.js est un bon choix et tu l'as bien compris c'est pour le web c'est tout.
Si tu veux un langage moderne compatible windows/linux pour faire des programmes en lignes de commande ou des services ou une application GUI : tu as trouvé aussi : c'est python.

Saches aussi que le Pascal objet permet la même chose et même mieux !!! et ça existe depuis quand déjà le pascal ? les années 1970 non ?) L'environnement de dev gratuit de prédilection est Lazarus (existe sous windows et linux j'en fais sans discontinuer depuis 1986 !). L'environnement pro est Embarcadero Rad Studio et avec ça tu fais aussi ppplications GUI, sites web les plus modernes qui soient, applications pour IOS, Android, Mac Linux bref ça fait tout sauf le café.

Il y a d'autres possibilités mais tu avais bien identifié les 2 plus usités en ce moment.

Sur Arduino tu n'auras pas le choix : ce sera une sorte de C/C++ (pas tout à fait le vrai mais presque), bref pas trop compliqué à utiliser.

Lodwig
Messages : 9
Enregistré le : jeu. 26 déc. 2019 19:21

Re: Choix d'un langage de programmation

Message par Lodwig » sam. 28 déc. 2019 13:56

Bonjour Cbalo,

Je ne pensais pas exprimé l'idée que PHP était mort, loin de la, ca reste un chouette langage mais limité dans ses applications par rapport a mes projets actuels (et/ou futurs).

VBA : Je ne suis pas d'accord avec toi sur ce point. Je trouve que c'est un axe de simplification/automatisation qui n'est pas dépassé pour des actions de type bureautique (ce pourquoi je l'utilise), par contre, de fait, je n'imagine pas avoir a monter de projet conséquent sur cette base et, la, mon avis rejoint le tien qui est qu'il y a franchement des langages plus sympa pour se faire.

Je tiens a préciser que si j'ai beaucoup parlé informatique/programmation dans ce message, ma formation principale est celle de (bio)chimiste et que c'est juste mon coté nerd qui me fait éprouver un intérêt prononcé pour tout ce qui touche a la programmation.


C'est pour le genre d'information que tu m'as fournis dans ton post que j'ai créé ce topic, donc merci.
NodeJS : je laisse tomber dans un premier temps, j'y reviendrais peut être dans le futur.

Je rajoute Pascal à ma short list. Je ne l'avais pas retenu car pour moi, néophyte, c'était un tout vieux langage de programmation qui ne se maintenait que par inertie ... Il souffre par contre d'un manque criant de présence qui fait que je n'ai pour ainsi dire plus entendu parler de lui en dehors de cursus scolaire...

Les bouquins que j'ai compulsés mentionnent tous python, quelques uns daignent mentionner C et bash (sans le nommer et être explicite sur ses possibilités) et c'est tout ...

Encore merci pour cet échange.

cbalo

Re: Choix d'un langage de programmation

Message par cbalo » sam. 28 déc. 2019 14:27

Le shell bash restera toujours car c'est disponible sans aucune installation (fournis avec l'OS)
Tous les administrateurs système, réseaux ou DBA l'utilisent.
C'est du script (donc non compilé)
Inconvénient : plutôt lent
Sensible à l'environnement (ksh is not sh and is not bash)
Mais indispensable pour certaines tâches

Le C : hyper rapide compilé tous les environnements Linux possèdent d'office un compilateur C (gcc)
Mais je reconnais que pour faire du C juste avec vi (ou nano) il faut être un vieux briscard.

Python est un bon choix car :
Il est interprété (comme le shell) mais bien plus rapide que le shell (mais moins que le C)
Un paquet de bilitothèques gratuites sont disponibles sur internet, en général facile à utiliser.
Il sait tout (ou presque) faire, même si c'est moins pratique que dans un vrai IDE dans on fait un GUI.
Ce qui est chiant c'est cette saloperie de règle d'indentation (certains éditeurs, je ne sais pourquoi des choix décident que la touche tab ne fait plus une tabulation mais 5 espaces du coup ==> syntax error, pire le copier/coller d'une tabulation fait 5 espaces a lieu d'une tabulation).
Autre problème : la gestion du codage des caractères (même dans les commentaires)

Au départ l'environnement était fiable maintenant, avec la multitude de versions de python, j'ai remarqué qu'il devient parfois impossible d'exploiter une bibliothèque dans une version de python (ex : essais d'utiliser Pillow sur un python 3.4.x... si tu y arrives dis moi comment tu as fait)

Avatar du membre
vague nerd
Modérateur
Messages : 1473
Enregistré le : mar. 14 oct. 2014 11:42
Localisation : France !

Re: Choix d'un langage de programmation

Message par vague nerd » sam. 28 déc. 2019 18:40

Bonjour.
Pour le côté versatile, effectivement, python semble bien indiqué.
Les grosses machineries comme java ou .net font très bien l'affaire (mai c'est plus lourd).

Pour ma part, j'ai un robot un peu évolué qui tourne en java. Il y a(vait?) une librairie qui permettait de bien s'interfacer avec le pi...
Voila pour mon grain de sel, je sors !
Cdt.
Cordialement,

Vague Nerd

Lodwig
Messages : 9
Enregistré le : jeu. 26 déc. 2019 19:21

Re: Choix d'un langage de programmation

Message par Lodwig » sam. 28 déc. 2019 18:44

J'avoue qu'une part de mes interrogations vient d'une certaine psychorigidité qui fait que je n'aime pas trop cette histoire d'indentation pour organiser le code. Aussi bizarre que ca puisse paraitre j'aime bien avoir mes accolades pour structurer mon code même si je l'indente également.
Egalement la gestion des chartsets, je trouve ca relativement lourd quand ca génère des erreurs pour pas grand chose.

Son gros avantage est sa popularité actuelle qui fait qu'il y a beaucoup de ressource disponible qui fait que tant en terme de fonctionnalité que dans la résolution d'erreur, on trouve rapidement ce qu'on cherche.

En contrepartie, C/C++/C#, j'ai de mauvais souvenir d'incompréhension totale dans les pointeurs qui m'avait fait abandonner l'apprentissage.

Merci pour cette discussion très enrichissante.

destroyedlolo
Raspinaute
Messages : 1585
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Choix d'un langage de programmation

Message par destroyedlolo » sam. 28 déc. 2019 23:03

Salut,

Avant toutes choses, si tu veux faire de l'IOT, un jour ou l'autre tu bossera sur des ESP8266 ou ESP32 dont les environnements se rapprochent de l'Arduino : il y a BEAUCOUP de langages. Les plus connu étant évidemment le C++ avec l'IDE "qui va bien" et le Lua, mais tu peux faire aussi de C classique (par exemple, lorsque le C++ devient trop lourd), du python, voir meme du BASIC si ca t'amuse.

Je fais pas mal de trucs dans le domaines que tu vises (tu vises domotique et Iot) et parmi les langages que je connais, j'ai taillé dans le vif histoire de me focaliser que sur un petit nombre et vraiment les maîtriser.

C/C++ : sa syntaxe est la base de beaucoup d'autres, et le connaître est un atout. Ca devient même indispensable lorsque l'on veut bidouiller le kernel à cause d'un driver pourri ou créer des démons (on peut le faire avec n'importe quel langage, mais pour moi, plus c'est léger, mieux s'est).

Il me fallait aussi un langage de scripting me permettant de modifier très rapidement ma domotique si necessaire. Après pas mal de tests, j'ai lancé mon dévolue sur Lua. En plus d'etre très léger et performant, il a l'énorme avantage de pouvoir etre très facilement intégré (embedded) dans d'autres programme en C(++) ou autres.
Du coup toute ma domotique est faite à base de démons en C avec des scripts utilisateurs en Lua et ca marche très bien.
Excellent langage une fois maîtrisé ... mais les bon tuto sont rare et la docs du genre barbante. Mais le jeu en valait la chandelle.

{b]NodeJS[/b] est bien pour faire des applies communicantes.

Par contre, j'ai rapidement laissé tomber :

Python : très lourd et très lent par rapport a Lua. Et lorsque j'avais regardé, pour l’intégré dans une autre appli, c'était très complexe. Ca a peut etre changé.

Java : si je suis obligé de l'utilisé dans le monde pro, il n’empêche que c'est lourdingue.

Bref ...
Clairement, hormis si tu bosses dans les jeux vidéo ou une boite qui fait de la domotique, Lua ne te servira pas a grand chose.
N'empeche qu'il rempli bien sa tache et peut etre une alternative :D

PS : Je suis l'exemple même du vieux je-ne-sais-quoi vu que je développe toujours avec VIM + Makefile. Les IDE me gavent, lourd et in-fine, on ne contrôle plus finement ce que l'on fait et je ne les utilisent que lorsque je n'ai pas le choix sur des outils pro.
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

cbalo

Re: Choix d'un langage de programmation

Message par cbalo » sam. 28 déc. 2019 23:11

Salut destroyediolo, bienvenu dans le monde des vieux briscards.
Mon environnement de dev c'est nano.
Mon compilateur préfère gcc.
Et en plus 10 ans d'expérience en Cobol-CICS -DL1.


Envoyé de mon SM-J710F en utilisant Tapatalk


ChPr
Messages : 40
Enregistré le : ven. 29 mars 2019 14:36

Re: Choix d'un langage de programmation

Message par ChPr » lun. 30 déc. 2019 17:47

Bonjour,

J'ai commencé avec du Pascal sur disquette de 5.5" et calculateur (MICRA de mémoire en 1978) de 20 ko (je dis bien ko et pas Mo) de mémoire vive.

Puis Turbo Pascal sur PC, s'en est suivi le fameux Delphi et maintenant Free Pascal et Lazarus.

Entre deux j'ai fait du Html, php, Android et du c, C++ sur Arduino (leurs pointeurs : c'est gavant)

J'avoue que je reviens à Lazarus avec plaisir car on peut développer des applications visuelles très aisément. Avec quelques librairies, sur Raspberry, on peut communiquer avec le GPIO et les différents bus I2C, SPI, One-wire, ...

j'aime ce langage car il est très structuré. Ce peut être une contrainte, mais cela évite des plantages difficiles à comprendre.

En plus, comme il le disent dans leur Pub : "on développe une fois et on compile sous Windows, Linux (dont Raspberry).

Par ailleurs, même si je développe pour mon Raspberry maintenant, on trouve aisément de l'aide sur les forums Lazarus.

Cordialement.

Pierre

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Choix d'un langage de programmation

Message par Artemus24 » mar. 31 déc. 2019 20:00

Salut à tous.
Lodwig a écrit :Je me pose la question d'un choix de langage de programmation relativement polyvalent.
Ca n'existe pas un langage polyvalent.
Lodwig a écrit :Python : parce que dès qu'on parle raspberry, on finit par parler python ...
J'utilie beaucoup la raspberry, mais je ne fais strictement rien en python. Attention au généralité !
Lodwig a écrit :NodeJS : je suis tombé a quelques reprises sur le topic lui étant dédié sur ce forum. J'ai peur que comme PHP, ce langage soit trop orienté web.
Vous confondez NodeJS et Javascript. Si Javascript est totalement orienté web, on peut très bien se servir de NodeJS pour faire autrement qu'un serveur web.
Je le conseille !
Lodwig a écrit :(et peur de lancer un troll sur cette phrase). J'avoue ma méconnaissance (quasi) totale sur le sujet
Dans ce cas là, on s'abstient de tout commentaire.
Lodwig a écrit :C: Complexe mais justement séduisant par cette complexité qui permet d'être polyvalent.
Il n'a rien de polyvalent car c'est un langage qui est plus destiné à faire du système que de la gestion.
Mais si je dois vous conseiller un langage, apprenez le 'C/C++'.
Je ne considère pas que ce sont deux langages différents, mais le même avec une évolution.

Le choix du langage dépend de ce que vous désirez faire au final.
Si je dois faire une application de gestion, le mieux est encore le cobol.
Si je dois faire une site web, je préfère de loin le php.
Si je dois m'occuper d'aspect système, rien ne vaut, surtout sur une raspberry, d'utiliser le 'c'.
Voire aussi les script bash à l'identique du JCL pour le cobol.
cbalo a écrit :Tous les administrateurs système, réseaux ou DBA l'utilisent.
Non, ce n'est pas vrai.
J'ai fait du perl car c'est bien plus puissant comme langage.
Malheureusement, on ne trouve pas le perl partout et c'est bien dommage.
En tant que DBA, j'utilise sous windows les scripts batch. Je n'ai jamais eu besoin de plus puisque j'ai besoin que de faire de l'habillage.
Sous debian, oui, j'utilise beaucoup bash. A une époque (UNIX) je faisais du csh et du korn-shell, mais j'ai tout oublié.
Attention au généralité !
Lodwig a écrit :J'avoue qu'une part de mes interrogations vient d'une certaine psychorigidité ..
Ouh là là, être psycho-rigide et faire de l'informatique ne vont pas du tout ensemble.
Il faut savoir s'adapter à toutes les situations que vous rencontrez.
On ne vous demande pas d'aimer tel langage, mais de l'utiliser pour résoudre un problème.
Il arrive que le langage ne soit pas du tout adapté à ce que vous cherchez à faire.
Vous devez quand même l'utiliser ! Pourquoi ?
Imaginez un seul instant, une grosse application écrit dans une centaine de langage ???
C'est l'usine à gaz et bonjour la maintenance.
Lodwig a écrit :Egalement la gestion des chartsets, je trouve ca relativement lourd quand ca génère des erreurs pour pas grand chose.
Je ne vois pas où est le problème. On ne vous demande pas d'utiliser une centaine de charsets différents.
J'utilise que l'ISO-8859-1. Pourquoi ? Parce que j'écris en français ou en anglais et rien de plus.
C'est un charset qui occupe un octet par caractère, à l'inverse de l'UTF-8 qui peut utiliser quatre octets par caractères.
Lodwig a écrit :En contrepartie, C/C++/C#, j'ai de mauvais souvenir d'incompréhension totale dans les pointeurs qui m'avait fait abandonner l'apprentissage.
N'ayez pas peur, vous n'êtes pas le seul, j'ai encore des difficultés aussi.
destroyedlolo a écrit :C/C++ : sa syntaxe est la base de beaucoup d'autres, et le connaître est un atout.
Comment faire du système sans utiliser du 'C/C++' ?
destroyedlolo a écrit :Python : très lourd et très lent par rapport a Lua.
Je n'aime pas les langages interprétés. Attention, j'ai dit langage et non les scripts.
Parce qu'il sont très lents et ne sont pas temps réel.
destroyedlolo a écrit :Java : si je suis obligé de l'utilisé dans le monde pro, il n’empêche que c'est lourdingue.
C'est redondant avec le 'C/C++'. Selon moi, aucun intérêt.
destroyedlolo a écrit :PS : Je suis l'exemple même du vieux je-ne-sais-quoi vu que je développe toujours avec VIM + Makefile.
Je suis aussi de la vielle école. J'utilise encore VI et je fais des makefile pour chaque application.
Et comme toi, je déteste tout ce qui est surcouche, soi-disant pour se simplifier la vie.
Je désire travailler au plus près de la machine.
cbalo a écrit :Et en plus 10 ans d'expérience en Cobol-CICS -DL1.
Que dix ans ? J'ai fait toute ma carrière professionnelle dans les SSII. Surtout gros système BULL et IBM.
J'étais chez de projet et en fin de carrière, je suis devenu administrateur DBA (pas architecte).
En fait, je faisais beaucoup de maintenance coté exploitation.
ChPr a écrit :J'ai commencé avec du Pascal sur disquette de 5.5" et calculateur (MICRA de mémoire en 1978) de 20 ko (je dis bien ko et pas Mo) de mémoire vive.
J'ai débuté sur des iris 80, solar 16-40, pdp-11. Cela ne nous rajeunit pas.
Micra, c'est une voiture, comme la Nissan Micra. Ne serait-ce pas plus Mitra (CII) ?
Les disquettes, c'est le format 5 pouces 1/4 que l'on nomme aussi floppy disk. Et plus récemment, les disquettes 3 pouces 1/2.
Les disquettes 5 pouces 1/2, ca n'existe pas.

La première fois que j'ai fait du pascal, il s'agissait de la version UCSD sur Apple II dans les années 80 (UCSD = Université Californie San Diego).

@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

Répondre

Retourner vers « Débutants »