Warum werden mehrere beliebte Programmiersprachen von C beeinflusst? [geschlossen]

Kommentare

  • Eine c-ähnliche Syntax ist nicht dasselbe wie auf c zu basieren.
  • TIOBE ist ein Junk-Index.
  • Kann ich eher fragen, warum auf C basierende Programmiersprachen populärer sind?
  • Weil C ein Nachkomme von ALGOL ist und ALGOL einen Blockbereich hat imperative labguages was Ab raham ist für Christen, Juden und Muslime.
  • Ihre Zitate über PHP und Python sagen ' nicht wirklich, dass sie ' werden von C beeinflusst – und während PHP ist, scheint Python ' nicht zu sein.

Antwort

Mit dem Aufstieg von UNIX in den 1970er Jahren wurde die Standard-Systemprogrammiersprache C schnell zur lingua franca der Programmierwelt. Für eine ganze Weile war C praktisch für jeden Programmierer obligatorisch. Daher ist die Tatsache, dass C fast jede Programmiersprache, die danach kam, auf die eine oder andere Weise beeinflusst hat, aus zwei Gründen kaum überraschend:

  • Beim Entwerfen einer neuen Sprache ist dies sinnvoll Die Syntax basiert nach Möglichkeit auf einer beliebten vorhandenen Sprache, von der allgemein angenommen werden kann.
  • Eine neue Sprache ist eher erfolgreich, wenn die Lernkurve flach ist, und eine Syntax, die einer bereits bekannten Sprache ähnelt ist im Allgemeinen leichter zu lernen (es sei denn, es verhält sich trotz der offensichtlichen Ähnlichkeiten radikal anders). Sprachen, die Syntax von C ausleihen, gewinnen im Allgemeinen schneller an Bedeutung als solche, die dies nicht tun.

Aber andere Sprachen existierten und existieren immer noch, einige von ihnen waren sogar älter als C – da Die LISP-Familie (CL, Clojure und Scheme sind die beliebtesten modernen Dialekte), die ML-Familie (mit mehreren modernen Dialekten), es gibt „eine ganze Armee von BASIC-Dialekten (VB.NET und VBA sind moderne Implementierungen), es gibt Pascal und seine Verwandten (Delphi ist die bekannteste) und viele „seltsame“ Sprachen, die Einflüsse aus vielen anderen Sprachen aufnahmen und selbst einige Dinge erfanden; Beispiele hierfür sind Go, Python, Lua, Haskell (und sein Vorgänger Miranda), Prolog und Erlang. Während keine dieser Sprachen (außer Python) zu Ihren Top 10 gehört, haben viele von ihnen eine stabile Benutzerbasis und eine aktive Community. Sie werden sicherlich nicht verschwinden.

Außerdem sollte beachtet werden, dass das Ausmaß des C-Einflusses in diesen Sprachen sehr unterschiedlich ist und von den fast 100% C-kompatiblen Sprachen C ++ und Objective-C bis zu reicht Python (das absichtlich viele der Syntaxfunktionen von C aufgibt). Und das ist nur die Syntax: In Bezug auf die Semantik haben die meisten Sprachen auf dieser Liste nicht viel mit C gemeinsam. Die überwiegende Mehrheit verfügt über eine in die Sprache integrierte Speicherverwaltung und folglich über Kopiersemantik, Argumentübergabe, usw. sind sehr unterschiedlich. JavaScript hat zum Beispiel starke semantische Einflüsse von Scheme, während seine Syntax Java ähnelt (was wiederum seine Bit-and-Pieces-Syntax auf C basiert, aber nicht auf seiner Semantik). Andere Unterschiede (mit Ausnahme von C ++ und Objective-C, die größtenteils abwärtskompatibel mit C sind) umfassen Fehlerbehandlung, Bereichsregeln, Standardbibliotheken, Einbeziehung von externem Code (#include), und die Tatsache, dass viele dieser Sprachen „virtualisiert“ sind, das heißt, sie laufen auf einem Interpreter, JIT-Compiler oder einer virtuellen Maschine.

Python hat übrigens einen gewissen C-Einfluss, aber es basiert sicherlich nicht auf C. Sowohl die Syntax als auch die Semantik unterscheiden sich radikal von C, und dies ist beabsichtigt. Python leiht nur Features von C aus, bei denen andere Alternativen gleich „gut“ sind (gemäß „Zen of Python“ – geben Sie import this in einen Python-Interpreter ein).

Was die Zukunft der Programmierung betrifft; Vorhersagen variieren. Der Einfluss von C lässt nicht nach, aber die jüngsten Entwicklungen bei der Hardware (Multi-Core-Maschinen werden alltäglich, leistungsstarke GPUs, die CPU ist nicht mehr der typische Leistungsengpass, schnelle, zuverlässige Netzwerkverbindungen usw.) erfordern radikal unterschiedliche Ansätze zur Programmierung im Allgemeinen.Jeder, der jemals eine verteilte Multithread-Anwendung in einer zwingenden Sprache geschrieben hat, kann sagen, dass dies unglaublich schwierig ist, während Sprachen wie Haskell über Funktionen verfügen, die die meisten typischen Probleme beseitigen und einen abstrakteren und strukturierteren Ansatz für verteilte, gleichzeitige und gleichzeitige Anwendungen bieten Parallelverarbeitung (Reinheit ist in diesem Zusammenhang ein wichtiges Konzept). Neuere Programmiersprachen (z. B. C # oder D) enthalten bereits viele Funktionen zur Unterstützung einer solchen Redewendung. Auf jeden Fall weder die starken Auswirkungen, die C auf die Programmierung hat, noch die Existenz von Nicht-C-ähnliche Sprachen verschwinden.

Kommentare

  • Gute Antwort, aber " CPU Nach meiner Erfahrung gibt es zahlreiche Leistungsprobleme – CPU, E / A, wie Sie es nennen. Wenn nicht, würden Profiler nicht benötigt, obwohl dies nicht der Fall ist. Dies ist meiner Erfahrung nach nicht mehr der typische Leistungsengpass " sehr effektiv.
  • @MikeDunlavey: Normalerweise werden die Engpässe, auf die ich stoße, durch E / A, n verursacht Arbeit, CPU-Cache-Leistung, Busdurchsatz und (ineffiziente) Interprozesskommunikation. Früher war die CPU fast zwangsläufig der Engpass. Dies ist nicht mehr ' nicht mehr wahr.

Antwort

Dies ähnelt der Frage, warum Englisch in den USA die dominierende Sprache ist. Warum nicht Spanisch oder Französisch? Sie kontrollierten mehr US-Territorium als die englischen Kolonien. Warum nicht Niederländisch? Die erste US-Hauptstadt befand sich in einer ehemaligen niederländischen Kolonie. Ich bin mir nicht sicher, ob es möglicherweise eine „Antwort“ darauf geben kann.

Die Zeitleiste „Computer Languages History“ ( http://www.levenez.com/lang/ ) liefert alle möglichen Antworten.

Kommentare

  • Weil Großbritannien ab dem Jahr 1600 -1880 war ungefähr das wichtigste Industrie- und Finanzkraftwerk der Welt, gefolgt von den Vereinigten Staaten von 1880 bis heute (< –debatable). Es wurde die Sprache des internationalen Geschäfts und ist es von weit über 2 Milliarden Menschen weltweit fließend gesprochen. Das und niemand möchte Spanisch oder Niederländisch sprechen 🙂
  • @maple_shaft – " niemand möchte Spanisch sprechen " ?! … wissen Sie überhaupt, in wie vielen Ländern es gesprochen wird? en.wikipedia.org/wiki/Spanish_language
  • @ S.Lott: Sie meinen den Teil, in dem das britische Empire das größte jemals existierende Imperium war und 25% der Ent besetzte Die Oberfläche der Welt '? Diese Art von " ist nicht mächtig "?
  • @DeadMG: I '
  • @ S.Lott Die Franzosen ' haben nicht jeden einzelnen gewonnen Begegnung. Wenn man nur Nordamerika betrachtet, haben sie die Mehrheit gewonnen. Aber der Verlust von 4 der 5 großen Schlachten in NA während der Jahre 1559/60 führte zu einer vernichtenden Niederlage im Theater. Die Eroberungen von Forts Ticonderoga und Niagara, The Plains of Abraham und die Schlacht von Restigouche waren allesamt britische Siege. Durch die Unterbrechung der Versorgung / Verstärkung machte letzterer den französischen Sieg bei Sainte-Foy irrelevant.

Antwort

If Sie erstellen eine neue Programmiersprache. Eine ähnliche Syntax wie in den vorhandenen Sprachen erleichtert Ihren neuen Benutzern das Lernen. Besonders wenn viele Konzepte zwischen den Sprachen ähnlich sind.

Ich denke auch, dass die Syntax im C-Stil relativ einfach zu lesen ist. Im Vergleich zu Pascal ist die Verwendung der Symbole „{“ und „}“ für Codeblöcke besser lesbar als „Anfang“ und „Ende“, die Bezeichnern optisch sehr ähnlich sind. Python ist noch besser lesbar, aber die Einbeziehung von Leerzeichen in die Syntax führt zu neuen Problemen bei der Bearbeitung. Ein weiteres Beispiel: Lisp und JavaScript teilen einige Ideen, aber wenn dasselbe in C-Syntax geschrieben ist, ist es weniger dunkel.

Ich bin sicher, dass viele Leute dem zweiten Absatz nicht zustimmen würden, weil jeder hat ihre eigene Lieblingssprache, aber ich denke, dass die Popularität der C-Syntax teilweise ein historischer Zufall ist, aber teilweise auch zeigt, dass Autoren von C einige gute Entscheidungen getroffen haben.

Antwort

Programmiersprachen entwickeln sich im Laufe der Zeit genau wie natürliche Sprachen, wobei einige ältere Sprachen diese Entwicklung stärker beeinflussen als andere Während andere in Vergessenheit geraten und ihr Einfluss auf der Oberflächenebene, dh auf der Syntax, schwerer nachzuvollziehen ist.

Der Einfluss von C kommt aus vielen Quellen – es ist eine niedrige Ebene, weit verbreitet, die sich unterstützt hat sowohl Unix- als auch Microsoft-Kreise. Es ist auch das Überleben des besten Problems – es ist leicht zu erkennen, dass eine knappe C-ähnliche Syntax attraktiver war als die von Algol abgeleitete Syntax von Pascal und anderen Konkurrenten von C in den 1970er und 1980er Jahren. Daher wurde es von den darauf folgenden Sprachen weitgehend übernommen.

Angesichts der zunehmenden Bedeutung von Multithread-Programmierung und funktionalen Sprachen, die sich besonders gut dafür eignen, würde ich sagen, dass ihr Einfluss zunehmen wird die Zukunft. Ein typisches Beispiel: Python, das diese Liste sogar im Fragenbeitrag erstellt hat.

Eine schöne Zeitleistenansicht der Sprachgeschichte zum Nachdenken

Kommentare

  • Sie haben es falsch verstanden. Sowohl PASCAL als auch C sind ALGOL-Nachkommen.
  • Richtig, aber Algol selbst ist Fortran-Nachkomme und hat einige der Konstrukte ausgewählt, auf die ich mich dort bezog (Programm, Ende, Unterprogramm im Vergleich zu c Klammern). Was ich jedoch im Sinn hatte, war tatsächlich eine Algol-ähnliche Syntax. Bearbeitet.
  • knappe C-ähnliche Syntax hatte mehr Anziehungskraft als die ausführliche Algol-abgeleitete Syntax von Pascal und anderen Konkurrenten von C in den 70 ' s und 80 ' s +1 dafür. begin Programmierer sind auch Menschen end begin diejenigen, die glaubten , dass es ' s bequem, Interpunktionszeichen auf Wörter wie Anfang-Ende abzubilden, hat ihren Kampf gegen geschweifte Klammern verloren Ende der Geschichte
  • Ich sehe keine Beweise Diese C-Syntax ist weniger dunkel, außer in dem Sinne, dass die meisten Entwickler C oder eine Art C-bezogene Sprache kennen und daher vertrauter aussehen. AFAICT, C überzeugte Pascal aufgrund seiner Struktur und der Tatsache, dass Implementierungen nicht ' ihre eigene Verknüpfung rollen mussten, nicht die Syntax.
  • @ David- Soweit ich mich erinnere, war einer der Gründe, warum C sich gegen andere Sprachen durchgesetzt hat, die relativ einfache Zugänglichkeit des Speichers in C (dh Zeiger). Ich weiß, dass sie jetzt im Vordergrund stehen, aber damals, als 1 KB RAM viel Speicher war, war das ein sehr mächtiges Merkmal der Sprache. Ich kenne andere Sprachen, die zeigerähnliche Funktionen bieten, aber keine so einfach wie C.

Antwort

Die meisten Sprachen, die Sie auflisten, haben praktisch nichts mit C zu tun, abgesehen von irrelevanten syntaktischen Ähnlichkeiten. Die einzigen zwei tatsächlichen C-Ableitungen sind Objective-C und C ++.

Kommentare

  • Wenn wir die Syntax nicht berücksichtigen, dann die einzigen Unterschiede zwischen den Sprachen sind die Verfügbarkeit allgemeiner Sprachkonstrukte (Schleifen, Bedingungen, Variablen, Abstraktionen wie Klassen und Abschlüsse usw.) und dass sie alle dem Verhalten von Maschinencode entsprechen. Alle Low-Level-Sprachen sind einander ähnlich und alle High-Level-Sprachen sind sich zu diesem Zeitpunkt sehr ähnlich.
  • Sie sollten ' nicht an a denken Sprache als welche Funktionalität es hat, aber wie es Anwendungsverhalten kommuniziert. Ihr Quellcode ist Ihre niedrigste Dokumentationsstufe und Sie schreiben Quellcode für Personen und NICHT für Maschinen . Wenn wir Code ausschließlich für Maschinen schreiben würden, würden wir alle in der Baugruppe codieren.
  • @maple_shaft: Ganz richtig! In einem Interview wurde ich gebeten, den Unterschied zwischen Maschinensprache (Assembler) und Programmiersprache zu erklären. Meine Antwort war: " Maschinensprache ist für Maschinen, Programmiersprache ist für Programmierer. "
  • @maple_shaft: Die Syntax spielt für die Kommunikation von ' mit Personen keine Rolle. Wenn ich ein englisches Wort durch eine andere Schreibweise ersetzen würde, wäre Englisch immer noch dieselbe Sprache. Die syntaktische Form ist irrelevant. Was ' kommunikativ ist, ist die Sprachsemantik.
  • @DeadMG: Aber die Frage ist über Syntax. Sie können die syntaktischen Ähnlichkeiten als irrelevant betrachten, aber die Person, die die Frage stellt, möchte wissen, warum diese irrelevanten Ähnlichkeiten existieren .

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.