🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #10072

Re: C, C++, C.NET (zeer lang antwoord)

#10072
From: Bart Martens
Date: Sun, 31 Mar 2002 09:57
112 lines
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-mail
References: <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