Apprentissage d'un langage de programmation spécialement conçu pour cette entreprise [fermé]


10

Pourquoi quelqu'un développerait-il son propre langage pour l'utiliser uniquement dans cette entreprise alors que vous avez XY d'autres langages qui peuvent vous aider avec leurs bibliothèques, leur logique, etc.? N'est-il pas beaucoup plus simple de suivre le courant avec autre chose que de développer votre propre langue?


6
Beaucoup de "nouveaux" langages que nous avons à l'état sauvage peuvent utiliser des bibliothèques conçues pour des langages "plus anciens": par exemple: C ++ peut utiliser des bibliothèques C, Scala Kotlin et d'autres peuvent utiliser n'importe quelle bibliothèque exécutée sur la JVM, Typescript peut utiliser des bibliothèques JS. Donc, avoir une nouvelle langue n'implique pas de perdre le support de lib ...
Timothy Truckle

3
Pourquoi voudriez-vous construire un dragster pour faire de la course de dragsters plutôt que de faire avec une voiture de stock?
candied_orange

3
Ou vraiment, étudiez les raisons et la raison de la création de tout langage de programmation. Certaines personnes croient que vous n'êtes pas un vrai informaticien jusqu'à ce que vous ayez créé votre propre langage. Cela revient à ne pas être un véritable ingénieur chimiste jusqu'à ce que vous ayez créé de la poudre à canon (et fait exploser une petite partie de votre maison).
candied_orange

4
Erlang est également né de cette manière: si je ne me trompe pas, il a été initialement développé chez Ericsson pour un usage interne.
Giorgio

3
Un langage spécifiquement conçu pour une entreprise est stupide, en revanche, un langage spécifiquement conçu pour un domaine problématique dans lequel l'entreprise se trouve, peut parfois être très utile. Vous savez que vous avez ce dernier, plutôt que le premier, lorsque la conception et l'architecture du langage sont limitées à ce qui rend le domaine problématique beaucoup plus facile à résoudre / exprimer, parfois au détriment de son utilité pour la programmation à usage général.
Lie Ryan

Réponses:


25

Il est beaucoup plus facile à comprendre lorsque vous réalisez que c'est souvent le produit d'un long processus et non pas simplement de quelqu'un qui dit "nous voulons créer un nouveau langage".

Cela commence généralement par l'idée qu'un problème peut être résolu en utilisant un langage simple spécifique au domaine. L'intention est souvent d'avoir des non-experts qui utilisent ce langage, il est donc simple et manque souvent de fonctionnalités telles que la frappe forte et les modules.

Jusqu'ici tout va bien. Mais ensuite, les gens commencent à frapper des problèmes qui ne peuvent pas être résolus par la langue. De nouvelles "fonctionnalités" sont donc ajoutées lentement pour résoudre ces problèmes. Et comme le processus est lent et les fonctionnalités peu fréquentes, il n'y a aucune motivation à concevoir correctement ces nouvelles fonctionnalités, tant que les problèmes sont résolus.

Au fil du temps, le nouveau langage acquiert des fonctionnalités qui le transforment d'un langage spécifique à un domaine simple à un langage à usage général "complexe", souvent avec des sémantiques conflictuelles et déroutantes et des règles de syntaxe difficiles à suivre.

Et au moment où les gens réalisent qu'ils ont créé une bête aussi massive, il est déjà trop tard pour la tuer et la remplacer par un langage correctement conçu.

Il y a quelques langues qui ont évolué comme celui - ci qui ne sont pas liés à des sociétés spécifiques toux JavaScript toux PHP toux .


10
Excellente réponse, et bien que JavaScript ait ses problèmes, je ne pense pas qu'il soit juste de le mettre dans la même phrase que PHP. C'est comme dire: "Nous devons expulser Bill et Ted de notre quartier, ce sont des criminels!" Mais, Bill (JavaScript) est un jaywalker et Ted (PHP) est un tueur en série.
TheCatWhisperer

12
@TheCatWhisperer, je ne suis pas d'accord. JavaScript est aussi mauvais, voire pire que PHP. Parce que vous DEVEZ utiliser (ou transposer en) JavaScript, tandis que PHP peut être ignoré en toute sécurité.
Euphoric

2
c'est un point principalement valable.
TheCatWhisperer

1
@Euphoric Attendons WASM , peut-être que la scène changera alors ...
Kroltan

@Kroltan +1 pour WASM!
CraigR8806

15

N'est-il pas beaucoup plus simple de suivre le courant avec autre chose que de développer votre propre langue?

Bien sûr, mais pour suivre cela d'une manière absurde, nous serions tous en train d'écrire tout en assembleur si personne ne développait de nouveaux langages.

Parfois, il n'y a pas de flux. De nouvelles langues viennent à exister parce que quelqu'un a une démangeaison à gratter, que ce soit un amateur de langues qui veut juste inventer quelque chose de nouveau ou une entreprise avec un besoin non satisfait par ce qui existe déjà.

C'est exactement ce qui s'est produit lorsque John Backus a proposé le système de traduction de formules mathématiques IBM en 1953. Il voulait un moyen plus facile pour les utilisateurs scientifiques de spécifier des formules mathématiques qu'en les écrivant en assembleur. Ce produit propriétaire est devenu le premier langage de programmation qui n'était pas assemblé, et vous le connaissez sous le nom de Fortran.

Là où Fortran a été le premier à emprunter cette voie, Erlang en est à peu près le porte-affiche. Ericsson voulait améliorer la façon dont le logiciel pour ses commutateurs téléphoniques a été développé et a inventé un langage pour le prototypage avec des fonctionnalités spécifiques à leurs besoins. Lorsque je l'ai exploré pour la première fois, j'ai retenu qu'il a été développé par des personnes ayant un réel problème à résoudre qui n'aurait pas été bien desservi par aucune des autres langues disponibles en 1986. Erlang est resté un produit propriétaire exclusif comme votre collègue a rencontré jusqu'à ce qu'il soit open source plus d'une décennie plus tard, et maintenant c'est un langage courant.

Go et Scala sont des langues relativement jeunes dans le grand schéma des choses, et il est tout à fait possible que la langue utilisée dans l'entreprise de votre collègue soit antérieure aux deux. Ce qu'il doit faire, c'est se renseigner sur son histoire, pourquoi elle est née et pourquoi elle continue d'être utilisée.

J'ai passé la décennie entre 2003 et 2013 à travailler pour une entreprise qui a largement utilisé un environnement spécifique à l'industrie qui comprenait son propre langage qui a ses racines à la fin des années 1970. Alors que certaines langues plus récentes auraient pu être des remplacements plus appropriés (et des crochets pour eux ont été greffés au fil du temps), cette industrie y avait investi suffisamment et un énorme corpus de code éprouvé qu'il n'y avait tout simplement pas de bonne analyse de rentabilisation pour passer à autre chose.


-1

Je l'ai déjà vu auparavant. Ça ne marche jamais bien. Certaines personnes ont un complexe «pas inventé ici». Cela fait généralement courir une entreprise en réinventant la roue.

Pensez-y. Cette nouvelle langue se casse probablement tout le temps. Entre un analyseur, un compilateur, une machine virtuelle, un éditeur de liens, peu importe ... Il y a maintenant des milliers de bogues avec lesquels les gens perdront des heures à déboguer des problèmes aléatoires. Tout pour ce dont ils pensent avoir besoin que d'autres langues n'ont pas.

C / C ++ est utilisé pour écrire des systèmes d'exploitation comme, vous savez, tous. Et pourtant, quelqu'un pensait avoir besoin de quelque chose de différent.


7
Apparemment, vous n'avez jamais vu Kotlin. Ou Javascript ou C #, d'ailleurs. Fog Creek Software a utilisé son propre langage de programmation appelé Wasabi (basé sur VB) pendant des années (mais il est vrai que la dette technique les a finalement rattrapés ). Il y a donc certainement des cas où cela fonctionne.
Robert Harvey

1
Pour autant que je me souvienne, C # est né après que Microsoft a essayé de créer une implémentation Java non conforme, a été poursuivi par Sun et perdu. cnet.com/news/sun-microsoft-settle-java-suit Puisqu'ils ne pouvaient plus l'appeler Java, ils ont développé leur propre langage qui, au départ, était très similaire à Java.
Giorgio

1
"Ce nouveau langage se casse probablement tout le temps" - si la conception de votre langage vous permet d'éviter toute une classe de bogues d'application, alors cela peut être un compromis acceptable
Eric

16
Avez-vous déjà entendu parler de C? Il aurait été développé en interne uniquement pour un seul système d'exploitation sur un seul ordinateur. Pourquoi K&R n'a-t-il pas simplement utilisé quelque chose de prouvé qui a été utilisé pour écrire des systèmes d'exploitation, tels que PL / 1, BCPL ou Algol 68?
idrougge
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.