Quel langage de programmation choisir ?

Ou comment chosir un langage de programmation adapté à ses projets

a marqué ce sujet comme résolu.

Tout le monde se secoue ! :D

J’ai commencé (il y a 6 heures) la rédaction d’un article au doux nom de « Quel langage de programmation choisir ? » et j’ai pour objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limites pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l’adresse suivante :

Merci !

EDIT/ L’article étant toujours en état d’écriture j’attend des remarques/améliorations pour gagner du temps. Merci!

+0 -1

Je suis d’accord avec @motet-a. Ça manque un peu d’aspect technique.

Ce qui est marrent aussi (ou pas) c’est que tu parle de faille de sécurité pour le web mais pas pour les softs. À croire que lorsqu’on développe un logiciel on se fiche des failles, or c’est tout aussi important.

De plus tu ne parle pas d’aspect tel que les secteurs « critique », j’entend par là des secteurs comme l’automobile, l’aeronautique, le spatial, nucléaire etc. Qui au passage utilise généralement le langage de programmation Ada (ou SPARKS). De mon point de vue, Ada est également un bon langage de programmation pour apprendre à programmer car il force l’utilisateur à adopter de bonne pratique dès le début. En revanche on lui reprochera d’être resté dans l’ombre car pas popularisé par de grosse firme tel que Google et autre. Le pauvre, il c’est fait écrasé par C++ sortie au même moment à l’époque.

Petite coquille également ici :

lequel les fichiers sources ont étés convertis sous forme de binaire (une .dll ou un .exe sous windows, un .so et un éxecutable sous linux) c’est à duire une suite de 0 et de 1 uniquement compréhensible par la machine pour un système d’exploitation donné (par exemple linux ou windows).

Tu ne parle pas non plus des métiers de la recherche, même si là c’est pas toujours de la programmation au sens « programmation » du terme X).

EDIT : ça serait bien de cité tes sources aussi (pour le graphe de popularité des langages).

+0 -0

Mouais… Même en ajoutant un aspect technique, je ne suis pas sûr qu’un article puisse vraiment servir de phare dans cet océan de langages, technologies, librairies, etc.. Pour moi, chaque projet a ses spécificités, et tu ne pourras en capturer qu’une partie tellement mineure dans ton article que tu pourrais rapidement méconduire quelqu’un.


Je n’aurai clairement pas mis Java aux côtés de C/C++ en parlant des langages compilés/interprétés. Surtout que ça ne génère pas d’exécutables. Certes, il y a une étape de compilation, mais il n’est pas compilé dans le même but que les autres. Pense à apporter des précisions.


Zuckerberg n’est pas un exemple pour tout ceux qui veulent faire du développement. Les débuts de Facebook et sa paternité ont étés un peu houleux diront nous :P

  • 2ème phrase : créeR
+2 -0

Ben la comparaisons entre langages dits “compilés” et langages dits “interprétés” est à mon avis de moins en moins pertinente de nos jours. Déjà parce qu’avec des technologies comme Java, personne n’est d’accord ; ensuite parce quasiment tous les interpréteurs compilent (c’est juste qu’ils visent généralement un assembleur de haut niveau — pour une VM quoi — et que ça ne se voit pas forcément), et enfin parce qu’il y a de plus en plus de langages comme Elixir qui fonctionnent aussi bien dans un REPL que compilés en langage machine.

À mon avis c’est beaucoup plus intéressant de comparer les langages en parlant de leurs systèmes de types, de leurs façons de voir la concurrence et le parallélisme, de leur simplicité (ou complexité), etc.

+4 -0

Salut,

L’élaboration d’un document présentant quel langage de programmation choisir est une vieille chimère. Il y a tellement de raisons intrinsèques et circonstancielles qui vont conduire au choix de tel ou tel langage pour tel ou tel projet que tenter de débroussailler ça est un peu comme de vouloir couper les têtes de l’Hydre de Lerne au couteau à beurre. Même en se restreignant à un seul domaine d’application (sauf peut être ceux qui présentent un forçage circonstanciel énorme), la tâche est colossale pour que le résultat puisse être potentiellement utile à quelqu’un.

Par ailleurs, vouloir décrire une panoplie de langage qui offre une vue d’ensemble du paysage technique est aussi un fantasme si l’on ne se fixe pas une ligne directrice. Par exemple, il serait censé de vouloir présenter un petit ensemble de langage permettant d’explorer les différents paradigmes de programmation, ou encore un ensemble de langage permettant de se mettre à faire du web. En revanche, un ensemble des langages dans lesquels piocher pour accomplir n’importe quel projet va rapidement devenir un pot pourri dépareillé dans lequel il sera difficile de s’y retrouver…

Tout ça pour dire que tu poursuis une utopie1, et que je pense qu’il serait plus productif de viser quelque chose de plus précis si tu veux produire un texte qui puisse être utile aux autres.


Sinon sur ce point :

Je n’aurai clairement pas mis Java aux côtés de C/C++ en parlant des langages compilés/interprétés. Surtout que ça ne génère pas d’exécutables. Certes, il y a une étape de compilation, mais il n’est pas compilé dans le même but que les autres. Pense à apporter des précisions.

Tous les langages sont compilés à un moment ou à un autre (et savoir si c’est directement en binaire ou bien en passant par un bytecode ou encore à la volée va dépendre de l’implémentation considérée du dit langage). La question pertinente est plutôt de savoir si le langage est statique ou dynamique, j’ai l’impression.

(Bon, ben grillé par motet-a sur ce point)


  1. j’ai quand même réussi à caler trois synonymes dans le texte, je suis pas peu fier. 

+3 -0

Salut,

A mon avis, ton ébauche d’article manque un point essentiel : la plupart du temps, le choix du langage est plus ou moins arbitraire, et n’a rien à voir avec les qualités intrinsèques du langage. Souvent, ce choix t’es imposé à cause de l’historique (base de code existante écrite en Z), des compétences (l’équipe en place connaît bien le langage X), des outils disponibles (telle bibliothèque essentielle a été écrite pour le langage Y), etc.

Un exemple : au travail, on fait du code embarqué sur un micro-contrôleur. Dans l’absolu, on pourrait le programmer en n’importe quoi tant qu’un compilateur est capable de faire de l’assembleur pour le CPU. En vérité, le compilateur fourni ne sait faire que C et C++. Du coup une grande partie est programmée en C. Il y a aussi une partie en C++, mais en fait personne n’écrit une ligne à la main, c’est généré automatiquement à partir de modèles Simulink (programmation graphique en gros), et on a pas vraiment le choix du langage. Une bonne partie des outils qui tournent autour de Simulink sont fait en langage Matlab (même éditeur). Évidemment, le processus de compilation est automatisé. On a donc écrit des fichiers Matlab qui appellent make et écrit des Makefile qui décrivent le job et on a aussi écrit des scripts batch (historiquement) qui font une partie du travail. Ah, j’oubliais, on doit convertir des exécutables pour obtenir le format qui correspond aux standards du client et on a dû écrire un script Python pour ça, à cause de certaines bibliothèques écrites pour Python. On aurait adoré utiliser un langage "safe" parce que c’est pour l’automobile, mais on peut pas vraiment à cause de Simulink du coup on a un outil d’analyse statique du code C et C++. Il n’est pas question de se passer de Simulink, parce qu’il est incontournable pour les simulations du code embarqué, qu’il n’a virtuellement pas de concurrents et qu’il y a une expertise et une maîtrise forte de cet outil au sein de l’entreprise.

En bref, mon message est le suivant : un langage, c’est des fonctionnalités et qualités intrinsèques (propriétés, concepts, concision, contrôle mémoire, etc) et un environnement (bibliothèques, compilateurs, outils de développement). On finit rapidement par ne plus avoir le choix finalement.

Du genre: jeux vidéo 3D, donc Unreal, donc C++ presque à coup sûr. Ou encore application Android, donc Java principalement. Ou encore Application iOS donc Swift dernièrement. Ou encore front-end Web, donc Javascript. Ou encore mainframe dans la banque donc Cobol. Ou encore outil d’analyse des ventes via Excel donc VBA.

Bon, grillé mais tant pis.

Ce sujet est verrouillé.