Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Need a good programming book

  1. Jul 13, 2003 #1
    I am looking for a good book on something like parcel or C or soemthing in the same range of that. Any recomnedations
  2. jcsd
  3. Jul 25, 2003 #2
    Many people would suggest learning C++ instead but if you have little or no experience in programming C is a good place to start. Besides C compilers are available on the web for free (I like Dev-C++).

    If you plan to be self-taught I suggest "A Book on C" since it is designed for that, is well written, has very few errors and has answers to the exercises so you can actually learn and not just struggle. Good luck.
  4. Nov 4, 2003 #3
    Go to the masters: Kernighan and Ritchie.
  5. Nov 4, 2003 #4
    Yes, The C Programming Language by Kernighan and Ritchie is excellent.

    Also, another good (free) C compiler to use is GCC (http://gcc.gnu.org.)

    Last edited: Nov 4, 2003
  6. Nov 4, 2003 #5
    Another good book, though not on C or any other language in particular, is Cormen et al's Introduction to Algorithms.
  7. Nov 15, 2003 #6
    Hmm... but K & R's C is very tough for the newcomers ....

    I'd suggest:

    "C how to program" - Deitel & Deitel.

    For Pascal a very nice book:

    "Pascal: Understanding Programming & Problems Solving"
    - Douglas W.Nance

    And for C++:
    You can use Deitel's one or

    "GNU C++ for Linux" - Tom Swan.

    Hope it helps :)
  8. Nov 16, 2003 #7
    I'm learning my first "real" programming language right now - Visual Basic. My teacher recommended I buy the book "Programming in Visual Basic 6.0", by Julia Case Bradley and Anita C. Millspaugh. I like it a lot so far. I will be learning Java in the spring and I have already bought a book on it. It is called "Java: An Introduction to Computer Science and Programming", by Walter Savitch.

    Java: https://www.amazon.com/exec/obidos/...=sr_8_1/102-3281250-7085752?v=glance&n=507846
  9. Nov 17, 2003 #8


    User Avatar
    Staff Emeritus

    SDNess, why don't you learn c++ instead. It is a much powerful language in that you get direct memory access. POINTERS POINTERS POINTERS!!! Also there is no overloading of operators allowed in java. Arghh

    Finally, "Java is not designed for computer-intensive applications that are critical in space and speed" - The Java White Paper
  10. Nov 17, 2003 #9
    Well, I'm taking VB and Java in high school. They used to offer C++ up until last year, but the New York State curriculum has changed from C++ to Java. I am planning to learn C++ on my own though...out of a book probably.
  11. Nov 17, 2003 #10


    User Avatar
    Staff Emeritus

    It is pretty stupid of the school system to change from c++ to java. I think java is the most hyped programming language ever. It may be good for the web, but it isn't all that great at high proformance applications and low level development. Your not going to see the linux kernel written completely in java anytime soon. Garbage collecting wastes precious cpu cycles and used by lazy programmers that don't want to deallocate the memory that they allocate.
  12. Nov 17, 2003 #11


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    [devil's advocate mode]
    I think C++ is the most hyped programming language ever. It's so loosely defined that many different compilers interpret the same constructs differently. Many people have just given up on the idea of standardizing it. It's also not that great at developing high performance applications, because it demands that every programmer be a master of algorithm and data structure design. Sure, it has the STL, but everyone knows it's one of the most obtuse general-purpose libraries ever designed. Besides, you remember all those standardization issues? Yeah, they apply to the STL, too. You're not going to see any large-scale scientific computing applications written entirely in C++ anytime soon. C++ also provides a lot of completely frivolous "features" that are misused 100 times more often than used. Pointer arithmetic is so low-level as to be entirely unnecessary, and many programmers abstract their data structures using tools like the STL to avoid human error anyway. Multiple inheritance has probably been used one or two times properly in the history of the language. The template construct is so syntactically challenging that most new programmers are terrified to use it (and therefore terrified to write REAL object-oriented code). Operator overloading is just a convenience, and it doesn't really help much -- you still have to invest the time to learn how each class's designer chose to use his operators, just like you'd have to read Java documentation to learn about each method. Huge vtables take up a lot of memory, and C++'s lack of garbage collection means that quite a lot of human resources are spent finding and removing memory leaks.
    [/devil's advocate mode]

    - Warren
    Last edited: Nov 17, 2003
  13. Nov 17, 2003 #12
    Chroot, it seems that you are really hard on C++.
    But from my point of veiw ...

    For large scale software developement Java is the best solution.

    And when you are going to develop any system software such as OS then you have to rely on C/C++.
  14. Nov 17, 2003 #13


    User Avatar
    Staff Emeritus

    Blame it on microsoft and their crappy compiler. GCC goes by the standard very well.

    If you have a group of programmers working on high performance applications and they don't know fundamental algorithm and data structure design then you are in trouble. Why did you hire the morons in the first place.

    I have to agree that STL is junk. All I say is Don't Use It. I don't think its that hard to program your own string, stack, lookup table structures. I've done it. I also don't think its that hard to create your own sorting algrothms etc.

    Have you inspected the structures and algorithms supplied with java? Do you know if they are optimized and secure? This is why I write my own code in c++. Then whenever I need it I use my own algorithms.

    I'm sorry your not into polymorphism. I think its a great way to visually see a program. It might be daunting for new programmers but once you've got the hang of it, its a piece of cake.

    And its a convenience that make code more readable. Its just dumb to have a function call like addthesetwonumbers(2,4). I would rather see 2+4.

    garbage collection makes people lazy and they don't clean up after themselves. To handle memory leaks c++ programmers have applications like memory profiler to locate such problems.
  15. Nov 17, 2003 #14


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    Okay... I just have to. What standard?
    Why should I have to pay for experts? Why shouldn't I remove some of that burden from programmers? Why should cars have power windows and turn signals when you can roll the window down and stick your arm out?
    Why would you want to do this? Why should every programmer have to go write his own basic algorithms and data structures when Knuth has already done all the work? Why shouldn't a language provide those tools?
    Of course I've looked at the source! Sun provides it with every distribution of the JDK.
    When did I say I wasn't into polymorphism? Surely you realize multiple inheritance != polymorphism?
    Can you list the number of times in practice that you've seen operator overloading done so well in a class that you immediately understand what every operator did?
    I could argue that garbage collection makes them better programmers, since they can produce cleaner code faster. The ultimate arbiter of success is not how bloody your knuckles are when you're done -- it's how much money is in your pocket. And you're suggesting that instead of taking a (literally) negligible performance hit from a thread automatically reclaiming unreferenced objects (usually done when the program is waiting for input), you'd rather purchase a profiler and pay to educate all your staff on its proper use?

    Sounds like you enjoy bloodying your knuckles. I prefer to line my pockets.

    - Warren
  16. Nov 17, 2003 #15


    User Avatar
    Staff Emeritus

    Ok, this is just like a windows versus mac or religion versus science war. You program with what your comfortable and I program with why i like. Use the tool that gets the job done.

    By the way, I use open source tools. MemProf comes bundled with redhat.
  17. Nov 18, 2003 #16
    what years was that?

    Although I admit that C(++) works faster that Java for now, Java is a lot easier to learn and there's talk of processors that can support directly Java instructions so speed will not be a problem in the near future

    Grimmus: I have a lot of programming books in html and pdf. If you're interested in a list PM me.
  18. Nov 18, 2003 #17


    User Avatar
    Staff Emeritus
    Gold Member
    Dearly Missed

    No kidding

    Kind of defeats the purpose of Java, doesn't it, since that language was designed to be processor independent. That was its great announced strength.
  19. Nov 18, 2003 #18
    Re: No kidding

    there's still gonna be JVM for the processors that doesn't support Java:smile:
  20. Nov 27, 2003 #19
    Free Compilers are good,... but


    So why waiste your time learning C++ when you can't write in Win32? Nobody uses Console anymore anyways, the GUI is the problem --> Looks stupid.

    So get VC++ 6 Professional and start writing real apps!
  21. Nov 27, 2003 #20
    Actually I've been wanting to know this for a while...

    What is Win32 programming?
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook