Ist jede Sprache in C geschrieben?
Eine Sprache ist ein Satz von abstrakten mathematischen Regeln und Einschränkungen ( „wenn ich schreibe dies , dass passiert“). Es ist wirklich in nichts geschrieben.
Es wird in der Regel in einer Mischung aus einer formalisierten Teilmenge von Englisch, mathematischer Notation und möglicherweise einer speziellen Spezifikationssprache angegeben. Die Syntax wird häufig in einer Variante von EBNF oder ABNF angegeben .
Hier ist zum Beispiel die Spezifikation des for
Ausdrucks aus der ISO Ruby Language Specification:
§11.5.2.3.4 Der for
Ausdruck
Syntax
- for-expression → for for-variable [hier kein Zeilenendezeichen] in expression do-clause end
- für-Variable → linke Seite
|
mehrere-linke Seite
Semantik
Ein for-Ausdruck wird wie folgt ausgewertet:
- Werten Sie den Ausdruck aus . Wenn die Auswertung des Ausdrucks durch einen break-Ausdruck , next-Ausdruck oder redo-Ausdruck beendet wird , ist das Verhalten nicht spezifiziert. Ansonsten sei
O
der resultierende Wert.
Lassen Sie E
kann die primär Verfahren-Aufruf des Formulars Primär-expression [keine Linie-Terminator hier] .each do | Block-Parameter-Liste | Blockkörper end , in dem der Wert des Primärausdruck ist O
, der Block-Parameter-Liste ist die for- Variable , der Block-Body ist die zusammengesetzte Anweisung der do-Klausel .
Bewerten E
; Wenn jedoch ein Block , dessen Blockkörper das ist Verbindung-Anweisung des do-Klausel der for-Expression während dieser Bewertung genannt wird, werden die Schritte in §11.3.3 außer dem Schritt c) und dem Schritt e) 4) erhält für die Auswertung dieser Ausschreibung herangezogen werden.
Der Wert des for-Ausdrucks ist der resultierende Wert des Aufrufs.
Hier ist ein anderes Beispiel als die Typkonformitätsregeln von Scala:
Der polymorphe Typ [A 1 >: L 1 <: U 1 , ..., a n >: L n <: U n ] T entspricht den polymorphen Typen [A1>: L ' 1 <: U' 1 , ..., a n >: L ' n <: U' n ] T ', wenn unter der Annahme von L' 1 <: a 1 <: U ' 1 , ... L' n <: a n <: U ' n hat man T <: T ' Und L i <: L' i und U ' i<: U i für i ∈ {1,…, n} .
Ist C-Sprache Mutter / Vater aller Sprachen?
Nein ist es nicht. C ist ziemlich jung. Es gibt viele alte Sprachen. Da Zeitreisen physisch unmöglich sind, ist es für C einfach unmöglich, irgendeinen Einfluss auf diese alten Sprachen zu haben.
- Plankalkül (1943)
- Geschwindigkeitskodierung (1953)
- Fortran (1954)
- IPL (1956)
- Lisp (1958)
- Algol (1958)
- COBOL (1959)
- JOVIAL (1960)
- APL (1962)
- SIMULA (1962)
- SNOBOL (1962)
- CPL (1963)
- BASIC (1964)
- PL / I (1964)
- Rollenspiel (1964)
- BCPL (1966)
- ISWIM (1966)
- MUMPS (1967)
- Forth (1968)
- LOGO (1968)
- REFAL (1968)
- B (1969)
- Glückseligkeit (1970)
- Pascal (1971)
- KRL (1971)
- Smalltalk (1972)
Alle existierten, bevor C überhaupt erfunden wurde. Und viele andere haben keinen Einfluss auf C, selbst nachdem es existiert hat. Die PASCAL-Sprachfamilie (ALGOL-58, ALGOL-60, ALGOL-X, ALGOL-W, PASCAL, Modula-2, Oberon, Oberon-2, Active Oberon, Component Pascal) ist eine völlig separate Linie. Die gesamte Lisp-Familie (LISP, Franz Lisp, InterLisp, MacLisp, Schema, Flavours, LOOPS, CommonLoops, Dylan, CommonLisp, Arc, Clojure, Racket usw.) hat ebenfalls keine Beziehung. Die funktionalen Sprachen (ISWIM, KRL, Miranda, ML, SML, CAML, OCaml, F #, Haskell, Gofer, Clean) und die gesamte typabhängige Familie (Agda, Coq, GURU, Idris) sind so weit wie möglich von C entfernt. Gleiches gilt für die Smalltalk-Familie (Smalltalk, Self, Newspeak, Us, Korz), die Logik-Programmierfamilie (PLANNER, Prolog, Mercury), SQL und viele andere.
Jedes Konzept (OOP usw.) ist alle in C-Sprache implementiert?
Die ersten Sprachen mit OO-Konzepten waren Simula (1960) und Smalltalk (1972), aber objektorientierte Systeme wurden bereits 1953 gebaut (ohne sie so zu nennen). Wiederum ist das lange bevor C existierte, also kann OO unmöglich irgendeine Beziehung zu C haben.