„Aber warum muss ich Python lernen?“, jammerte sie, „Ich mag Scratch!“
„Ich weiß“, sagte ich, „aber es gibt verschiedene Programmiersprachen für verschiedene Arten von Aufgaben.“
„Das ist dumm“, sagte sie
Ich kann mich mit dem kleinen Mädchen in Terence Edens Geschichte identifizieren. In der Highschool war ich total begeistert von Turbo Pascal. Ich hatte das Gefühl, dass ich damit viel anfangen konnte. Dann ging ich aufs College. Der erste Kurs, den ich belegte, war Java und der zweite war Assembler. Ich erinnere mich, dass ich mich *so im Stich gelassen* fühlte. Warum konnte ich nicht einfach in der Sprache programmieren, mit der ich mich bereits wohlfühlte? Vier Jahre lang ging es mir so, und dann habe ich das Hauptfach gewechselt. Inzwischen bin ich etwas abenteuerlustiger, was das Herumprobieren mit Sprachen angeht, aber nicht besonders.
Die Antwort darauf, warum wir verschiedene Programmiersprachen haben, ist, dass sie bis zu einem gewissen Grad unterschiedliche Dinge tun. Es gibt tatsächlich Fälle, in denen etwas auf die gleiche Weise in mehreren Sprachen hätte geschrieben werden können, und man wählt dann die, die man bevorzugt.
Die wirkliche Antwort ist, dass sich ein Programmiernerd (im allerliebsten Sinne) dachte, er könne eine bessere Sprache entwickeln, die (wahrscheinlich) moderne Bedürfnisse und Stile widerspiegelt. Also tat er es und überzeugte eine Menge anderer Nerds davon, dass es eine gute Idee sei, wodurch die Sprache an Fahrt aufnahm. Das ist irgendwie ein Wunder.
Auf der Client-Seite im Web sehen wir das nicht, weil es wahrscheinlich einfacher wäre, den Mars zu kolonisieren, als alle wichtigen Browser dazu zu bringen, eine völlig neue Sprache auszuliefern. Das Web erlebt Innovation durch langsame Evolution und auf Framework-Ebene.
Die Antwort war überraschend einfach und wahr. Eine Sprache, die ich vor Jahrzehnten unterrichtete, war Logo, das von einem Kinderpsychologen speziell für Ihre "Kinderprogrammierer" entwickelt wurde.
Ein revolutionäres Konzept, das es einführte, war die programmierbare "Schildkröte". Es fördert die Verwendung von Funktionen mit Parametern.
Danke für die Erklärung. Sie war einfach und prägnant. Die Antwort liegt vielleicht darin, warum wir verschiedene menschliche Sprachen haben.
Ich würde sagen, weil sie Dinge auf vielen Ebenen SIGNIFIKANT anders machen. C++ ermöglicht die vollständige Kontrolle über Ihre Ressourcen, sei es Quellcode oder Speicherorte. Es ist extrem leistungsfähig, wenn Sie dies benötigen, und extrem nervig, wenn nicht. Python kümmert sich nicht um viele dieser Dinge, sodass es viel freier verwendet werden kann, was Ihnen ermöglicht, viel schneller nutzbaren Code zu schreiben ... Aber wenn Sie die Kontrolle über Ihre Speicherorte BENÖTIGEN, vergessen Sie es. VBA ist extrem leistungsfähig und seine Präsenz in Microsoft Office ermöglicht es Ihnen, diese Werkzeuge fast endlos zu erweitern (ich habe einmal einen genetischen Algorithmus in Excel geschrieben), während Sie bereits gut getestete Funktionen der Hauptsoftware nutzen. Skriptsprachen wie PML und AutoLisp ermöglichen es dem normalen Benutzer, hochpreisige proprietäre Software zu erweitern. Etc.
Warum gibt es verschiedene Gerichte?
Warum gibt es für dasselbe Gericht auch verschiedene Rezepte?
Beide Fragen haben viele ziemlich offensichtliche Antworten, die denen auf die Frage nach mehreren Programmiersprachen und mehreren Software- oder Hardwareteilen, die im Grunde dasselbe leisten, sehr ähnlich sind (oder genau gleich).
„es wäre wahrscheinlich einfacher, den Mars zu kolonisieren, als alle wichtigen Browser dazu zu bringen, eine völlig neue Sprache auszuliefern.“
WebAssembly ändert dieses Bild komplett, da wir die Browserhersteller nicht davon überzeugen müssen, neue Sprachen hinzuzufügen.
Wir müssen jetzt die Sprachcompiler-Entwickler davon überzeugen, für WebAssembly zu kompilieren – und es sieht so aus, als ob sie sich die Finger wund schreiben werden, um das zu tun.
Ich dachte auch „WebAssembly!“, und eine Sekunde später „aber IE…“
Das ist genau so, warum wir verschiedene Sprachen haben, um auf der Welt zu sprechen?
Um fair zu sein, menschliche Sprachen wurden nie von einer Person „geschaffen“, sondern entwickelten sich organisch aus ihren früheren Formen durch Isolation und Zeit.
Es gibt nur eine Sprache, Maschinensprache, wobei Assembler ihre erste Abstraktion ist. Alle anderen Sprachen sind nur weitere Abstraktionen.
Ich denke, Sie müssen sich nur fragen:
"Warum gibt es verschiedene
Programmier-sprachen?"und Sie bekommen so ziemlich die Antwort.
Tatsächlich gibt es viele Fälle, in denen etwas auf die gleiche Weise in mehreren Sprachen hätte geschrieben werden können. Ich habe eine Technologie namens progsbase entwickelt, um in vielen Sprachen gleichzeitig zu programmieren. Es gibt auch eine große Sammlung von Bibliotheken in 13 Sprachen, und es funktioniert ziemlich gut.
Die Notwendigkeit für mehrere Sprachen ist wahrscheinlich überschätzt.
Danke für die Erklärung.
Verschiedene Sprachen zu verwenden, um derselben Maschine unterschiedliche Dinge zu erzählen, ist sowieso nicht lustig.
"Wake up" auf Englisch
"Good morning" auf Französisch
"Breakfast is ready" auf Deutsch
Ich würde sagen, wegen des Egos dieser Nerds :). IMHO haben wir unsere Sicht auf Compiler nicht geändert und arbeiten immer noch für sie. Die Hauptunterschiede liegen in den Frameworks und der Laufzeit. Warum ist Stil wichtig? Denken Sie darüber nach, wie lange es dauert, jemandem zu erklären, was Ihr Design ist, und es dann in einer bestimmten Sprache zu implementieren? Wünschen Sie sich nicht oft, dass ein bestimmtes Laufzeitpaket, mit dem Sie aus einer anderen Sprache vertraut sind, verfügbar wäre? Und warum diese strengen Syntaxregeln pro Sprache, um dieselben Dinge auszudrücken? Ich stimme für freie Grammatik, gemischte Laufzeiten und eine IDE, die alles im persönlichen Stil des Benutzers anzeigt :)
Ähnlicher Verlauf bei mir. Ich war in der Junior High School und belegte College-Kurse in BASIC und Turbo Pascal. Meine High School würde mich nicht entlassen, da ich keine "Computer/Tippen"-Kurse auf meinem Zeugnis hatte, also belegte ich einen Selbstlernkurs, um mir Turbo C selbst beizubringen, damit ich meinen Abschluss machen konnte.
Mit drei Sprachen unter meinem Gürtel und bereits einem ziemlich guten Verständnis von Assembler würde ich im College kein Informatikstudium absolvieren, da ich nicht die nächsten 4 Jahre damit verbringen wollte, noch eine weitere Sprache zu lernen. Ich entschied mich stattdessen für Elektrotechnik und Computertechnik und musste trotzdem Fortran lernen.
Im Nachhinein und unter Berücksichtigung meiner Karriere gibt es wahrscheinlich Dinge, die ich hätte lernen können, indem ich Informatik studiert hätte, aber das ist irgendwie ein seltsamer Aspekt des Hauptfachs. Wenn Sie bereits hochqualifiziert in Computern sind, scheint das Hauptfach unglaublich hinter dem zurückzubleiben, was Sie wahrscheinlich bereits gelernt haben. Ich glaube, das liegt daran, dass die meisten Beschreibungen für jemanden geschrieben sind, der bereits sehr wenig Wissen hat, während es wie völliger Jargon klingen würde, wenn sie betonen würden, warum es für jemanden, der bereits Kenntnisse hat, wichtig ist.
Ähnlicher Weg… BASIC FORTRAN, Pascal aufgegeben, aber ich konnte in der High School keine Computerkurse belegen, ohne zu tippen. Erstaunlich, wie die Geschichten irgendwie ähnlich sind.
Das erinnert mich an einen Brief einer Schülerin, die fast aufgegeben hätte, Informatik zu studieren. Sie begann in der Grundschule mit einem Kurs in BASIC und Beschäftigungsaufgaben und hasste den Fokus auf Geschichte, wenn die Kinder Spaß am Experimentieren mit Computern haben sollten.
Später beschloss sie, dem Informatikstudium eine weitere Chance zu geben, diesmal entschied sie sich, BASIC zu überspringen und direkt zu Pascal zu gehen – und sie stellte fest, dass sie die dummen, willkürlichen Syntaxregeln hasste. Durch reinen Zufall stolperte sie über Scheme und fragt sich: Warum verwenden wir *das* nicht in der Schule?
Im Laufe der Jahre habe ich viele Sprachen erkundet – tatsächlich ist das etwas, das ich *gerne* tue –, aber ich habe festgestellt, dass meine Lieblingssprachen drei Dinge gemeinsam haben: wenig bis keine Syntax, extrem einfache (oft fast nicht vorhandene) Vorfahrtsregeln und erstaunliche Fähigkeiten in Abstraktion und Metaprogrammierung. Lisp und Scheme, Forth, J und Smalltalk sind Beispiele für solche Sprachen. Alles, was von ALGOL abstammt, ist jedoch starr; die Sprachen könnten ebenso gut aus Stein gemeißelt worden sein.
Meine Frage ist nicht so sehr "Warum gibt es so viele Sprachen?", sondern eher "Warum ertragen wir so viele starre, schwer zu bedienende Sprachen, wenn wir die Wunder kennen, die mit flexiblen Sprachen möglich sind?".