Ist eine Sprache für etwas anderes als den vorgesehenen Zweck sehr beliebt geworden?


70

Nehmen Sie dieses Szenario:

  • Ein Programmierer erstellt eine Sprache, um ein Problem zu lösen.

  • Anschließend gibt er diese Sprache frei, um anderen bei der Lösung solcher Probleme zu helfen.

  • Ein anderer Programmierer entdeckt, dass es für eine andere Kategorie von Problemen tatsächlich viel besser ist.

  • Aufgrund dieser neuen Anwendung wird die Sprache dann hauptsächlich für diese Anwendung populär.

Gibt es Fälle, in denen dies tatsächlich vorkommt?

Anders ausgedrückt: Hat der beabsichtigte Zweck einer Sprache einen Einfluss darauf, wie sie tatsächlich verwendet wird oder ob sie populär wird? Ist es auch wichtig , dass eine Sprache hat einen angekündigten Zweck?


4
Ihr HTML-Beispiel scheint nicht wirklich zu dem zu passen, was Sie suchen. Sind technische Dokumente so unterschiedlich wie jedes andere Dokument? Der Hauptzweck von HTML ist nach wie vor derselbe wie 1989: Dokumente können auf einfache Weise miteinander in Beziehung gesetzt werden. IMHO HTML ist das genaue Gegenteil von dem, was Sie tatsächlich suchen.
Yannis

5
Angesichts der langen Liste von Antworten; vielleicht ist die gegenteilige frage interessanter: welche (populäre) sprache wird nur für den beabsichtigten zweck verwendet?
Jaap

@ Yannis: Guter Punkt. Es ist nicht das beste Beispiel und könnte wirklich so oder so argumentiert werden. Zum Entfernen bearbeitet.
Jon Purdy

@Jaap: Ich dachte das gleiche!
Leonbloy

2
Ich könnte mich darin irren, aber ich bin mir ziemlich sicher, dass die meisten Sprachen nicht für das verwendet werden, was ihre Schöpfer beabsichtigten. Ich denke, der Hauptgrund dafür ist, dass Außenstehende nicht wissen, wofür es verwendet werden soll, was ihnen hilft, offener für das Potenzial einer Sprache zu sein.
Kenneth

Antworten:


118

Lisp . McCarthy hat Lisp ursprünglich in einem Artikel spezifiziert, um zu zeigen, dass wenige einfache Notationen ausreichen, um eine vollständige Sprache zu erstellen. Er war überrascht, dass Lisp in Maschinencode implementiert werden konnte (Steve Russel führte die erste Implementierung des Lisp-Interpreters durch). Lisp wird häufig für die AI-Programmierung verwendet.


70
+1, Lisp war keine Programmiersprache! Ich glaube nicht, dass Sie das übertreffen können.
Kilian Foth

7
OTOH, man könnte argumentieren, dass LISP für den Einsatz an der Grenze zwischen Programmierung und Mathematik konzipiert wurde und dort bleibt.
MSalters

1
Ich glaube, McCarthy verwendete Lisp als Beispiel in seinem Unterricht und wollte einen Compiler dafür schreiben, erwähnte aber eines Tages in der Klasse, dass die Handcodierung der Eval-Funktion einen Interpreter implementieren würde, aber natürlich "niemand würde das wirklich wollen".
Steven A. Lowe

Meine Lisper-Freunde sagen mir, dass es nicht mehr so ​​oft in der KI verwendet wird, aber es hat immer noch überall Anwendung .
greyfade

111

Java war ursprünglich für die Programmierung eingebetteter Systeme vorgesehen. Aus Wikipedia "Java wurde ursprünglich für interaktives Fernsehen entwickelt" . Aber es wurde sehr beliebt für die Anwendungs- und Webprogrammierung.


4
Huh. Ich kann nicht glauben, dass ich nicht daran gedacht habe. Es ist wohl das kanonische Beispiel ... obwohl das nicht heißt, dass ich noch nicht überrascht sein werde.
Jon Purdy

Wurde Java tatsächlich jemals für eingebettete Arbeit freigegeben (vor eingebettetem Java, das eher nach seiner Werbung für das Web kam)?
Marcin

Das entscheidende Designelement im Design-Java war die Fähigkeit, nicht vertrauenswürdigen Code auszuführen.

13
Die Geschichte ist noch schlimmer: A) Es war für eingebettete Systeme gedacht. B) sah aber nie das Licht, bis es in Webseiten eingebettet werden konnte. C) es wurde nicht respektiert, bis es für 'unternehmerische' Webanwendungen verwendet wurde, und D) es wurde schließlich in viele Telefonbetriebssysteme eingebettet; Aber nicht als Hardware-Controller, sondern als GUI-Plattform.
Javier

Es gibt seit mehr als 10 Jahren ein Projekt, um es auf Set-Top-Boxen zu bringen - schauen Sie nach OCAP oder tru-2way
Bill K,

32

Lua wurde in erster Linie als Konfigurationssprache entwickelt und fand schließlich eine Nische als beliebteste Skriptsprache für Spiele (weil sie klein, schnell, leistungsstark, portabel, einfach zu erweitern und einzubetten ist und eine benutzerfreundliche Syntax aufweist). Das beliebteste Spiel, World of Warcraft, verwendet es nicht einmal für die Konfiguration, sondern XML.


... und jetzt mit LuaJIT findet es immer mehr Verwendung in Echtzeit-Verarbeitungsanwendungen
Javier


@lukas: "Nicht wirklich" was ? Beachten Sie, dass die Vorgänger SOL und DEL nicht einmal Kontrollfluss hatten, sondern reine Konfigurationssprachen waren. Lua war die Erweiterung dieser Konfigurationssprachen um Programmierunterstützung.
Schlamm

"Lua wurde hauptsächlich als Konfigurationssprache entwickelt" würde ich als Programmiersprache bezeichnen.
Lukasz Madon

7
Vielleicht hätte ich "Verwendungszweck" sagen sollen, anstatt "in erster Linie entworfen als". Der beabsichtigte Zweck war, Lua dort einzusetzen, wo SOL und DEL verwendet wurden. Dies waren Konfigurationssprachen, in denen Benutzer anfingen, Programmierfunktionen anzufordern. Lua wurde entwickelt, um diese Anforderungen zu erfüllen. Wie die Autoren selbst festgestellt haben: "Die weite Verbreitung von Lua in Spielen hat uns überrascht. Wir hatten keine Spieleentwicklung als Ziel für Lua." Das ist ziemlich genau das, wonach die OP gesucht hat, nein?
Schlamm

32

Larry Walls ursprüngliche Absicht für Perl war eine " universelle Unix-Skriptsprache zur Erleichterung der Berichtsverarbeitung ". Die Manpage beschreibt die Sprache wie folgt:

Perl ist eine interpretierte Sprache, die für das Scannen beliebiger Textdateien, das Extrahieren von Informationen aus diesen Textdateien und das Drucken von Berichten auf der Grundlage dieser Informationen optimiert ist.

Und natürlich sagt uns die Manpage auch, dass Perl für Practical Extraction and Report Language steht (der tatsächliche Name ist eine falsche Schreibweise des ursprünglichen Namens Pearl , der geändert wurde, als Wall eine bereits vorhandene PEARL-Sprache entdeckte ).

Perl hat seitdem einen langen Weg zurückgelegt, da es die Sprache ist, aus der die Götter das Universum erschaffen haben .

Bildbeschreibung hier eingeben


23
Man sollte das korrigieren: Pathologisch vielseitiger Mülleimer
Richard

3
Es gibt mehr als einen Weg, Abkürzungen zu entfernen! Very Perly

Jedes Akronym für Perl ist eigentlich ein Backronym.
CanSpice

1
@DarkTemplar So wie ich es interpretiere, hat sich Perl fast überall eingeschlichen. Von den Anfängen an entwickelte sich Perl zu einer sehr beliebten Web-Sprache, einer äußerst beliebten Skriptsprache, einer etwas beliebten Mehrzwecksprache, deren Syntax für reguläre Ausdrücke endgültig wurde, eine andere Sprache (PHP) hervorbrachte usw. Plus der Comic verweist auch auf lisp, was die akzeptierte Antwort auf die Frage ist, so dass ich dachte, dass es eine lustige (wenn auch ungenaue) Darstellung des Verhältnisses der beiden Sprachen war (eine ist die verträumte, die andere die, die die Leute tatsächlich benutzen).
Yannis

1
@ DarkTemplar Yeap. Es ist unter den Top Ten im TIOBE-Index . Natürlich sollten Sie den TIOBE-Index nicht sehr ernst nehmen, er ist relativ und subjektiv. Aber immer noch ein gutes Indiz für die Beliebtheit der Sprache.
Yannis

28

Ich würde vermuten, dass JavaScript auch in diese Frage passt, weil ich nicht glaube, dass Brendan Eich sich in den Netscape-Tagen jemals vorgestellt hat, dass zukünftige Versionen seines LiveScript zur Erstellung der heutigen sogenannten Web- "Anwendungen" verwendet werden könnten .

JavaScript hat sich von einfachen Formularüberprüfungen und Image-Rollovers zu einem leistungsstarken Tool entwickelt, das in Funktionalität und Schönheit mit Offline-Anwendungen mithalten kann.

Leider denke ich, dass viele es immer noch als Spielzeug ansehen.


31
Das Interessante ist, dass es sich in Richtung Assemblersprache des Webs entwickelt. Mit anderen Worten, was andere Sprachen zusammengestellt nach unten und ausgeführt. Ich glaube nicht , Brendan Eich erwartet , dass .

3
Ich möchte noch etwas hinzufügen: Es ist nicht nur eine clientseitige Skriptsprache. Viele Projekte wie node.js oder rhino verwenden Javascript als serverseitige Sprache
gion_13

Nur neugierig, aber was ist eine "clientseitige Skriptsprache" vs. "serverseitige Sprache" .......?
Dark Templar

@ DarkTemplar. Auf dem Server wird eine serverseitige Skriptsprache ausgeführt und die Ausgabe an den Browser gesendet. Eine clientseitige Skriptsprache wird unverändert an den Browser gesendet und dort ausgeführt. (Natürlich kann die serverseitige Sprache verwendet werden, um die clientseitige Sprache auszugeben, wenn Sie möchten.) Die einzige Sprache, die in den meisten Browsern ausgeführt wird, ist Javascript.
TRiG

19

Erlang. Es wurde vor langer Zeit in den Labors von Ericsson erfunden, um Telefonieanwendungen zu entwickeln, wahrscheinlich für deren Vermittlungs- und Zugriffsgeräte. Jetzt hat es sich zu einer vielversprechenden dynamischen Allzwecksprache mit einem interessanten Konzept der Nebenläufigkeit entwickelt.

Es wäre interessant, wenn in Zukunft mehr Sprachen aus der Telekommunikationswelt ihre Grenzen zur IT-Welt überschreiten und sich von dort aus weiterentwickeln würden, insbesondere Sprachen, die ursprünglich für die Modellierung und Verifizierung von Protokollen entwickelt wurden.


Und war es nicht eine der Inspirationen für node.js?
dodgy_coder

Denken Sie nicht, dass dies qualifiziert. Der Grund, warum Erlang für die Telefonie erfunden wurde, besteht darin, dass eine allgemeine dynamische Sprache für den gemeinsamen Zugriff benötigt wird. Es ist immer noch so.
Alan Baljeu


14

Ursprünglich bedeutete PHP " Persönliche Homepage" , heute wird es jedoch auch für einige etwas größere Webanwendungen verwendet.


18
Natürlich ist der größte PHP-Benutzer, Facebook, in vielerlei Hinsicht immer noch auf dem Markt für persönliche Homepages.
Jaap

3
"PHP / FI wurde 1995 von Rasmus Lerdorf als einfacher Satz von Perl-Skripten zur Verfolgung der Zugriffe auf seinen Online-Lebenslauf erstellt." Es ist ein langer Weg, Baby.
Nickf

Obwohl PHP immer noch eine Web-Sprache ist, wurde es ein wenig umgedreht: PHP sollte als kleines Snippet in HTML eingebettet werden, wohingegen viele Projekte jetzt HTML-Strings in PHP generieren. Sie benötigen jedoch noch ein <?phpTag am Anfang der Datei!
Warbo

14

Ich bin mir ziemlich sicher, dass VBScript nicht zum Schreiben von Malware gedacht ist, obwohl dies eine sehr häufige Verwendung ist.


1
Das ist ein bisschen hart, findest du nicht? Java und C hatten ihren angemessenen Anteil an Malware.
Jeremy

@JChild: Seit deinem Kommentar sind mehrere Jahre vergangen. Die Verteidigung von VB war jedoch schon damals eine sehr seltsame Sache.
Magus

@ Magus Es ist nicht einmal VB. Es ist VBScript. Sie wissen, die Dateien mit .vbs-Erweiterungen. Diejenigen, die Sie automatisch annehmen, sind Viren, wenn Sie sie sehen.
user16764

13

Ursprünglich als Methode entwickelt, um Code allgemeiner zu gestalten, erwies sich die Template-Metaprogrammierung in C ++ als vollständig und wird bis heute verwendet, um die C ++ - Sprache durch Bibliotheken wie boost erheblich zu verbessern.


8
... und um C ++ - Programmierer mit übermäßig langen Build-Zeiten in den
Bann zu ziehen ;-)

8
und schreckliche Fehlermeldungen.
DeadMG

11

BASIC ist ein weiterer berühmter Fall. Der Name ( Anfänger -Symbolischer Allzweckanweisungscode) weist auf seine Herkunft als Lernsprache hin, ist aber seitdem ziemlich gewachsen.


24
heh - Microsoft ersetzt "Anfänger" mit "Geschäft" und saugte in Millionen
Steven A. Lowe

11

VHDL und Verilog (aka VerilogHDL) wurden ursprünglich beabsichtigt zu beschreiben digitale Schaltungen und Komponenten. Sie dienten als Dokumentationsform und zur Simulation des Verhaltens der Komponenten. Später entwickelten Synopsys und andere eine Technologie, die (eine Teilmenge) dieser Beschreibungen in eine Netzliste von Gattern umwandeln kann, die wiederum zur Herstellung echter Hardware verwendet werden kann.

VHDL und Verilog werden aus historischen Gründen als Hardware Description Languages ​​(HDLs) bezeichnet. Heute werden sie tatsächlich als Hardware- Design- Sprachen (gleiches Akronym) verwendet.


Schöne, realistische, modellgetriebene Entwicklung
Jaap

@ Mark Ja, VHDL ist eine sehr schnelle integrierte Schaltung mit Hardwarebeschreibungssprache. Verilog ist eine völlig andere Sprache. Verilog wird manchmal auch als Verilog HDL bezeichnet. en.wikipedia.org/wiki/Verilog
Philippe

2
QHDL ist VHDL sehr ähnlich und wird zur Beschreibung von Schaltkreisen für Quantencomputer verwendet. Ich kann mir keine Sprache vorstellen, die so weit von ihren Ursprüngen entfernt ist.
Mark Booth

@ Mark Wow, das ist interessant "QHDL"! Google zeigt viel Lärm. Haben Sie eine Referenz?
Philippe

1
Ich habe es bei Paul Blacks ausgezeichneter "Quantum Computing for Programmers" Session auf der ACCU 2011 Konferenz herausgefunden. Seine Folien finden Sie unter accu.org/content/conf2011/…
Mark Booth,

10

ML begann als Sprache für die Entwicklung und Skripterstellung eines Theorembeweisers. Es war die "Metasprache" des Theorembeweisers.


In Ordung. Es ist erwähnenswert, dass der Grund, warum dies eine gültige Antwort ist, darin besteht, dass die Hauptanwendung jetzt Compiler und andere solche Sprachtools sind (zumindest soweit ich weiß).
Jon Purdy

6
+1, aber zu sagen, dass ML "sehr populär" wurde, ist ein bisschen wie ein Stretch
nikie

Vielleicht, aber zusätzlich zu seinen heutigen direkten Nutzern, beeinflusste es fast jede einzelne getippte Sprache, die danach kam.
Ryan Culpepper

7

C
Ursprünglich wurde es für die Verwendung mit dem Unix-Betriebssystem entwickelt. Aber die Sprache wurde so populär, dass Dennis Ritchie überrascht war.
In seinem berühmten Buch Die C - Programmiersprache . Ritchie gibt an, "dass es sich weit über seine Ursprünge als Sprache des UNIX-Betriebssystems hinaus verbreitet hat." und wie überrascht er war, als es populäre Sprache für die Anwendungsentwicklung wurde.


11
Nun, es wurde ursprünglich entwickelt, um Systeme und Low-Level-Anwendungen plattformübergreifend zu entwickeln. Es bleibt trotz seiner Popularität mit seinen ursprünglichen Zielen konsonant, so dass es nicht passt.
Jon Purdy

3
@Jon Nun, es passt irgendwie, da es seinen Zweck übertrifft, indem es der einfachste Weg ist, sich in den Fuß zu schießen.
Yannis

1
@Yannis: Haha, stimmt. Aber ich frage nach Sprachen, deren primärer Zweck sich grundlegend geändert hat, und nicht nach solchen, die einfach zu mehr Zwecken gewachsen sind.
Jon Purdy

Ich würde hinzufügen, dass C als eine der Hauptsprachen für verschleierte Codewettbewerbe populär wurde.
Peter G.

War es nicht für die Implementierung des Betriebssystems konzipiert?
Nikko

3

C ++ wurde ursprünglich als "C mit Klassen" entwickelt, um die objektorientierte Programmierung in C ++ zu erleichtern.

In einer späteren Version wurden dann Vorlagen bereitgestellt, um die Implementierung stark typisierter Containerklassen zu ermöglichen. Es wurde erst später bemerkt, dass diese Vorlagen tatsächlich eine Turing-vollständige Programmiersprache zur Kompilierungszeit darstellen.

Infolgedessen verwenden viele Anwendungen C ++ nicht mehr als objektorientierte Programmiersprache, sondern als algorithmisch gesteuerte Programmiersprache, die stark auf Polymorphismus und Metaprogrammierung während der Kompilierung beruht.


7
C ++ ist jedoch für allgemeine Zwecke konzipiert und wird als allgemeine Sprache verwendet.
BenjaminB

@ Ubiquité Ich glaube nicht, dass C ++ wirklich als Allzwecksprache konzipiert wurde. Oder besser gesagt, es wurde für verschiedene Zwecke entwickelt (insbesondere aber für die Systemprogrammierung). Es war jedoch nicht dafür ausgelegt, mit mehreren Paradigmen zu arbeiten .
Konrad Rudolph

Tatsächlich ist die Multiparadigmen-Natur ihrem Entwurf inhärent, einfach durch Verschrauben von OO-Merkmalen mit C, während die Fähigkeit erhalten bleibt, seine prozeduraleren Merkmale gegebenenfalls zu verwenden.
Jon Purdy

@Jon OK, das gebe ich zu. Generische Programmierung und Template-Metaprogrammierung gehörten jedoch nicht zu diesen Funktionen. Heutzutage ist C ++ eine der wenigen (und wahrscheinlich wichtigsten) Sprachen, die diese Funktionen unterstützt.
Konrad Rudolph

Sehr richtig. Zum Teufel, Unterstützung für generische Programmierung und constsind die beiden wichtigsten Gründe, warum ich C ++ benutze.
Jon Purdy

2

ADA - ursprünglich im Rahmen des DoD-Vertrags für Avionik entwickelt. Obwohl es in dieser Anwendung immer noch verwendet wird, ist es beispielsweise auch für Echtzeit-Business-Middleware beliebt.


5
Es wurde als Allzwecksprache gebaut. Das DoD wollte eine Sprache, die für alles verwendbar ist, um die Menge der verwendeten unterschiedlichen Sprachen zu reduzieren.
BenjaminB

Das ist ziemlich witzig. Ada war eine Sprache, die explizit mit dem Ziel entwickelt wurde, die Anzahl der verschiedenen Sprachen zu reduzieren. Nach dieser Metrik ("für einen Zweck entworfen, für einen anderen verwendet") sollte Ada mit Lisp, einer anderen Antisprachensprache, ganz oben auf der Liste stehen.
Jared Updike

2

"Hat der beabsichtigte Zweck einer Sprache einen Einfluss darauf, wie sie tatsächlich verwendet wird oder ob sie populär wird?"

Ich denke nicht, dass der beabsichtigte Zweck einer Sprache einen großen Einfluss auf ihren tatsächlichen Gebrauch und ihre Popularität hat: Es gibt einige großartige Sprachen, die von Anfang an als innovativ, flexibel und vielseitig konzipiert wurden, aber nie so verbreitet oder populär wurden, außer in sehr spezialisierte vertikale Märkte - zum Beispiel Eiffel. OTOH, Basic, Pascal, C usw. usw. dominierten jahrelang die Landschaft, obwohl sie ursprünglich für begrenzte, spezifische Zwecke entworfen wurden.

IMO-Marketing- / Finanz- und Support- Überlegungen spielten immer eine wichtige Rolle bei der Verbreitung und Erweiterung bestimmter Sprachen. Zum Beispiel: Borland bietet TurboPascal an und verpackt, vermarktet und unterstützt es. MS wartet mit C # und Paketen auf, vermarktet und unterstützt diese. Infolgedessen wurden diese Sprachen populär, es entstanden Werkzeugindustrien von Drittanbietern und immer mehr Entwickler und Unternehmen sprangen auf den Plan.

Aber in den letzten Jahren haben sich die Dynamik von OpenSource-Sprachen und -Tools geändert, und Sprachen werden heute eher aufgrund von "Verdiensten" als aufgrund von Marketing populär - zum Beispiel Ruby, Python und Perl. Dies liegt jedoch nicht an der "Absicht" der Erfinder, sondern vielmehr an dem Potenzial der Sprache zur Erweiterung und zweckmäßigen Verwendung.


2

Ich glaube nicht, dass es eine populäre Sprache gibt, die nicht von ihrer ursprünglichen Absicht abgelöst wurde. Sogar C wurde ursprünglich geschrieben, um ein tragbares Betriebssystem (Unix) zu erstellen.

Jeder Versuch, eine wirklich generische Programmiersprache ohne ein bestimmtes Ziel zu schreiben, würde wahrscheinlich kläglich scheitern, da es an Zurückhaltung und Fokussierung mangelt.


Postscript - ist allgegenwärtig (in fast jedem Computer und Drucker), wird jedoch nur zum Drucken von Grafiken verwendet. Man könnte jedoch argumentieren, dass es bei der Verwendung in PDFs für andere Zwecke verwendet wurde.
13.

1

Ich habe gehört, Ruby wurde als Sprache zum Schreiben von Gedichten entwickelt. Es stellte sich heraus, dass Sie auch sehr schönen Code darin schreiben können!

Ich bin gleich bei dir. Ich möchte, dass du weinst. Weinen. Süß zu wimmern. Dieses Buch ist eine ergreifende Anleitung zu Ruby. Das bedeutet Code, der so schön ist, dass Tränen vergossen werden. Das bedeutet galante Geschichten und düstere Wahrheiten, die Sie am nächsten Morgen in den Armen dieses Buches aufwachen lassen.


2
Hört sich interessant an. Irgendeine Quelle?
Anto

Der Ruby-Link führt Sie zu einem Buch, in dem Ruby auf künstlerische Weise unterrichtet wird. Meine Antwort ist ein Witz in Bezug auf das Buch, in dem behauptet wird, Ruby sei wie Poesie. In Wirklichkeit könnte man sagen, dass Ruby als Allzweck-Programmiersprache konzipiert wurde, aber es hat (einige) dazu inspiriert, Ruby-Code als Poesie zu betrachten.
Tinco
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.