Mogens Hansen wrote:
> "Arne Vajhøj" <arne@vajhoej.dk> wrote in message
> news:42eba5a1$0$75699$edfadb0f@dread16.news.tele.dk...
>>Hvis man har frit valg mellem f.eks. char* og std::string,
>>så synes jeg da også absolut at man skal vælge den (men det
>>er formentligt ret normalt at man ikke har et valg fordi
>>gammel kode eller API eller lib kræver en bestemt type streng).
>
> Jeps.
> Men man kan nøjes med at isolere det til overgangen til de biblioteker, og
> så i det meste at sin kode benytte "std::string".
Afhænger af koden. Hvis koden bliver for mudret til af konverteringer,
så er der ikke meget pointe.
>>Jeg mener bare ikke at brugen af STL betyder en stor
>>forskel for virkelige applikationer - der er normalt
>>meget sværere problem stillinger end ting som
>>C style char* og str funktioner.
>
> Det er jeg dybt enig i. Jeg har brugt STL eller C++ Standard Library siden
> midt i 1995, og det har betydet en væsentlig forskel i produktiviteten og
> måden som jeg skriver programmer på.
> Det får ikke svære problemer som programmet egentlig skal løse i problem
> domænet til at forsvinde, men det højere abstraktionsniveau gør at man
> nemmere kan koncentrere sig om at løse dem i stedet for også at skulle
> bekymre sig om bogholderi med allokering og bufferstørrelser.
Jeg er altid uhyre skeptisk når XYZ forbedrer produktiviteten
voldsomt.
> Vi er formodentlig enige om at brugen af char*, og de tilhørende funktioner
> som f.eks. strcpy har været årsag til mange problemer, som f.eks.
> buffer-overrun med deraf følgende sikkerhedhuller og program crash.
> Det er da en væsentlig forskel for virkelige applikationer om de er skrevet
> med en progammeringsstil der let giver den type problemer.
Det argument betyder jo også at du vil anbefale skift til
Java/C#/Ada som slet ikke har det problem.
Nå ikke ...
>>Og jeg synes ikke at man skal betragte en C++
>>bog som forældet fordi den ikke gennemgår STL.
>
> Det kommer da meget an på hvad bogen prøver at formidle og til hvem.
>
> Hvis vi taler om en introduktion til C++ eller en bog der prøver at være
> dækkende, så er jeg slet ikke i tvivl om at hvis den ikke beskriver
> "std::string", "std::vector" og "std::map", så er det i sig selv grund til
> at undgå den bog. Helst skal det indtroduceres tidligt og bruges som default
> i eksemplerne.
Enig.
> Hvis bogen derimod sigter på at formidlere avancerede ting, og hvis de ting
> stadig er holdbare, så kan en bog fra før 1997-98 (C++ Standardens
> vedtagelse) være interessant, men kun til læsere der har forståelse for
> hvordan sproget set ud i dag.
Også enig.
> Den eneste bog jeg umiddelbart kan komme i tanke om, som falder ind i den
> kategori er
> Advanced C++, Programming Styles and Idioms
> James O. Coplien
> ISBN 0-201-54855-0
> som ikke sigter på at være en introduktion eller gennemgang af C++, men
> derimod henvender sig til erfarne programmører. Selv den bør ledsages af
> kommentarer om at den konkrete kode ikke altid er tidssvarende og ikke
> nødvendigvis kan oversættes med moderne compilere.
Lyder som en interessant bog.
Og folk opdager jo nok hvis deres compiler brokker sig.
Jeg synes bare at det er vigtigt at folk får noget input
mellem begynderbogen (data typer, operatorer, kontrol strukturer,
standard bibliotek) og design patterns.
C++ kan bruges på mange måder og de er ikke alle lige
gode. Og før folk slippes løs på en eller anden uskyldig
applikation bør de forstå nogle ting.
Jeg græder når jeg hører en datamatiker studerende
som er undervist i C++ mene at det er ligegyldigt om
der står virtual eller ej.
>>Hvis folk får den rigtige forståelse for C++,
>
> Det kommer da meget an på hvad du forstår ved "den rigtige forståelse for
> C++".
>
> Jeg mener klart at der ikke er mange mennesker, der vil fange pointen ved
> den opdeling i containere, iteratorer og algoritmer som STL introducerede
> ved at kigge i en reference manual, ligesom man ikke nemt kan forstå hvordan
> man effektivt bruger C++ ved at læse Standarden. De fleste har brug for en
> introduktion til det med en gennemgang af principperne, for at få det fulde
> udbytte.
> STL og biblioteker som Boost bidrager både med konkret kode, men også i høj
> grad med programmerings- og design-stil.
Der er jeg nok lidt uenig.
For mig er biblioteker "bare" nogen som er der og som man bruger.
Principielt kunne man lige så godt lave sine egne.
Det er efter min mening faktisk sundt at folk prøver at
lave deres egne mens de lærer C++. Det giver en god forståelse
for tingene.
Når vi så skal til at lave noget seriøst, så kan vi
godt pakke alle de hjemmestrikkede biblioteker væk
(hvis det er muligt), fordi standard biblioteket
og diverse platform specifikke biblioteker er så
godt som altid af bedre kvalitet.
Jeg synes også at det er karakteristisk at i
MFC/.NET/Java er collections/iteratorer/enumeratorer ikke
noget særligt bare endnu en biblioteks feature (ud af mange).
Arne