LinuxQuestions.org
Welcome to the most active Linux Forum on the web.
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices



Reply
 
Search this Thread
Old 06-05-2004, 10:14 PM   #1
simsjr
Member
 
Registered: Apr 2004
Location: I'm everywhere, Focker!
Distribution: Slackware
Posts: 53

Rep: Reputation: 16
Breaking Into Programming - What now?


Hey Folks,

I'm itching to learn how to program, maybe even make a career out of it eventually (without a computer science degree, I'm not sure how possible a career is). Careers aside, however, I think programming can become a fun hobby that will help keep my mind sharp too.

Anyways, I'm looking into C, C++, and Java. It seems there are certain advantages and disadvantages to each, but I'd like to learn a language that is, perhaps, more marketable and widely used of the three. That's probably very subjective, but I'm hoping for some feedback.

I was thinking it might actually be better if I learn the fundamentals of each language in the order of C, C++, then Java. Maybe that approach would help me decide which language I should stick to.

Also, what common types of programs should an intermediate programmer be able to produce?

Any recommended books for people in my situation? Are there standard development methodologies I should understand before I start?

Thanks for any help!
 
Old 06-05-2004, 10:56 PM   #2
The_Nerd
Member
 
Registered: Aug 2002
Distribution: Debian
Posts: 540

Rep: Reputation: 32
I seggest C++. However, I don't know Java, so I can't recomend it. As for books try these:

http://www.amazon.com/exec/obidos/tg...books&n=507846

http://www.amazon.com/exec/obidos/tg...books&n=507846

The two best books ever! The internet is also a good source to find stuff out, just google it!

If you still need help (with C/C++), or would just like it explained in person, please feel free to e-mail me anytime (The_Nerd@linuxmail.org). I would be happy to help you out! Have fun and goodluck!

As for starter programs:

File converters,
Simple text based apps,
rrrrrrr windows just sticked me>>>>

anyway you get the idea> cya
 
Old 06-06-2004, 02:11 AM   #3
simsjr
Member
 
Registered: Apr 2004
Location: I'm everywhere, Focker!
Distribution: Slackware
Posts: 53

Original Poster
Rep: Reputation: 16
Hey, thanks. I really appreciate that. You may just get some emails from me in the near future!
 
Old 06-06-2004, 12:57 PM   #4
The_Nerd
Member
 
Registered: Aug 2002
Distribution: Debian
Posts: 540

Rep: Reputation: 32
Cool

Cool.
 
Old 06-06-2004, 01:49 PM   #5
eric.r.turner
Member
 
Registered: Aug 2003
Location: Planet Earth
Distribution: Linux Mint Debian Edition (LMDE)
Posts: 215

Rep: Reputation: 31
I know both C++ and Java quite well. The choice between the two isn't easy since each has advantages and disadvantages. To give you the best career chances, I would suggest that you learn both. It isn't as difficult as it sounds.

Start with C++. The two books you should have are C++ How to Program , and The C++ Programming Language. The first is great for beginners that do not know any programming. The second is the ultimate C++ reference, which should be a part of any serious C++ programmer's library.

For Java, I would recommend Core Java 2, Volume I: Fundamentals and Core Java 2, Volume II: Advanced Features.

If you decide to learn C++ I wouldn't waste my time on C, unless you have a compelling reason (e.g. you want to get into embedded software development, in which case you'll also need to learn a lot about computer architecture, and might as well go back to school and get a CS or EE degree!)

If you want a comparison of C++ and Java let me know and I could throw something together for you.
 
Old 06-06-2004, 02:26 PM   #6
amos
Member
 
Registered: Dec 2002
Location: Manchester, UK
Distribution: LMDE
Posts: 224

Rep: Reputation: 30
Check out "Thinking in C++" by Bruce Eckel

Google for it, or its abbreviation TICPP. Its available as a free download, so its well worth the price. (I think there might be some Java books available on his website too.)

Cheers
Amos
 
Old 06-06-2004, 02:40 PM   #7
The_Nerd
Member
 
Registered: Aug 2002
Distribution: Debian
Posts: 540

Rep: Reputation: 32
Quote:
Originally posted by eric.r.turner
If you decide to learn C++ I wouldn't waste my time on C, unless you have a compelling reason (e.g. you want to get into embedded software development, in which case you'll also need to learn a lot about computer architecture, and might as well go back to school and get a CS or EE degree!)
What the heck are you talking about??? C++ IS C upgraded! Thats why its called C++, meaning the next version, or C incremented by one. C++ is simply a better C.
 
Old 06-06-2004, 04:11 PM   #8
Galik
Member
 
Registered: Mar 2003
Location: UK
Distribution: gentoo
Posts: 67

Rep: Reputation: 15
Personally if your just learning I would begin with C. The reason is that both C++ and Java contain quite a bit of C. I recommend C before C++ simply because C is largly a subset of C++ and it would be beneficial to know the differences. It would be much harder to remember the dividing line between C and C++ if you leaned C++ first and then C I think. Also you would not be wasting learning time because C contains all the basics of C++ that you would need to know anyway. After C I recommend C++ before Java. Once you know C++ then moving to Java will be much easier. I suspect you'd get more headaches going from Java to C++. There is no reason why you shouldn't aim to be able use all three languages, they do share many common themes.
 
Old 06-06-2004, 06:08 PM   #9
shrike_912
LQ Newbie
 
Registered: Jun 2004
Location: nepal
Posts: 26

Rep: Reputation: 15
learn C you have learned structured programming methodology.
learn C++ you have learned object oriented programming methodology.
when u have learnt both, JAVA would seem too easy to learn..

hope u get it,
shrike_912
 
Old 06-06-2004, 06:15 PM   #10
dave_starsky
Member
 
Registered: Oct 2003
Location: UK, Manchester
Distribution: Gentoo (2.6.10-r4) & Ubuntu
Posts: 145

Rep: Reputation: 16
I think if you learn C first, then move on to either C++ or Java. Once you've learned one of Java and C++ I would imagine learning the other would be pretty easy (compared to learning from scratch anyway).
 
Old 06-06-2004, 06:18 PM   #11
eric.r.turner
Member
 
Registered: Aug 2003
Location: Planet Earth
Distribution: Linux Mint Debian Edition (LMDE)
Posts: 215

Rep: Reputation: 31
Quote:
Originally posted by The_Nerd
What the heck are you talking about??? C++ IS C upgraded! Thats why its called C++, meaning the next version, or C incremented by one. C++ is simply a better C.
Though they are very close, C++ is not purely a better C. Stroustrup identifies some of the differences in Appendix B. For example:

Code:
int x[99];
void f()
{
   struct x { int a; };
   sizeof(x);
}
This code actually behaves differently in C and C++! In C you get the size of the array, but in C++ you get the size of the structure.

More importantly, there are idioms that a good C programmer typically uses that a good C++ programmer does not, even though it is legal in C++. String handling is a good example. A C programmer uses null-terminated arrays of characters and the stdio library functions (and sometimes even directly manipulates the arrays and uses pointer arithmetic) whereas a good C++ programmer uses the string class and streams. Memory management is also done differently in the two languages.

The differences are not difficult to learn, but the C++ programmer wanting to program in C will need to learn the way things are done in C (strings, libraries, memory management, etc.) Of course, you lose the OO paradigm in C, so that takes a different way of thinking about program design. Is it worth spending the time to learn these differences if you have no compelling reason to?

Of course, the learning curve for a C programmer wishing to learn C++ is tremendous: classes, templates, streams, additional keywords, namespaces, casting, libraries, etc.

Last edited by eric.r.turner; 06-06-2004 at 06:21 PM.
 
Old 06-07-2004, 06:00 AM   #12
simsjr
Member
 
Registered: Apr 2004
Location: I'm everywhere, Focker!
Distribution: Slackware
Posts: 53

Original Poster
Rep: Reputation: 16
Hey everyone, thanks for all your input! This has been really great for me. I think I will learn the basic concepts of C++ and then learn everything else in Java (rumor has it that Java could be open sourced in the near future).

Oh, is there such a thing as C++ or Java certification? I don't have time to go back to school, sadly, but I'm thinking that maybe if I get certified and pass an exam, that might help me.

Thoughts?
 
Old 06-07-2004, 10:15 AM   #13
eric.r.turner
Member
 
Registered: Aug 2003
Location: Planet Earth
Distribution: Linux Mint Debian Edition (LMDE)
Posts: 215

Rep: Reputation: 31
Quote:
Originally posted by simsjr
Oh, is there such a thing as C++ or Java certification? I don't have time to go back to school, sadly, but I'm thinking that maybe if I get certified and pass an exam, that might help me.

Thoughts?
For Java, check out http://suned.sun.com/US/certification/java/index.html . I'm not sure about a C++ certification. Most employers will look at certification as a good thing, though it is no substitute for experience. At the very least, earning a certification can be very educational. I learned a lot becoming a Sun Certified Programmer for the Java 2 Platform.
 
Old 06-07-2004, 10:54 AM   #14
nimra
LQ Newbie
 
Registered: May 2004
Posts: 28

Rep: Reputation: 15
It depends what you like to program.

If I need a visual program I normally program in Java. Java has the advantage being portable over the different os (at least, should be). When something must be fast and a visual interface is not required, I take C/C++.
Visual programming in C++ depends strongly on the os!
The reason for this is, that the java compiler creates a bitcode, which is close to machine language (but os independent). Executing a Java bitcode, means that the bitcode is interpreted by a Java Virtual Machine.

For a beginner Java might be easier because Java don't allow you to program dubious code (ex: pointers).
 
Old 06-07-2004, 02:16 PM   #15
kooch
Member
 
Registered: Mar 2004
Location: Upstate NY
Distribution: Slackware/YDL
Posts: 77

Rep: Reputation: 15
nimra...

s/bitcode/bytecode/

Java might be 'easier' in terms of not breaking things but its library is too big to fit in your head. That's why I recommend C. It's compact, small and you learn a lot from all the things you blow up.

Steps to successful programming
1 read a lot of code
2 write a lot of code.
3 GOTO 1
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
breaking into my machine? debtman7 Linux - Security 7 11-11-2005 04:28 AM
Breaking out of Chroot Aeiri Linux - Security 1 02-26-2005 03:10 PM
breaking waves... marsques Linux - Software 4 05-18-2004 02:25 AM
Slackware is breaking on me h1tman Slackware 8 08-18-2003 07:53 AM
It's this a breaking attent? hubergeek Linux - Security 1 11-27-2002 12:24 PM


All times are GMT -5. The time now is 01:47 AM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
identi.ca: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration