Article View: be.comp.programming
Article #10072Re: C, C++, C.NET (zeer lang antwoord)
From: Bart Martens
Date: Sun, 31 Mar 2002 09:57
Date: Sun, 31 Mar 2002 09:57
112 lines
6951 bytes
6951 bytes
In article <hz5p8.39326$DE4.4987@afrodite.telenet-ops.be>, Lazarus Lang wrote: [...] > Er is echter wel een groot technologisch > verschil : C# is (in de praktijk althans) niet cross-platform zoals Java. C# > draait alleen op x86 processors, alhoewel dat in theorie ook anders kan. > In theorie, want Microsoft controleert C# volledig en is natuurlijk niet > geneigd implementaties voor andere processors dan de x86 of zelfs > operating systemen dan Windows te maken. Ze hebben echter C# wel > ter standaardisatie voorgelegd aan de ECMA (een Europese standaarden- > organisatie zoals de ISO, ANSI en andere). In principe is het dus mogelijk > C# en de onderliggende runtime library (CLR) te implementeren op andere > platformen. Dit is echter een gigantische taak die niemand behalve MS zelf > voor mekaar kunnen krijgen, mijns inziens. Als het waar is wat je schrijft, dan zou het toch erg onverstandig zijn ooit programma's in die gesloten C# te schrijven? Waarom zou ik C# gebruiken in plaats van de open alternatieven? [...] > Je programma's worden ook wel gecompileerd naar > een processoronafhankelijke instructieset (MSIL genaamd) maar het grote > verschil is dat je programma's de eerste keer dat ze uitgevoerd worden > just-in-time (JIT) gepre-compileerd worden naar een voor jouw x86 > processor optimale vorm. De machinecode is dus verschillend voor een > Pentium, Pentium Pro, PII, PIII of PIV. Hierdoor valt het gebrek aan > performance dat Java heeft t.a.v. C++ voor C# helemaal > weg. Theoretisch is C#-code zelfs iets sneller dan C++-code, omdat je de > de processor-optimalisaties nu at run-time kunnen gebeuren en altijd > pertinent > zijn voor jouw processor. Je bedoelt waarschijnlijk "at first execution time" in plaats van "at run-time". > Bij C++ dienen de programmeurs conservatieve > optimalisatiekeuzes te maken op voorhand bij de compilatie. Ze kunnen geen > PIII optimalisaties doorvoeren als hun software ook op een Pentium moet > kunnen draaien. Ze kunnen toch simpelweg verschillende binaries maken naargelang het type pentium, precies zoals nu verschillende binaries beschikbaar zijn voor Mac, Windows, Linux,...? Ik zie bij C++ geen beperking qua optimaal gebruik van het doelplatform. > Het leuke aan de .net architectuur is echter dat C# maar 1 van de vele > mogelijke talen is ! VB.NET is nu een bijna volwaardig alternatief voor C#, > zowel op het gebied van object oriented language features als op het gebied > van performance. De tijd dat VB geen volwaardige taal was, is voorbij ! > Het is eerder een kwestie van syntax-voorkeur/kennis die je ertoe brengt > een bepaalde taal te kiezen bij de implementatie van een .net-gebaseerd > project. Ik geloof dat er intussen meer dan twintig verschillende compilers > zijn voor .net waaronder de bekendste namen zijn: J# (Java for .net !!!!) > Pascal.net, Cobol.net, SmallTalk.net, Eiffel.net. Bovendien kan je perfect > de talen mengen! Alles wordt toch nog naar 1 gemeenschappelijke "taal" > gecompileerd: MSIL. Kijk eens aan wat nu allemaal compatibel is met Microsoft. > C# wordt nog niet zo heel veel gebruikt maar dat is omdat het nog zo jong > is. De eerste finale versie van de .net framework sdk is immers nog maar > een dikke twee maand oud. Toch zijn er al tienduizenden mensen overal > ter wereld bezig met .net voor hun nieuwe projecten, omdat ze over- > tuigd zijn van de technische kwaliteiten van dit nieuwe platform (EN omdat > er een grote vis als Microsoft achter staat :) ). En hun aantal groeit met > de dag. De meesten gebruiken uiteraard C# voor projecten, maar ver- > geet die miljoenen VB-programmeurs niet die uiteraard (in eerste instantie > ?) > VB.NET zullen gebruiken en voor de eerste keer zullen ze zich daar niet > voor moeten schamen !!! Je bent wel heel enthousiast over Microsoft he. > Ik ben er zelf zo eentje. Hoewel ik intussen > ook met C, C++ en (recentelijk) Java vertrouwd ben, heb ik toch nog > altijd een nostalgisch zwak voor die ietwat rare VB syntax, alhoewel ik > moet toegeven dat C# de cleanste syntax heeft. Ik schakel ooit nog wel > eens over naar C# en het leuke is: ik moet niks van mijn VB.NET code > weggooien of converteren want die kan ik gewoon blijven verder gebruiken. Overschakelen van Microsoft naar Microsoft... Knap toch wat allemaal tegenwoordig kan he. > Laat ik vooral Managed C++ niet vergeten ! Dit is de enige taal die je > toelaat ook je "oude" C++ code te hergebruiken in .net projecten. Je kan > dus klassieke .cpp en .h files in hetzelfde project samenzetten met .net > .cpp files en ze elkaar laten aanroepen! Dit wordt de eerstkomende jaren > ook een zeer populaire .net taal. :) Dus, je kan van C++ naar Microsoft. Wat kost het je wanneer je terug wil naar open producten? > Mijn advies (niet bindend en zonder garanties !!!!): > > Begin met Java, C# of C++. Alledrie zijn zeer gelijkaardig qua syntax en > OO mogelijkheden maar kies afhankelijk van je voorkeuren/interesses/ > professionele vooruitzichten: > 1. C++ is het krachtigst (zowel OO-wise als qua performance) maar juist > daardoor niet zo toegankelijk, zeker als je nog geen C kende. > 2. Java is overal inzetbaar (Unix, Linux, Windows, MacOS, ...) maar > wel relatief traag en de developer tools zijn verschrikkelijk rommelig en > onbetrouwbaar, zeker als je al verwend bent door MS Visual Studio. > 3. C# is nieuw, unproven en MS-specifiek maar wel super-sexy, snel en > je hebt Visual Studio.net dat je lekker verwent ! Begin met Java, als je een OO-taal wil leren. Java stimuleert je om OO te programmeren, aangezien Java strenger is op het gebruik van OO. C++ is lakser, aangezien je procedureel (C) kan programmeren in C++. Ik zou C# (nog?) niet gebruiken, aangezien ik (nog?) niet overtuigd dat C# voldoende open is. En, ik zou een programmeertaal niet kiezen o.w.v. de beschikbare developer tools. [...]
Technical Details
Message-ID:
<slrnaadokb.1ru.bart.martens@cable-195-162-214-247.upc.chello.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!supernews.com!news-x2.support.nl!surfnet.nl!amsnews01.chello.com!news.chello.be!not-for-mailReferences:
<3ms8au0umst4jhqbt7mepgtio9mv3fdb2t@4ax.com> <hz5p8.39326$DE4.4987@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,3cfcb2e94692f21f X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-03-31 02:02:09 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!supernews.com!news-x2.support.nl!surfnet.nl!amsnews01.chello.com!news.chello.be!not-for-mail Newsgroups: be.comp.programming From: bart.martens@advalvas.be (Bart Martens) Subject: Re: C, C++, C.NET (zeer lang antwoord) References: <3ms8au0umst4jhqbt7mepgtio9mv3fdb2t@4ax.com> <hz5p8.39326$DE4.4987@afrodite.telenet-ops.be> Message-ID: <slrnaadokb.1ru.bart.martens@cable-195-162-214-247.upc.chello.be> User-Agent: slrn/0.9.7.1 (Linux) Lines: 112 Date: Sun, 31 Mar 2002 09:57:14 GMT NNTP-Posting-Host: 195.162.214.247 X-Complaints-To: abuse@chello.be X-Trace: news.chello.be 1017568634 195.162.214.247 (Sun, 31 Mar 2002 11:57:14 MET DST) NNTP-Posting-Date: Sun, 31 Mar 2002 11:57:14 MET DST Organization: Chello Belgium Usenet Service