I’m interested in learning a programming language. Any time I ask people in the field which one is best, I get numerous answers (C++, java, html, visual basic are most common). So, I’ll ask the legion of dopers out there:
Which programming language is most usable/marketable?
Tank You berry much
Well, I can program in Pascal, C++ and a little Java, and I’d say that Java is probably the best to learn right now. It’s being used more and more, while the others are kind of falling away. Of course, you could learn assembly, which is a pain in the ass to program in, but it’ll probably be around forever! BTW, HTML is not a programming language, it is a markup language…you should learn that too. (you can’t write an application in HTML…just web pages).
You get a lot of different answers because it’s a very subjective question. It’s like asking, “what’s the best car?”
It all depends on what you want to do. You like games? Try C++. Want some interactivity on the web? A lot of langauges come into play with that – Perl, Vscript, JavaScript, PHP, Python, Awk, PHP, etc… If you’ve never typed one line of code in your life, and you’d like to learn a programming language, I’d recommend starting with BASIC.
In today’s world, it’s pretty much useless. But, it’s an excellent foundation for other langauges, as many of them follow the “if, then” format it uses. Also, there are programming logic classes you can take at community colleges, and there are books on it as well. The logic classes don’t really teach a specific language, but rather, more of what you’ll need to know when you start learning one.
“Usable” depends on what you want to use it for. Each language has strengths and weaknesses.
“Marketable” – Check out the classified ads in your local paper. Keep in mind though, that very few of those jobs are open to people with no experience. A better question to ask would be “Which languages are most marketable for entry-level positions?” but I have no idea where to look for an answer on that. Maybe tall to the people at an employment agency.
You will discover (very soon now) that this question belongs in Great Debates.
I will go so far as to eliminate one entry from your list – HTML is not a general purpose computer language like the other three. It is a useful language, but it was designed for a specific purpose (designing web pages) and doesn’t do other things well.
Otherwise it’s really a matter of personal preference. Java, C++ and Visual Basic are all good languages, important programs are written in each of them. There are differences but they probably don’t matter to a novice since you won’t have any basis for comparison and they don’t matter much to a seasoned programmer because they aren’t barriers, just differences.
I use Java in my professional work, but I’ve used C++ too. (Also C, Ada, FORTRAN, BASIC, Pascal, Modula-2, Dylan, Eiffel, you get the picture.) So I vote for Java. But others may disagree.
I’m a programmer who works with Visual C++. I have been looking for another job recently and have found that employers want people who know C++, Java and other Object Oriented languages.
The Object Oriented approach seems very popular at the moment. Considering it’s portability and adaptability it will probably be around for a while.
Developers with these skills are highly sought after. Not to mention that the salary range is higher than other languages. Also Java programmers usually earn about 5-10K more a year that C++ developers.
I would also recommend starting with BASIC and moving on to C. Learning to program is not something that can be rushed into.
Definitely C. Virtually every engineer/programmer will need to know C. C++ is a superset of C, and is obviously very popular. But C++ programs tend to be a lot larger than C programs when compiled, and often depend on proprietary class libraries, so C++ is not appropriate for some applications and is not as portable. There are many microprocessors that have C compilers written for them, but not C++ compilers. C/C++ are usually lumped together. You can’t learn C++ without learning C, so just go ahead and learn them both.
Visual Basic is a neat language. It’s great for throwing together GUI applications very quickly. It’s easy to learn. Not used a whole lot commercially, except as a Rapid Development language. Very handy for prototyping user interfaces. I use it a lot at home for whipping up small Windows applications very quickly and easily.
Java is pretty much limited to internet applications, but it is also pretty much required to know it, if that’s what you want to do.
Oh, I don’t know about Great Debates. Since different languages are best for different applications, I think this thread is best suited to In My Humble Opinion.
If it’s for marketability than Java is probably the best bet right now, but c++ has been fairly marketable for a long time, and will probably continue to be so. But if you’re a already a computer person just looking for an easy way to get things done I’d have to say Perl. It’s the most versital language around, with well tested modules for almost anything you would want to do. I have a feeling that as linux becomes more popular Perl will become more marketable in industry as well, since its based on a lot of the same free-distribution theories.
Not to start a debate or anything, but I would seriously consider never learning C if you go the C++ route. The languages are similar, but the theory behind them is so different. I learned C(and other procedural languages) long before I ever learned c++, and as a consequence, my first thought of solving any problem is procedural. I then have to attempt to translate that into an object oriented thought, and as a result my OO is nowhere as good as people I know who natively think in OO since their original training was in it.
To what extent is Java useful as a programming language? How can it be compared with C/C++ in the same breath? And I don’t mean little < 100,000 line programs, I mean the real workhorse programs used for detailed analysis of mathematical, engineering, and statistical problems?
FTR, I’ve used Java, and it just seems like a cute Web toy to me - but too damn slow to be of any real use. I don’t care what Sun says - it is NOT “only 50% slower than C/C++” - there is a much greater difference than that.
And while I’m bitching, I’ll include another bitch about the actual real-world reusability of object oriented programming (OOP). IMO, OOP is a cool thing that sounds great when you are trying to get a project approved. “We’ll just create these neat, reusable data objects and calculation modules using an OOP approach, and we’ll save thousands of dollars!!!” But IRL, you normally end up writing everything from scratch anyways, just with less budget to do it in.
Grrrrrr… (takes her “Numerical Recipes in C” book and throws it at the door)
If you want to get a good solid foundation of programming experience upon which you can build in the future I strongly recommend starting out with C. There are a lot of reasons for this. C is a great general-purpose language–while there are a lot of languages that are better than C for some specific niche, C is a resonable choice for almost any project. C’s syntax is mirrored by most other major programming languages to a greater or lesser extent. C doesn’t really force you into any particular programming style–this is very important for a beginner. Java, for example, is a nice language that’s fairly friendly toward beginners, but you can only use it in an Object Oriented style, and if you learn a non-OO language later you’ll probably be writing some wierd and circuitous code because you’ll try and force the OO metaphor onto a language where it just doesn’t belong. On the other hand, it’s easy to pick up OO programming style once you’re familiar with basic procedural style. C is sort of on the lower end of the high-level language spectrum, and learning to do stuff like pointer arithmetic will give you a good understanding of how the machine works at a fairly low level without having to bog yourself down in assembly code.
Languages to absolutely stay away from: BASIC, Pascal, FORTRAN, COBOL, Ada, or any assembly language. I would also recommend staying away from Visual Basic if you plan to do any serious programming in the future. It may be useful for writing trivial little Windows programs, but it’ll teach you to code like a chimpanzee.
I would agree with Bobort in that C is probably the best language to learn at first. And while it is moderately hard to learn, due to its heavy reliance on pointers, once you know it well, most other langauges generally fall out fairly easily.
That said…the one thing that I will stress and I will often stress when training others…Language does not matter as much as neophyte programers would have you believe. Once you have learned the main concepts of programming, what langauge you use generally becomes very much a matter of preference and applicability. The main thing is learn a good methodology, without a good methodology you will become dependent on a specific language because you will have locked yourself into a poor programming manner that is usually dependent on a languages specific twists. Even there however, don’t let anyone tell you that there is one true method of programming. One important thing in programming though, is that your code is written in a consistant manner that can be followed by someone.
After you learn a good methodology, you will find that picking up another language is a pretty quick thing for the most part. (There are exceptions of course…no other language will prepare you for the horror that is RPG for instance. )
C is definitely worth learning, but the learning curve is steep. If you’ve never coded a line before, start in a toy language like VisualBasic, even if you only use it for six months - and go from there.
And what Narile said is absolutely true: Methodology is what separates a good programmer from a great programmer. Knowing the language inside out is one thing, applying it in a structured manner is something else entirely.
It’s good if you can crack a coding problem in no time flat. It’s great if you can do so in a manner that lets other read & understand your code. It’s downright excellent if your solution is so generalised that your code might be reusable.
I had a tremendously good teacher in assembly language back when I learned 20 years ago. I’ve always found this to be ridiculously useful over the years. How else will you really learn about things like anding and orring at the bit level and just what a register is good for? Hexadecimal and octal numbers? Why shifting left and shifting right can be such neat tricks? Not to mention all the ways of initializing a register…(maybe not so useful, but fun to know).
After that, these days C and after that branching out to some other language.
Looking in the job listings of your local newspaper can tell you a lot. In the US (where I realize not everybody is) east coast companies tend to use older hardware and languages while west coast companies tend to newer stuff. Learn what local companies want - unless you plan on moving, of course. Many require some training in database language programming also. -And many community colleges require you to learn QBasic before any other languages, so often that decision is made for you.
I am leery of bothering to learn Assembler; I took a years’ worth of (required) DOS and Microsoft turned around and got rid of it. - MC
Bobort: Why should somebody ‘absolutely stay away from’ Basic (not an acronym, just became one)? I learned Basic without help and with a very minimal text. The calculator I have has a Basic clone language as its programming code, and I’ve written some interesting math-related programs in it. Granted, Basic might not be the most useful or marketable language, but what, specifically, does it do to harm you as a programmer? I’m now trying to learn C++ with a more advanced text than I had for Basic and I want to know your reasoning.