New to programming, suggestions for books and other readings?

Atlantean

Diamond Member
May 2, 2001
5,296
1
0
I finished university last year and got a bachelor of arts, it was a waste of time. I have always wanted to learn how to program and regret that I didn't spend my time in university learning how. This year I decided I would start learning how to program and see where it takes me. One of my programmer friends suggested I start with C and gave me a couple books to get started - the absolute beginner's guide to programming and an Ansi C textbook. I was thinking after I finished I would work on C++ as it seems like the next step so I wanted some suggestions on books I can purchase to help with my learning and suggestions from programmers.

I found one book from another thread here called The Object-oriented thought process which everyone seemed to like. What would be a good textbook style or beginner c++ programming book I could learn from. Which compilers should I be using? The microsoft express ones seem like they might work, does anyone have suggestions for something better?

Finally - I think I want to get into programming as a career, which languages should I work on to work towards that goal? Game programming seems like it might be interesting but I don't really know much about it.

I know there are a few other threads such as this but didn't want to drag an old thread from the archives... thanks for reading through my post and offering suggestions.
 

degibson

Golden Member
Mar 21, 2008
1,389
0
0
This question comes up a lot on this forum. (Perhaps we should sticky a generic answer)

Here is my prediction on how this thread is going to go:
* Several of us will applaud your choice of C as a starting point, and will provide a few references.
* Several of us will question your choice of C as a starting point, asserting that C is too low-level, and suggest Java/C#/Perl/Python/Scheme/or something else
* One of us will question your choice of C as a starting point, asserting that C is too high-level, and suggest ASM (you know who you are!).

One metapoint of the above is that language is more of a personal choice than a practical one in a lot of cases. Keep that in mind -- I am in the 'C is the mother-language' camp, so I like C a lot, but if its too much for you to start with, definitely try something else.

From a learning perspective, C is a fantastic choice that will teach you a lot of low-level details of how von Neumann machines work, while not hiding their real failure characteristics either. Just about any book will do to start, though you'll want to eventually look at a generic 'Data Structures' book once you understand the language.

Remember: Your most important resource in learning how to program is the collective wisdom of other programmers. So, when you have specific or general problems, post them here on the forums and let us help you.

OK... let the language war begin ;)
 

EagleKeeper

Discussion Club Moderator<br>Elite Member
Staff member
Oct 30, 2000
42,589
5
0
The higher language that you start off with, the easier it may be; however, the higher languages also hide the "devil in the details".

Once you are burned by the details, you learn to appreciate them.

Also realize that there are many types of systems out there that are tweaked by OS or application design for different languages.

For every desktop/server/mainframe, there are probably 10+ embedded systems.
Most embedded systems do not run with C#/Python/Perl, etc.
 

EvilManagedCare

Senior member
Nov 6, 2004
324
0
0
Starting with C or C++ is a good idea. For one, should you move to Java it will be even easier to pick up imo. And yes, the details are good to know as Common Courtesy mentioned. It will also be helpful should you decide to return to college for Computer Science courses (never say never).

Assignments or examples are likely to be C/C++ based. And while you may not be seeking a job involving C programming, knowing it will be helpful to succeed academically. I recently returned and wish I had been more attentive in my C++ course taken at a community college.
 

Kirby

Lifer
Apr 10, 2006
12,028
2
0
Originally posted by: Common Courtesy
For every desktop/server/mainframe, there are probably 10+ embedded systems.

I imagine it's more than that. I have only 1 desktop pc, but I have a car, a digital watch, a microwave, a clockradio, a camera, a mp3 player, cell phone, several appliances, dvd player, not to mention embedded software in your pc (bios, dac, etc.)

There's probably many embedded systems just inside a car.

But yeah OP, C or C++ is a great place to start.
 

EagleKeeper

Discussion Club Moderator<br>Elite Member
Staff member
Oct 30, 2000
42,589
5
0
Originally posted by: nkgreen
Originally posted by: Common Courtesy
For every desktop/server/mainframe, there are probably 10+ embedded systems.

I imagine it's more than that. I have only 1 desktop pc, but I have a car, a digital watch, a microwave, a clockradio, a camera, a mp3 player, cell phone, several appliances, dvd player, not to mention embedded software in your pc (bios, dac, etc.)

There's probably many embedded systems just inside a car.

But yeah OP, C or C++ is a great place to start.

I only have 10 fingers and I was not going to take off my shoes to continue to count. And I will NOT drop my pants:eek:

 

Atlantean

Diamond Member
May 2, 2001
5,296
1
0
Any recommendations for books I can learn from or decent textbooks for C++, I have a few decent books for C. Also which compiler should I be using? Is the microsoft express version the best choice?
 

Kirby

Lifer
Apr 10, 2006
12,028
2
0
gcc (g++) is always good. You can get some good *nix practice too.

Nothing wrong with VS either, but sometimes I'd rather not go through the trouble of setting up projects, solutions, etc.; especially for the first bit when you're just learning conditional statements, loops, and other basic stuff.
 

EagleKeeper

Discussion Club Moderator<br>Elite Member
Staff member
Oct 30, 2000
42,589
5
0
Originally posted by: Atlantean
Any recommendations for books I can learn from or decent textbooks for C++, I have a few decent books for C. Also which compiler should I be using? Is the microsoft express version the best choice?

The MS compilers will be biased toward the MS tools and languages/OS.

Much will depend on the environment that you are going to work in and the target OSs for your work.

 

Madwand1

Diamond Member
Jan 23, 2006
3,309
0
76
Originally posted by: Atlantean
Any recommendations for books I can learn from or decent textbooks for C++, I have a few decent books for C.

There are two classics you could read on this path -- Kernighan and Ritchie, "The C Programming Language", and Stroustrup, "The C++ Programming Language". I like the 2nd edition, including the reference manual at its end.

C is a nice language, and worth learning IMO. C++ is a also a good language, but it takes a lot before you even imagine that you understand and "know" that language. C#/Java might be easier to get into and more fruitful for the next steps.

I don't know what your plans are, but if you're serious about doing this professionally, you should plan on going back to school. Self-study is a great idea, but not really enough to get you a job and career -- even if you got the first, difficult to obtain job somehow, the second job would probably still have a degree requirement.
 

Aberforth

Golden Member
Oct 12, 2006
1,707
1
0
Knowledge of C is not required to learn C++, I recommend learning C++ and switch to Microsoft.NET platform that is VC++ 2008, C# and VB.net, it would be great if you learn MSIL- but it's very advanced and I don't think you'll be able to cope with it....maybe in the future when you get enough experience.
 

blahblah99

Platinum Member
Oct 10, 2000
2,689
0
0
Originally posted by: Atlantean
I finished university last year and got a bachelor of arts, it was a waste of time. I have always wanted to learn how to program and regret that I didn't spend my time in university learning how. This year I decided I would start learning how to program and see where it takes me. One of my programmer friends suggested I start with C and gave me a couple books to get started - the absolute beginner's guide to programming and an Ansi C textbook. I was thinking after I finished I would work on C++ as it seems like the next step so I wanted some suggestions on books I can purchase to help with my learning and suggestions from programmers.

I found one book from another thread here called The Object-oriented thought process which everyone seemed to like. What would be a good textbook style or beginner c++ programming book I could learn from. Which compilers should I be using? The microsoft express ones seem like they might work, does anyone have suggestions for something better?

Finally - I think I want to get into programming as a career, which languages should I work on to work towards that goal? Game programming seems like it might be interesting but I don't really know much about it.

I know there are a few other threads such as this but didn't want to drag an old thread from the archives... thanks for reading through my post and offering suggestions.

Good choice with C as a starting point! :)

I'd suggest Numerical Recipes in C once you get the basics.
 

Modelworks

Lifer
Feb 22, 2007
16,240
7
76
C is a good choice.
I would have started with ASM, yes I know how most people feel about it. But it does let you understand how everything really works regardless of the higher language you use.
A free emulator, tutorial, everything you need is here:
http://www.emu8086.com/
 

evident

Lifer
Apr 5, 2005
12,100
713
126
i started with C++ as an AP course in HS and went on to Java with ease in college. When i took an OS course that required C i struggled briefly with the syntax, and also realized that it was also lower level than c++ as well. C/C++ are def. good starting points. Looking back if i had learned java as a first language i would not know much about garbage collection, pointers and all the no-so fun stuff
 

brandonb

Diamond Member
Oct 17, 2006
3,731
2
0
I started with VB (back when it was version 3 or 4) and could get things working. Once I learned C though, my knowledge of VB skyrocketed. Because with C you actually learn about what is necessary to build a higher level language. Once you understand its easier to program for the higher level language because you can sort of understand what things are doing behind the scenes. Working with streams and serialize in .net languages is basically working as if you are working with pointers (while it hides the pointer its similar), so if you learn pointers and such, its much easier to understand those concepts.

C is a good start. I recommend Microsoft C compiler express edition because it will run well on any windows platform and the help format (the HTML help online) is easy to navigate once you get used to it, and its a good reference.