C# is m.n. bedacht voor COM objects. Niet alleen het gemak waarmee je ze kan maken - mee eens Otis (ATL in C++ helpt, maar blijft behelpen) - maar ook voorkomen van bugs & (hieraan gerelateerde) reductie van onderhoudskosten (zeer belangrijk). Door de aard van COM kan je nu eenmaal niet alles wat je binnen een proces kunt doen, en de aanpassingen die nodig zijn om het maken van COM objects 'natuurlijk' te maken brengen ook met zich mee dat de taal platform afhankelijk wordt. Maar het meest gebruikte platform is Win32 en COM is daarom belangrijk. Naarmate er meer en meer gebruik gemaakt gaat worden van COM objects wordt het ook steeds belangrijker dat deze goed geimplementeerd zijn. Het is bijzonder frustrerend als een applicatie crasht door een bug in een COM object dat door een ander ontwikkeld is.
</div><div class=b4>This is just a language, OK? </div><div class=b1>
Wat doe je dan als je de euvele moed hebt om met een nieuwe taal te komen? Zorgen dat het lijkt op een taal die door professionals gebruikt wordt zodat het niet te moeilijk te leren is, en ook incidenteel kan worden toegepast. Java lijkt op C/C++ en dat is ook niet toevallig.
Hoe was de reactie op Java? Grote euforie! Maar is Java wel zo bijzonder? Lijkt op C/C++ maar mist een aantal features, langzaam tenzij je het compileert etc. etc. Platform onafhankelijk? Zoals Kinstayer terecht opmerkt zijn er nogal wat mogelijkheden om dat te voorkomen (implementatie van de JVM).
Afgezien van de hype heeft het terecht een plaatsje gekregen in de toolbox van de (web-) programmeur.
ProX: je verdwaalt met name in libraries en helpfiles als je de API nodig hebt. Maakt niet uit in wat voor taal je dan programmeert met 1 uitzondering: een script taaltje met kleine, beperkte en voor toepassing specifieke API.
Jan Klaassen: dacht toch dat Perl, Delphi, VB onder 3GL vallen, net als C en C++. 4GL is bijvoorbeeld SQL of Prolog die echt een abstractieniveau hoger zijn. Scripting languages zijn talen waarmee je applicaties kunt aansturen en die geinterpreteerd worden door een engine die in de betreffende applicatie is ingebouwd (bijv. javascript). Perl is dus een scripting language, maar Delphi en VB zijn general purpose languages. En een script language kan 4GL zijn (SQL), maar ook 3GL (javascript).
Otis: denk om je hart.
Dim: er is niets leuker dan een taaltje bedenken en daar een compiler/interpreter voor bouwen. En er is ook altijd wel een reden te vinden om het te doen. Uiteindelijk zullen andere programmeurs uitmaken of je zinnig bezig bent geweest of niet. In principe kan je alles ook in FORTRAN of COBOL programmeren (yuch!) om maar eens twee talen te noemen die ik nog niet gezien heb
dabit: COM is een binaire standaard voor objects, en dus meer dan een afspraak van hoe losse stukjes code met elkaar kunnen praten. Het versieprobleem is 'opgelost' door inheritance niet te implementeren (aggregatie wel) en de implementatie los te koppelen van de declaratie door toe te staan dat 1 object meerdere gezichten (interfaces) kan hebben - als je methods toevoegt, voeg je een nieuwe interface toe zodat oudere programma's het nieuwe object kunnen gebruiken met de originele interface. De verschillen met objecten in C++ zijn groot genoeg om C# een kans van slagen te geven. De CORBA standaard heeft vergelijkbare doelstellingen, maar de binaire implementatie zit als ik me niet vergis veel dichter op objecten in C++.
Doggie & Jesse: C++ is een mooie taal, maar soms ook een nachtmerrie voor het managen van software projecten en dan is het niet meer de taal met de onbegrensde mogelijkheden (van programmeurs voor programmeurs) maar een pakhuis van ellende. Omdat alles kan, moet altijd afgebakend worden wat wel en niet wordt toegestaan. Je kunt in C++ (en ook in C) geen goede software produceren als er geen duidelijk eigen idioom met afspraken en beperkingen is gedefinieerd. Er zijn daarom nogal wat voorstanders van alternatieven waar alle 'gevaarlijke' mogelijkheden - zoals die enge pointers - uit zijn verwijderd. Het alternatief (en daar geloof ik eerlijk gezegd meer in) is goed opleiden. Programmeren is nu eenmaal een vak en vakman wordt je niet in een achternamiddag ongeacht het gereedschap dat je gebruikt. Maar ja, dat kost weer tijd en centjes...
Hm. Gigantisch verhaal weer. Sorry hoor, maar ik moest even.