|
| C eller C++ ? Fra : Rasmus Ladekjær Pede~ |
Dato : 10-12-01 21:24 |
|
Hej, jeg har nu bestemt mig for at lære at programmere! Hvad skal jeg vælge
C eller C++. Jeg vil gerne have at mine programmer skal kunne køre på både
Linux Windows og andre platforme!
Hvilken compiler skal jeg vælge ?
mvh Rasmus
| |
Kent Friis (10-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 10-12-01 21:52 |
|
Den Mon, 10 Dec 2001 21:23:52 +0100 skrev Rasmus Ladekjær Pedersen:
>Hej, jeg har nu bestemt mig for at lære at programmere! Hvad skal jeg vælge
>C eller C++.
Det kommer helt an på hvordan du foretrækker at programmere (svært at
sige så længe du ikke har prøvet det). C++ er objektorienteret, hvilket
kan være en fordel til nogen typer programmer, men også bare kan give
en masse ekstra kode.
Jeg selv foretrækker helt klart C, og hvis jeg en dag får lyst til at
lære noget objektorienteret, bliver det nok Objective-C... Det skal
dog lige siges at jeg aldrig har lært rigtig C++, men kun en uhyggelig
blanding af C og C++, som der vist desværre stadig undervises i på
datamatiker mange steder.
Linux-kernen er skrevet i C, hvorimod Windows vist nok skulle være
lavet i C++[1]
>Jeg vil gerne have at mine programmer skal kunne køre på både
>Linux Windows og andre platforme!
>Hvilken compiler skal jeg vælge ?
Linux: GCC eller G++
Windows: Bare ikke Visual C++ eller Borland C++ builder.
Mvh
Kent
[1] Det skal måske lige siges, at man nok ikke kan give C++ skylden
for windows manglende stabilitet.
--
http://www.celebrityshine.com/~kfr/
| |
Mogens Hansen (10-12-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 10-12-01 22:09 |
|
"Kent Friis" <kfr@fleggaard.dk> wrote in message
> C++ er objektorienteret, hvilket
> kan være en fordel til nogen typer programmer, men også bare kan give
> en masse ekstra kode.
Det er en meget mangelfuld beskrivelse af C++
> Det skal
> dog lige siges at jeg aldrig har lært rigtig C++, men kun en uhyggelig
> blanding af C og C++, som der vist desværre stadig undervises i på
> datamatiker mange steder.
Hmm
> Windows: Bare ikke Visual C++ eller Borland C++ builder.
>
Jeg antager at ovenstående er skrevet af samme person, som for en time siden
i tråden "Program skal lave noget indtil en tast trykkes" skrev:
"Nu kender jeg ikke VC++, ..."
Venlig hilsen
Mogens Hansen
| |
Kent Friis (10-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 10-12-01 22:17 |
|
Den Mon, 10 Dec 2001 22:09:11 +0100 skrev Mogens Hansen:
>
>"Kent Friis" <kfr@fleggaard.dk> wrote in message
>
>
>> C++ er objektorienteret, hvilket
>> kan være en fordel til nogen typer programmer, men også bare kan give
>> en masse ekstra kode.
>
>Det er en meget mangelfuld beskrivelse af C++
Jep, men en komplet beskrivelse fylder 300 sider... Som nævnt fore-
trækker jeg selv C, så forvent ikke et 100% objektivt svar.
>> Det skal
>> dog lige siges at jeg aldrig har lært rigtig C++, men kun en uhyggelig
>> blanding af C og C++, som der vist desværre stadig undervises i på
>> datamatiker mange steder.
>
>Hmm
Jeg lærte om både class og char linie[80]... Det samme gjorde en jeg
kender der først var færdig som datamatiker i foråret. Og hun havde
også en opfattelse af at C++ var noget skrammel i forhold til java.
Alle de ting hun kunne nævne der var bedre i Java (fx. string,
vector<>), vidste jeg tilfældigvis (lidt lærer man ved at læse her i
gruppen) at de også findes i C++.
>> Windows: Bare ikke Visual C++ eller Borland C++ builder.
>
>Jeg antager at ovenstående er skrevet af samme person, som for en time siden
>i tråden "Program skal lave noget indtil en tast trykkes" skrev:
>
>"Nu kender jeg ikke VC++, ..."
He he
Jeg har hørt en del negativt om VC++ evne til at følge C++ standarden,
og derfor har jeg ingen intentioner haft om at forsøge at bruge den
compiler. Derudover kommer man meget nemt til at bruge noget kode der
ikke findes på andre platforme - samme problem med Borland C++ builder.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Per Abrahamsen (11-12-2001)
| Kommentar Fra : Per Abrahamsen |
Dato : 11-12-01 10:23 |
|
kfr@fleggaard.dk (Kent Friis) writes:
> Det kommer helt an på hvordan du foretrækker at programmere (svært at
> sige så længe du ikke har prøvet det).
Det kan jeg ikke se, med mindre den måde man foretrækker at
programmere er "høj-niveau assembler", hvor C++'s stærkere typesystem
måske vil komme i vejen.
> C++ er objektorienteret, hvilket
> kan være en fordel til nogen typer programmer, men også bare kan give
> en masse ekstra kode.
C++ er et multiparadigmesprog, det understøtter object orienteret
programmering, men kræver det ikke. Du kan sagtens bruge det som et
bedre C.
> Jeg selv foretrækker helt klart C, og hvis jeg en dag får lyst til at
> lære noget objektorienteret, bliver det nok Objective-C...
Hvorfor ikke tage den rene vare? Hvis du vil have Smalltalk ved du
hvor du kan finde den. Objective-C er en god ide hvis man vil
programmere til MacOS X, men ellers kan jeg ikke se ideen.
> Det skal dog lige siges at jeg aldrig har lært rigtig C++, men kun
> en uhyggelig blanding af C og C++, som der vist desværre stadig
> undervises i på datamatiker mange steder.
Det er det største problem med C++, mange undervisere (og de fleste
bøger) ignorerer helt dets standard bibliotek, og starter med de langt
mere besværlige måder at gøre ting på i C. Hvis man starter med
klasser som string og vector i stedet for char* og C arrays, kan man
gemme de advancerede ting som pointergymnastik til senere.
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 17:01 |
|
Den Tue, 11 Dec 2001 10:23:12 +0100 skrev Per Abrahamsen:
>kfr@fleggaard.dk (Kent Friis) writes:
>
>> Det kommer helt an på hvordan du foretrækker at programmere (svært at
>> sige så længe du ikke har prøvet det).
>
>Det kan jeg ikke se, med mindre den måde man foretrækker at
>programmere er "høj-niveau assembler", hvor C++'s stærkere typesystem
>måske vil komme i vejen.
Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
ind i det).
>> C++ er objektorienteret, hvilket
>> kan være en fordel til nogen typer programmer, men også bare kan give
>> en masse ekstra kode.
>
>C++ er et multiparadigmesprog, det understøtter object orienteret
>programmering, men kræver det ikke. Du kan sagtens bruge det som et
>bedre C.
Man kan, ja. Men hvor langt når man, før man har brug for hjælp, og
en eller anden idiot på en newsgroup begynder at brokke sig over man
ikke bruger OO.
>> Jeg selv foretrækker helt klart C, og hvis jeg en dag får lyst til at
>> lære noget objektorienteret, bliver det nok Objective-C...
>
>Hvorfor ikke tage den rene vare? Hvis du vil have Smalltalk ved du
>hvor du kan finde den. Objective-C er en god ide hvis man vil
>programmere til MacOS X, men ellers kan jeg ikke se ideen.
Jeg synes ret godt om C, og på de punkter hvor jeg har savnet OO har
været i C-programmer, hvor jeg er stødt på en eller anden lille ting
der ville være meget nemmere i OO, selvom resten af programmet er
ren C. Jeg tror ikke det er nemt at skrive tre klasser i smalltalk,
med methoderne (som allerede er skrevet på det tidspunkt) som
C-funktioner, og putte klasserne ind i et C-program.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Jonas Meyer Rasmusse~ (11-12-2001)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 11-12-01 17:41 |
|
"Kent Friis" <kfr@fleggaard.dk> wrote in message
news:9v5ajh$7ah$1@sunsite.dk...
> Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
> fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
> ind i det).
Det argument holder vist ikke. Det følger helt sikkert at alle
introducerende
bøger om C++ behandler de objektorierenterede dele af sproget.
Men fordi bøgerne behandler det, gør det da ikke C++ dårligere at
programmere
ikke-objektorienteret i, end C?
Tværtimod er det da helt rigtigt at det vil være nemmere for dig
at lære C++ fremfor C, på grund af de store muligheder standardbiblioteket
har.
> Man kan, ja. Men hvor langt når man, før man har brug for hjælp, og
> en eller anden idiot på en newsgroup begynder at brokke sig over man
> ikke bruger OO.
Hvad snakker du om?
Jeg behøvede kun at se på indlægget lige før dette, "cannot conver..." som
omhandler
et problem i C++, ganske uobjektorienteret....
> Jeg synes ret godt om C, og på de punkter hvor jeg har savnet OO har
> været i C-programmer, hvor jeg er stødt på en eller anden lille ting
> der ville være meget nemmere i OO, selvom resten af programmet er
> ren C.
Ja, og dette er 100% muligt i C++, så hvorfor har du så valgt ikke at bruge
det?
Jeg forstår intet
mvh Jonas
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 17:58 |
|
Den Tue, 11 Dec 2001 17:40:53 +0100 skrev Jonas Meyer Rasmussen:
>
>"Kent Friis" <kfr@fleggaard.dk> wrote in message
>news:9v5ajh$7ah$1@sunsite.dk...
>> Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
>> fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
>> ind i det).
>
>Det argument holder vist ikke. Det følger helt sikkert at alle
>introducerende
>bøger om C++ behandler de objektorierenterede dele af sproget.
>
>Men fordi bøgerne behandler det, gør det da ikke C++ dårligere at
>programmere ikke-objektorienteret i, end C?
Nej, men det gør det sværere at lære C++ uden at programmere OO.
>> Jeg synes ret godt om C, og på de punkter hvor jeg har savnet OO har
>> været i C-programmer, hvor jeg er stødt på en eller anden lille ting
>> der ville være meget nemmere i OO, selvom resten af programmet er
>> ren C.
>
>Ja, og dette er 100% muligt i C++, så hvorfor har du så valgt ikke at bruge
>det? Jeg forstår intet
C-compilere har vist lidt svært ved at forstå klasser fra et C++
program. Men det oprindelige spørgsmål gik på smalltalk...
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Jonas Meyer Rasmusse~ (11-12-2001)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 11-12-01 20:52 |
|
"Kent Friis" <kfr@fleggaard.dk> wrote in message
news:9v5dui$hsv$1@sunsite.dk...
> Nej, men det gør det sværere at lære C++ uden at programmere OO.
Hvorfor?
Jeg har svært ved at se det, jeg kan ikke komme på nogen argumenter for
hvorfor
det skulle være sværere??
Jeg kan sagtens se at en introduktion til OO vil følge automatisk når man
kommer mere ind i C++,
for at få en bedre forståelse af hvordan C++ er bygget op.
> >> Jeg synes ret godt om C, og på de punkter hvor jeg har savnet OO har
> >> været i C-programmer, hvor jeg er stødt på en eller anden lille ting
> >> der ville være meget nemmere i OO, selvom resten af programmet er
> >> ren C.
> >
> >Ja, og dette er 100% muligt i C++, så hvorfor har du så valgt ikke at
bruge
> >det? Jeg forstår intet
>
> C-compilere har vist lidt svært ved at forstå klasser fra et C++
> program. Men det oprindelige spørgsmål gik på smalltalk...
Ja, min pointe var bare præcis det du efterlyste er det som C++ kan.
og ja, du ville selvfølgelig være tvunget at skifte din oversætter ud med en
af C++ typen,
men det ville du jo være uanset hvilket sprog du vælger.
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 20:57 |
|
Den Tue, 11 Dec 2001 20:52:10 +0100 skrev Jonas Meyer Rasmussen:
>
>"Kent Friis" <kfr@fleggaard.dk> wrote in message
>news:9v5dui$hsv$1@sunsite.dk...
>> Nej, men det gør det sværere at lære C++ uden at programmere OO.
>
>Hvorfor?
>Jeg har svært ved at se det, jeg kan ikke komme på nogen argumenter for
>hvorfor
>det skulle være sværere??
Fordi lærere (i hvert fald de lærere jeg har haft) betragter OO som
vigtigere end sproget...
>> C-compilere har vist lidt svært ved at forstå klasser fra et C++
>> program. Men det oprindelige spørgsmål gik på smalltalk...
>
>Ja, min pointe var bare præcis det du efterlyste er det som C++ kan.
>og ja, du ville selvfølgelig være tvunget at skifte din oversætter ud med en
>af C++ typen, men det ville du jo være uanset hvilket sprog du vælger.
Da resten af koden stadig er C, virker det lidt tåbeligt at bruge en
C++ compiler til at compilere det med. Desuden er C++ compilere ikke
100% bagudcompatible med C-programmer (fx. int class;).
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Jonas Meyer Rasmusse~ (11-12-2001)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 11-12-01 21:18 |
|
Hej igen.
"Kent Friis" <kfr@fleggaard.dk> wrote in message
news:9v5oet$qt3$1@sunsite.dk...
> Den Tue, 11 Dec 2001 20:52:10 +0100 skrev Jonas Meyer Rasmussen:
> >
> >"Kent Friis" <kfr@fleggaard.dk> wrote in message
> >news:9v5dui$hsv$1@sunsite.dk...
> >> Nej, men det gør det sværere at lære C++ uden at programmere OO.
> >
> >Hvorfor?
> >Jeg har svært ved at se det, jeg kan ikke komme på nogen argumenter for
> >hvorfor
> >det skulle være sværere??
>
> Fordi lærere (i hvert fald de lærere jeg har haft) betragter OO som
> vigtigere end sproget...
Du kan da ikke underbygge din teori udfra hvad en lærer gerne vil lære dig,
det holder
ikke.
Vi snakker ikke om hvordan enkelte lærere har det med emnet, men vi
må antage at vi har en lærer som vil lære dig C++ uden OO faciliteterne.
Hvad dine erfaringer med lærere er har ikke noget med at gøre, om det reelt
set
_er_ sværere at lære.
> >> C-compilere har vist lidt svært ved at forstå klasser fra et C++
> >> program. Men det oprindelige spørgsmål gik på smalltalk...
> >
> >Ja, min pointe var bare præcis det du efterlyste er det som C++ kan.
> >og ja, du ville selvfølgelig være tvunget at skifte din oversætter ud med
en
> >af C++ typen, men det ville du jo være uanset hvilket sprog du vælger.
>
> Da resten af koden stadig er C, virker det lidt tåbeligt at bruge en
> C++ compiler til at compilere det med.
Ja, det kan du selvf. have ret i, men så må man jo opveje hvad man har mest
brug for,
det objektorienterede eller sin gamle C compiler?
>Desuden er C++ compilere ikke
> 100% bagudcompatible med C-programmer (fx. int class;).
Det har du ret i, og jae, hvis man går op i sådanne detaljer, så skal man
nok ikke
skifte.
samme som før, man må overveje om man har brug for det objektorienterede.
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 21:31 |
|
Den Tue, 11 Dec 2001 21:17:31 +0100 skrev Jonas Meyer Rasmussen:
>Hej igen.
>
>"Kent Friis" <kfr@fleggaard.dk> wrote in message
>news:9v5oet$qt3$1@sunsite.dk...
>> Den Tue, 11 Dec 2001 20:52:10 +0100 skrev Jonas Meyer Rasmussen:
>> >
>> >"Kent Friis" <kfr@fleggaard.dk> wrote in message
>> >news:9v5dui$hsv$1@sunsite.dk...
>> >> Nej, men det gør det sværere at lære C++ uden at programmere OO.
>> >
>> >Hvorfor?
>> >Jeg har svært ved at se det, jeg kan ikke komme på nogen argumenter for
>> >hvorfor
>> >det skulle være sværere??
>>
>> Fordi lærere (i hvert fald de lærere jeg har haft) betragter OO som
>> vigtigere end sproget...
>
>Du kan da ikke underbygge din teori udfra hvad en lærer gerne vil lære dig,
>det holder ikke.
>Vi snakker ikke om hvordan enkelte lærere har det med emnet, men vi
>må antage at vi har en lærer som vil lære dig C++ uden OO faciliteterne.
Vi kunne jo også antage at jeg kunne flyve - så ville jeg slet ikke
sidde her og diskutere OO.
>> Da resten af koden stadig er C, virker det lidt tåbeligt at bruge en
>> C++ compiler til at compilere det med.
>
>Ja, det kan du selvf. have ret i, men så må man jo opveje hvad man har
>mest brug for, det objektorienterede eller sin gamle C compiler?
>
>>Desuden er C++ compilere ikke
>> 100% bagudcompatible med C-programmer (fx. int class;).
>
>Det har du ret i, og jae, hvis man går op i sådanne detaljer, så skal
>man nok ikke skifte.
int class; var det eneste eksempel jeg lige kunne huske, men jeg
mener der var en feature i C99 som faktisk ikke fandtes i C++, og den
første udmelding fra C++ folkene var at den havde man ikke tænkt sig
at skulle have i C++.
>samme som før, man må overveje om man har brug for
>det objektorienterede.
Dengang jeg havde problemet endte det vist med en switch(unit->type)
alle steder hvor forskellige units skulle opføre sig forskelligt.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Bertel Lund Hansen (11-12-2001)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 11-12-01 22:00 |
|
Kent Friis skrev:
>Vi kunne jo også antage at jeg kunne flyve - så ville jeg slet ikke
>sidde her og diskutere OO.
Det er da reelt at man ikke kan lægge sproget til last hvad én
eller anden person har udtalt.
--
Bertel
http://lundhansen.dk/bertel/ FIDUSO: http://fiduso.dk/
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 22:16 |
|
Den Tue, 11 Dec 2001 21:59:54 +0100 skrev Bertel Lund Hansen:
>Kent Friis skrev:
>
>>Vi kunne jo også antage at jeg kunne flyve - så ville jeg slet ikke
>>sidde her og diskutere OO.
>
>Det er da reelt at man ikke kan lægge sproget til last hvad én
>eller anden person har udtalt.
Nu er det ikke kun en lærer, med alle de lærere jeg har kendskab til.
Hvis det gælder generelt (og det tror jeg at det gør) at det er svært
at finde en lærer der kan undervise i C++ uden at undervise i OO, så
vil det naturligvis være sværere at lære C++ uden OO.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Bertel Lund Hansen (11-12-2001)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 11-12-01 22:21 |
|
Kent Friis skrev:
>Hvis det gælder generelt (og det tror jeg at det gør) at det er svært
>at finde en lærer der kan undervise i C++ uden at undervise i OO, så
>vil det naturligvis være sværere at lære C++ uden OO.
Det ville naturligvis være et praktisk problem, men det er
irrelevant når vi snakker selvstudium.
--
Bertel
http://lundhansen.dk/bertel/ FIDUSO: http://fiduso.dk/
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 22:36 |
|
Den Tue, 11 Dec 2001 22:20:55 +0100 skrev Bertel Lund Hansen:
>Kent Friis skrev:
>
>>Hvis det gælder generelt (og det tror jeg at det gør) at det er svært
>>at finde en lærer der kan undervise i C++ uden at undervise i OO, så
>>vil det naturligvis være sværere at lære C++ uden OO.
>
>Det ville naturligvis være et praktisk problem, men det er
>irrelevant når vi snakker selvstudium.
Selvstudium er ofte sværere end med en lærer. Men ok, det hjælper da at
der er nogle bøger der ikke beskæftiger sig primært med OO.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Mogens Hansen (11-12-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 11-12-01 23:23 |
|
"Kent Friis" <kfr@fleggaard.dk> wrote in message
>
> Hvis det gælder generelt (og det tror jeg at det gør) at det er svært
> at finde en lærer der kan undervise i C++ uden at undervise i OO, så
> vil det naturligvis være sværere at lære C++ uden OO.
>
Hvilken grund er der til _ikke_ at undervise i OO når man underviser i C++ -
det vil da være kunstigt.
Det vil også være kunstigt _kun_ at undervise i OO.
OO er et af de redskaber man bør have i sin værktøjskasse, når man benytter
C++
Tag C++ template funktionen "std::find" - den er der absolut ikke noget
objekt-orienteret ved
Tag containeren "std::vector" - den er der lidt objektorienteret ved
(indkapsling)
Tag streams komponenterne i Standard Library - de er i høj grad
objekt-orienterede med indkapsling, nedarvning, polymorphi.
Alle tre ting bør der undervises i.
Venlig hilsen
Mogens Hansen
| |
Byrial Jensen (11-12-2001)
| Kommentar Fra : Byrial Jensen |
Dato : 11-12-01 22:53 |
|
Kent Friis <kfr@fleggaard.dk> skrev:
> Den Tue, 11 Dec 2001 20:52:10 +0100 skrev Jonas Meyer Rasmussen:
>>
>>Ja, min pointe var bare præcis det du efterlyste er det som C++ kan.
>>og ja, du ville selvfølgelig være tvunget at skifte din oversætter ud med en
>>af C++ typen, men det ville du jo være uanset hvilket sprog du vælger.
>
> Da resten af koden stadig er C, virker det lidt tåbeligt at bruge en
> C++ compiler til at compilere det med. Desuden er C++ compilere ikke
> 100% bagudcompatible med C-programmer (fx. int class;).
Hvis man gerne vil bruge begge sprog, kunne man vel også placere sin
kode i adskilte C- og C++-filer som man oversætter med hhv. sin C-
og C++-oversætter (som nemt kan være den samme fysiske oversætter,
f.eks. i tilfældet gcc/g++) og bagefter linker sammen.
| |
Soeren Sandmann (11-12-2001)
| Kommentar Fra : Soeren Sandmann |
Dato : 11-12-01 18:08 |
|
kfr@fleggaard.dk (Kent Friis) writes:
> Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
> fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
> ind i det).
C++' Standardbibliotek er meget bedre end C's. Typesystemet er meget
stærkere. Muligheden for at definere datatyper med veldefinerede
grænseflader findes slet ikke i C.
De fordele er ikke objektorienterede i sig selv, selvom de fungerer
godt sammen objektorientering.
I øvrigt er "Accelerated C++" en lærebog i C++ som ikke behandler
objektorienteret programmering og først hen mod slutningen nævner
klasser som en metode til at konstruere abstrakte datatyper.
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 18:20 |
|
Den 11 Dec 2001 18:08:17 +0100 skrev Soeren Sandmann:
>kfr@fleggaard.dk (Kent Friis) writes:
>
>> Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
>> fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
>> ind i det).
>
>C++' Standardbibliotek er meget bedre end C's. Typesystemet er meget
>stærkere. Muligheden for at definere datatyper med veldefinerede
>grænseflader findes slet ikke i C.
Hvordan definerer du "datatyper med veldefinerede grænseflader" uden
at blande OO ind i det, og hvad er det C mangler i den sammenhæng?
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Soeren Sandmann (11-12-2001)
| Kommentar Fra : Soeren Sandmann |
Dato : 11-12-01 18:51 |
|
kfr@fleggaard.dk (Kent Friis) writes:
> >C++' Standardbibliotek er meget bedre end C's. Typesystemet er meget
> >stærkere. Muligheden for at definere datatyper med veldefinerede
> >grænseflader findes slet ikke i C.
>
> Hvordan definerer du "datatyper med veldefinerede grænseflader" uden
> at blande OO ind i det, og hvad er det C mangler i den sammenhæng?
Et eksempel på datatype med en veldefineret grænseflade er C++'
std::map<a,b> som er en afbildning fra typen a til typen b. Man kan
indsætte og slå op uden at vide hvordan datatypen er implementeret.
Man kan ikke gøre det tilsvarende typesikkert i C.
Men jeg vil godt indrømme at det jeg egentlig tænkte på, kan laves i C
med sådan noget som
datatype.h:
typedef struct DataType DataType;
DataType *data_type_new (void);
void data_type_insert (DataType *d, int x);
....;
datatype.c:
struct DataType {
...;
};
DataType *
data_type_new (void)
{
DataType *d = malloc (sizeof (DataType));
...;
return d;
}
void
data_type_insert (DataType *d, int x)
{
...;
}
C's understøttelse for det er bare ikke nær så god som C++'s klasser,
hvor de enkelte operationer er en del af datatypen. [1]
Andre faciliteter i C++ som ikke er objektorienterede:
- exceptions
- referenceparametre
- muligheden for at erklære en variabel overalt
- namespaces
Hvis ikke jeg allerede havde nævnt standardbiblioteket under ét, var
der ingen ende på alle de fordele man kan nævne.
Jeg synes du skylder os at fortælle hvad det er der er fordelen ved C
*frem for* C++. Jeg kan komme i tanker om et par fordele, men jeg vil
gerne høre hvilke du mener der er.
[1] Klasser i sig selv gør ikke et program objektorienteret.
Objektorientering er nærmere det at der en overensstemmelse mellem
programmets domæne og programmet selv, altså det at man udtrykker i
sproget hvordan verden (en virkelig eller en man forestiller sig) ser
ud
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 19:09 |
|
Den 11 Dec 2001 18:51:22 +0100 skrev Soeren Sandmann:
>
>Men jeg vil godt indrømme at det jeg egentlig tænkte på, kan laves i C
>C's understøttelse for det er bare ikke nær så god som C++'s klasser,
>hvor de enkelte operationer er en del af datatypen. [1]
Ja, men så er vi ovre i det objektorienterede.
>Andre faciliteter i C++ som ikke er objektorienterede:
>
> - exceptions
Værre end goto, IMHO.
> - referenceparametre
Hugget fra VB. "Pointere for begyndere".
> - muligheden for at erklære en variabel overalt
Kan man også i C99, SVJH.
> - namespaces
Ok.
>Jeg synes du skylder os at fortælle hvad det er der er fordelen ved C
>*frem for* C++. Jeg kan komme i tanker om et par fordele, men jeg vil
>gerne høre hvilke du mener der er.
- simpelt
- ikke OO (Jeg har vist OO-fobi ).
- gode compilere (i hvert fald på linux).
>[1] Klasser i sig selv gør ikke et program objektorienteret.
Nej, men de er en del af det objektorientede paradigme.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Soeren Sandmann (11-12-2001)
| Kommentar Fra : Soeren Sandmann |
Dato : 11-12-01 19:25 |
|
kfr@fleggaard.dk (Kent Friis) writes:
> >C's understøttelse for det er bare ikke nær så god som C++'s klasser,
> >hvor de enkelte operationer er en del af datatypen. [1]
>
> Ja, men så er vi ovre i det objektorienterede.
Hvis nu nøgleordet "class" havde været "datatype", var det så stadig
"ovre i det objektorienterede"?
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 19:32 |
|
Den 11 Dec 2001 19:24:33 +0100 skrev Soeren Sandmann:
>kfr@fleggaard.dk (Kent Friis) writes:
>
>> >C's understøttelse for det er bare ikke nær så god som C++'s klasser,
>> >hvor de enkelte operationer er en del af datatypen. [1]
>>
>> Ja, men så er vi ovre i det objektorienterede.
>
>Hvis nu nøgleordet "class" havde været "datatype", var det så stadig
>"ovre i det objektorienterede"?
Ikke forstået.
Men ideen med at putte funktionerne ("metoder") ind i data-typen, er
en af de primære ting i OO.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Bertel Lund Hansen (11-12-2001)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 11-12-01 20:38 |
|
Kent Friis skrev:
>Men ideen med at putte funktionerne ("metoder") ind i data-typen, er
>en af de primære ting i OO.
Hvis man tænker på et modul der implementerer f.eks. en stak, så
har man en sammenkobling af type og metoder i et traditionelt
sprog.
--
Bertel
http://lundhansen.dk/bertel/ FIDUSO: http://fiduso.dk/
| |
Jonas Meyer Rasmusse~ (11-12-2001)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 11-12-01 21:11 |
|
"Kent Friis" <kfr@fleggaard.dk> wrote in message
news:9v5i4j$1t7$1@sunsite.dk...
> Den 11 Dec 2001 18:51:22 +0100 skrev Soeren Sandmann:
> >
> >Men jeg vil godt indrømme at det jeg egentlig tænkte på, kan laves i C
>
>
>
> >C's understøttelse for det er bare ikke nær så god som C++'s klasser,
> >hvor de enkelte operationer er en del af datatypen. [1]
>
> Ja, men så er vi ovre i det objektorienterede.
>
> >Andre faciliteter i C++ som ikke er objektorienterede:
> >
> > - exceptions
>
> Værre end goto, IMHO.
>
> > - referenceparametre
>
> Hugget fra VB. "Pointere for begyndere".
Det er noget vås.
en pointer og en reference er ikke det sammen
- En reference kan _ikke_ være uinitialiseret, det kan en pointer
- En reference refererer _altid_ til det samme objekt, du kan ikke få en
reference til at referere til et andet objekt
end det som den blev initialiseret med
Desuden er VBs variable reference counted, så de kan slet ikke sammenlignes.
Du har ret hvis du siger man kan lave det samme med en pointer, men
her er reference parametre nok blevet indført af den årsag at det bliver
mere
simpelt at læse.
[Klip..en hel masse]
> >Jeg synes du skylder os at fortælle hvad det er der er fordelen ved C
> >*frem for* C++. Jeg kan komme i tanker om et par fordele, men jeg vil
> >gerne høre hvilke du mener der er.
>
> - simpelt
Det kommer an på din definition af simpelt.
Er det simpelt at man skal arbejde med char arrays når man skal bruge
tekstrenge,
og ikke kan nyde en mere abstrakt version i form af std::string?
Ligeså med dynamiske arrays, hvorfor undvære den simpelhed som std::vector
giver dig?
Hvis det skal være simpelt at oversætte, så har du nok ret, jeg har svært
ved ellers at se hvordan
C er simpelt i forhold til C++, men måske du kan forklare nærmere?
> - ikke OO (Jeg har vist OO-fobi ).
Ja, det har jeg fornemt ;)
Men dette er ikke noget argument hvorfor _man_ skal vælge C fremfor C++
> - gode compilere (i hvert fald på linux).
De findes da også til C++?
Jonas
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 21:22 |
|
Den Tue, 11 Dec 2001 21:11:11 +0100 skrev Jonas Meyer Rasmussen:
>"Kent Friis" <kfr@fleggaard.dk> wrote in message
>news:9v5i4j$1t7$1@sunsite.dk...
>> Den 11 Dec 2001 18:51:22 +0100 skrev Soeren Sandmann:
>> >
>> >Men jeg vil godt indrømme at det jeg egentlig tænkte på, kan laves i C
>>
>>
>>
>> >C's understøttelse for det er bare ikke nær så god som C++'s klasser,
>> >hvor de enkelte operationer er en del af datatypen. [1]
>>
>> Ja, men så er vi ovre i det objektorienterede.
>>
>> >Andre faciliteter i C++ som ikke er objektorienterede:
>> >
>> > - exceptions
>>
>> Værre end goto, IMHO.
>>
>> > - referenceparametre
>>
>> Hugget fra VB. "Pointere for begyndere".
>
>Det er noget vås.
>en pointer og en reference er ikke det sammen
> - En reference kan _ikke_ være uinitialiseret, det kan en pointer
> - En reference refererer _altid_ til det samme objekt, du kan ikke få en
>reference til at referere til et andet objekt
> end det som den blev initialiseret med
Det virker bare endnu mere begrænset end referencer i VB - de kan da
både sættes til "Nothing", og sættes til at pege på noget andet.
>Desuden er VBs variable reference counted, så de kan slet ikke sammenlignes.
Det er vist aht. garbage collection. Det tror jeg desuden er lavet om i
VB7 - der bliver en variabel ikke frigivet når den sidste reference
forsvinder, men først når VB er i humør til det.
>[Klip..en hel masse]
>> >Jeg synes du skylder os at fortælle hvad det er der er fordelen ved C
>> >*frem for* C++. Jeg kan komme i tanker om et par fordele, men jeg vil
>> >gerne høre hvilke du mener der er.
>>
>> - simpelt
>
>Det kommer an på din definition af simpelt.
>Er det simpelt at man skal arbejde med char arrays når man skal bruge
>tekstrenge,
>og ikke kan nyde en mere abstrakt version i form af std::string?
>Ligeså med dynamiske arrays, hvorfor undvære den simpelhed som std::vector
>giver dig?
Det du kalder simpelt, er vist det jeg kalder nemt. Hvis det skal være
nemt, så tænder jeg fjernsynet - der skal man slet ikke bekymre sig
om noget.
>Hvis det skal være simpelt at oversætte, så har du nok ret, jeg har svært
>ved ellers at se hvordan
>C er simpelt i forhold til C++, men måske du kan forklare nærmere?
En opvaskebørste er simpel. En opvaskemaskine er nem at bruge.
Hjalp det? Det var den bedste forklaring jeg lige kunne komme på.
>> - ikke OO (Jeg har vist OO-fobi ).
>
>Ja, det har jeg fornemt ;)
>Men dette er ikke noget argument hvorfor _man_ skal vælge C fremfor C++
Det kommer an på hvad _man_ bedst kan lide.
>> - gode compilere (i hvert fald på linux).
>
>De findes da også til C++?
Selv g++ (især versioner før 3.0) får skældud for at være mangelfuld
i forhold til standarden.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Jonas Meyer Rasmusse~ (11-12-2001)
| Kommentar Fra : Jonas Meyer Rasmusse~ |
Dato : 11-12-01 22:04 |
|
"Kent Friis" <kfr@fleggaard.dk> wrote in message
news:9v5pu2$1p9$1@sunsite.dk...
[klip]
> >Det er noget vås.
> >en pointer og en reference er ikke det sammen
> > - En reference kan _ikke_ være uinitialiseret, det kan en pointer
> > - En reference refererer _altid_ til det samme objekt, du kan ikke få
en
> >reference til at referere til et andet objekt
> > end det som den blev initialiseret med
>
> Det virker bare endnu mere begrænset end referencer i VB - de kan da
> både sættes til "Nothing", og sættes til at pege på noget andet.
>
> >Desuden er VBs variable reference counted, så de kan slet ikke
sammenlignes.
>
> Det er vist aht. garbage collection. Det tror jeg desuden er lavet om i
> VB7 - der bliver en variabel ikke frigivet når den sidste reference
> forsvinder, men først når VB er i humør til det.
Lad os ikke diskutere hvordan VB fungerer, hvadenten det er 6 eller 7, min
pointe
var bare at en reference har ligeså lidt med VB's typer at gøre som en
pointer har.
>
> >[Klip..en hel masse]
> >> >Jeg synes du skylder os at fortælle hvad det er der er fordelen ved C
> >> >*frem for* C++. Jeg kan komme i tanker om et par fordele, men jeg vil
> >> >gerne høre hvilke du mener der er.
> >>
> >> - simpelt
> >
> >Det kommer an på din definition af simpelt.
> >Er det simpelt at man skal arbejde med char arrays når man skal bruge
> >tekstrenge,
> >og ikke kan nyde en mere abstrakt version i form af std::string?
> >Ligeså med dynamiske arrays, hvorfor undvære den simpelhed som
std::vector
> >giver dig?
>
> Det du kalder simpelt, er vist det jeg kalder nemt. Hvis det skal være
> nemt, så tænder jeg fjernsynet - der skal man slet ikke bekymre sig
> om noget.
Hvad er det så som du syntes der gør C simplere end C++???
> Selv g++ (især versioner før 3.0) får skældud for at være mangelfuld
> i forhold til standarden.
Ja, men det er et ringe argument, som jeg kun kan forstå blive brugt hvis
man ikke er klar over hvad det drejer sig om.
Hvis man vælger sin compiler og implementation af standardbibliotek
ordentligt(og ja, det kan gøres gratis),
så vil jeg vove den påstand, at hvis man nogensinde finder ud af hvad
problemerne med compileren
er, så er man har man arbejdet så meget med C++ at man aldrig vil slippe det
for C.
| |
Bertel Lund Hansen (11-12-2001)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 11-12-01 22:03 |
|
Kent Friis skrev:
>Det du kalder simpelt, er vist det jeg kalder nemt. Hvis det skal være
>nemt, så tænder jeg fjernsynet - der skal man slet ikke bekymre sig
>om noget.
C's håndtering af strenge er temmelig indviklet - og jeg lærte
det på et tidspunkt da jeg var ret godt hjemme i TP som på mange
måder er tæt på C.
--
Bertel
http://lundhansen.dk/bertel/ FIDUSO: http://fiduso.dk/
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 22:23 |
|
Den Tue, 11 Dec 2001 22:02:51 +0100 skrev Bertel Lund Hansen:
>Kent Friis skrev:
>
>>Det du kalder simpelt, er vist det jeg kalder nemt. Hvis det skal være
>>nemt, så tænder jeg fjernsynet - der skal man slet ikke bekymre sig
>>om noget.
>
>C's håndtering af strenge er temmelig indviklet - og jeg lærte
>det på et tidspunkt da jeg var ret godt hjemme i TP som på mange
>måder er tæt på C.
Du snakker også om hvor nemt det er.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Bertel Lund Hansen (11-12-2001)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 11-12-01 23:52 |
|
Kent Friis skrev:
>>C's håndtering af strenge er temmelig indviklet - og jeg lærte
>>det på et tidspunkt da jeg var ret godt hjemme i TP som på mange
>>måder er tæt på C.
>Du snakker også om hvor nemt det er.
Jeg forstår det således at du mener at jeg har sagt at det var
nemt. Det har jeg ikke. Jeg har anbefalet at man begynder med C,
og det vil jeg stadig gøre. Turbopascal er meget nemmere at gå i
gang med, men det har bare ikke den samme udbredelse, kompileres
ikke til så hurtig kode og er mindre portabelt (overhovedet?) end
C.
Ser vi bort fra C's strengbehandling, vil jeg kalde det et nemt
sprog i forhold til dets styrke. Desværre vil man som nybegynder
hurtigt få brug for at manipulere strenge.
Egentlig mener jeg ikke at det er så vigtigt hvilket sprog man
begynder med, men det er en anden sag. En der spørger, skal
naturligvis have et svar, og der er nogle nyttige og udbredte
sprog som man trygt kan anbefale. C og Java er to som jeg kender.
--
Bertel
http://lundhansen.dk/bertel/ FIDUSO: http://fiduso.dk/
| |
Mogens Hansen (11-12-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 11-12-01 21:40 |
|
"Kent Friis" <kfr@fleggaard.dk> wrote in message
>
> Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
> fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
> ind i det).
>
Det er vel nogenlunde lige så meningsløst at forsøge at undgå at lave
objekt-orienteret programmering, som det er at at forsøge at lave _alt_
objekt-orienteret.
Netop derfor er C++ er sprog der understøtter flere paradigmer, og hvor de
frit kan kombineres.
Der er fornuftigt at vide hvornår og hvorfor man skal gøre hvad.
Se f.eks. bogen
Multi-Paradigm DESIGN in C++
James O. Coplien
ISBN 0-201-82467-1
for en grundig og velfunderet gennemgang af væsentlige aspekter.
Venlig hilsen
Mogens Hansen
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 21:39 |
|
Den Tue, 11 Dec 2001 21:39:51 +0100 skrev Mogens Hansen:
>
>"Kent Friis" <kfr@fleggaard.dk> wrote in message
>>
>> Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
>> fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
>> ind i det).
>>
>
>Det er vel nogenlunde lige så meningsløst at forsøge at undgå at lave
>objekt-orienteret programmering, som det er at at forsøge at lave _alt_
>objekt-orienteret.
Mine lærere mente at _alt_ skulle være objektorienteret, og det er nok
en af grundene til at jeg ikke kan lide OO.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Bertel Lund Hansen (11-12-2001)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 11-12-01 22:05 |
|
Kent Friis skrev:
>Mine lærere mente at _alt_ skulle være objektorienteret, og det er nok
>en af grundene til at jeg ikke kan lide OO.
Det er fint nok, men når man har sådan en aversion, skal man nok
være forsigtig med at råde andre.
--
Bertel
http://lundhansen.dk/bertel/ FIDUSO: http://fiduso.dk/
| |
Kent Friis (11-12-2001)
| Kommentar Fra : Kent Friis |
Dato : 11-12-01 22:19 |
|
Den Tue, 11 Dec 2001 22:05:08 +0100 skrev Bertel Lund Hansen:
>Kent Friis skrev:
>
>>Mine lærere mente at _alt_ skulle være objektorienteret, og det er nok
>>en af grundene til at jeg ikke kan lide OO.
>
>Det er fint nok, men når man har sådan en aversion, skal man nok
>være forsigtig med at råde andre.
Derfor var det også bevidst skrevet så det ikke skulle ligne et råd,
men kun en holdning.
Hvilket sprog man skal vælge afhænger af hvad man synes bedst om, og
det er ret svært at vide, så længe man ikke har prøvet nogen af dem.
Mvh
Kent
--
http://www.celebrityshine.com/~kfr/
| |
Per Abrahamsen (12-12-2001)
| Kommentar Fra : Per Abrahamsen |
Dato : 12-12-01 11:37 |
|
kfr@fleggaard.dk (Kent Friis) writes:
> Hvis man ikke kan lide objekt-orientering, så er der nok ikke de store
> fordele i C++ (bare prøv at finde en lærerbog i C++ der ikke blander OO
> ind i det).
Stroustrups førsteudgave brugte vist en halv side på OOP, hvilket var
rigeligt til at jeg fattede pointen. Tredjeudgaven bruger flere
kapitler.
Nej, jeg vil ikke anbefale nogen førsteudgaven (sproget har ændret sig
meget siden), men jeg savner nu den gamle stil der lignede K&R.
Hvorfor gøre simple ting komplekse?
| |
Per Abrahamsen (12-12-2001)
| Kommentar Fra : Per Abrahamsen |
Dato : 12-12-01 11:41 |
|
"Mogens Hansen" <mogens_h@dk-online.dk> writes:
> Tag C++ template funktionen "std::find" - den er der absolut ikke
> noget objekt-orienteret ved Tag containeren "std::vector" - den er
> der lidt objektorienteret ved (indkapsling) Tag streams
> komponenterne i Standard Library - de er i høj grad
> objekt-orienterede med indkapsling, nedarvning, polymorphi.
>
> Alle tre ting bør der undervises i.
Det kommer an på hvilket niveau, jeg ville i første omgang anbefale at
man underviste i alle tre "magiske sprogfasciliteter", uden at komme
ind på hvordan de er implementeret.
| |
Mogens Hansen (12-12-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 12-12-01 17:10 |
|
"Per Abrahamsen" <abraham@dina.kvl.dk> wrote in message
news:rjy9k8iuuf.fsf@ssv2.dina.kvl.dk...
> "Mogens Hansen" <mogens_h@dk-online.dk> writes:
>
> > Tag C++ template funktionen "std::find" - den er der absolut ikke
> > noget objekt-orienteret ved Tag containeren "std::vector" - den er
> > der lidt objektorienteret ved (indkapsling) Tag streams
> > komponenterne i Standard Library - de er i høj grad
> > objekt-orienterede med indkapsling, nedarvning, polymorphi.
> >
> > Alle tre ting bør der undervises i.
>
> Det kommer an på hvilket niveau, jeg ville i første omgang anbefale at
> man underviste i alle tre "magiske sprogfasciliteter", uden at komme
> ind på hvordan de er implementeret.
Det er jeg naturligvis enig i - der er derfor jeg normalt og ofte anbefaler
bogen "Accelerated C++".
Min pointe var blot at det at det ikke er rimeligt at kritisere lærere, der
underviser i OO i forbindelse med undervisning i C++.
Det er rimeligt at kritisere lærere som _kun_ underviser i OO i forbindelse
med undervisning i C++.
Der er ingen grund til at undgå at lære OO.
Venlig hilsen
Mogens Hansen
| |
Per Abrahamsen (12-12-2001)
| Kommentar Fra : Per Abrahamsen |
Dato : 12-12-01 12:12 |
|
kfr@fleggaard.dk (Kent Friis) writes:
> Hvordan definerer du "datatyper med veldefinerede grænseflader" uden
> at blande OO ind i det, og hvad er det C mangler i den sammenhæng?
En abstrakt datatyper er en datatype defineret ved hvilke operationer
man kan udføre på den, i stedet for efter hvordan den er
implementeret. Det er et begreb der er meget ældre og mere
grunlæggende end OOP, og langt vigtigere.
C har efter min mening glimrende fasciliteter til implementering af
abstrakte datatyper. Jeg skrev lidt om det på
< http://www.dina.kvl.dk/~abraham/rants/opaque-pointer.html>
det er den stil jeg altid bruger når jeg skriver C kode.
C++ har på det punkt den fordel at man ikke behøver gemme dem bag en
pointer, og derved kan opnå bedre optimering gennem bl.a inlining, en
teknik der dog har sine egne skyggesider. Desuden er der overloading
der kan være bekvem nogen gange, men ikke essentiel.
| |
Lars Otto (13-12-2001)
| Kommentar Fra : Lars Otto |
Dato : 13-12-01 01:42 |
|
Per Abrahamsen wrote:
> Nej, jeg vil ikke anbefale nogen førsteudgaven (sproget har ændret sig
> meget siden), men jeg savner nu den gamle stil der lignede K&R.
> Hvorfor gøre simple ting komplekse?
Det er en amerikansk tradition der i særlig grad trives inden for
lærebøger af alle slags og i særlig grad inden for den halvpopulære
computerlitteratur. Måske kan den føres tilbage til at betaling til
forfattere var betaling pr side. Måske til at når der er dobbelt så
mange sider, bliver jeg dobbelt så klog og dobbelt så dygtig, så da jeg
vil være så klog og dygtig som mulig køber jeg den klogeste bog.
Men her gælder Tom Lehrers gamle sætning "Full of words and signifying
nothing".
| |
Morten Brix Pedersen (10-12-2001)
| Kommentar Fra : Morten Brix Pedersen |
Dato : 10-12-01 23:21 |
|
Hej Rasmus,
Rasmus Ladekjær Pedersen wrote:
> Hej, jeg har nu bestemt mig for at lære at programmere! Hvad skal jeg vælge
> C eller C++.
Det er nok ikke et nemt spørgsmål, C fanatikere vil anbefale dig C og
intet andet, og C++ fanatikere vil sige det modsatte.
Jeg startede selv for snart et år siden at lære C++, og jeg synes
allerede jeg er kommet langt nu - men husk, at C++ (og C?) er meget
svære sprog, som kan tage flere år før man mestrer helt. Hvis du kun har
tænkt dig at kode i et par timer i weekederne, og ikke læse det store,
så er du ihvertfaldet helt galt på den.
C++ er objekt orienteret, så det sparer dig kode i mange tilfælde. C++
har også det dejlige kaldet 'STL' (Standard Template Library), som
indeholder enormt mange gode værktøjer at arbejde med, blandt disse kan
nævnes string, vector, stl algoritmer o.s.v. - hvis man lærer at mestre
disse, så kan man gøre ting på meget hurtigere tid end i C, og også på
mange mindre linjer. Det er desuden også mere sikkert at programmere i
det, da det er sværere at lave bugs i forhold til når du selv skal rode
med character arrays o.s.v.
Men mens du lærer C++, kan du aldrig komme udenom ca. 75% af C
featuresne. C++ er som sagt et superset af C, det er "kun" en masse
ekstra/bedre måder at håndtere mange problemstillinger på.
Jeg har den holdning, at man ligeså godt kan lære C++, så har man "best
of both worlds". Men vejen er også længere.
> Jeg vil gerne have at mine programmer skal kunne køre på både
> Linux Windows og andre platforme!
> Hvilken compiler skal jeg vælge ?
gcc på Linux, Windows ved jeg ikke med.
- Morten.
| |
Bertel Lund Hansen (10-12-2001)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 10-12-01 23:40 |
| | |
Byrial Jensen (11-12-2001)
| Kommentar Fra : Byrial Jensen |
Dato : 11-12-01 22:53 |
|
Morten Brix Pedersen <morten@wtf.dk> skrev:
> Men mens du lærer C++, kan du aldrig komme udenom ca. 75% af C
> featuresne. C++ er som sagt et superset af C, det er "kun" en masse
> ekstra/bedre måder at håndtere mange problemstillinger på.
Det er nu ikke helt rigtigt at C++ er et superset af C. Der findes
ting i C - nok især blandt de nye ting i C99 (ISO C standarden fra
1999) - som ikke findes i C++.
| |
Per Abrahamsen (11-12-2001)
| Kommentar Fra : Per Abrahamsen |
Dato : 11-12-01 10:14 |
|
"Rasmus Ladekjær Pedersen" <ladekjaer@get2net.dk> writes:
> Hej, jeg har nu bestemt mig for at lære at programmere! Hvad skal jeg vælge
> C eller C++.
C++. Det har stærkere typecheck, hvilket er en fordel for alle
programmører, men især begyndere. Det har en standard bibliotek der
gør det meget lettere at komme i gang med at skrive de første små
programmer for en begynder, og er samtidig lavet så de vokser med
programmøren, og giver den advancerede programmør lige så meget støtte
som begynderen.
Desuden har det en række sprogfasciliteter (klasser, templates,
exceptions) der vil gøre livet meget lettere så snart programmerne
begynder at blive mere end et par tusinde linier lange.
> Jeg vil gerne have at mine programmer skal kunne køre på både Linux
> Windows og andre platforme! Hvilken compiler skal jeg vælge ?
GCC findes til næsten alle platforme, men hold dig til standarden.
| |
Soeren Sandmann (11-12-2001)
| Kommentar Fra : Soeren Sandmann |
Dato : 11-12-01 14:48 |
|
Per Abrahamsen <abraham@dina.kvl.dk> writes:
> > Hej, jeg har nu bestemt mig for at lære at programmere! Hvad skal jeg vælge
> > C eller C++.
>
> C++. Det har stærkere typecheck, hvilket er en fordel for alle
Enig. Og læs bogen "Accelerated C++" af Andrew Koenig og Barabara
Moo. Det er en meget god lærebog i programmering, som baserer sig på
C++ (i modsætning til C-med-ekstra-sager).
| |
N/A (12-12-2001)
| Kommentar Fra : N/A |
Dato : 12-12-01 17:10 |
|
| |
N/A (12-12-2001)
| Kommentar Fra : N/A |
Dato : 12-12-01 17:10 |
|
| |
N/A (12-12-2001)
| Kommentar Fra : N/A |
Dato : 12-12-01 17:10 |
|
| |
N/A (12-12-2001)
| Kommentar Fra : N/A |
Dato : 12-12-01 17:10 |
|
| |
N/A (12-12-2001)
| Kommentar Fra : N/A |
Dato : 12-12-01 17:10 |
|
| |
|
|