Gemeinsamkeiten:
[ Ich wollt damit nicht prollen, sondern schreibe am Freitag eine Klausur über "Grundlagen der Programmiersprachen", deswegen ist diese Frage ein gefundenes Fressen, um ein paar Begriffe anzuwendenimperative Sprache:
Wichtigstes Merkmal: es exisitieren Variablen mit Zuweisungsoperationen. (in funktionalen und logischen Sprachen kann man Variablen keine Werte zuweisen, sondern nur Zusammenhänge und Wertebereiche modellieren)
prozedural:
Im Gegensatz zu 'objektorientiert'. Es lassen sich also keine abstrakten Datentypen ('Klassen' von Variablen und Funktionen, welche sich als Ojekte instanzieren lassen) bilden.
Funktionsparameterübergabe per call-by-value (es wird eine Kopie des Wertes im Funktionsaufruf in der Funktionsparametervariablen gespeichert, welcher im Funktionsrumpf auf verändert werden kann, aber sich nicht als Rückgabewert eignet.
call-by-reference ist über Pointer simulierbar
keine schachtelbaren Funktionen (keine Funktionsdefinitionen innerhalb von Funktionen)
nur Funktionen erster Ordnung (keine Funktionsaufrufe in den Signaturen.)
Uneingeschränkter Speicherzugriff, also auf sämtlichen vom Betriebssystem 'erlaubten' Speicherplatz kann stets zugegriffen werden.
nicht ganz streng typisiert (Eine Typprüfung findet zwar stets zur Übersetzungszeit statt, aber es lassen sich per 'undiscriminated Union' (StructureUnion) oder Peek/Poke Werte uminterpretieren.
keine Polytypen/polymorphe Funktionen oder generische Definitionen
C-Verdeckungsregel für alle Namensräume (Variablennamen/Funktionsnamen gelten von der Stelle der Definition abwärts bis zum Ende des kleinsten sie umgebenden Abschnitts (Im Unterschied zu C gelten Schleifen aber nicht als eigenständige Abschnitte))
Nur für Sprungmarken gilt die Algol-Verdeckungsregel (Ihr Bezeichner gilt vor und nach der Definition im gesamten umgebenden kleinsten Abschnitt.)
Es gibt einen Debugger als Testhilfe
Grundtypen:
- Ausschnitte aus ganzen Zahlen (byte, word, long, PB nur signed und 32Bit)
- Wahrheitswerte werden durch Zahlen dargestellt (kein eigener Typ)
- Zeichen eines Zeichensatzes (in PB = byte)
- Aufzählungstypen (Enumeration)
- Ausschnitte der reellen Zahlen (PB nur float)
Übersetzung findet folgendermaßen statt:
Source / Quellmodul inkl. Präprozessoranweisungen -> [ Präprozessor (in PB sehr rudimentär, wohl nur Konstanten- und Includeersetzungen) ] -> Quellmodul -> [ Übersetzer/Compiler ] -> binbarer Modulcode -> [ Binder ] -> ausführbarer Maschinencode.
sowie bestimmt noch mehr...
Außer der besondern Stärke von PB, Inline-ASM einbinden zu können, zeichnet es sich besonders dadurch aus, dass einfach eine Unmenge von Funktionspaketen mitgeliefert werden. Ob Netzwerkbefehle, Stringoperationen, Fenstererstellung inkl. Gadgets, ...uswusw..., 2D, 3D-Drawing, alles wird mitgeliefert. Bei C muss man sich (soweit ich weiß) für jede Funktion, die über ein Mindestmaß hinausgeht, von irgendwoher (manchmal kostenpflichtige) Libs dazuholen, oder eben alles selber machen.
[edit]
hier der Link zu den 'Blobs' von NicTheQuick:
http://www.robsite.de/php/pureboard-arc ... php?t=5485
[/edit]