/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Bog om C++
Fra : Rasmus Ladekjær Pede~


Dato : 02-12-01 13:36

Hej.

Jeg vil lære at skrive C++. Hvilken bog skal jeg starte med, jeg er ikke så
god til engelsk så bogen skal være på dansk.

mvh Rasmus.




 
 
Mogens Hansen (02-12-2001)
Kommentar
Fra : Mogens Hansen


Dato : 02-12-01 18:19


"Rasmus Ladekjær Pedersen" <ladekjaer@get2net.dk> wrote in message
news:9ud77u$3d9$1@sunsite.dk...
> Hej.
>
> Jeg vil lære at skrive C++. Hvilken bog skal jeg starte med, jeg er ikke

> god til engelsk så bogen skal være på dansk.
>

Det er naturligvis et problem at du ikke syntes at dit engelsk er så godt så
du vil læse en bog om C++ på engelsk.
Der findes nogle bøger om C++ på dansk, nogle af dem er en del år gamle og
bør undgås alene af den grund.
Jeg kender ikke nogle af de nyere bøger på dansk, men selv hvis de er
udemærkede, så vil man på et tidspunkt være nødt til at læse engelsk
litteratur om C++ - det er på engelsk de væsentligste bøger findes.

Jeg fandt et par danske bøger på Teknisk Forlag.

C++ - videregående programmering
Jeff Alger
ISBN: 87-571-2216-4
http://bog.ing.dk/default.asp?Action=Details&ISBN=87-571-2216-4

Den henvender sig ifølge 1. kapitel, som kan downloades, til personer med
minimum 2 års erfaring.
Samtidig er jeg ikke videre imponeret af det kapitel.

F.eks. er en række termer oversat, så jeg simpelt hen ikke ved hvad de
betyder. Det gælder f.eks. "viderestilling" og "sammenhængende
klassehierarkier", og alligevel benyttes ord som "templates" og
"exception-håndtering".
De 2 kode-stumper, der findes i bogen er alt andet end imponerende:
<citat>
Cout << 17 << endl << flush;
<citat/>
Det hedder "cout" og ikke "Cout" og "endl" flusher streamen, så "flush" er
absolut overflødig.

<citat>
class Foo {
public:
void MemberFn() {...}
};
Jeg har endda lavet virtuelle inline-medlemsfunktioner,
selv om de fleste oversættere ikke tillader denne syntaks,
og gør de det endelig, håndterer de den sjældent korrekt.
<citat/>

Jeg kan ikke huske at jeg nogensinde har oplevet en compiler, der ikke
tillader at skrive virtuelle metoder som inline.
At de ydermere sjældent håndterer det korrekt, forekommer mig at sige mere
om forfatteren end om compileren.
Jeg vil forvente, og oplever, at virtuelle inline funktioner, vil blive
håndteret som virtuelle men ikke som inline. Denne opførsel er _både_
fuldstændig korrekt i henhold til C++ Standarden _og_ ganske forventelig.
Det er en undtagelse at virtuelle metoder _kan_ inlines korrekt. Hvis de kan
bør man overveje kraftigt om funktion skal være virtuel overhovedet.

Det er simpelthen ikke godt nok for en bog, der selv siger at en alternativ
titel til bogen kunne være "Guruens vej til C++"!

C/C++, grundbog i programmering
Henrik Kressner
ISBN: 87-571-2270-9
http://bog.ing.dk/default.asp?Action=Details&ISBN=87-571-2270-9

I beskrivelsen af bogen står at den først gennemgår C og derefter C++.
Dette er en almindelig anerkendt ikke optimal måde at lære C++ på. Der er
ikke nogen grund til at lære C først, hvis det er C++ man virkelig ønsker at
lære. Hvis man derimod vil lære C, er det naturligvis det man skal gøre.

Hvis engelske bøger overhovedet kan tillades, vil jeg naturligvis anbefale
at starte med

Accelerated C++
Andrew Koenig, Barbara Moo
ISBN 0-201-70353-X
den er enestående god - og husk at lav øvelserne!

og derefter

The C++ Programming Language, Special Edition
Bjarne Stroustrup
ISB 0-201-70073-5
Hvis du vil spare lidt penge, så vælg "Third Edition" i stedet. Indholdet er
det samme, men indbindingen og papirkvaliteten er dårligere.

Når de er læst, kan vi være behjælpelige med næste trin - afhængigt af
behov.

Venlig hilsen

Mogens Hansen



Thomas Krog (02-12-2001)
Kommentar
Fra : Thomas Krog


Dato : 02-12-01 23:56

> Jeg vil lære at skrive C++. Hvilken bog skal jeg starte med, jeg er ikke

> god til engelsk så bogen skal være på dansk.

Hvis du ikke har prøvet at læse en engelsk _fagbog_ før vil jeg nu foreslå
at du gør forsøget. Jeg er selv blevet overrasket over hvor lidt problemer
jeg egentlig har med det engelske i fagbøgerne når jeg tænker på hvor svært
jeg havde ved engelsk i folkeskolen. Jeg synes forfatterne er flinke til
ikke at bruge alt for fine ord. I fagbøgerne bliver der typisk defineret en
masse nye begreber (*) uanset om det er på dansk eller engelsk. Hvis du
læser danske fagbøger får du sikkert også problemer med at skulle lære de
nye begreber både på dansk og engelsk.

(*) Disse begreber er ofte nogle vældig fine ord men det er jo ligemeget når
de står defineret i bogen (begreberne er sikkert så fine at almindelige
englændere ikke engang ved hvad de betyder)



Jan Riis Sørensen (04-12-2001)
Kommentar
Fra : Jan Riis Sørensen


Dato : 04-12-01 18:00

Hej Rasmus

> Jeg vil lære at skrive C++. Hvilken bog skal jeg starte med, jeg er ikke

> god til engelsk så bogen skal være på dansk.

Du kan købe hæftet C++ af Kris Jamsa på:

http://www.idgforlag.dk

mvh

Jan Riis Sørensen



Mogens Hansen (04-12-2001)
Kommentar
Fra : Mogens Hansen


Dato : 04-12-01 20:08


"Jan Riis Sørensen" <kokkejan@mail.tele.dk> wrote in message
>
> Du kan købe hæftet C++ af Kris Jamsa på:
>
> http://www.idgforlag.dk
>

Man kan downloade et kapitel fra hjemmesiden.

Her kan man se at den har et par væsentlige problemer:
* Den beskriver C++ sådan som det så ud før det blev standardiseret
* Den er ikke præcis i sin kode. Jeg fandt ikke eet eksempel, hvor der
ikke var noget at udsætte.

Det første der står i kapitlet, er hvordan man anvender preprocessor
makroer, hvilket man generelt bør advare imod istedet.

Lad og tage et par eksempler:

#include <iostream.h>

#define TITEL "C++!"
#define OEVELSE 37
#define PRIS 182.40
// Den aktuelle momssats
#define MOMSPROCENT 25

void main(void)
{
cout << "Bogens titel: "
<< TITEL << endl;
cout << "Aktuel øvelse: "
<< OEVELSE << endl;
cout << "Pris: kr. "
<< PRIS << endl;
cout << "Pris med moms: kr. "
<< PRIS + PRIS/100*MOMSPROCENT<<endl;
}

Kommentarer:
* Det er gammel stil at skrive #include <iostream.h>
* Det er generelt ikke at anbefale at bruge preprocessor macroer, hvis det
kan undgås.
Foretræk at bruge f.eks. "const", "inline" og "template" i forskellige
situationer
* main returnerer _altid_ int - og har altid gjort det

Følgende vil være mere anbefalelsesværdigt

#include <iostream>

const char* TITEL = "C++!";
const int OEVELSE = 37;
const double PRIS = 182.40;
// Den aktuelle momssats
const unsigned MOMSPROCENT = 25;

int main(void)
{
using std::cout; using std::endl;
cout << "Bogens titel: "
<< TITEL << endl;
cout << "Aktuel øvelse: "
<< OEVELSE << endl;
cout << "Pris: kr. "
<< PRIS << endl;
cout << "Pris med moms: kr. "
<< PRIS + PRIS/100*MOMSPROCENT<<endl;
}

Et andet eksempl

#include <iostream.h>
#include <string.h>

void main(void)
{
char *pointer = new char[100];
strcpy(pointer, "Jeg programmerer i C++");
cout << pointer << endl;
delete pointer;
}

Kommentarer:
* Igen den gamle form for include.
* Igen main returner altid int
* Bogen lærer hurtigt folk at bruge dynamisk allokering og pointere, når
simplere løsninger findes
* Programmet har virker ikke med garanti.
Det er "undefined behaviour" at allokere med new array og ikke frigive
med delete array.

Den korrekt udgave vil være
#include <iostream>
#include <cstring>

int main(void)
{
using std::cout; using std::endl;
using std::strcpy;
char *pointer = new char[100];
strcpy(pointer, "Jeg programmerer i C++");
cout << pointer << endl;
delete [] pointer;
}

En bedre udgave til være
#include <iostream>
#include <string>

int main(void)
{
using std::cout; using std::endl;
using std::string;
string text("Jeg programmerer i C++");
cout << text << endl;
}

Der er et kapitel om hvordan man behandler out-of-memory situationer i
forbindelse med new, som bare er helt forkert (i forhold til Standard C++).

Den behandler tilsyneladende ikke væsentlige emner som
* C++ Standard Library (f.eks. klasserne std::string, std::vector)
* Namespace
* Exceptions
* Runtime Type Information og C++ cast

Jeg syntes kort sagt ikke at det ser anbefalelsesværdigt ud.
Men den er naturligvis på dansk og billig.

Venlig hilsen

Mogens Hansen



Anders Melchiorsen (09-12-2001)
Kommentar
Fra : Anders Melchiorsen


Dato : 09-12-01 23:04

"Mogens Hansen" <mogens_h@dk-online.dk> skrev den 04-Dec-01:

> Følgende vil være mere anbefalelsesværdigt

[...]

> int main(void)

Er der nogen grund til at du har "void" som argument (i forhold til
ingen argumenter)?


--
Regards, Anders

....if a Microsoft product fails, who do you sue?

Mogens Hansen (10-12-2001)
Kommentar
Fra : Mogens Hansen


Dato : 10-12-01 21:53


"Anders Melchiorsen" <anders@kalibalik.dk> wrote in message
> "Mogens Hansen" <mogens_h@dk-online.dk> skrev den 04-Dec-01:
>
> > Følgende vil være mere anbefalelsesværdigt
>
> [...]
>
> > int main(void)
>
> Er der nogen grund til at du har "void" som argument (i forhold til
> ingen argumenter)?
>

Ikke anden end at jeg altid plejer at skrive void, for at være eksplicit.
Det er ikke påkrævet.

Venlig hilsen

Mogens Hansen



Jan Riis Sørensen (19-12-2001)
Kommentar
Fra : Jan Riis Sørensen


Dato : 19-12-01 06:36

Hej Mogens

> "Jan Riis Sørensen" <kokkejan@mail.tele.dk> wrote in >message

> > Du kan købe hæftet C++ af Kris Jamsa på:
> > http://www.idgforlag.dk
> Man kan downloade et kapitel fra hjemmesiden.
> Her kan man se at den har et par væsentlige problemer:
> * Den beskriver C++ sådan som det så ud før det blev standardiseret
> * Den er ikke præcis i sin kode. Jeg fandt ikke eet eksempel, hvor der
> ikke var noget at udsætte.

Jeg kan se du har ret, men hæftet gav mig blod på tanden og er man
nybegynder i C++ skal man nok ikke starte med at investere 6-700 kr på
Bjarne S's C++ Special. ed. og så miste interessen.

mvh

Jan Riis Sørensen



Mogens Hansen (20-12-2001)
Kommentar
Fra : Mogens Hansen


Dato : 20-12-01 20:06

Hej Jan,

"Jan Riis Sørensen" <kokkejan@mail.tele.dk> wrote in message

> Hej Mogens
>
> > "Jan Riis Sørensen" <kokkejan@mail.tele.dk> wrote in >message
>
> > > Du kan købe hæftet C++ af Kris Jamsa på:
> > > http://www.idgforlag.dk
> > Man kan downloade et kapitel fra hjemmesiden.
> > Her kan man se at den har et par væsentlige problemer:
> > * Den beskriver C++ sådan som det så ud før det blev standardiseret
> > * Den er ikke præcis i sin kode. Jeg fandt ikke eet eksempel, hvor der
> > ikke var noget at udsætte.
>
> Jeg kan se du har ret, men hæftet gav mig blod på tanden og er man
> nybegynder i C++ skal man nok ikke starte med at investere 6-700 kr på
> Bjarne S's C++ Special. ed. og så miste interessen.
>

Det er godt at du har haft glæde af hæftet - jeg har også set andre på denne
gruppe sige det samme. Det skal man respektere.

Problemet er dog, at i længden er det vanskelligt at undgå at læse engelsk
sprogede bøger.
Det kan man lige så godt acceptere, som dansker.

Min normale anbefaling er at starte med "Accelerated C++" som koster omkring
340 kr, og derefter få fat på Bjarne Stroustrup's "The C++ Programming
Language", og derefter findes der masser af gode bøger.
"The C++ Programming Language" i to aktuelle udgaver, nemlig "Third Edition"
og "Special Edition".
Indholdsmæssigt er de identiske (for "Third Edition" optrykt efter foråret
2000), men indbindingen, papirkvaliteten og prisen er forskellig. Man kan
sagtens "nøjes" med "Third Edition", men min er efterhånden godt slidt, og
jeg er glad for også at have "Special Edition".

Venlig hilsen

Mogens Hansen



Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste