Verwijderd schreef op zondag 20 maart 2005 @ 14:33:
Ik ben het met -NMe- eens. Een object-georiënteerde taal is niet vereist voor het maken van object-georiënteerde programma's. Alles wat je nodig hebt kun je prima 'nabouwen' met constructies uit procedurele talen, zelfs inheritance en polymorphisme. Dat kan ik zelfs bewijzen:
Ik zelf ben het meer met whoami eens.
C is totaal niet OO C++ ondersteund wat OO.
Java en C# zijn OO talen.
Tuurlijk kan je OO wrapping doen met C en ook C++ maar dat kost tijd en ik zie dat meer als work around extra werk dus.
Insuleren van C++objecten is leuk en aardig maar je bent meer iets aan het aanpassen om implementatie te laten voldoen aan een OO design.
Dit extra werk heeft een echte OO taal geen last van.
Ik zelf heb het book van UML naar C++ en daar schrik je toch wel van ja het is mogelijk maar geef mij maar 'n echte OO taal om die rompslomp te mijden.
Dit houd in dat als je een groot software OO project goed maintanable wilt hebben je de C++ implementatie moet aanpassen om aan het OO design te voldoen.
Een OO taal heeft daar juist geen last van.
In mijn ogen is een OO taal pas een OO taal als je een OO design 1 op 1 kan implementeren dus dat een Code Object of class ook 1 op 1 voldoet aan OO design. dus geen OO aanpassingen nodig voor consistentie tussen OO design en implementatie design.
Als je C of C++ gaat toepassen als OO taal, door het aantepassen aan true OO ben je eigenlijk grof gezien MS werk aan het doen wat tot C# leide.
Die tijd van die benodigde aanpassingen moet je bij je project tijd bijtellen en ook de kosten of van je deadline aftrekken en budged.
Zonde van tijd en geld.
Elke taal die niet machinetaal is, moet (in één of meer stappen) vertaald worden naar machinetaal voordat hij uitgevoerd kan worden. Machinetaal is niet object-georiënteerd. Dat betekent dat alle object-georiënteerde talen na een N aantal vertaalslagen vertaald worden in een taal die niet object-georiënteerd is. Op dat niveau moeten alle OO constructies vertaald worden naar andere constructies in de niet object-georiënteerde taal. Er bestaat dus een taal die OO kan simuleren, en deze taal is procedureel.
Je mist een heel belangrijk punt van true OO en elke stap naar een hogere orde taal vanaf machine taal en dat is time to markt. De reden dat men ASM niet meer gebruikt om een complete app mee te maken is tijd. aangezien dit 'n paar orde terug is kan je dit zo zien 'n app in C# die in één jaar er uitgeklopt is en opgeleverd kan worden heb je met asm 10 jaar nodig of is gewoon niet te doen ivm compexiteit.
Verschil tussen C++ OO en C#/java OO is een heel stuk kleiner maar nog steed relevant en voor grote projecten zeker belangrijk.
En dan iets wat niet bij het bewijs hoort: grofweg zijn alle procedurele talen equivalent (niet helemaal waar, om OO te simuleren heb je wel degelijk iets als pointers nodig, dus BASIC valt af), dus ook in jouw favoriete taal kun je dit doen.
Het kan, maar als je echt OO wil doen kan je beter een OO taal pakken dan een te simuleren want je bent dan veel tijd bezig met het simuleren van iets dat je bij de ander as_is al krijgt je kan je dan meer focusen op de applicatie logica.
X399 Taichi; ThreadRipper 1950X; 32GB; VEGA 56; BenQ 32" 1440P | Gigbyte; Phenom X4 965; 8GB; Samsung 120hz 3D 27" | W2012SER2; i5 quadcore | Mac mini 2014 | ATV 4g | ATV 4K