🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #11011

Re: oproep aan de programmeurs:wat moet ik kiezen ?

#11011
From: Sjoerd Schreuder
Date: Mon, 18 Feb 2002 00:10
71 lines
5437 bytes
Pieter Philippaerts wrote:
> Ik weet niet zeker of dat voor IL ook zo is. IL heeft voor zover ik weet ongeveer
> alles wat x86 ook heeft en ik zie dus geen probleem om C++ te laten compilen
> naar IL (after all, het compiled al naar zoveel verschillende instructie
> sets).

Ik ben eens wat gaan zoeken in google en wat gaan lezen. Hopelijk krijgen
we daardoor een discussie op grond van feiten in plaats van
"gevoelens", "vermoedens", en "90% zeker".

Samenvatting:
* destructors en/of stack-based variabelen hebben een andere semantiek
  dan in C++ voorgeschreven is. Daarmee gooi je een belangrijk techniek
  in C++ (bekend onder de gekke naam RAII) overboord. Zonder RAII zou
  ik een stuk minder productief in C++ zijn.
* RTTI (RunTime Type Information) van IL is anders dan die van C++,
  dus je kunt de C++ RTTI niet gebruiken.
* geen non-public inheritance in .NET. Jammer, want dat heeft toch
  echt wel toepassingen.
* const (en volatile) worden niet ondersteund. En "const-correctness"
  is in C++ toch een zeer belangrijk concept.
* managed templates worden (nog) niet ondersteund.

Dus we houden over: C++ zonder destructors, stack based variabelen,
templates, const, en RTTI. Probeer maar eens een serieus, modern C++
programma te vinden dat die onderdelen niet gebruikt.

Mijn conclusie: "managed C++" is geen C++ want te veel onderdelen
van C++ zijn niet mogelijk.

Details:
[Alle quotes zijn voorafgegaan door "*", mijn commentaar staat ertussen]

http://msdn.microsoft.com/msdnmag/nettop.asp?page=/msdnmag/issues/01/07/vsnet/vsnet.asp&ad=ads.ddj.com/msdnmag/premium.htm
* Unfortunately, managed classes can't be created on the stack.
* They have to be created on the managed heap so that the garbage
* collector can manage them. .NET does have something called value types
* that can be allocated on the stack but, unfortunately, they are not allowed
* to have destructors. In fact, managed types don't really have destructors
* (the method that's called when the object goes out of scope) at all in
* the C++ sense.
C++ constructors kunnen dus niet in .NET worden gevangen.

Verderop:
* (.NET doesn't support managed templates yet.)
Dus ook de C++ templates kunnen we voorlopig nog vergeten.

http://www.gotdotnet.com/team/cplusplus/articles/mcspec.doc
Hoofdstuk 25 noemt wat beperkingen:
* There is no verifier for MSIL generated for Managed Extensions
  for C++ programs.
  Developers and testers need to check code for conditions that may
  have adverse effects. These include buffer and stack overflows, type
  correctness, and pointer operations.
* The C++ RTTI operators shall not be applied to managed objects.
  RTTI is not supported.
* The common language runtime has no representation for non-public
  inheritance.
* The const and volatile modifiers on member functions are not supported.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/drgui02132002.asp
*  But this power comes at a price: First, as you know, C++ is somewhat
*  more complicated than, say, C# or Visual Basic .NET. More importantly,
*  Visual C++ .NET code cannot be made verifiably type-safe. This means
*  that Visual C++ .NET modules must be trusted, so many of the scenarios
*  where you download code over the Internet from a source you don't totally
*  trust won't work with code generated by this version of Visual C++ .NET.
*  (Allowing Visual C++ .NET to produce verifiably type-safe code is a top
*  priority for a future release.)

Sjoerd Schreuder
Technical Details
Message-ID: <3C7047EC.EC6753E0@wanadoo.nl>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!supernews.com!194.159.255.21.MISMATCH!dispose.news.demon.net!demon!btnet-peer0!btnet-peer1!btnet!isdnet!newsfeed.wirehub.nl!cleanfeed.casema.net!leda.casema.net!castor.casema.net.POSTED!not-for-mail
References: <uXu88.122912$rt4.11582@afrodite.telenet-ops.be> <1013109746.799866@seven.kulnet.kuleuven.ac.be> <3C63C40B.BA1DDAA9@iae.nl> <1013181054.194148@seven.kulnet.kuleuven.ac.be> <3C63EE8A.DEE29046@iae.nl> <1013187868.875791@seven.kulnet.kuleuven.ac.be> <3c6c35f1.5840688@newszilla.xs4all.nl> <1013742119.309832@seven.kulnet.kuleuven.ac.be> <3c6e35cf.1533535@newszilla.xs4all.nl> <1013895537.659605@seven.kulnet.kuleuven.ac.be> <slrna6tm41.3mc.usenet@dolens.mobach.nl> <1013913710.524385@seven.kulnet.kuleuven.ac.be> <3C6FD2B5.1D31CC72@wanadoo.nl> <1013970800.921078@seven.kulnet.kuleuven.ac.be> <rn8z9saqz0.fsf@keyser.soze.com> <3C701E9B.E4E373FF@wanadoo.nl> <DdVb8.28378$ql6.2476775@zwoll1.home.nl> <1013988325.966701@seven.kulnet.kuleuven.ac.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: 107324,65d4c4d6a1e8dc39
X-Google-Attributes: gid107324,public
X-Google-Thread: fcea4,65d4c4d6a1e8dc39
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-02-17 16:16:04 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-03!supernews.com!194.159.255.21.MISMATCH!dispose.news.demon.net!demon!btnet-peer0!btnet-peer1!btnet!isdnet!newsfeed.wirehub.nl!cleanfeed.casema.net!leda.casema.net!castor.casema.net.POSTED!not-for-mail
Message-ID: <3C7047EC.EC6753E0@wanadoo.nl>
From: Sjoerd Schreuder <sa_schreuder@wanadoo.nl>
X-Mailer: Mozilla 4.7 [en] (Win98; I)
X-Accept-Language: en
MIME-Version: 1.0
Newsgroups: be.comp.programming,nl.comp.programmeren
Subject: Re: oproep aan de programmeurs:wat moet ik kiezen ?
References: <uXu88.122912$rt4.11582@afrodite.telenet-ops.be> <1013109746.799866@seven.kulnet.kuleuven.ac.be> <3C63C40B.BA1DDAA9@iae.nl> <1013181054.194148@seven.kulnet.kuleuven.ac.be> <3C63EE8A.DEE29046@iae.nl> <1013187868.875791@seven.kulnet.kuleuven.ac.be> <3c6c35f1.5840688@newszilla.xs4all.nl> <1013742119.309832@seven.kulnet.kuleuven.ac.be> <3c6e35cf.1533535@newszilla.xs4all.nl> <1013895537.659605@seven.kulnet.kuleuven.ac.be> <slrna6tm41.3mc.usenet@dolens.mobach.nl> <1013913710.524385@seven.kulnet.kuleuven.ac.be> <3C6FD2B5.1D31CC72@wanadoo.nl> <1013970800.921078@seven.kulnet.kuleuven.ac.be> <rn8z9saqz0.fsf@keyser.soze.com> <3C701E9B.E4E373FF@wanadoo.nl> <DdVb8.28378$ql6.2476775@zwoll1.home.nl> <1013988325.966701@seven.kulnet.kuleuven.ac.be>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Lines: 71
Date: Mon, 18 Feb 2002 00:10:00 GMT
NNTP-Posting-Host: 194.134.127.132
X-Trace: castor.casema.net 1013991000 194.134.127.132 (Mon, 18 Feb 2002 01:10:00 MET)
NNTP-Posting-Date: Mon, 18 Feb 2002 01:10:00 MET
Organization: EuroNet Internet