Avatar billede Slettet bruger
23. april 2000 - 11:34 Der er 4 kommentarer og
2 løsninger

C <=> C++?

Hejsa, jeg har for nogle år siden lært at programmere C. Og har just lagt mig ud med C++.
Men en klog mand (er ikke sikker på hvem, måske ham som opfandt sprogene) har udtalt, at hvis du har i sinde at lære C++, er det DUMT at først lære C, da det giver en kluntet og ueffektiv måde at kode C++ på.

Nogen som kan forholde sig til dette?
Avatar billede ultik Nybegynder
23. april 2000 - 12:59 #1
Det vil jeg ikke sige, jeg startede med at lære C, og jeg synes da helt klart at C++ ikke er andet end en udvidelse, med classes and all. Desuden, så kan det altså lade sig gøre at skifte programmeringsstil, det er heller ikke så svært som det lyder, jeg har efterhånden gjort det et par gange !

Med venlig hilsen
Ulrik Jensen
ulrik@qcom.dk
http://www.qcom.dk
Avatar billede theill Nybegynder
23. april 2000 - 13:21 #2
Det er aldrig dumt at have kendskab til flere sprog. Hvis du er en virkelig hardcode C programmoer, kan du maaaaaske have et lille bitte problem med at omstille dig til C++ (mere objekt orienteret), men hvis du 'bare' kender syntaksen i C samt nogle af standard bibliotekerne har du intet problem med at skifte til C++.

Uddrag fra Bjarne Stroustrups hjemmeside:

*Knowing C is a prerequisite for learning C++, right?*
Wrong. The common subset of C and C++ is easier to learn than C. There will be less type errors to catch manually (the C++ type system is stricter and more expressive), fewer tricks to learn (C++ allows you to express more things without circumlocution), and better libraries available. The best initial subset of C++ to learn is not "all of C".


desuden:


*Is C a subset of C++?*
In the strict mathematical sense, C isn't a subset of C++. There are programs that are valid C but not valid C++ and even a few ways of writing code that has a different meaning in C and C++. However, C++ supports every programming technique supported by C. Every C program can be written in essentially the same way in C++ with the same run-time and space efficiency. It is not uncommon to be able to convert tens of thousands of lines of ANSI C to C-style C++ in a few hours. Thus, C++ is as much a superset of ANSI C as ANSI C is a superset of K&R C and much as ISO C++ is a superset of C++ as it existed in 1985.
Well written C tends to be legal C++ also. For example, every example in Kernighan & Ritchie: "The C Programming Language (2nd Edition)" is also a C++ program.

Examples of C/C++ compatibility problems:

int main()
{
    double sq2 = sqrt(2);  /* Not C++: call undeclared function */
    int s = sizeof('a');    /* silent difference: 1 in C++ sizeof(int) in C */
}

Calling an undeclared function is poor style in C and illegal in C++. So is passing arguments to a function using a declaration that doesn't list argument types:
void f();    /* argument types not mentioned */

void g()
{
    f(2);    /* poor style C. Not C++ */
}

In C, a void* can be implicitly converted to any pointer type, and free-store allocation is typically done using malloc() which has no way of checking if "enough" memory is requested:
void* malloc(size_t);

void f(int n)
{
    int* p = malloc(n*sizeof(char));  /* not C++. In C++, allocate using `new' */
    char c;
    void* pv = &c;
    int* pi = pv;  /* implicit conversion of void* to int*. Not in C++ */
}

Note the potential alignment error caused by the implicit conversion of the void* to a int*.
When converting from C to C++, beware that C++ has more keywords than C:

int class = 2;    /* ok in C. Syntax error in C++ */
int virtual = 3;  /* ok in C. Syntax error in C++ */

Except for a few examples such as the ones shown above (and listed in detail in the C++ standard and in Appendix B of The C++ Programming Language (3rd Edition)), C++ is a superset of C. (Appendix B is available for downloading).
Avatar billede theill Nybegynder
23. april 2000 - 13:22 #3
PS: Bjarne Stroustrup er DANSKEREN (yeaaaaaaaaaah) bag C++
Avatar billede ultik Nybegynder
23. april 2000 - 13:45 #4
Er det ikke også en dansker der har "lavet" Turbo Pascal ?
Avatar billede Slettet bruger
23. april 2000 - 17:29 #5
Kan nogen anbefale en bog e.l som hjælper TOTALT nybegynder-dosmere med C++?
Avatar billede ultik Nybegynder
23. april 2000 - 19:35 #6
C++ af Kris Jamsa, god teori, og masser af eksempler. Ingen af eksemplerne er dog "nyttige" programmer, men det kan man vil slå sig til tåls med.
Forlag :IDG
Pris : 69 kr. for hæfte, omkring halvanden hundrede for bog. Hæftet er det samme som bogen, undtaget et sidste kapitel, som dog kan downloades fra IDG.dk. Så holder bogen tilgengæld lidt bedre.

Med venlig hilsen
Ulrik Jensen
ulrik@qcom.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester