Warum gibt es so viele Programmiersprachen? Warum werden immer noch neue Sprachen gemacht? [geschlossen]

51

Warum gibt es so viele Programmiersprachen?

Und was veranlasst jemanden, eine Programmiersprache zu erstellen, obwohl es bereits andere Sprachen gibt?

Moshe
quelle
Ein unterhaltsames Video zu diesem Thema ist "Die letzte Programmiersprache" von Onkel Bob Martin ( skillsmatter.com/podcast/agile-testing/bobs-last-language )
mikera
Weil Programmierer Werkzeuge mögen.
Haylem
1
Gleiche Frage zur Informatik .
Kaveh
2
Nicht ohne Bezug: xkcd.com/927
Leichtigkeit Rennen mit Monica
Es ist schwer zu rechtfertigen, ich denke, jede Sprache hat eine Geschichte. Die meisten Sprachen haben dem Hersteller meines Wissens nicht viel gebracht. Die meisten Sprachen drehen sich um dieselben Konzepte und lösen selten echte Probleme oder bieten gute Umgebungen. Ich denke, wenn sie es schaffen, fühlen sie sich des Ganzen überdrüssig und vielleicht sehen sie, wie sie ihr Leben verschwendet haben. Denken Sie an ksh oder JavaScript. Einfach schreckliche und schädliche Werkzeuge.
NoChance

Antworten:

36

Programmiersprachen entwickeln sich

Neue Programmiersprachen lernen oft aus vorhandenen Sprachen und fügen Funktionen auf neue Weise hinzu, entfernen sie und kombinieren sie. Es gibt ein paar verschiedene Paradigmen wie objektorientiert und funktional und viele moderne Sprachen versuchen, Merkmale aus beiden zu mischen.

Es gibt auch neue Probleme, die gelöst werden müssen, z. B. die Zunahme von Mehrkern-CPUs. Die gebräuchlichste Lösung dafür waren Threads, aber einige Programmiersprachen versuchen, das Nebenläufigkeitsproblem auf andere Weise zu lösen, z. B. das Actor Model. Siehe Erlang - Software für eine gleichzeitige Welt

Jonas
quelle
10
Das Interessante an Erlang ist, dass es sich um eine "Reinraum-Neuerfindung" des Actor-Modells handelt. Als Armstrong und seine Freunde Erlang entwickelten, wussten sie nichts über die Arbeit von Hewitt et al am Actor-Modell!
Frank Shearar
@Frank: Das ist interessant. Das wusste ich nicht, danke.
Jonas
2
+1 für die Evolution. Eine analoge Frage könnte lauten: "Warum gibt es so viele Tier- und Pflanzenarten? Warum erscheinen immer noch neue?"
Gyan aka Gary Buyn
1
@GaryBuyn, das ist nur ein "+1 für die Evolution", wenn Sie diesen Standpunkt abonnieren. Für viele ist die tierische Analogie ein kleines bisschen zu weit.
Darknight
@GaryBuyn, Uhm ... das ist ziemlich so analog wie "hamlet" zu "hamster".
Pacerier
22

Es ist ein Zyklus. Sie beginnen eine neue Sprache und können sich von der schlechten Syntax und den schlechten Entscheidungen Ihrer Vorgänger lösen. In Version 1 sieht die Sprache großartig aus, weil sie nichts von diesem Gepäck hat und die Arbeit erledigt. In neueren Versionen experimentieren Sie mit Funktionen, die möglicherweise nicht funktionieren, oder bringen Funktionen aus anderen, neueren Sprachen ein, die Ihre Syntax etwas unübersichtlich machen. Nach ein paar weiteren Versionen stellen Sie fest, dass Ihre Sprache jetzt genauso kompliziert ist wie die, die Sie ersetzt haben, mit dummen Syntaxproblemen und altem Gepäck. Und plötzlich merkt man, dass man all das reparieren kann, wenn man eine neue Sprache erstellt ...

RationalGeek
quelle
2
Dies gilt definitiv für Bibliotheken, Frameworks und Software, aber ich persönlich kenne keine Sprache, für die dies gilt. Hast du Beispiele?
back2dos
16
Ich denke, sowohl C # als auch Java wurden zumindest teilweise eingeführt, um die Komplexität von C ++ zu beheben. Und jetzt, wenn Sie sich beide Sprachen mehrere Versionen später ansehen, werden ihre Syntax- und Funktionssätze so komplex, dass die Leute anfangen, darüber zu sprechen, dass sie "über den Berg" gehen. Nur meine Meinung, obwohl ich nichts beweisen kann. :-)
RationalGeek
2
Guter Punkt, aber ich denke , eine andere Tatsache im Spiel ist mit C # - es ist ein kommerzielles Produkt , das für gemeinnützige Gründen nicht existiert und für die Marktakzeptanz / Ihre Kunden Produkte halten werden müssen , „verbessert“ für neue Versionen usw.
gf
1
Das ist wahr. Der Drang, neue Funktionen hinzuzufügen, um mehr Geld vom Markt zu bekommen, kann nicht ignoriert werden. Es ist jedoch ein zweischneidiges Schwert. Genau aus diesem Grund können Sie von einem kommerziell unterstützten Produkt neue Funktionen erwarten. Aber von einem Open-Source-Produkt erhalten Sie nur neue Funktionen, solange die Freiwilligenarmee daran interessiert ist, und es gibt jemanden, der die Katzen hüten kann.
RationalGeek
C # hat viele Funktionen, ist aber immer noch eine sauberere Sprache als C ++. Neuere Ergänzungen wie LINQ ermöglichen es Ihnen, Dinge sauber zu machen, die Sie in C ++ nicht einfach tun können. Ich denke, es ist wahrscheinlicher, dass es zwei Arten der Erhaltung von Komplexität gibt - eine, bei der einem Problem Komplexität innewohnt, und eine, bei der die Anforderungen komplexer werden, wenn Sie eine Art redundanter Komplexität aus Ihren Programmen entfernen - Komplexität wie Daten, wird erweitert, um den verfügbaren "Raum" zu füllen.
Steve314
11

Aus dem gleichen Grund gibt es Hämmer, Schraubendreher, Handsägen, Bandsägen, Presslufthammer, Brecheisen und viele andere Werkzeuge: Nicht jede Sprache ist für jede Aufgabe perfekt. Einige Sprachen zielen auf bestimmte Problembereiche ab: R eignet sich besonders für statistische Analysen, C eignet sich besonders für das Schreiben von Betriebssystemkernen, Haskell eignet sich besonders für mathematisch anspruchsvolle oder finanzielle Berechnungen, Erlang eignet sich besonders für die gleichzeitige Programmierung usw.

Aus dem gleichen Grund gibt es auch Shirts in verschiedenen Farben: Manche mögen den "Stil" einer Sprache über einer anderen.

Und natürlich finden es viele Programmierer lustig, eine neue Sprache zu erfinden, nur um zu sehen, was passiert, oder vielleicht, weil sie etwas über Sprachen wissen und einen Kratzer kratzen oder einige Ideen ausprobieren möchten.

mipadi
quelle
Es gibt nicht nur all diese Bauwerkzeuge, sondern auch viele verschiedene Arten von Hämmern und Hämmern, die ähnlich aussehen, aber spezifische Designfaktoren aufweisen, die sie für verschiedene Aufgaben oder Benutzer besser machen.
Barry Brown
+1 Für die Eignung für Problemdomains. Die Wissenschaftler, die Werkzeuge im Allgemeinen studieren, sagen, dass ein sehr allgemeines Werkzeug weniger leistungsfähig ist als ein bestimmtes Werkzeug für eine bestimmte Aufgabe. Denken Sie an einen verstellbaren
Maulschlüssel im Vergleich zu
8

Weil sie alle saugen (so oder so).

Im Moment haben wir ungefähr 5000 Sprachen erstellt, um natürliche Probleme zu beschreiben, und keine davon steht zum Schreiben von Programmen zur Verfügung (ein Beispiel wäre "Englisch").

Bis jemand einen Weg findet, eine Programmiersprache zu erstellen, die das ausdrückt, was Sie in einem Satz in einer natürlichen Sprache ausdrücken können, werden sie weiter kommen.

Aaron Digulla
quelle
15
Auch dann werden sie weiter kommen. Nur tote Sprachen sind in Stein gemeißelt, verzeihen Sie das Wortspiel. Es gibt einen Grund, warum sich lebende Sprachen ständig ändern.
R. Martinho Fernandes
1
Einige würden behaupten, dass die natürliche Sprache, um Probleme auszudrücken, Mathematik ist. Dies wirft die Frage auf, warum Menschen funktionellen Sprachen weiterhin syntaktischen Zucker hinzufügen, anstatt den reinen Lambda-Kalkül zu verwenden. Ich denke, die Probleme, die wir regelmäßig lösen müssen, lassen sich weder in Englisch noch in Mathematik leicht ausdrücken.
Steve314
5
Einverstanden. Es ist so schwer, "Ich habe Hunger" mit reiner Mathematik auszudrücken.
Aaron Digulla
1
@ AaronDigulla: hungrig = Summe (Bauch / Essen) sicherlich :)
gbjbaanb
@AaronDigulla das ist ein gutes Beispiel, oft möchte man Berechnung ausdrücken. Also nehmen wir ein gegebenes Szenario wie: Ich bin hungrig, jetzt essen -> gut, jetzt nicht essen -> verhungern. Systeme zu bauen, die in der Lage sind, den Kontext zu verhandeln oder zu erweitern, ist meines Erachtens das Ziel von AI. Normale Programmiersprachen drücken nur aus, was die Leute ihnen sagen, was sie tun sollen, und normalerweise ist dies eher spezifisch als allgemein. Aber da die meisten Probleme selbst spezifisch sind, können Sie das Problem hier sehen.
AndreasScheinert
6

Offensichtlich ist eine wichtige Motivation für die Schaffung einer neuen Sprache, etwas Besseres als die bereits vorhandenen Sprachen zu erreichen. Und da es immer Raum für Verbesserungen gibt, wird es immer neue Sprachen geben.

Kommerzielle Interessen sind ein weiterer wichtiger Grund. Ich halte es zum Beispiel für wichtig, dass Microsoft eine Sprache für jeden Bedarf anbietet, damit Unternehmen und Entwickler ihre Plattformen bevorzugen.

Carlos
quelle
6

Legacy-Code. Wenn Sie eine neue Sprache beginnen, müssen Sie nicht alle Beschwerden anhören / berücksichtigen, wenn Sie eine alte Sprache ändern. Auch wenn alle zustimmen, dass die neue Implementierung besser ist, kann sie den alten Code nicht brechen. Und da draußen gibt es viele alte Codes.

JeffO
quelle
3
Gibt es einen dokumentierten Fall, in dem eine Sprache entwickelt wurde, um Legacy-Code zu vermeiden? Diese Behauptung erscheint höchst unwahrscheinlich. Ich kann den Fall sehen, in dem Sie neu beginnen möchten (mir fällt .net ein), aber es geht nicht so sehr darum, alten Code zu vermeiden, sondern künftigen Code besser zu aktivieren.
Bryan Oakley
Ich glaube nicht, dass das stimmt. Es ist (normalerweise) möglich, eine Open-Source-Implementierung einer existierenden Sprache zu forken.
Alternative
@BryanOakley - Ursprünglich sollte .NET die Abwärtskompatibilität mit VB6 aufrechterhalten, sie entschieden jedoch, dass dies ein zu schweres Problem war. .NET hatte immer noch eine Menge von WRT Java / J ++, auf dem es basierte. Ich denke, D ist ein Beispiel für eine Sprache, die gegen alten Code entwickelt wurde.
gbjbaanb
4

weil es Spaß macht, neue Sprachen zu erstellen, auch wenn sie nicht wirklich gebraucht werden

Eine esoterische Programmiersprache (manchmal abgekürzt als Esolang) ist eine Programmiersprache, die entwickelt wurde, um die Grenzen des Entwurfs von Computerprogrammiersprachen zu testen, als Proof of Concept oder als Scherz.

jk.
quelle
1
Für diejenigen, die im Wikipedia-Artikel nicht auf die Fußnoten gekommen sind, ist das Wiki für esoterische Sprachen eine Menge Spaß: esoteric.voxelperfect.net/wiki/Main_Page
David Winslow
Würde es Ihnen etwas ausmachen, mehr darüber zu erklären, was es tut, und warum empfehlen Sie es als Antwort auf die gestellte Frage? „Link-only Antworten“ sind nicht ganz willkommen bei Stapelaustausch
gnat
1
@gnat Ehrlich gesagt denke ich, dass der Originaltext keine Antwort nur auf einen Link ist, sondern eine kurze, aber vollkommen gültige Antwort ohne den Link. Da der Link jedoch Geschmack verleiht, habe ich ein kurzes Zitat daraus eingefügt.
jk.
3

Das Erstellen einer Programmiersprache macht ziemlich viel Spaß. Es ist nahezu reine kreative Arbeit, da Sie nicht auf vorherige Anforderungen beschränkt sind. Es ist nicht mehr so ​​schwer zu implementieren, da Sie immer nach C kompilieren und den C-Code kompilieren können, um eine angemessene Leistung zu erzielen, wenn Sie überhaupt einen Compiler schreiben.

Natürlich haben die meisten von uns weniger gute Ideen, als wir denken, und daher werden sie häufig enttäuscht oder von niemand anderem als dem ursprünglichen Designer geliebt.

Denken Sie an jede Programmiersprache, die Sie kennen. Du kannst dir leicht ein paar Dinge einfallen lassen, die du nicht magst, oder? Sie haben vermutlich Ideen, wie diese behoben werden könnten. Mit ein wenig mehr Schwung, vorausgesetzt Sie wissen viel über Compiler-Erstellung (und viele Leute wissen es), könnten Sie anfangen, Ihre eigenen zu entwerfen und sogar zu implementieren.

David Thornley
quelle
2

Schnelle kurze Antwort

Das Rad neu erfinden ... Was ist der aktuelle Trend ...

Langweilige Antwort

Viele Leute vergessen, dass "eine andere ähnliche neue Sprache für alte Programmierer" "eine einfache neue Sprache für neue Programmierer" ist.

Was meine ich damit?

Nun, für "mehrere Jahre" -Programmierer können Java oder C # eine zusätzliche Programmiersprache zu vorhandenem Cobol, (OO / Procedural) Basic, C / C ++ sein, während für "neue" Programmierer Java oder C # neue Sprachen sind, während Cobol, (OO / Procedural) Basic, C / C ++ gibt es für sie nicht. Das Rad neu zu erfinden ist daher eine häufige Angelegenheit ...

Und wenn es einen neuen Technologietrend gibt, können die Leute eine neue Programmiersprache entwickeln, die auf diesem Trend basiert, wie Ecmascript / Javascript für das Web und funktionale Programmierung ...

Prost.

umlcat
quelle
+1, um auf den Aspekt der Neuerfindung hinzuweisen. Oft geschieht dies aus Marketinggründen: Jedes Unternehmen oder jede Organisation, die groß genug ist, muss über eine eigene Programmiersprache verfügen.
Giorgio
1

Neue Programmiersprachen werden aus vielen verschiedenen Gründen erstellt, vor allem, weil es ein neues Programmierparadigma gibt oder weil die Fortschritte in der Hardware dazu führen, dass neue Sprachen erstellt werden, um die neuen Hardwarefunktionen wie Multitasking usw. zu nutzen.

In meinem Fall baue ich normalerweise aus speziellen Gründen kleine Compiler (mit einer neuen Programmiersprache). Wenn ich viele Spiele mache und glaube, dass eine Programmiersprache, die speziell für die Spieleentwicklung entwickelt wurde, zu einem kleineren, schnelleren Code und einer schnelleren Entwicklung führt, dann erstelle ich sie. und am Ende stellt sich heraus, dass es auch für andere allgemeine Zwecke verwendet werden kann.

Ich denke, die meisten Leute, die Programmiersprachen erstellen, haben einen bestimmten Zweck im Sinn, es gibt diejenigen, die sie von Anfang an für allgemeine Zwecke erstellen. aber die meisten sind es nicht.

Übrigens denke ich, dass es viel zu viele Programmiersprachen gibt, aber es werden immer hundert neue herauskommen. Einige aus Spaß, andere aus einem Nischenzweck, als Schulprojekt oder aus Hunderten anderer Gründe. und früher oder später wird ein neuer populär. Es wird niemals enden.

Sergio Fernandez
quelle
0

Aus dem gleichen Grund gibt es so viele <was auch immer> und wir erschaffen immer wieder neue <was auch immer>

Es gibt beispielsweise ein Dutzend PHP-MVC-Frameworks, aber die Leute werden immer neue erstellen, um bestimmte Anforderungen zu erfüllen, um nicht von einem anderen Team abhängig zu werden, oder um einfach zu versuchen, etwas Besseres zu erstellen. Das gleiche gilt für praktisch alle Arten von Werkzeugen oder Anwendungen.

Es ist eine sehr gute Sache, meiner Meinung nach eine Win-Win-Situation für alle.

Fosco
quelle
NIH-Syndrom = überhaupt nicht nützlich für die IT-Branche.
gbjbaanb
0

Universitäten steuern viele Programmiersprachen bei, ebenso wie sehr große Unternehmen wie Ericsson (Erlang = Ericsson-Sprache), Bell Labs (B- und C-Sprachen) und Google (Go-Sprache seit einigen Monaten). Viele derjenigen, die im Rahmen der Universitätsforschung geschrieben wurden, werden nicht viel verwendet. Es gibt jedoch einige bemerkenswerte Ausnahmen. Ich nehme an, dass das Schreiben einer eigenen Sprache / eines eigenen Compilers ein gutes Thema für Doktorarbeiten von Personen ist, die CS-Theorie oder verwandte Disziplinen studieren. Es fällt mir auf, dass Python eine der ersten Sprachen ist, die aus den gemeinsamen Online-Bemühungen verschiedener Programmierer um eine einzige Idee hervorgegangen ist.

ixtmixilix
quelle
python-history.blogspot.com/2009/01/… beschreibt die Geburt von Python im Detail
Andy Dent
0

Es gibt ein paar Gründe, die meisten sind, weil die Leute denken, dass das, was existiert, es nicht einfach macht, eine Reihe von Problemen zu lösen. Einige sind nur zum Spaß oder für akademisches Interesse.

Ich denke, es gibt ein stichhaltiges Argument dafür, dass die Frage, wie Sie die perfekte Sprache entwerfen, noch nicht gelöst ist (und möglicherweise nie). Solange die Leute neue Ideen haben, was eine großartige Sprache ausmacht, werden sie es weiterhin versuchen. Einige dieser Versuche werden coolen neuen Raum wie Erlang abbilden und andere werden floppen, aber solange aus dem Flop etwas gelernt wird, ist das auch in Ordnung.

Zachary K
quelle
-1

Wie bereits erwähnt, versuchen Sprachen, auf bestimmte Aufgaben abzuzielen, und die neuen Sprachen können auf einen neuen Bereich abzielen. Diese Sprachen können Funktionen aus anderen Sprachen übernehmen, die derzeit nicht verfügbar sind.

Ein weiterer Grund für neue Sprachen ist der Versuch, viele verschiedene Aufgaben zu übernehmen und die Sprache der Wahl für viele verschiedene Bedürfnisse zu sein. Einige dieser Sprachen versuchen, alle Sprachen zu umfassen, die Sie immer verwenden würden, unabhängig davon, welchen Bedarf Sie haben.

sange
quelle
-1

In meiner Programmiersprachenklasse habe ich gelernt, dass die meisten Sprachen erfunden wurden, um Juckreiz zu lindern. Die meisten Sprachen wurden erfunden, um einige Algorithmen besser ausdrücken zu können. Zum Beispiel wurden funktionale Sprachen erfunden, um rekursiven Algorithmen einen viel ausdrucksstärkeren Raum zu geben.

Zu fragen, warum es so viele Sprachen gibt, ist wie zu fragen, warum C ++ 0x? :)

Und je mehr Sprachen Sie kennen, desto ausdrucksvoller können Sie werden - dies gilt sowohl für Programmiersprachen als auch für natürliche Sprachen!

2rs2ts
quelle