Programmiersprache lernen speziell für dieses Unternehmen entwickelt [geschlossen]

10

Warum sollte jemand seine eigene Sprache entwickeln, um sie nur innerhalb dieser Firma zu verwenden, wenn Sie XY andere Sprachen haben, die Ihnen bei ihren Bibliotheken, ihrer Logik usw. helfen können? Ist es nicht viel einfacher, mit irgendetwas anderem im Fluss zu bleiben, als eine eigene Sprache zu entwickeln?

Josip Ivic
quelle
6
Viele "neue" Sprachen, die wir in freier Wildbahn haben, können Bibliotheken verwenden, die für "ältere" Sprachen entwickelt wurden: Beispiel: C ++ kann C-Bibliotheken verwenden, Scala Kotlin und andere können jede auf der JVM ausgeführte Bibliothek verwenden, Typescript kann JS-Bibliotheken verwenden. Eine neue Sprache zu haben bedeutet also nicht, die Lib-Unterstützung zu verlieren ...
Timothy Truckle
3
Warum sollten Sie einen Dragster bauen, um Drag Racing zu fahren, anstatt mit einem Stock Car auszukommen?
candied_orange
3
Oder untersuchen Sie die Gründe und Gründe für die Erstellung einer Programmiersprache. Einige Leute glauben, dass Sie kein richtiger Informatiker sind, bis Sie Ihre eigene Sprache erstellt haben. Dies ist vergleichbar damit, kein wirklicher Chemieingenieur zu sein, bis Sie Schießpulver hergestellt haben (und einen kleinen Teil Ihres Hauses in die Luft gesprengt haben).
candied_orange
4
Erlang wurde auch so geboren: Wenn ich mich nicht irre, wurde es ursprünglich bei Ericsson für den internen Gebrauch entwickelt.
Giorgio
3
Eine Sprache, die speziell für ein Unternehmen entwickelt wurde, ist dumm. Andererseits kann eine Sprache, die speziell für eine Problemdomäne entwickelt wurde, in der sich das Unternehmen gerade befindet, manchmal sehr nützlich sein. Sie wissen, dass Sie das letztere und nicht das erstere haben, wenn das Design und die Architektur der Sprache auf das beschränkt sind, was das Lösen / Ausdrücken der Problemdomäne viel einfacher macht, manchmal auf Kosten der Nützlichkeit für die allgemeine Programmierung.
Lie Ryan

Antworten:

25

Es ist viel einfacher zu verstehen, wenn man merkt, dass es oft ein Produkt eines langen Prozesses ist und nicht jemand, der nur sagt "Wir wollen eine neue Sprache machen".

Es beginnt normalerweise mit der Idee, dass ein Problem mit einer einfachen domänenspezifischen Sprache gelöst werden kann. Die Absicht ist oft, dass Nicht-Experten diese Sprache verwenden, daher ist sie einfach und es fehlen häufig Funktionen wie starkes Tippen und Module.

So weit, ist es gut. Aber dann stoßen die Leute auf Probleme, die von der Sprache nicht gelöst werden können. Daher werden langsam neue "Funktionen" hinzugefügt, um diese Probleme zu lösen. Und da der Prozess langsam ist und nur selten Funktionen zur Verfügung stehen, gibt es keine Motivation, diese neuen Funktionen ordnungsgemäß zu entwerfen, solange die Probleme gelöst sind.

Mit der Zeit erhält die neue Sprache Funktionen, die sie von einer einfachen domänenspezifischen Sprache zu einer komplexen "allgemeinen" Sprache machen, häufig mit widersprüchlicher, verwirrender Semantik und schwer zu befolgenden Syntaxregeln.

Und bis die Leute erkennen, dass sie solch ein massives Tier erschaffen haben, ist es bereits zu spät, es zu töten und durch eine richtig gestaltete Sprache zu ersetzen.

Es gibt einige Sprachen, die sich so entwickelt haben und nicht an bestimmte Unternehmen gebunden sind. Husten JavaScript Husten PHP Husten .

Euphorisch
quelle
10
Tolle Antwort, und obwohl JavaScript seine Probleme hat, halte ich es nicht für fair, es in den gleichen Satz wie PHP zu setzen. Das ist wie zu sagen: "Wir müssen Bill und Ted aus unserer Nachbarschaft werfen, sie sind Kriminelle!" Aber Bill (JavaScript) ist ein Jaywalker und Ted (PHP) ist ein Serienmörder.
TheCatWhisperer
12
@ TheCatWhisperer Ich bin anderer Meinung. JavaScript ist genauso schlecht oder noch schlimmer als PHP. Weil Sie JavaScript verwenden (oder in JavaScript transpilieren) MÜSSEN, während PHP sicher ignoriert werden kann.
Euphorisch
2
das ist ein meist gültiger Punkt.
TheCatWhisperer
1
@Euphoric Warten wir auf WASM , vielleicht ändert sich dann die Szene ...
Kroltan
@Kroltan +1 für WASM!
CraigR8806
15

Ist es nicht viel einfacher, mit irgendetwas anderem im Fluss zu bleiben, als eine eigene Sprache zu entwickeln?

Sicher, aber um dem zu einem absurden Ende zu folgen, würden wir alle alles in Versammlung schreiben, wenn niemand neue Sprachen entwickeln würde.

Manchmal gibt es keinen Fluss. Neue Sprachen entstehen, weil jemand einen Kratzer hat, egal ob es sich um einen Sprachhobbyisten handelt, der nur etwas Neues erfinden möchte, oder um ein Unternehmen mit einem Bedürfnis, das von dem, was bereits existiert, nicht erfüllt wird.

Genau dies geschah, als John Backus 1953 das IBM Mathematical Formula Translating System vorschlug . Er wollte eine einfachere Möglichkeit für wissenschaftliche Benutzer, mathematische Formeln anzugeben, als sie in Assembler zu schreiben. Dieses proprietäre Produkt wurde die erste Programmiersprache, die keine Assemblierung war, und Sie kennen es als Fortran.

Wo Fortran als erster diesen Weg gegangen ist, ist Erlang so ziemlich das Aushängeschild dafür. Ericsson wollte die Entwicklung der Software für seine Telefonschalter verbessern und erfand eine Sprache für das Prototyping mit spezifischen Funktionen. Als ich es zum ersten Mal erkundete, war meine Erkenntnis, dass es von Leuten mit einem echten Problem entwickelt wurde, das von keiner der anderen 1986 verfügbaren Sprachen gut bedient worden wäre. Erlang blieb ein proprietäres, internes Produkt wie Ihr Kollege begegnete, bis es mehr als ein Jahrzehnt später Open-Source war, und jetzt ist es eine Mainstream-Sprache.

Sowohl Go als auch Scala sind relativ junge Sprachen im großen Stil der Dinge, und es ist durchaus möglich, dass die Sprache, die in der Firma Ihres Kollegen verwendet wird, älter ist als beide. Was er tun muss, ist nach seiner Geschichte zu fragen, warum es entstanden ist und warum es weiterhin verwendet wird.

Ich habe das Jahrzehnt zwischen 2003 und 2013 für ein Unternehmen gearbeitet, das eine branchenspezifische Umgebung mit einer eigenen Sprache, die ihre Wurzeln in den späten 1970er Jahren hat, umfassend genutzt hat. Während einige neuere Sprachen möglicherweise besser geeignet waren, um sie zu ersetzen (und Haken für sie wurden im Laufe der Zeit eingepfropft), hatte diese Branche eine ausreichend große Investition in sie und eine riesige Menge an bewährten Codes, so dass es einfach keinen guten Business Case gab für den Wechsel zu etwas anderem.

Blrfl
quelle
-1

Ich habe das schon mal gesehen. Es funktioniert nie gut. Einige Leute haben einen "hier nicht erfundenen" Komplex. Normalerweise läuft ein Unternehmen herum und erfindet das Rad neu.

Denk darüber nach. Diese neue Sprache bricht wahrscheinlich die ganze Zeit. Zwischen einem Parser, Compiler, VM, Linker, was auch immer ... Es gibt jetzt Tausende von Fehlern, mit denen die Leute Stunden damit verschwenden werden, zufällige Probleme zu debuggen. Alles für das, was sie für nötig halten, was andere Sprachen nicht haben.

C / C ++ wird verwendet, um Betriebssysteme wie alle zu schreiben. Und doch dachte jemand, sie brauchten etwas anderes.

user271591
quelle
7
Anscheinend hast du Kotlin noch nie gesehen. Oder Javascript oder C #. Fog Creek Software verwendete jahrelang ihre eigene Programmiersprache namens Wasabi (basierend auf VB) (obwohl die technischen Schulden sie zugegebenermaßen endlich einholten ). Es gibt also sicherlich Fälle, in denen es funktioniert.
Robert Harvey
1
Soweit ich mich erinnern kann, wurde C # geboren, nachdem Microsoft versucht hatte, eine nicht kompatible Java-Implementierung zu erstellen, von Sun verklagt wurde und verloren ging. cnet.com/news/sun-microsoft-settle-java-suit Da sie es nicht mehr Java nennen konnten, entwickelten sie eine eigene Sprache, die anfangs Java sehr ähnlich war.
Giorgio
1
"Diese neue Sprache bricht wahrscheinlich die ganze Zeit" - wenn Ihr Sprachdesign es Ihnen ermöglicht, eine ganze Klasse von Anwendungsfehlern zu vermeiden, kann dies ein akzeptabler Kompromiss sein
Eric
16
Schon mal was von C gehört? Es wurde angeblich intern nur für ein einzelnes Betriebssystem auf einem einzelnen Computer entwickelt. Warum hat K & R nicht einfach etwas Bewährtes verwendet, das zum Schreiben von Betriebssystemen wie PL / 1, BCPL oder Algol 68 verwendet wurde?
Idrougge