Article View: be.comp.programming
Article #11404Re: oproep aan de programmeurs:wat moet ik kiezen ?
From: Jack Portier
Date: Fri, 08 Feb 2002 14:08
Date: Fri, 08 Feb 2002 14:08
78 lines
4829 bytes
4829 bytes
"Sjoerd Schreuder" <sa_schreuder@wanadoo.nl> wrote in message news:3C63B26A.DA13A6B8@wanadoo.nl... > Jack Portier wrote: > > > > "Sjoerd Schreuder" <sa_schreuder@wanadoo.nl> wrote: > > > > > > C als eerste taal is niet aan te raden. Dat is alsof je > > > iemand probeert te leren schieten en gelijk met de bazooka > > > begint (zonder handleiding) in plaats van eerst eens > > > te gaan paintballen. > > > > Oh? Vertel! Wat is er zo slecht aan C wat je weer moet afleren? > > Even een kort, niet uitputtend lijstje: > - geen ingebouwde string. strcat(), strcmp(), strdup() enzovoorts zijn > een ramp om geod te leren gebruiken. En dat blijkt dan verspilde moeite > zodra je naar een andere taal overstapt. > - arrays zijn (bijna) alleen via pointers te gebruiken. Hierdoor komt een > beginner al heel vroeg met pointers in aanraking. Pointers zijn een must > of te kennen, maar geven in het begin vooral verwarring. > - het gebrek aan type-checking bij printf() en scanf(), waardoor je heel > snel bugs krijgt als je met %d een float wilt printen. Zelfs stone-age > Pascal deed dat al beter. > - Als gevolg van de afwezigheid van een stringtype en dynamische arrays, > moet je in een beetje programma al aan geheugenmanagement doen. In kleine > voorbeeldprogramma's geeft een lek niet zoveel, maar zodra je echte programma's > gaat schrijven maakt het wel uit. En dan blijkt dat de meeste beginners > bakken vol met geheugenlekken inbouwen. > > C is een zeer nuttige taal voor low-level toepassingen zoals device drivers > enzovoorts, maar geen geschikte taal om te leren programmeren. Geeft niets, > want daar is de taal ook niet voor ontworpen. Dat bedoel ik juist! Je moet C zien als een soort high-level assembler. Je kunt er prima in programmeren en het is efficient want reken maar dat het toevoegen van een string type, meer typechecking en ingebouwde geheugenmanangement een enorme impact geeft op performance. Nee, C is ideaal; efficient en 'concise', zonder frutsen of franje. Maar je hebt gelijk, misschien kunnen mensen beter eerst Java leren. > > > Dan schop je > > ook tegen C++ aan want OO is ook al geen walhalla weet ik uit ervaring. > > Nee, C++ heeft voor die punten alternatieven: > - std::string > - std::vector > - <iostream> > - std::auto_ptr, boost::shared_ptr, en andere smart pointers. Afgezien van > het feit dat je door std::string en std::vector nauwelijks nog zelf geheugen > hoeft te beheren. > Maar C++ is wel tien keer zo moeilijk als C, al moet je bij C iets meer weten hoe een computer echt werkt om af en toe te begrijpen waarom bepaalde dingen op een bepaalde manier worden gedaan. Bij andere talen wordt dit meer verborgen gehouden. Met C libraries kom je trouwens ook al een heel end om bovenstaande dingen te maken (een string library of een geheugen management library). > Natuurlijk is OO geen walhalla. Daarom ben ik blij dat ik met C++ > ook imperatief, functioneel, en zelfs een beetje logisch (Prolog-achtig) > kan programmeren. En dat allemaal in dezelfde taal, wat het mixen van > paradigmas zeer makkelijk maakt. Daardoor kun je die aanpak kiezen > die het beste werkt in plaats van altijd OO te moeten gebruiken. > Want inderdaad: OO is niet voor elk probleem geschikt. > > C++ is niet een OO taal, C++ is een multi-paradigma taal. C++ is ook > geen C-met-klassen meer, maar veel meer dan dat. > > Sjoerd Schreuder
Technical Details
Message-ID:
<gZQ88.80$mS5.298@pollux.casema.net>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!news.belnet.be!cleanfeed.casema.net!leda.casema.net!pollux.casema.net.POSTED!not-for-mailReferences:
<uXu88.122912$rt4.11582@afrodite.telenet-ops.be> <3C62D35E.5040702@khleuven.be> <qCA88.141$U61.352@pollux.casema.net> <3C62F663.BCFF9205@wanadoo.nl> <OEN88.34$mS5.120@pollux.casema.net> <3C63B26A.DA13A6B8@wanadoo.nl>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-08 06:12:24 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!news.tele.dk!small.news.tele.dk!193.190.198.17!newsfeeds.belnet.be!news.belnet.be!cleanfeed.casema.net!leda.casema.net!pollux.casema.net.POSTED!not-for-mail Reply-To: "Jack Portier" <nomail@nergens.nl> From: "Jack Portier" <nomail@nergens.nl> Newsgroups: be.comp.programming,nl.comp.programmeren References: <uXu88.122912$rt4.11582@afrodite.telenet-ops.be> <3C62D35E.5040702@khleuven.be> <qCA88.141$U61.352@pollux.casema.net> <3C62F663.BCFF9205@wanadoo.nl> <OEN88.34$mS5.120@pollux.casema.net> <3C63B26A.DA13A6B8@wanadoo.nl> Subject: Re: oproep aan de programmeurs:wat moet ik kiezen ? Lines: 80 Organization: None X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4807.1700 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700 Message-ID: <gZQ88.80$mS5.298@pollux.casema.net> Date: Fri, 08 Feb 2002 14:08:12 GMT NNTP-Posting-Host: 212.64.108.140 X-Trace: pollux.casema.net 1013177292 212.64.108.140 (Fri, 08 Feb 2002 15:08:12 MET) NNTP-Posting-Date: Fri, 08 Feb 2002 15:08:12 MET