Est-ce qu'une langue est devenue très populaire pour autre chose que le but recherché?


70

Prenez ce scénario:

  • Un programmeur crée une langue pour résoudre un problème.

  • Il publie ensuite ce langage pour aider les autres à résoudre des problèmes similaires.

  • Un autre programmeur découvre que c'est en fait beaucoup mieux pour une catégorie de problèmes différente.

  • En vertu de cette nouvelle application, le langage devient alors principalement populaire pour cette application.

Y a-t-il des cas où cela se produit réellement?

En d'autres termes, l'objectif d'une langue a-t-il une incidence sur son utilisation réelle ou sur le fait qu'il devienne populaire? Est-il même important qu'une langue ait un but annoncé?


4
Votre exemple HTML ne semble pas vraiment correspondre à ce que vous recherchez. Les documents techniques sont-ils si différents de tout autre document? L'objectif principal de HTML est toujours le même qu'en 1989: fournir aux documents un moyen simple de se référencer. IMHO HTML est l'exact opposé de ce que vous recherchez réellement.
Yannis

5
Considérant la longue liste de réponses; peut-être que la question opposée est plus intéressante: quel langage (populaire) est simplement utilisé pour le but recherché?
Jaap

@ Yannis: Bon point. Ce n'est pas le meilleur exemple, et pourrait vraiment être argumenté de toute façon. Edité pour supprimer.
Jon Purdy

@ Jaap: Je pensais la même chose!
leonbloy

2
Je peux me tromper, mais je suis sûr que la plupart des langues ne sont pas utilisées pour les intentions de leurs créateurs. Je pense que la raison principale en est que les étrangers ne savent pas ce qui est censé être utilisé, ce qui les aide à être plus ouverts sur le potentiel d'une langue.
Kenneth

Réponses:


118

Lisp . McCarthy a initialement spécifié Lisp dans un document pour montrer que peu de notations simples suffisent à construire un langage complet. Il a été surpris de constater que Lisp pouvait être implémenté en code machine (Steve Russel a réalisé la première implémentation de l’interpréteur Lisp). Lisp est largement utilisé pour la programmation de l'intelligence artificielle.


70
+1, Lisp n'était pas destiné à être un langage de programmation! Je ne pense pas que vous puissiez dépasser cela.
Kilian Foth

7
OTOH, on pourrait affirmer que LISP a été conçu pour être utilisé à la frontière entre la programmation et les mathématiques, et il y reste.
MSalters

1
Je pense que McCarthy a utilisé Lisp comme exemple dans ses classes et avait l'intention d'écrire un compilateur, mais a mentionné en classe un jour qu'un codage manuel de la fonction eval implémenterait un interprète, mais bien entendu, "personne ne voudrait le faire".
Steven A. Lowe

Mes amis Lisper me disent que ce n'est plus tellement utilisé dans l'IA, mais il a toujours une application partout .
Greyfade

111

Java était à l'origine destiné à la programmation de systèmes intégrés. De Wikipedia "Java a été conçu à l'origine pour la télévision interactive" . Mais il est devenu extrêmement populaire pour la programmation d'applications et Web.


4
Huh. Je ne peux pas croire que je n'ai pas pensé à celui-ci. C'est sans doute l'exemple canonique ... bien que cela ne veut pas dire que je ne serai pas encore surpris.
Jon Purdy

Cependant, Java a-t-il jamais été publié pour un travail embarqué (avant Java, qui venait plutôt après sa promotion pour le Web)?
Marcin

L'élément crucial de la conception Java était la capacité à exécuter du code non fiable.

13
l'histoire est encore pire: A) elle était destinée aux systèmes embarqués. B) mais n'a jamais vu la lumière jusqu'à ce qu'il puisse être intégré dans les pages Web. C) il n’a reçu aucun respect jusqu’à ce qu’il soit utilisé pour des applications Web «professionnelles» et D) il a finalement été intégré à de nombreux systèmes d’exploitation de téléphones; mais pas en tant que contrôleur matériel, c'est plutôt une plate-forme graphique.
Javier

Il y a un projet de le placer sur les décodeurs depuis plus de 10 ans maintenant - cherchez OCAP ou tru-2way
Bill K

32

Lua a été conçu principalement comme langage de configuration et a fini par trouver une niche comme langage de script le plus populaire pour les jeux (parce qu'il est petit, rapide, puissant, portable, facilement étendu et intégré, avec une syntaxe conviviale). World of Warcraft, le jeu le plus populaire pour l’utiliser, ne l’utilise même pas vraiment pour la configuration, mais plutôt pour XML.


... et maintenant, avec LuaJIT, il est de plus en plus utilisé dans les applications de traitement en temps réel
Javier


@lukas: "Pas vraiment" quoi ? Notez que ses prédécesseurs, SOL et DEL, n’avaient même pas de flux de contrôle, c’étaient des langages de configuration. Lua était l'extension de ces langages de configuration pour inclure le support de programmation.
Boue

"Lua a été conçu principalement comme langage de configuration", dirais-je comme langage de programmation.
Lukasz Madon

7
J'aurais peut-être dû parler de "but recherché" plutôt que de "conçu principalement comme". Le but recherché était d’utiliser Lua où SOL et DEL étaient utilisés. C'étaient des langages de configuration dans lesquels les utilisateurs commençaient à demander des fonctionnalités de programmation. Lua a été créé pour répondre à ce besoin. Comme les auteurs l' ont eux - mêmes déclaré , "l'adoption à grande échelle de Lua dans les jeux nous a surpris. Nous n'avons pas eu le développement de jeux comme cible pour Lua". C'est à peu près exactement ce que recherchait le PO, non?
Mud

32

L'intention initiale de Larry Wall pour perl était de créer un " langage de script Unix à usage général pour faciliter le traitement des rapports " et la page de manuel décrit le langage comme suit:

Perl est un langage interprété optimisé pour analyser des fichiers texte arbitraires, extraire des informations à partir de ces fichiers texte et imprimer des rapports basés sur ces informations.

Et bien sûr, la page de manuel nous indique également que Perl signifie Practical Extraction and Report Language (le nom réel est une faute de frappe du nom original Pearl , qui a été modifié lorsque Wall a découvert un langage PEARL existant déjà ).

Perl a fait beaucoup de chemin depuis, car c'est la langue à partir de laquelle les dieux ont façonné l'univers .

entrez la description de l'image ici


23
Il faut corriger cela: Liste des déchets pathologiquement éclectique
Richard

3
Il y a plus d'une façon de faire unabbrev! Very Perly

Tout acronyme pour Perl est en réalité un backronym.
CanSpice

1
@DarkTemplar La façon dont je l'interprète est que perl s'est frayé un chemin presque partout. De ses humbles débuts, perl est devenu un langage Web très populaire, un langage de script extrêmement populaire, un langage polyvalent un peu populaire, sa syntaxe d'expression régulière est devenue quelque chose de définitif, a donné naissance à un autre langage (php), etc. Plus la bande dessinée fait également référence à lisp, qui est la réponse acceptée à la question; j’ai donc pensé que c’était une description amusante (quoique inexacte) de la relation entre les deux langues (l’une est celle de rêve, l’autre celle que les gens utilisent réellement).
Yannis

1
@DarkTemplar Yeap. C'est dans le top dix de l'indice TIOBE . Bien sûr, vous ne devriez pas prendre l’indice TIOBE très au sérieux, c’est plutôt relatif et subjectif. Mais cela reste une bonne indication de la popularité de la langue.
Yannis

28

Je suppose que JavaScript répond également à cette question, car je ne pensais pas que Brendan Eich, de l’époque de Netscape, n’imaginait jamais que les futures versions de son LiveScript seraient utilisées pour créer les "applications" Web actuelles.

JavaScript est passé de simples validations de formulaires et de changements d’images à un puissant outil capable de rivaliser avec les applications hors connexion, à la fois en termes de fonctionnalité et de beauté.

Malheureusement, je pense que beaucoup le considèrent encore comme un jouet.


31
Ce qui est intéressant, c’est qu’il s’agit de devenir le langage d’assemblage du Web. En d' autres termes, quelles autres langues sont établies vers le bas et exécutés. Je ne crois pas que Brendan Eich prévu que .

3
avoir quelque chose à ajouter: il ne s'agit pas simplement d'un langage de script côté client. De nombreux projets tels que node.js ou rhino utilisent javascript comme langage côté serveur
gion_13

Juste curieux, mais qu'est-ce qu'un "langage de script côté client" ou "langage côté serveur" .......?
Dark Templar

@DarkTemplar. Un langage de script côté serveur est exécuté sur le serveur et sa sortie est envoyée au navigateur. Un langage de script côté client est envoyé au navigateur tel quel et y est exécuté. (Bien sûr, le langage côté serveur peut être utilisé pour générer le langage côté client, si vous le souhaitez.) Le seul langage qui fonctionne dans la plupart des navigateurs est javascript.
TRiG

19

Erlang. Il a été inventé il y a très longtemps dans les laboratoires Ericsson pour développer des applications de téléphonie, probablement pour leurs lignes de dispositifs de commutation et d'accès. Maintenant, il est devenu un langage dynamique polyvalent prometteur avec un concept intéressant de concurrence.

Il serait intéressant qu’à l’avenir, davantage de langues du monde des télécoms se croisent pour évoluer dans le monde des technologies de l’information et évoluent à partir de là, en particulier celles conçues à l’origine pour la modélisation et la vérification de protocoles.


Et n'était-ce pas l'une des inspirations de node.js?
dodgy_coder

Ne pense pas que cela soit admissible. Erlang a été inventé pour la téléphonie parce qu’il avait besoin d’un langage dynamique concurrentiel général. C'est toujours ça.
Alan Baljeu


14

A l' origine, PHP signifiait Page d'accueil personnelle , mais aujourd'hui, il est également utilisé pour quelques applications Web légèrement plus volumineuses.


18
Bien sûr, le plus gros utilisateur de PHP, Facebook, est encore à bien des égards sur le marché des pages d’accueil personnelles.
Jaap

3
"PHP / FI a été créé par Rasmus Lerdorf en 1995, initialement sous la forme d'un simple jeu de scripts Perl permettant de suivre les accès à son CV en ligne." C'est venu un long chemin, bébé.
nickf

Bien que PHP soit toujours un langage Web, il a subi une légère inversion de rôles: PHP était censé être incorporé sous forme de petits extraits dans HTML, alors que de nombreux projets génèrent désormais des chaînes HTML dans PHP. <?phpCependant, ils ont toujours besoin d'une balise au début du fichier!
Warbo

14

Je suis à peu près sûr que VBScript n'était pas conçu pour écrire des malwares, bien que ce soit une utilisation extrêmement courante.


1
C'est un peu dur, vous ne pensez pas. Java et C ont eu leur part de logiciels malveillants.
Jeremy

@JChild: Plusieurs années ont passé depuis votre commentaire. Même alors, défendre VB était une chose très étrange à faire.
Magus

@Magus Ce n'est même pas VB. C'est VBScript. Vous savez, les fichiers avec les extensions .vbs. Ceux que vous supposez automatiquement sont des virus quand vous les voyez.
user16764

13

Conçue à l’origine comme une méthode permettant de rendre le code plus générique, la méta-programmation de modèles en C ++ s’est avérée complète, et est à ce jour utilisée pour améliorer considérablement le langage C ++ grâce à des bibliothèques telles que boost.


8
... et de faire pleurer les programmeurs C ++ avec des temps de construction excessivement longs ;-)
quant_dev

8
et des messages d'erreur horribles.
DeadMG

11

BASIC est un autre cas célèbre. Son nom ( Code d’instruction symbolique polyvalent pour débutant ) fait allusion à son origine en tant que langue d’apprenant, mais il a beaucoup évolué depuis.


24
heh - Microsoft a remplacé "débutant" par "entreprise" et a gâché par millions
Steven A. Lowe

11

VHDL et Verilog (alias VerilogHDL) étaient à l’origine destinés à décrire des circuits et des composants numériques. Ils ont été utilisés comme une forme de documentation et pour simuler le comportement des composants. Par la suite, Synopsys et d’autres ont mis au point une technologie qui pourrait traduire (un sous-ensemble de) ces descriptions en un réseau de listes de portes, qui peuvent à leur tour être utilisées pour produire du matériel réel.

VHDL et Verilog sont appelés langages de description du matériel (HDL) pour des raisons historiques. Aujourd'hui, ils sont en fait utilisés comme langages de conception matérielle (même acronyme).


Un beau développement basé sur un modèle réel
Jaap

@ Mark Oui, le VHDL est un circuit intégré très haut débit, langage de description matérielle. Verilog est une langue complètement différente. Verilog est parfois aussi appelé Verilog HDL. fr.wikipedia.org/wiki/Verilog
Philippe

2
QHDL est très similaire au VHDL et est utilisé pour décrire les circuits pour ordinateurs quantiques. Je ne peux pas imaginer une langue partir si loin de ses origines.
Mark Booth

@ Mark Wow, c'est intéressant "QHDL"! Google montre beaucoup de bruit. Avez-vous une référence?
Philippe

1
Lors de la conférence 2011 de l’ACCU, j’ai découvert l’excellente session de Paul Blacks consacrée à l’informatique quantique pour les programmeurs. Ses diapositives sont à accu.org/content/conf2011/…
Mark Booth

10

ML a commencé comme un langage permettant de développer et d’écrire un prouveur de théorèmes. C'était la "méta langue" du prouveur de théorèmes.


Bien. Il convient de noter que la raison pour laquelle cette réponse est valable est que son application principale est désormais les compilateurs et autres outils de langage similaires (du moins à ma connaissance).
Jon Purdy

6
+1, mais dire que ML est devenu "très populaire" est un peu exagéré
Nikie

Peut-être, mais en plus de ses utilisateurs directs d’aujourd’hui, il a influencé à peu près tous les langages dactylographiés qui ont suivi.
Ryan Culpepper

7

C
À l'origine, il a été développé à l'origine pour être utilisé avec le système d'exploitation Unix. Mais la langue est devenue si populaire que même Dennis Ritchie a été surpris.
Dans son fameux livre Le langage de programmation C . Ritchie a déclaré "qu'il se répandait bien au-delà de ses origines en tant que langue du système d'exploitation UNIX". et à quel point il était surpris de constater qu’il devenait un langage populaire pour le développement d’applications.


11
Eh bien, il a été conçu à l’origine pour développer des systèmes et des applications de bas niveau sur plusieurs plates-formes. Il reste conforme à ses objectifs initiaux malgré sa popularité, donc il ne cadre pas.
Jon Purdy

3
@ Jon Eh bien, cela convient, car il est devenu le moyen le plus facile de se tirer une balle dans le pied.
Yannis

1
@ Yannis: Haha, c'est vrai. Mais je parle des langues dont le but principal a complètement changé, pas de celles qui ont simplement grandi pour englober plus de buts.
Jon Purdy

J'ajouterais que C est devenu populaire en tant que langue principale pour les concours de code obscurcis.
Peter G.

N'a-t-il pas été conçu pour implémenter le système d'exploitation?
Nikko

3

C ++ a été initialement conçu en tant que "C avec classes" pour faciliter la programmation orientée objet en C ++.

Des modèles ont ensuite été fournis dans une version ultérieure pour permettre la mise en œuvre de classes de conteneur fortement typées. Il a seulement été remarqué plus tard que ces modèles constituaient un langage de programmation au moment de la compilation complet de Turing.

En conséquence, de nombreuses applications utilisent maintenant le langage C ++, non pas comme langage de programmation orienté objet, mais plutôt comme langage de programmation basé sur des algorithmes reposant fortement sur le polymorphisme au moment de la compilation et la métaprogrammation.


7
Mais le C ++ est conçu pour être général et est utilisé comme langage général.
BenjaminB

@ Ubiquité Je ne pense pas que le C ++ ait vraiment été conçu comme un langage généraliste. Ou plutôt, il a été conçu pour être utilisé à des fins différentes (mais en particulier la programmation de systèmes). Mais il n'a pas été conçu pour fonctionner avec plusieurs paradigmes .
Konrad Rudolph

En réalité, la conception multi-paradigme est inhérente à sa conception, simplement en raison du verrouillage des caractéristiques d’utilisation sur C, tout en conservant la possibilité d’utiliser ses fonctionnalités plus procédurales le cas échéant.
Jon Purdy

@ Jon OK, je le concède. Cependant, la programmation générique et la métaprogrammation de modèles ne faisaient pas partie de ces fonctionnalités. Et de nos jours, le C ++ est l’un des seuls (et sans doute le principal) langage qui supporte ces fonctionnalités.
Konrad Rudolph

Très vrai. Hell, le support pour la programmation générique et constsont les deux principales raisons pour lesquelles j'utilise C ++.
Jon Purdy

2

ADA - conçu à l’origine sous contrat DoD pour l’avionique. Bien que toujours utilisé dans cette application, il est également populaire, par exemple, pour le middleware d'entreprise en temps réel.


5
Il a été construit comme un langage à usage général. Le DoD voulait une langue utilisable pour tout, afin de réduire le nombre de langues différentes utilisées.
BenjaminB

C'est assez hilarant. Ada était une langue explicitement créée dans le but de réduire le nombre de langues différentes. Par cette métrique ("conçu avec un but, utilisé pour un autre"), Ada devrait être classé en tête de liste avec Lisp, un autre anti-langage.
Jared Updike

2

"Le but recherché par une langue a-t-il une incidence sur la façon dont il est réellement utilisé ou sur le fait qu'il devienne populaire?"

Je ne pense pas que le but recherché d’une langue ait une incidence importante sur son utilisation réelle et sa popularité: il existe de grands langages qui ont été conçus dès le départ pour être novateurs, souples et polyvalents, mais ne sont jamais devenus aussi largement utilisés ou populaires que dans marchés verticaux très spécialisés - par exemple Eiffel. OTOH, Basic, Pascal, C, etc., ont dominé le paysage pendant des années, bien qu'ils aient été conçus à l'origine pour des objectifs limités et spécifiques.

Les considérations marketing / financières et de soutien de l’ OMI ont toujours joué un rôle majeur dans la diffusion et l’extension de certaines langues. Par exemple: Borland propose TurboPascal, des packages, des marchés et le prend en charge. MS propose le C #, les packages, les marchés et le supporte. En conséquence, ces langages sont devenus populaires, des industries d’outils tiers ont vu le jour et de plus en plus de développeurs et d’entreprises se lancent dans l’action.

Mais depuis quelques années, les langages et outils OpenSource changent la dynamique et les langages deviennent maintenant populaires, plus basés sur le «mérite» que sur le marketing - par exemple Ruby, Python et Perl. Mais ce n’est pas à cause de «l’intention» des inventeurs, mais bien du potentiel construit par la langue pour une extension et une utilisation judicieuse.


2

Je ne pense pas qu'il y ait un langage populaire qui n'a pas été réutilisé de son intention initiale. Même C a été écrit à l’origine pour créer un système d’exploitation portable (unix).

Toute tentative d'écrire un langage de programmation vraiment générique sans cible spécifique à l'esprit échouerait probablement misérablement par manque de retenue et de concentration.


postscript - est omniprésent (dans presque tous les ordinateurs et imprimantes), mais uniquement utilisé pour l’impression de graphiques. Bien que, on puisse dire que cela a été réutilisé quand utilisé dans pdf.
13ren

1

J'ai entendu dire que Ruby avait été conçu comme un langage pour écrire de la poésie, mais vous pouvez aussi écrire du code magnifique!

Je serai franc avec vous. Je veux que tu pleures. Pleurer. Gémir doucement. Ce livre est un guide poignant sur Ruby. Cela signifie code si beau que les larmes sont versées. Cela signifie des histoires galantes et de sombres vérités qui vous ont réveillé le lendemain matin dans les bras de ce livre.


2
Ça semble intéressant. Toute source?
Anto

Le lien Ruby vous conduit à un livre écrit pour enseigner Ruby de manière artistique. Ma réponse est une blague en référence à ce livre qui affirme qu'écrire Ruby est comme de la poésie. En réalité, on pourrait dire que Ruby a été conçu pour être un langage de programmation à usage général, mais il a inspiré (certains) les gens à considérer le code Ruby comme une poésie.
Tinco
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.