I'm finally taking the plunge! I've been intimidated by Code for too long!

I have recently made the decision to become a software developer/engineer. My goal is to become a member of a small or large team working on multi-platform software. Not sure if I am more interested in the whole web engineering side, but mainly applications for home and small office users. I picked up a few books on C++ and have began to study this language and I figure its best to ask around before I go ahead and learn something I wont use in my field.

I have a learning disability so I need to study up before I even attend school otherwise I fall behind. For what I'm looking for, are there any suggestions? I hear so many things. For example, C++ is a language that is almost limitless on its application, has been around since before 1980. Then I hear that C# is a more structured/advanced language. Though C++ allows for a more versatile hardware integration.

Then I hear that JAVA is the new hype. From web application to Blue Ray DVD player interfaces, running across different platforms and integrating flawlessly with other programming languages.

So, after hearing these opinions from well established sources as well as newbie's such as myself, I would like to through it out there one more time to make sure that I am making the right or wrong decision. I would really appreciate your comments on this subject, as I am very confused and am feeling somewhat misled.

Thanks a lot,

Joe

Hi there Joe and welcome to Daniweb,

IMHO there is no real right or wrong answer here. But speaking from personal experience I learned Java first then moved on to C and C++. I found this way of learning the three languages effective for me and there are a few reasons for this.

Java is called an object oriented language. Many people (myself included) find it easier to program in such a language because (almost) everything in the language is an object. This makes it easier to design and subsequently code.
Another reason why I found Java an easier first-up language was the compiler gives very descriptive errors when there is a problem with your code.

C++ is also object oriented in theory and is a very popular language. It is hard to see C++ becoming extinct because of this popularity. However I found that debugging C++ was particularly difficult for a beginner.

C is not object oriented at all, it is called a procedural language. I found C much harder to learn than the other two.

I don't really know much about C#.

However all of these languages do have a similar syntax to them. If you learn C++ chances are that you will at least be able to follow a java program and vice versa. In short, Java and/or C++ are both good languages to start with and my opinion stated above is probably a bit biased by the fact that I learned Java first. Both will serve you well in the future though.

My other suggestions would be to also consider Python and PHP, PHP in particular if you're into a lot of web stuff. Also on the "web-centric" list would be Javascript.

If your ultimate aim is to work professionally, then you'll end up knowing a couple of languages in depth, several more will be familiar, and yet more you'll be able to "get by with, if you've got the manual". With this in mind, which language you learn first doesn't really matter so much. And over a career, you'll learn new ones as well.

I was for example taught Pascal, but I never used it professionally, and I've never considered it a waste. It was just a practical manifestation of all the "how to..." information.

The choice for you at the moment is trying to decide which vehicle to buy without having learnt to drive. Nor have you decided whether you want to be in F1 or a road haulier.

For sure there are a whole set of skills unique to each, but there are also significant similarities across a very broad spectrum.

Continuing with the car metaphor, you'll want to practice in a nice easy car which doesn't bite back. C++ is a Ferrari. Fast and sleek to be sure, but also capable of being turned into instant wreckage unless you're careful.
C is also a Ferrari, but with somewhat loose steering, and suspect brakes ;)

The languages I mentioned above are good in the sense that if you make a mistake, the worst that usually happens is that the program just doesn't work. C++ on the other hand is also capable of working despite what you do to mess it up, or play "head games" with you by making something else break instead.

For me, the portable skill is knowing how to program. These are the skills which allow you to look at a list of requirements, organise those into a coherent design and then implement that (in possibly several languages) to produce a working program.
"Object Oriented" programming is just one of several different (and complementary) techniques for organising these steps.

For example, if you know you need a for loop, then at the worst all you'd need to do is look up the syntax in the book. After half a dozen languages, you'll realise that most for loops look pretty much the same. There are after all only a finite number of ways of saying "start here, stop there".

But the opposite of memorising the syntax for say C++ isn't going to teach you anything about how to write programs. Yes, you'll be able to recognise C++ when you see it (I can recognise French when I see it), but the real trick is being able to write it.

There are a lot of "hello world" programmers which can cope with the typical student assignment, but writing larger programs (ones which take weeks or longer to write) are way beyond their reach.

commented: Some good, friendly advice there and I especially like your car analogy :) +1

Thank you very much for your time and information. I appreciate it very much. You guys are definitely the type of people that belong in a community like this.

Since I am already familiar with HTML, Java and PHP seem to be the better languages to start with. Are there any specific compilers that you prefer to work with? Money is not a problem. I would rather measure twice and get it right the first time around.

I will be attending school spring 09. So I should have enough time to acquaint myself with these languages before then. Realizing that I will have to learn more than just one or two languages to develop professionally, I'm not so worried about learning the wrong ones. Where to start is my only concern at this point. Although, between your replies I believe we've addressed that concern as well.

Again, thank you guys for offering your experience to assist me in my situation. You have helped me a great amount.

Sincerely,

Joe

Hello again,

I'm not sure about php (in fact I think you need to work in a server environment to write in php??) but for java the javac compiler is fine for a beginner. Also there are lots of really good tutorials and some great downloads and documentation on the sun website (sun are responsible for the development of the java language) http://java.sun.com/ . If you are planning on developing in the windows environment you might want to consider downloading Cygwin from their website http://www.cygwin.com/ which is a unix-style environment for windows.

Hope this gets you started,
darkagn

C,C++ would be an ideal start but you will find many advising either RoR or Php

C++ or Java will be the most useful to learn for future coursework, though PHP, Ruby, and Python are fine for getting your feet wet in a scripting language.

I want to chime in with something too Joe. One of the points Darkang made was good diagnostics, and I've been telling students for years that a good language processor provides good clear messages. Compare that to some of the database products and you'll get a headache. When I got out of college, the languages of choice were Basic, Fortran, and Cobol. With mainframes still in the mix, there is actually still a market for cobol programmers, but given your age and starting point, I certainly wouldn't recommend you start there, I just wanted you to hear some history. As PC's and PC based applications came into vogue, so did the newer languages. I faught the college I taught for to get updated and it was an uphill battle. At the time, Powerbuilder was the "buzz" and newest toy, but it had a steep learning curve and was too expensive for an academic setting. That fact is what gave Visual Basic its opening. Earlier, HP was to become the number 2 computer company behind IBM. HP's HP-3000 supported Basic, Fortran, Cobol, and Pascal, and in fact, HP re-wrote it's operating system in Pascal, and viola, Pascal became the buzz for a while. Meanwhile, VB is going through it's iterations. As the midrages machine died their slow death, and Server software became stable enough platforms for business to rely on, the other languages took hold for good. Even only 3 years ago, I would have told you to learn VB and C++, but Microsoft shot VB in the foot with a 12 gauge shotgun. Business wants a stable platform for a 5 year window! And Microsoft doesn't get it. Enter VB.Net. It says right in the manuals "we don't recommend you convert your VB applications to VB.Net, we recommend you re-write them." So if you were a company with a commercial product written in VB, you had to be scratching your head. That first iteration of VB.Net lasted a year, and now we're on another version with a newer name. Most of that is just Microsoft marketeers with greedy attitudes that don't understand squat about product life cycle. The public is not going to buy in to a new version every year, especially with the painfully little added features each year, and the typical and expected plethora of bugs that should have been worked out BEFORE the product was released.

I have to tell you 3 things in answer to your question.
1. The other chiming in here are giving good solid advise tempered with what we've seen in the market over the years. (That funney gray area called "experience".)
2. Expect to be fored in to learning several new languages over your career.
3. The skills that are in demand in the marketplace are influenced by geographic location as well. What's popular in California may not be so popular in New York, or other parts of the world.

For now, Microsoft has shot VB in the foot, and they seem to be relying on C# as a staple, and I see it in the marketplace as well. For web related, Java, Javascript, and the other languages mentioned are likely to be around in a 5 year window. Good luck.

commented: Great historical info and good to hear your point of view from your experience +1
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.