Todos os idiomas são escritos no idioma C?
Uma linguagem é um conjunto de regras e restrições matemáticas abstratas ("se eu escrever isso , isso acontece"). Não está escrito em nada, realmente.
É especificado, geralmente em uma mistura de um subconjunto formalizado de inglês, notação matemática e talvez alguma linguagem de especificação especializada. A sintaxe é frequentemente especificada em uma variante do EBNF ou ABNF .
Por exemplo, aqui está a especificação da for
expressão da ISO Ruby Language Specification:
§11.5.2.3.4 A for
expressão
Sintaxe
- for-expression → for for-variable [sem terminador de linha aqui] in expressão do-clause end
- para variável → lado esquerdo
|
múltiplo esquerdo
Semântica
Uma expressão for é avaliada da seguinte maneira:
- Avalie a expressão . Se a avaliação da expressão for finalizada por uma expressão de quebra , próxima expressão ou refazer a expressão , o comportamento não será especificado. Caso contrário,
O
seja o valor resultante.
Vamos E
ser o principal método-invocação da forma preliminar-expressão [nenhuma linha-terminador aqui] .each do | bloco-parâmetro-lista | bloco-corpo end , em que o valor de a -expressão primário é O
, a -parâmetro-lista de bloqueio é o para- variável , o corpo do bloco é a instrução composta da cláusula do .
Avaliar E
; no entanto, se um bloco cujo corpo do bloco é a declaração composta da cláusula do da expressão for for chamado durante esta avaliação, as etapas em §11.3.3, exceto a Etapa c) e a Etapa e) 4) devem para a avaliação desta chamada.
O valor da expressão for é o valor resultante da chamada.
Aqui está um exemplo diferente das regras de conformidade de tipo do Scala:
O tipo polimórfico [a 1 >: L 1 <: U 1 ,…, a n >: L n <: U n ] T está em conformidade com o tipo polimórfico [a1>: L ′ 1 <: U ′ 1 ,…, a n >: L ′ n <: U ′ n ] T ′ se, assumindo L ′ 1 <: a 1 <: U ′ 1 ,…, L ′ n <: a n <: U ′ um tem T <: T ′ E L i <: L ′ i e U ′ i<: U i para i ∈ {1,…, n} .
O idioma C é mãe / pai de todos os idiomas?
Não não é. C é bem jovem. Existem muitos idiomas antigos. Como a viagem no tempo é fisicamente impossível, é simplesmente impossível que C tenha tido alguma influência sobre os idiomas antigos.
- 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)
- Quarto (1968)
- LOGO (1968)
- REFAL (1968)
- B (1969)
- BLISS (1970)
- Pascal (1971)
- KRL (1971)
- Smalltalk (1972)
Tudo isso existia antes mesmo de C ser inventado. E muitos outros não têm influência de C neles, mesmo depois de existir. A família de idiomas PASCAL (ALGOL-58, ALGOL-60, ALGOL-X, ALGOL-W, PASCAL, Modula-2, Oberon, Oberon-2, Oberon ativo, Pascal componente) é uma linhagem completamente separada. Toda a família Lisp (LISP, Franz Lisp, InterLisp, MacLisp, Scheme, Flavors, LOOPS, CommonLoops, Dylan, CommonLisp, Arc, Clojure, Racket etc.) também não está relacionada. Linguagens funcionais (ISWIM, KRL, Miranda, ML, SML, CAML, OCaml, F #, Haskell, Gofer, Clean) e toda a família de tipo dependente (Agda, Coq, GURU, Idris) estão o mais longe possível de C. O mesmo vale para a família Smalltalk (Smalltalk, Self, Newspeak, Us, Korz), a família de programação lógica (PLANNER, Prolog, Mercury), SQL e muitas outras.
Cada conceito (OOP etc) é todo implementado na linguagem C?
As primeiras linguagens com conceitos de OO foram Simula (1960) e Smalltalk (1972), mas os sistemas orientados a objetos foram construídos desde 1953 (sem chamá-los assim). Novamente, muito antes de C existir, o OO não pode ter nenhuma relação com o C.