So many popular programming languages out there. Would you saying knowing one scripting language and one compiled language is enough? What would your choices be?
No. You'll use different languages for different things depending on what you're developing for. And to improve on your programming as a whole, the more languages you explore, the better understanding you'll have about how to do things differently. There's a ton of threads on here already on recommendations but Python is a good starting language to go with.
Depends on what you define programming language to be. In all seriousness, some dont consider perl or bash or awk programming languages.
For every task, there are multiple programming languages suited for the task. You can get away with knowing one language (ie C) to do everything, but it's a pain for all but the most simple stuff.
Python and perl are nice languages in that they can do most things that you would use a compiled language for, and most things that you would use a higher level scripting language for.
If I had to pick the most bang for the buck, it would be Python + C. One scripting language, one compiled, both work well together. You can easily cover shell scripting, 3D graphics, computationally-intensive algorithms, webapps, GUIs, network programming, and most other problem domains with it. The only weak area of this combination might be compilers, and it's still not bad for that...
A lot of people will tell you "all of them", and it's true that every language you learn will (probably) teach you something about computing. But that ignores opportunity cost: learning your tenth programming language will probably teach you less than learning a new problem domain and a new set of algorithms.
Learn what you need to get stuff done. Depending on what you are planning to develop and how you wish to approach it is how you choose the language(s).
Well, it totally depends on what you want to achieve from learning any programming language.
IMHO, these are the ones you should know and they cover most of the scenario.
1. A desktop programming language, compiled and robust like C.
2. A regex wizard like Perl.
3. A strong web based scripting language like Javascript.
4. An interpreted and readable language like Python.
If you like to fire up your own codes from time to time, these are the ones you should know. Though, if you are into specific development fields, this list does not matter. You have to learn something specific in that case.
I just sort of end up learning stuff without actually making a deliberate effort to do so. Sometimes I learn because it interests me, sometimes because I need to, but mostly because I find it interesting.
I guess I don't really set out to learn, I just sort of gather experience
Edit: What I'm trying to say is that I don't see much value in planning out what you're going to learn as those sort of plans almost never work out. Instead, just try stuff and see what you like; what you have an affinity for. As you gain experience in one area you'll find yourself branching out naturally. Let your curiosity and enjoyment guide you. The languages you derive the most joy from are those where you'll be most productive
I think I'm the same as you and wonder if most people are
The OP question is something I would've obsessed over when I was in my teens, wanted to start programming, but spent more time planning my eventual entry into programming.
Once I started programming and making real applications, I became really confident in my ability to pick up any other language as needed. I totally agree that learning new languages are part of a natural progression that's hard to avoid if you're truly enjoying your craft in whatever aspect of the territory interests you.
Knowing only one scripting and one compiled language is a joke. To be successful you need to be able to pickup new languages quickly, like in a week. Sure, after a week you're not and expert in any language, or maybe even good at it, but you should be able to read and write it.
If you're just starting off, C (or something equivalent to C like Pascal) is the way to go. If you can understand pointers and memory management then you're better then many so-called programmers.
After C, you should then learn an objected-oriented language (Java's a good choice, but you could try C++ if you're insane) and a functional language like Scheme or Clojure. A logical language like Prolog may also come in handy.
Once you have C, Java, Scheme and Prolog, you're pretty close to unstoppable and picking up anything new is just a matter of learning some syntax, libraries and a few gotchas for each language.
The most important question is if you want to find a job utilizing those skills. If you just want to work on your own projects then by all means learn on-the-fly.
There's so many different things you can purse with programming skills so the advice you get will be very diversified too.
In the end it's all about reaching your goal, so identify that and look at how you can get there.
The definition of "learning" a language varies a lot too.
I'd rather focus on particular functional areas. Generic knowledge of languages won't get you too far unless you want to be a teacher.
I've done this and that in many languages but if somebody asks me which I know I never know what to answer. I tend to say I know none and that I just know a little about programming.
Actually I don't find it that much different from learning spoken languages. When I know what I want to express/understand I find it very very easy to learn quickly. When I am in the "let's look for some new stuff I don't know mode" I tend to learn very little.
I would put languages into classes, in the sense that if you can program in one language of this class, you can program the others. You won't be efficient or idiomatic, but you will be able to program.
* Python, Ruby, Javascript
* C#, Java
* Haskell, Ocaml, F#
* Forth, PostScript, Factor
* Lisp, Scheme, Dylan, Pliant
* C++
* C, Assembly
You'll need one of each, although you can do very well with just C + Python.
I thought if I was ever going to be successful at programming, I needed to learn a whole bunch of languages. Now I think that a language is only as good as the person writing in it. Learn algorithms and logic, and read code that other people have written, in all languages. Let it influence you. When it comes time to pick a language for a project, you'll be prepared to write it in the language that fits it best.
Of course, I've only been programming for 4 years, so feel free to reach for the salt :)
15 comments
[ 3.2 ms ] story [ 46.7 ms ] threadFor every task, there are multiple programming languages suited for the task. You can get away with knowing one language (ie C) to do everything, but it's a pain for all but the most simple stuff.
Python and perl are nice languages in that they can do most things that you would use a compiled language for, and most things that you would use a higher level scripting language for.
A lot of people will tell you "all of them", and it's true that every language you learn will (probably) teach you something about computing. But that ignores opportunity cost: learning your tenth programming language will probably teach you less than learning a new problem domain and a new set of algorithms.
IMHO, these are the ones you should know and they cover most of the scenario.
If you like to fire up your own codes from time to time, these are the ones you should know. Though, if you are into specific development fields, this list does not matter. You have to learn something specific in that case.I guess I don't really set out to learn, I just sort of gather experience
Edit: What I'm trying to say is that I don't see much value in planning out what you're going to learn as those sort of plans almost never work out. Instead, just try stuff and see what you like; what you have an affinity for. As you gain experience in one area you'll find yourself branching out naturally. Let your curiosity and enjoyment guide you. The languages you derive the most joy from are those where you'll be most productive
The OP question is something I would've obsessed over when I was in my teens, wanted to start programming, but spent more time planning my eventual entry into programming.
Once I started programming and making real applications, I became really confident in my ability to pick up any other language as needed. I totally agree that learning new languages are part of a natural progression that's hard to avoid if you're truly enjoying your craft in whatever aspect of the territory interests you.
If you're just starting off, C (or something equivalent to C like Pascal) is the way to go. If you can understand pointers and memory management then you're better then many so-called programmers.
After C, you should then learn an objected-oriented language (Java's a good choice, but you could try C++ if you're insane) and a functional language like Scheme or Clojure. A logical language like Prolog may also come in handy.
Once you have C, Java, Scheme and Prolog, you're pretty close to unstoppable and picking up anything new is just a matter of learning some syntax, libraries and a few gotchas for each language.
There's so many different things you can purse with programming skills so the advice you get will be very diversified too. In the end it's all about reaching your goal, so identify that and look at how you can get there.
The definition of "learning" a language varies a lot too. I'd rather focus on particular functional areas. Generic knowledge of languages won't get you too far unless you want to be a teacher.
I've done this and that in many languages but if somebody asks me which I know I never know what to answer. I tend to say I know none and that I just know a little about programming.
Actually I don't find it that much different from learning spoken languages. When I know what I want to express/understand I find it very very easy to learn quickly. When I am in the "let's look for some new stuff I don't know mode" I tend to learn very little.
* Python, Ruby, Javascript
* C#, Java
* Haskell, Ocaml, F#
* Forth, PostScript, Factor
* Lisp, Scheme, Dylan, Pliant
* C++
* C, Assembly
You'll need one of each, although you can do very well with just C + Python.
Of course, I've only been programming for 4 years, so feel free to reach for the salt :)