Is each and every language written in C language?
Una lingua è un insieme di regole matematiche astratte e restrizioni ("se scrivo questo , che accade"). Non è scritto in nulla, davvero.
Viene specificato, di solito in una miscela di un sottoinsieme formalizzato di inglese, notazione matematica e forse qualche linguaggio specifico specializzato. La sintassi viene spesso specificata in una variante di EBNF o ABNF .
Ad esempio, ecco la specifica dell'espressione for
dalla Specifica del linguaggio Ruby ISO:
§11.5.2.3.4 The for
expression
Syntax
-
for-expression → for for-variable [no line-terminator here] in expression do-clause end
-
for-variable → left-hand-side
|
multiple-left-hand-side
Semantics
A for-expression is evaluated as follows:
- Evaluate the expression. If the evaluation of the expression is terminated by a break-expression, next-expression, or redo-expression, the behavior is unspecified. Otherwise, let
O
be the resulting value.
-
Let E
be the primary-method-invocation of the form primary-expression [no line-terminator here].each do | block-parameter-list | block-body end, where the value of the primary-expression is O
, the block-parameter-list is the for-variable, the block-body is the compound-statement of the do-clause.
Evaluate E
; however, if a block whose block-body is the compound-statement of the do-clause of the for-expression is called during this evaluation, the steps in §11.3.3 except the Step c) and the Step e) 4) shall be taken for the evaluation of this call.
The value of the for-expression is the resulting value of the invocation.
Ecco un esempio diverso dalle regole di conformità del tipo di Scala:
The polymorphic type [a1 >: L1 <: U1 , … , an >: Ln <: Un]T conforms to the polymorphic type [a1 >: L′1 <: U′1 , … , an >: L′n <: U′n]T′ if, assuming L′1 <: a1 <: U′1 , … , L′n <: an <: U′n one has T <: T′ and Li <: L′i and U′i <: Ui for i ∈ { 1 , … , n }.
Is C language mother/father of all languages?
No, non lo è. C è piuttosto giovane. Ci sono molte vecchie lingue. Dal momento che il viaggio nel tempo è fisicamente impossibile, è semplicemente impossibile per C avere alcuna influenza su quelle vecchie lingue.
- Plankalkül (1943)
- Speedcoding (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)
- RPG (1964)
- BCPL (1966)
- ISWIM (1966)
- MUMPS (1967)
- Forth (1968)
- LOGO (1968)
- REFAL (1968)
- B (1969)
- BLISS (1970)
- Pascal (1971)
- KRL (1971)
- Smalltalk (1972)
Tutti quelli esistiti prima che C fosse persino inventato. E molti altri non hanno alcuna influenza di C in loro, anche dopo che è esistito. La famiglia di lingue PASCAL (ALGOL-58, ALGOL-60, ALGOL-X, ALGOL-W, PASCAL, Modula-2, Oberon, Oberon-2, Oberon attivo, Pascal componente) è un lignaggio completamente separato. L'intera famiglia Lisp (LISP, Franz Lisp, InterLisp, MacLisp, Scheme, Flavors, LOOPS, CommonLoops, Dylan, CommonLisp, Arc, Clojure, Racket, ecc.) Non è correlata. I linguaggi funzionali (ISWIM, KRL, Miranda, ML, SML, CAML, OCaml, F #, Haskell, Gofer, Clean) e l'intera famiglia tipizzata in modo dipendente (Agda, Coq, GURU, Idris) sono il più lontano possibile da C. Lo stesso vale per la famiglia Smalltalk (Smalltalk, Self, Newspeak, Us, Korz), la famiglia di programmazione logica (PLANNER, Prolog, Mercury), SQL e molti altri.
Each concept (OOP etc) is all implemented in C language?
Le prime lingue con concetti OO erano Simula (1960) e Smalltalk (1972), ma i sistemi orientati agli oggetti erano stati costruiti nel lontano 1953 (senza chiamarli così). Di nuovo, è molto prima che C esistesse, quindi OO non può avere alcuna relazione con C.