Van elke kennis die je opdoet weet je dat het zal verouderen. Inzichten in principes zijn natuurlijk wat meer houdbaar dan daadwerkelijke hands-on kennis. Van de huidige managed C++ variant is door het VC team naar buiten gebracht dat het een verkeerde beslissing was. (zie oa
http://blogs.gotdotnet.com/hsutter/ en news: comp.lang.c++.moderated Ecma International Moves to Standardize C++ Binding ...).
Als het je alleen gaat om de principes van iteratief en OO programmeren dan is het huidige managed C++ niet zo slecht, maar de feitelijke hands-on kennis (zie het als een bij produkt van die cursus) is op z'n minst van een nogal twijfelachtige waarde.
Daarentegen bieden C#, C++ en Java identiekte inzichten, met als "gratiz" voordeel dat de feitelijke hands-on ervaring bewezen nuttig is. En natuurlijk moet het niet al te veel overtrokken worden. -zo'n- ramp is het nu ook weer niet allemaal. Laten we het dan iets nuanceren en zeggen dat managed C++ op dit moment 'een beetje dom' is en niet heel erg dom.
Verder is het niet duidelijk in hoeverre templates ala C++ echt worden gesupport in MC++, immers de .NET lib generics werken anders. Ze denken erover om een STL.NET te releasen maar ik zie dat niet gebeuren dat dat met whidbey komt.
Korte samenvatting van Herb over de targets voor de komende MSVC compiler:
* Pure native: Compile existing programs to native binaries just like we've all been doing for years. No CLI features, no CLI extensions.
* Normal C++ programs that happen to be compiled to IL instead of to x86: The code runs on the VM and is JITted and everything, but the program is still using all native data and not using any CLI data types, so no CLI extensions are needed here either.
* C++ programs that explicitly start using some CLI data types or features: At those points in the code where those data types or features are used, and only at those points, the extensions will apply, and most of the time the only new syntax will be to write gcnew and ^ (instead of new and *).
Met 'normal c++' wordt dan ook echt normal bedoelt. Zowel templates als multiple inheritance kunnen naar de CLI gecompiled worden, alsmede alle andere standaard C++. Natuurlijk compileert STL dan naar CLI, maar ook belangrijke andere libraries als bv boost of loki. Standard conformance is vandaag de dag het issue voor het VC team. Van een aparte STL.NET heb ik nooit gehoord. Ik denk dat dat een project is van voor de ECMA CLI/C++ binding.
TS wil overigens cross platform hardcore C++ programmeren dus met MC++ kom je dan niet zo ver.
Of juist wel. Sinds de CLI binding een ECMA standaard is, en dus mogelijk ook een ISO standaard wordt, zal dat er mogelijk voor zorgen dat de CLI een defacto VM en GB implementatie voor C++ wordt. (De CLI, inclusief de C++ binding kan voor elk platform geimplementeerd worden, zie oa het Mono project. Let wel, dit is in principe zonder de .NET libraries zelf).
WAT!? sinds wanneer heeft informatica IETS van doen met een programmeertaal?
Sinds het feit dat je op de Universiteit practica doet. Aangezien je niet van de nakijker/proffessor kan eisen dat ie 10.000 talen kent wordt meestal een bepaalde taal en omgeving verplicht gesteld. Tevens, als je voor elk practica een compleet andere taal zou moeten gebruiken, dan ben je meer met die taal bezig dan met het feitelijke onderwerp van de opdracht.
Bv, in Leiden krijgen de eerste jaars C++. In het 2de semester moest je dan een MIPS emulator in C schrijven. Alleen al die overgang zorgde nog al voor wat protest, omdat de studenten dan on-the-fly nog even de C eigenaardigheden erbij moesten leren, terwijl het eigenlijk om de CPU architectuur ging. Volgens jou moeten ze dan nog maar eventjes eerst Eifel gaan leren en dan in de laatste week voor de deadline de hele emulator schrijven ofzo?
De programmeertaal is een middel om software design/development te onderwijzen, maar geen doel.
Precies, maar de taal moet niet afleiden van het werkelijke doel. Als je telkens bezig moet zijn om andere talen te leren kom je niet aan het echte werk toe. Daarom is het
noodzakelijk om, zoals ik al eerder zij, afhankelijk van de universiteit C++, C# of Java te kennen, daar de meeste practica die taal voorschrijven.
Maar eigenlijk was mijn hele opmerking andersom bedoelt: Namelijk dat je zonder kennis van 1 van die programmeertalen gewoon de opleiding niet doorkomt. Je hebt het gewoon in bijna elke vak met een practica nodig. Daarmee is het een middel wat je relatief gezien het vaakst gebruikt.
In Leiden heb je bv ook een vak dat Concepten van Programmeertalen heet. Daar krijg je oa Prolog, Lisp/scheme of clean (verschilt per jaar) en Java. De kennismaking met de logische en functionele talen is heel interesant, maar het komt meestal niet terug bij een vervolg vak. Als je naar bv andere vakken kijkt als Lineaire Algebra, dan zie je dat deze kennis ook niet heel veel te gebruiken is bij andere vakken, alleen als je je specificiek in geometrisch modelleren gaat specialiseren komt het weer terug.
Dit zijn maar voorbeelden. Het hele punt is dat C++ enz de kennis is die in de meeste vervolg vakken nodig is. Punt.
Het liefst zie ik informatica opleidingen onderwijzen in een taal als Eiffel, zodat ze niet worden afgeleid door marketingpoep of politieke stromingen die beweren dat de taal het doel is en niet een middel.
Ja! Laten we dat doen! Lekker makkelijk om samen te werken met mensen van andere universiteiten dan

Lekker makkelijk om references op te zoeken en om code te delen met elkaar. Leuk voor vakken als Operating Systems waar studenten een stuk van een OS kernel moeten implementeren (bv Minix, Linux, of OSP). Ook zeer veel beter voor vakken als Compiler Construction. Bv Bison en Flex werken toch nog altijd het makkelijkst met Eiffel. En dan meteen alle commentaar in het Nederlands he? Want dat leest toch veel makkelijker?

omdat Eiffel veel beter OO implementeert dan Java ooit zal kunnen en een student veel beter dwingt na te denken over waar hij/zij mee bezig is.
Hoewel de taal zeker in zeer belangrijke mate bepaald hoe je gedachten gevormt worden, is het toch ook zeer zeker de student zelf die zich tot een zekere mate van zelf bewustzijn moet dwingen. Het beseffen wat je nou eigenlijk aan het doen bent, en daarmee het jezelf aanleren van principes en algemene methodes moet gewoon
ook in je zitten. Wellicht dat HBO studenten dat van nature minder in zich hebben en daarom iets meer gedwongen moet worden. Dat de HIO Enschede daarom Eiffel verplicht stelt is in dat licht gezien mischien nog niet eens zo'n slecht idee.
Beweren dat een student / afgestudeerde een van de popi-jopi talen MOET kennen is IMHO een teken dat je niet begrijpt dat informatica niets van doen heeft met het leren van het gebruik van een programmeertaal, maar met de theorie en technologie achter het bouwen van software in het algemeen.
Sure. Informatica is ook geen programmeurs opleiding an sich. Maar nogmaals, je hebt de kennis van die ene taal nou eenmaal nodig om practica te doen en voorbeelden in boeken te lezen. Toevallig is die ene taal meestal C/C++ of Java. Beiden verschillen echter kwa syntax zo weinig dat het wel te doen is om deze iet wat te mixen, zeker voor hogere jaars vakken. In Leiden had je bv het vak Interfaces dat 'opeens' in Java was. Met 2~3 jaar C++ kennis is dat wel te doen. Als het opeens in Eiffel was geweest dan geldt het zelfde verhaal als met bovenstaande emulator, zelfs voor 3de jaars.
Op dit moment heb je voor veel software nog programmeertalen in de vorm van ascii tekst nodig inderdaad, over 20 jaar echt niet meer, de theorie erachter echter blijft exact hetzelfde.
Kewl. Jij kan 20 jaar in de toekomst kijken!

Hoewel ik ook verwacht dat de theorie ongeveer hetzelfde zal blijven hoeft dat natuurlijk niet. Ook zal over 20 jaar best nog ascii text nodig zijn. Overigens kun je nu toch ook al unicode gebruiken in je source? Chinese studenten hadden bv gewoon chinese comments in hun C++ en Java source code staan.
Ik heb zelf btw gewerkt aan het ontwerp en implementatie van een recursieve data-flow based taal. Deze is op XML gebasseerd en er kan in principe geheel grafisch geprogrammeerd mee worden (door oa aan elkaar clicken van blokjes). Maar dat is natuurlijk weer een heel ander verhaal.