Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Est-il nécessaire de créer de nouveaux langages de programmation ?
Ou faut-il plutôt développer plus de bibliothèques ?

Le , par Michael Guilloux

4PARTAGES

12  5 
Faut-il arrêter de créer de nouveaux langages et développer plutôt des bibliothèques ?
Tous les langages de programmation présentent des similitudes entre eux au point où l’on peut se demander pourquoi donc avoir tous ces différents langages, et en plus envisager d’en créer d’autres. Certes, certains langages peuvent offrir bien plus de possibilités que d’autres avec plus ou moins de facilité, mais ils ont tous les mêmes constructions de base, et parfois permettent de faire exactement la même chose.

Pour un développeur, il est donc inutile de créer de nouveaux langages, mais il faudrait plutôt se concentrer sur le développement de bibliothèques. Il estime en effet que ce sont les bibliothèques qui rendent un langage de programmation vraiment productif.

Rappelons, avant d’aller plus loin, qu’une bibliothèque logicielle est une collection de routines, qui peuvent être déjà compilées et prêtes à être utilisées par des programmes. Les bibliothèques sont utilisées pour mettre en œuvre des interfaces de programmation ainsi que des frameworks et des plugins. Elles peuvent être également incorporées dans les langages de programmation.

Ayant commencé la programmation avec Ruby on Rails, ce développeur peut ne pas avoir totalement tort dans la mesure où le célèbre framework web qu'il utilise a permis à de nombreux développeurs non experts de construire des sites web sophistiqués rapidement. Il dit qu’il n’a pas d’opinion particulière sur le langage de programmation Ruby, mais il adore le framework web libre écrit en Ruby.

Il semble d’ailleurs ne pas être le seul à partager ce point de vue. Sur reddit, un utilisateur a par exemple adopté la même position estimant que le langage R permet de confirmer cette affirmation. Il ajoute en effet que R est le meilleur exemple d’un langage qui est populaire grâce à ses bibliothèques.

Inutile de dire que les avis sont partagés sur la question. Pour d’autres en effet, c’est le langage de programmation qui précède les bibliothèques. Pour ces derniers, la conception du langage de programmation détermine directement le genre de bibliothèques que vous pouvez écrire et la facilité d’utilisation de ces bibliothèques. Le langage de programmation façonne directement la conception de ses bibliothèques. Le but principal d'un langage de programmation à usage général serait donc de permettre la création d'un large éventail de bibliothèques, et faciles à utiliser. Ils justifient donc la création d’un nouveau langage, en général, par l'incapacité de l'auteur d'écrire une bonne bibliothèque pour le langage qu'il utilisait.

D’autres encore poussent la réflexion plus loin, en soutenant qu’on peut compléter un bon langage de programmation avec un nombre modéré de bibliothèques, et avec cela, satisfaire la plupart des besoins des utilisateurs. Par contre, on ne peut pas corriger les défauts d’un langage avec les bibliothèques, peu importe le nombre.

Pour aller encore plus loin, certains estiment aussi que de nouveaux langages de programmation peuvent être encore nécessaires. De nouveaux langages pourront en effet tirer des leçons des défauts des anciens langages et introduire de nouveaux paradigmes entre autres nouveautés qui seront utiles pour les développeurs.

Source : Stop Designing Languages. Write Libraries Instead

Et vous ?

Quelle est votre opinion sur la question ? Faut-il arrêter de créer de nouveaux langages et développer plutôt des bibliothèques ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de zecreator
Membre expert https://www.developpez.com
Le 14/06/2016 à 12:44
Un langage est intimement lié à un concept de développement et à un schéma de conception. Créer un nouveau langage pourrait être intéressant s'il amène une nouvelle manière de développer et une forte accessibilité pour les profanes.
12  0 
Avatar de pClement
Membre régulier https://www.developpez.com
Le 14/06/2016 à 13:32
Citation Envoyé par Bousk Voir le message
Node.js n'est pas du tout un nouveau langage, c'est juste une lib sympa écrite en js et un buzzword qui a percé.
Quand tu utilises node, jquery, etc tu programmes en javascript.
Je pense qu'il parle de TypeScript, CoffeScript ect ... plutot que de Node.js
12  0 
Avatar de TheLastShot
Membre extrêmement actif https://www.developpez.com
Le 14/06/2016 à 14:07
Citation Envoyé par zecreator Voir le message
Moi, j'ai cessé de m'insurger contre les râleurs anti-javascript. La plupart ne le maîtrise pas et sont effrayés car ils savent qu'à un moment ou un autre, on va leur demander de l'utiliser. Je vois cela comme une peur primale de ce que l'on ne connait pas... Des p'tits gens quoi....
Très ironique ta réponse. "Vous êtes contre mon langage adoré c'est que vous y connaissez rien", mais quelqu'un qui connait réellement quelque chose connait ses qualité, mais connait aussi ses défauts.
Je fais du javascript depuis de nombreuses années maintenant, je le maîtrise suffisamment pour pouvoir faire tout ce que je veux (et étant donné que je m'attaque à des problématiques relativement complexe comme créer mon propre framework je pense pouvoir dire que je ne fais pas parti des "p'tits gens" (au passage bravo pour le mépris, c'est tellement constructif, et ça donne beaucoup de crédibilité à ton propos). Mais cela ne m'empêche pas de le considéré comme un mauvais langage (même si ES6 règle pas mal des problèmes) que je ne listerais pas ici car ce n'est pas le sujet.
Donc à tous ceux qui se plaignent des anti-javascript et de leurs œillères, n'oubliez pas qu'en restant trop proche de la lumière vous êtes tout autant aveuglés, donc apprenez à prendre du recul !

Pour ce qui est de la problématique de l'article, il me semble évident qu'il ne faut pas s'arrêter à l'état actuel. Certains pense que les langages actuels sont suffisant et que les éventuels problèmes peuvent se régler à coup de bibliothèques. Mais il y faut garder certaines choses à l'esprit.
Tout d'abord, il y a des problèmes intrinsèques au langage. Si je prends l'exemple du C ou C++, pour beaucoup de développeurs aujourd'hui, c'est un véritable calvaire de devoir travailler avec les pointeurs et l'allocation dynamique (j'en ai d'ailleurs vu pas mal qui n'y comprenait absolument rien), et c'est avec une grâce presque divine à leurs yeux que sont apparu les langages haut niveaux, tels que C# ou Java, et leurs garbage collector. Alors certes, en C++ nous avons les smart pointers (qui ne sont apparu que relativement tardivement, et il a fallu pendant longtemps se contenter de les coder manuellement ou utiliser cette immonde usine à gaz qu'est Boost), mais il est quand même plus agréable d'utiliser un langage haut niveaux où nous n'avons pas besoin de nous préoccuper de ce genre de question.

Ensuite, l'utilisation de bibliothèque pour résoudre des problèmes qui pourrait être résolus par le langage lui-même implique l'utilisation de ressources supplémentaire (que ce soit de la mémoire ou du CPU), alors que ces problèmes pourraient être résolu nativement. (Par exemple, avant C++11, il était impossible de faire un véritable for-each, à part en utilisant des bibliothèques que simulaient ce fonctionnement (et donc utilisaient plus de ressources (négligeable dans ce cas là, je vous l'accorde, c'est juste pour l'exemple) alors qu'en langage machine un simple for-each est très proche d'un for).

Et enfin il ne faut pas oublier un principe vrai dans tous les domaines: "Si les fondations sont mauvaise, c'est tout l'édifice qui risque de s'effondrer". Vous pouvez ajouter toutes les bibliothèques pour colmater les failles d'un langage (java "au hasard"...), il n'empêche que le langage lui-même est la source du problème. (Et dans le cas de Java, je pense que les langages Scala et Kotllin gagneraient beaucoup à être plus connu...).
14  3 
Avatar de maske
Membre éprouvé https://www.developpez.com
Le 14/06/2016 à 14:12
Encore un exemple typique d'actualité avec zéro recul sur la question posée, et posant des hypothèses comme étant des faits établis. Et puis ça termine sur un "certains vont encore plus loin" pour sortir une banalité affligeante.

Mais c'est normal quand, sur un forum de ««professionnels»», on prend comme sources des blogs écrits par des clampins sur le net qui n'ont pas d'autre références que leur propre écosystème logiciel, autour DU produit vendu par LEUR boite. Forcément qu'ils voient pas l'intérêt de créer des langages.

Pourquoi on crée des nouveaux langages ? Quand il y a un besoin, un problème, et qu'il faut des nouvelles solutions pour les adresser. Premier mythe à casser, c'est pas "on crée un langage" et "paf voilà Java" (ou R ou C ou etc.). On crée un langage pour résoudre un problème qu'on ne sait pas résoudre, ou bien dont les solutions ne sont pas satisfaisantes (par ex. en terme de passage d'échelle, de performances, de cible utilisateur, etc.). Et il faut une phase de maturation conséquente pour que ce langage arrive dans l'industrie et que des librairies soient développées par la suite. Et que ça soit des langages portés par la recherche ou par l'industrie (ou les deux !), c'est pareil. L'exception ce sont les gros industriels qui ont la main d'oeuvre commerciale et marketing pour faire adopter plus vite leur bébé. D'autre part, un nouveau langage n'est pas forcément un gros bloc monolithique, les DSL sont l'exemple typique du langage dédié à résoudre UN problème particulier et il existe de nombreuses façons de les définir et les implémenter : de l'intégration dans un langage hôte à un langage indépendant compilé.

La réponse est donc, quand on a assez de recul :

Oui, il y a besoin de nouveaux langages et c'est nécessaire au moins quand
1- on veut adresser un besoin particulier pour lequel on a pas de solution satisfaisante
2- on veut faire progresser l'état des connaissances générales (utile pour ceux qui viennent après résoudre certains nouveaux problèmes)

Le débat sur javascript ou sur les bibliothèques est totalement hors de propos, la question posée étant à un bien plus haut niveau d'abstraction. Et c'est un phénomène qui s'auto-nourrit, on aura toujours des problèmes et on aura toujours besoin de nouvelles solutions, plus efficaces, plus élégantes, plus adaptées.
12  1 
Avatar de pcdwarf
Membre éclairé https://www.developpez.com
Le 14/06/2016 à 16:52
Personnellement, je trouve que le foisonnement de langages et de librairies actuelles est détestable.
Mais pire que ça, c'est le changement permanent qui est pénible.

On a pas fini de débugger une nouvelle techno et de la rendre à peu près stable que déjà il faut se jeter sur le dernier truc à la mode.

Mon choix va au langage qui évolue le moins ou en tout cas qui n'évolue qu'après avoir bien pesé pour et contre.
Un langage où le code que j'écris aujourd'hui ne sera pas obsolète dans 2 ans.

Pour la même raison, mon choix va aux bibliothèques qui ont le moins d'interdépendances et dont l'API reste stable.
11  0 
Avatar de Luckyluke34
Membre émérite https://www.developpez.com
Le 14/06/2016 à 13:53
Cette question, c'est un peu comme demander s'il faut continuer de créer de nouveaux modèles d'avions ou de nouveaux outils de chirurgien...

Bien évidemment, et même si certains décrétaient qu'il faut figer le paysage des langages de programmation, il y en aurait toujours d'autres pour concevoir des langages plus programmer-friendly, plus productifs, plus adaptés aux nouvelles formes de hardware, aux nouvelles approches d'infrastructure et d'architecture des systèmes d'information, et ceux-ci finiraient par l'emporter tôt ou tard. C'est la loi de l'évolution, la survie du plus apte.

Pour prendre un exemple, si un jour l'informatique quantique est industrialisée et disponible à tous, il faudra avoir sous la main de nouvelles façons de développer et donc il existera très certainement une forte poussée pour concevoir de nouveaux langages entraînant moins de friction dans ce paradigme. C'est ce qu'on voit aujourd'hui avec les formes émergentes d'informatique distribuée pour lesquelles des langages dédiés sont en cours d'élaboration.

Donc oui, l'innovation existe et continuera d'exister dans ce domaine, et fort heureusement.
10  0 
Avatar de LSMetag
Expert confirmé https://www.developpez.com
Le 14/06/2016 à 16:59
Citation Envoyé par zecreator Voir le message
Comme dirait ma fille (14 ans). Non, mais t'es sérieux là! Qu'est-ce qu'on va bien pouvoir faire avec du bytecode lorsque l'on développe pour le web ? Le seul debuggeur que j'utilise lorsque je développe en javascript, c'est Firebug. C'est suffisant, pourquoi tu veux coller des débuggeurs bas niveau à Javascript Le développement JS n'a rien à voir avec le dev C ou C++, faut juste accepter le changement.
Ben non. C'est le WebAssembly qui est parsé et débuggué au moment de sa compilation en bytecode. Comme pour du C# serveur. C'est juste que dans le navigateurs, après, ce sera du bytecode. Et c'est cool, on ne verra plus ton code en clair !

Sinon pour la vidéo ci-dessus, le mec a testé des bases. Des choses qu'on pourrait utiliser n'importe quand n'importe où selon les situations. Il y a des situations particulières qui peuvent obliger à des manipulations relativement stupides, parce que le langage exige un workaround. Ca n'arrive pas qu'à Javascript, mais plus souvent à Javascript.

Quand on te dit que 2=="2" => true, la messe est dite... C'est le principal reproche fait à JS, en plus du debuggage. Ou encore que 2+"2"= 4 au lieu de 22.

Quand ParseInt("08" = 0 aussi.
Ou quand 0.1 + 0.2 != 0.3, encore aussi. Car 0.1 n'est pas le 0.1 qu'on écrit habituellement. C'est un truc du style 0.10000000000034.
Ou encore quand Math.max < Math.min, c'est encore problématique.
11  1 
Avatar de Uther
Expert éminent sénior https://www.developpez.com
Le 14/06/2016 à 17:52
Sauf que justement un langage moderne comme JavaScript aurait vraiment du d'éviter au maximum les comportements contre intuitifs, surtout qu'il n'a pas l'excuse de vieux langages comme le C qui à 40 ans d'histoire avait des contraintes très différentes.

D'autres langages (comme le Python qui précède le JavaScript de quelques années) font beaucoup mieux là dessus.
11  1 
Avatar de Bousk
Rédacteur/Modérateur https://www.developpez.com
Le 14/06/2016 à 16:41
Citation Envoyé par melka one Voir le message
et dans une vie de développeur a quelles moment tu a besoin de faire ça !!([]) ou encore ca !!({}) et celle la []==false revient sur terre un développeur n'est pas la pour cherché la ptite bêbête pour contourner je ne sais quoi.
C'est surtout que ça n'a aucun sens qu'une chaîne vide soit évaluée à false, alors qu'un tableau ou objet vide est évalué à true (enfin pour l'array, si t'utilises l'opérateur !, si tu fais la comparaison avec == false, cette fois ça vaut false, mais WTF), et autres joyeusetés du genre
Et je parle même pas des immondices avec les instanceof qui retournent pas du tout ce qu'on est en droit d'attendre
Et le passage sur l'addition/concaténation de chaînes et chiffres qui finit d'achever tout ça
De là à dire que javascript ça part dans tous les sens et fait n'importe quoi.. c'est plutôt simple à franchir comme pas

En face tu prends LUA qui a une syntaxe équivalente, un système de prototypage équivalent, il a bien moins d'immondices à l'utilisation. Ou bien Python
11  2 
Avatar de yoyo88
Membre chevronné https://www.developpez.com
Le 14/06/2016 à 13:57
Les TypeScript, JS++ et autre langage qui se base sur du JS ou qui en génère pullule en se moment. Ça montre surtout qu'il y a un problème dans JS (Pour X raison qui peuvent être lié plus ou moins au développeur ou au langage en lui même).
Alors oui quelque part il y a un intérêt. ça créer une concurrence qui a mon sens est assez sains.

il y a la même analogie sur les framework. Beaucoup de framework qui vont palier a des manques ou des problématique.

Le problème est, es que parfois cela ne se concurrence pas pour rien ?

Si on regarde se qui se fait par exemple en .Net c'est intéressant : tu a le choix du langage C#/VB.net qui se compile en code machine (je parle pas du F# je ne sais absolument pas comment ça marche) et un Framework qui se suffit a lui même (dans 80% des cas).

Et c'est un peu se qui manque aujourd'hui je trouve dans le monde du Web JS. Un framework qui fasse l'unanimité et qui ne soit pas hasbeen dans 2 ans.

Bref la concurrence c'est bien mais un peu de stabiliser c'est bien aussi.
9  2