Mist, hab jetzt ein bißchen lange gebraucht für den Beitrag...
@remi:
...zur Syntax:
Es ist und bleibt Gewöhnungs- und Geschmackssache.
... zur OOP:
Man kann leider die Vorzüge von oop nicht gut in ein paar Sätze packen, aber hier ein Versuch:
Die Modellierung des Problems ist von vorneherein anders, man schaut, was gibt es für seperate Einheiten in der Problemstellung, welche lassen sich ggf. aufgrund von Gemeinsamkeiten zusammenfassen (zu Klassen), wo gibt es ggf. Grundgemeinsamkeiten, welche es wert sind, in eine eigene 'abstrakte' Klasse gepackt zu werden, welche Daten gehören zu welchen Klassen, und welche müssen auf welche Zugriff haben. Welche Funktionen greifen auf welche Daten zu, und können somit in welche Klasse gepackt werden? So kann man selbst sehr komplexe Probleme unter Zusammenarbeit von vielen Leuten Schritt für Schritt in eine wohlstrukturierte Klassenstruktur bannen, wofür dann noch Dinge wie Schnittstellen festgelegt werden müssen.
Schließlich kann man dann die gesamte Klassenstruktur unter vielen Leuten aufteilen, jeder programmiert seinen eigenen Teil davon (die Schnittstellen sind ja vorher geklärt), und schließlich kann man das alles zusammensetzen, und es läuft.

naja - im Idealfall.
Ein anschauliches Beispiel:
Z.B. könnte im 3D-Spiel eine Unterklasse der Klasse Spielwelt die Klasse Entity sein, und die Attribute x,y,z-Position, Geschwindigkeit u.a. beinhalten, sowie Funktionen 'bewege', etc.
Davon erben wiederum die Klassen Menschmodell, Baum, Terrain, und Licht, welche nun ebenfalls über x,y,z-Position und 'bewege' verfügen. Außerdem können sie nun Entity erweitern, z.B. die Klasse Licht um Intensität, Farbzusammensetzung, Flackergeschwindigkeit, sowie 'Anschalten' und 'Ausschalten'. Dann kann man Licht wieder erweitern auf Spotlicht oder Rundumlicht, wobei Spotlicht noch Winkeldaten bekommt.
Jetzt wollen wir mit einer Methode ein Licht, ein Motorrad oder einen Menschen bewegen. Dazu bewegen wir das Objekt einfach, indem wir die Methode 'bewege' aufrufen, die ja alle von Entity geerbt haben. Allerdings hat dabei z.B. die Klasse Mensch diese Methode 'überschrieben', d.h., Bäume und Lichter nutzen die ganz normale Bewegen-Funktion aus der Entity-Klasse, während Mensch seine eigene Bewegungsfunktion mitbringt, da er z.B. beim Gehen noch rauf- und runterwippen muss, also die y-Werte verändern muss. (Bäume wippen nicht beim gehen

)
Vorteile:
- bei sehr großen Projekten kann man methodisch von der Problemstellung schrittweise ggf. über Diagramme bis runter auf Source-Ebene vorgehen.
- alle einzelnen Klassen und Interfaces sind für sich alleine eine abgeschlossene Einheit und können aus alten Projekten einfach übernommen werden, ggf. durch Vererbung erweitert werden, etc. Man ist also in Zukunft sehr schnell, da man vieles einfach wiederverwerten kann
- Erweiterungen können lokal in der entsprechenden Klasse stattfinden, ohne dass man Sorge haben muss, dass irgendwas anders nun nicht mehr funktioniert
- Fehler lassen sich leichter finden
- Die Programmiersprache kann cool weiterwachsen: Z.B. im Java-Klassenbaum kann Person XY irgendetwas anfügen, und es läuft überall! Daher gibt es so abgefahrene Dinge wie z.B. speichern von Objektinstanzen inkl. sämtlicher Unterobjekte in eine Datei - mit einer Zeile Code!
Stell dir ein Objekt vor, dass mehrere Arrays, Hashtable, Listen, etc. und zig Unterobjekte enthält, die wiederum massig Daten haben. Eine Zeile Code, und alles ist gespeichert, egal, welches Projekt Du wann wie in Zukunft mit welchen Klassen programmierst !
Oder z.B. bei komplizierten Fenstern mit hunderten von Gadgets:
Da hat man keine Riesen-Haupt-Event-Schleife, welche ALLES verarbeiten und weiterdeligieren muss, sondern man hat einfach direkt an jedes Gadget einen Listener gehängt, der die relevanten Ereignisse behandelt, und direkt 'vor Ort' weiterverarbeitet. Dabei können auch wieder bei diesen Listenern ähnliche Dinge zusammengefasst werden und für mehrere gleichzeitig implementiert werden.
Aber:
PureBasic ist trotzdem saucool und ich erziele damit oft 10-mal schneller Ergebnisse. Außerdem läßt sich ALLES was mit oop geht, auch rein prozedural machen, und ebenso auch mit Brainfuck oder Whitespace

oop ist aber ein mächtiges Hilfsmittel, um komplexe Strukturen optimal zu fassen zu kriegen.