Overhead bei Objektorientierung

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Syntaxerweiterung von Pascal

Beitrag von m.fuchs »

Timm Thaler hat geschrieben:Und Klassen und so Kram kann ich auch in prozeduraler Programmierung verwenden, das ist ja nicht auf OOP beschränkt.

Häh? Wenn du Klassen verwendest dann benutzt du OOP.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Syntaxerweiterung von Pascal

Beitrag von Timm Thaler »

m.fuchs hat geschrieben:Häh? Wenn du Klassen verwendest dann benutzt du OOP.


Naja, das würde ich jetzt nicht überbewerten. Das ist nicht das, was OOP ausmacht.

Aktuell habe ich ein Projekt, da definiere ich ein der Klasse svg mehrere Prozeduren zur Erstellung von Elementen eines SVG, also Linie, Kreis, Bogen, Polygon... Dennoch werden diese Elemente prozedural aufgerufen und abgearbeitet. Ja, würde auch anders gehen, lohnt aber den Aufwand nicht. Die Klasse hat hier nur den Grund, dass der Aufruf schöner erfolgen kann.

Andererseits ist es kaum möglich, eine GUI in Lazarus nicht per OOP zu erzeugen. Dennoch kann das dahinterliegende Programm größtenteils prozedural ablaufen. Was in Qt deutlich garstiger ist.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Overhead bei Objektorientierung

Beitrag von Mathias »

Und Klassen und so Kram kann ich auch in prozeduraler Programmierung verwenden, das ist ja nicht auf OOP beschränkt.

Im Prinzip stimmt dies, dein schöner Objectorientierter-Lazarus-Code, wird von Compiler schlussendlich in Assembler übersetzt, und dies läuft dann voll prozedural ab.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marsmännchen
Beiträge: 294
Registriert: So 4. Mai 2014, 21:32
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
CPU-Target: 64bit
Wohnort: Oranienburg

Re: Overhead bei Objektorientierung

Beitrag von Marsmännchen »

Mathias hat geschrieben:
Und Klassen und so Kram kann ich auch in prozeduraler Programmierung verwenden, das ist ja nicht auf OOP beschränkt.

Im Prinzip stimmt dies, dein schöner Objectorientierter-Lazarus-Code, wird von Compiler schlussendlich in Assembler übersetzt, und dies läuft dann voll prozedural ab.


Ja genau. OOP ist ja auch nicht dafür gedacht, Compiler glücklich zu machen. Es soll doch eigentlich den Menschen helfen, ihren Code besser in den Griff zu kriegen. Oder habe ich das falsch verstanden???
Ich mag Pascal...

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Overhead bei Objektorientierung

Beitrag von m.fuchs »

Marsmännchen hat geschrieben:Ja genau. OOP ist ja auch nicht dafür gedacht, Compiler glücklich zu machen. Es soll doch eigentlich den Menschen helfen, ihren Code besser in den Griff zu kriegen. Oder habe ich das falsch verstanden???

Das hast du vollkommen richtig verstanden. Nachdem der Compiler durchgelaufen ist, kann man von OOP nicht mehr viel sehen. Lediglich dass bei den Aufrufen der Methoden ein Zeiger auf die Objektdaten übergeben wird. Und bei virtuellen Methoden kommt noch die VMT dazu. Aber letztendlich ist es eigentlich nur für den Programmierer.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Overhead bei Objektorientierung

Beitrag von Mathias »

Aber letztendlich ist es eigentlich nur für den Programmierer.

So habe ich es mir auch immer vorgestellt. Mit Klassen ist die Programmierung um einiges einfacher und übersichtlicher geworden.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten