RE: C++ Compiling Problems

From: linux user (linuxusr_at_cableone.net)
Date: 05/22/05

  • Next message: Paul Howarth: "Re: C++ Compiling Problems"
    To: "For users of Fedora Core releases" <fedora-list@redhat.com>
    Date: Sun, 22 May 2005 09:26:46 -0600
    
    

    > On Sun, May 22, 2005 at 02:48:20PM +0200, Coert Waagmeester wrote:
    > > I've started learning C++. (Should I first learn C ?)
    >
    > You can learn C++ directly, and if you're interested in learning good C++,
    > there's some reasons to suggest doing it that way. C is a very elegant and
    > uncomplicated language. C++ is a different story.
    >
    > However, if you're basically new to programming, your life will
    > probably be
    > easier if you *start* with working with an object oriented appoach to
    > programming. A *lot* of C++ code out there is actually an ugly
    > mix of core C
    > with some C++ constructs glommed on. Modern C++ shouldn't be like
    > that, and
    > in fact all of this ...
    >
    > > I have an eBook from SAMS Teach yourself C++ in 21 days
    > > When I compiled their Hello World example:
    > >
    > > 1: #include <iostream.h>
    > > 2:
    > > 3: int main()
    > > 4: {
    > > 5: cout << "Hello World!\n";
    > > 6: return 0;
    > > 7: }
    > >
    > > g++ came back with:
    > > In file included from
    > /usr/lib/gcc/i386-redhat-linux/3.4.2/../../../../include/c++/3.4.2
    /backward/iostream.h:31,from hello.cpp:1:
    > >
    > /usr/lib/gcc/i386-redhat-linux/3.4.2/../../../../include/c++/3.4.2
    /backward/backward_warning.h:32:2: warning:
    > > #warning Thisfile includes at least one deprecated or
    > antiquated header. Please consider using one of the 32 headers
    > > found in section 17.4.1.2 of the C++ standard. Examples include
    > substituting the <X> header for the <X.h> header for C++ includes,
    > > or <iostream> instead of the deprecated header <iostream.h>. To
    > disable this warning use -Wno-deprecated.
    >
    > ... is *exactly* that issue -- iostream.h is the older, more-C-like header
    > file, and instead, you want the one called just iostream, with no
    > extension.
    >
    > Basically, sounds like you need a newer book.
    >
    > I've checked out many of the C++ books out there, and the one I recommend
    > above all others is Object-Oriented Programming in C++ (4th Edition) by
    > Robert Lafore. (The current edition is also from SAMS -- older ones were
    > published by The Waite Group.)
    >
    > It's *really* well written, and perhaps more importantly, very well
    > structured for learning.
    >
    >
    > > But the a.out file that gets created, does work, and
    > > gives Hello World! on the console.
    > > Should I worry about this warning?
    >
    > Yes. :)
    >
    > > They also say in the eBook that I still need to run the
    > 'linker' on the file that is compiled,
    > > but the a.out file already works? When I ran 'ld a.out' it did
    > not work anymore.
    > > Why do I not need to run the linker?
    >
    > Because you're using GCC, which also includes a linker, and in fact will
    > default to doing the linking stage unless you use the -c flag to stop it.
    >
    > And even cooler, under GNU make (which you have in Fedora Core),
    > if you have
    > a program named "helloworld.cpp", you can just type "make
    > helloworld" (from
    > a prompt in the same directory), and it'll automatically call gcc with the
    > right flags to generate an executable named "helloworld". (And will print
    > out what it's doing.)
    >
    > PS: if you want a book on C instead of C++, don't bother with anything but
    > the original book by the language's creators: C Programming Language by
    > Brian Kernighan and Dennis Ritchie. As I said before, C is an elegant and
    > small language, and this book is all you need. (Although you may also want
    > to pick up The UNIX Programming Environment by Kernighan and Rob Pike.)
    >
    > --
    > Matthew Miller mattdm@mattdm.org <http://www.mattdm.org/>
    > Boston University Linux ------> <http://linux.bu.edu/>
    > Current office temperature: 73 degrees Fahrenheit.

    Well, you will find that everyone has an opinion on where to start, and you
    will get a lot of different ones too. I am currently a computer science
    major on my last semester of school, and I would recommend learning C first.
    We started with Java early, because Java is a very straight forward OOP
    programming language. C++ is certainly more flexible, but this can create
    some issues for new programmers.

    Here are some of the reasons I recommend C:

    - C is the primary programming language of both Linux and Windows operating
    systems.

    - C is the basis for languages such as C++, Java, C#, and many others.

    - You will learn all of the basic constructs with C as with any other
    language.

    - Once you have learned all of the basics, you can take it to the next
    level, Object Oriented Programming in C. Up to this point most everything
    is straight forward with the exception of function pointers, structures,
    unions, and enumerations.

    - With OOP in C, you will construct objects through structures in header
    file definitions. This is not so elegant, but I can promise that you'll be
    a much better programmer for learning OOP this way.

    - In addition there are many tools that interface with C that are available
    under Linux. lex and yacc are two useful ones. lex is very powerful for
    pattern matching, and you can build your own compiler tools with yacc.

    - You'll have to take all of the recommendations from everyone and make the
    decision on your own.

    Here are some books I recommend for C:

    The Complete Reference C (latest edition), Schildt
            excellent for beginners and intermediate C programmers

    The C Programming Language, Kernighan - Ritchie
            an excellent reference, but not so good for beginners

    Advanced Programming in the UNIX Environment, Stevens
            good for Linux/Unix system programming

    You can find tons of lex and yacc examples on-line.

    If you want to start with an easy OOP, start with Java or C#.

    Good luck!!!

    -- 
    fedora-list mailing list
    fedora-list@redhat.com
    To unsubscribe: http://www.redhat.com/mailman/listinfo/fedora-list
    

  • Next message: Paul Howarth: "Re: C++ Compiling Problems"

    Relevant Pages

    • Re: Code Review - is this code shit
      ... "learning" a programming language is not quite the same as other ... I announced my score, I pointed out that it was meaningless, because ...
      (comp.lang.c)
    • Re: book on oop concepts
      ... I came across a book which discusses oop concepts in detail, independent of programming language: ... "An introduction to Object-Oriented Programming", ... I advise you to stay away from OOP theory and sloganizing because I found those kinds of explanations vague and misleading. ... If you're interested, I could mail you a primer for C programmers explaining the basic OOP concepts common to the most popular OOP languages. ...
      (comp.lang.java.programmer)
    • Re: Minsky still posting
      ... pushing Prolog out of the way as the standard logic programming ... I think the lack of appreciation of that amongst most academics ... involved in programming language work was a prime reason why the ...
      (comp.lang.prolog)
    • Re: Why We Use C Than C++...
      ... > the level of the programming language. ... the advantage of low level code ... typical example of in-kernel OOP. ...
      (comp.lang.c)
    • Re: A taxonomy of types
      ... An object-oriented programming language supports ... OOP language and completely rely on the compiler to make sure things work ...
      (comp.lang.misc)