Dies soll ein allgemeiner Vergleich verschiedener Programmiersprachen werden.

Sprache

OOP

Variablen deklarieren

Interpretiert, nativ, Bytecode

Funktional 1

Lexikale Umgebungen

strenge Typisierung

statische Typisierung

Exceptions

Continuations

Multiple Dispatch

Ada

ja

ja

n

nein

ja

ja+

?

ja

?

?

Assembler

nein

?

n

nein

nein

nein

nein

nein

nein

nein

AWK oder awk?

nein

nein

i

nein

nein?

nein

nein

nein

nein

nein

Basic

nein

nein

i,n

nein

nein

nein

nein

nein

nein

nein

Brainfuck

nein

nein

i,b,n

nein

nein

ja 2

ja

nein

nein

nein

C

nein

ja

n

nein

ja

nein

ja

nein

?

nein

ObjectiveC

ja

ja

n

nein

ja

ja

ja

ja

?

?

C++

ja

ja

n

nein

ja

nein

ja

ja

?

nein

Haskell

ja

ja?

i, n (?), b (?)

ja

ja

ja

ja

ja

?

?

Java

ja

ja

b (optional JIT), n (mit z. B. gjc)

nein

ja

ja

ja

ja

?

nein

Lisp

ja

nein

i, n

jein

ja

ja

nain

ja 3

?

?

Pascal (ISO)

nein

ja

n

nein

ja

nein

ja

nein

?

nein

Delphi

ja

ja

n

nein

ja

nein

ja

ja

?

nein

Perl

ja

nein

i,b

nein

ja

nein

nein

ja

?

nein

PHP

ja

teilweise

i,b

nein

ja

nein

nein

ja

?

nein

Pike

ja

ja

ja4

ja

ja

ja

ja

ja

?

?

Prolog

?

?

?

ja?

ja

?

?

nein?

?

?

Python

ja

nein

i,b 5

nein

ja

ja

nein

ja

nein (ja)6

nein

Ruby

ja

nein

i

nein

ja

nein

?

ja

?

?

Slate

ja

?

i

?

ja

ja

nein

ja

?

ja

Fehlende Sprachen: Bifunge?, Erlang?, Intercal?, Malbolge?, OCaml?, Whitespace?

Anmerkungen:

Definition von strenge Typisierung

Definition von Scoping oder Gültigkeitsraum

Die Frage nach des genauen Gültigkeitsraumes ist sehr schwer zu beantworten und letztendlich dem Compilerbauer überlassen. So wäre es denkbar in der gleichen Programmiersprache mit unterschiedlichen Compilern auch unterschiedliche Definitionen von Gültigkkeitsraum zu haben(wenn auch natürlich sehr gemein). Sehr empfehlenswerte Literatur: "Das Drachenbuch": Aho/Sethi/Ullmann: Compilerbau

Definition von Funktional

Ein Programm ist genau ein Ausdruck. Schleifen werden z.B. mittels Funktionen erreicht.

Lexikale Umgebungen

OffeneFrage: Was soll "Lexikale Umgebung" sein.

Pauschal kann man sagen, eine Sprache unterstützt lexikale Umgebungen, wenn man Rekursion verwenden kann. Gemeint ist, dass eine Variable genau nur von dem Block, in dem sie definiert oder verwendet wird, verändert werden kann.

OffeneFrage: Entspricht "Lexikale Umgebung" nicht dem Gültigkeitsraum? Sollte in der Tabelle nicht Scope oder Gültigkeitsraum als Überschrift stehen?

  1. Ausschließlich (1)

  2. Es gibt nur einen Typ. (2)

  3. sogar schneller als in ["C"] oder ["Java"] (3)

  4. auf entsprechend unterstützten Architekturen wird teilweise Maschinencode erzeugt (4)

  5. [optional JIT - Psyco; bald auch nativer Code möglich, siehe Pypy] (5)

  6. mit StacklessPython (6)

SprachVergleich (zuletzt geändert am 2008-09-28 19:40:24 durch c191161)