Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I want to learn multiple technologies. Currently I have knowledge of core Java, C, and PHP. I want to know the approach which should be followed to learn multiple things. I know if you know the core concepts of the behavior of programming language, any programming language can be learned. I want to make command on such language in a way that I can talk with them. I am doing lots of coding and surfing but I think there is an approach by which we can communicate or talk with programming language.

share|improve this question

closed as not a real question by Tom Squires, Bernard, Walter, Thomas Owens, ChrisF Dec 2 '11 at 14:23

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

Learn one langage well first. – Tom Squires Dec 2 '11 at 13:46
i have good command on object oriented programming. – Sumit Neema Dec 2 '11 at 13:48
I think you should learn technologies as you need them and not have as a goal learning lots of them just for the sake of learning them. – Giorgio Dec 2 '11 at 13:51
i am continuously facing such conditions becuase we work on all technologies and we have a small team of 4 members.that's why i am asking – Sumit Neema Dec 2 '11 at 13:55
What is the problem exactly? Managing to learn different technologies in parallel? – Giorgio Dec 2 '11 at 13:57
up vote 2 down vote accepted

I would suggest that you:

  • Immerse yourself totally in one new language at a time.
    • For me, fluttering between new languages means that I don't learn any one well.
  • Plan out what you want to learn and how long you want to spend learning it.
    • Long enough to get a good feel for the language, but not so long that you're itching to get onto the next.
  • Choose languages from a number of different paradigms. Imperative, declarative, procedural, object-oriented, functional and even logic all have their place depending on what you want to do.
  • Choose languages with different features. Static/dynamic, weak/strong type system, high/low level, modern/traditional.
    • Only with exposure to a good range will you learn the benefits and challenges of each.
  • Try to learn not only the language, but also the idioms and conventions of that language.
    • This takes time, but if you only have a hammer, you're more likely to treat everything as a nail, and it is well worth having a full toolbox.
  • Try to have in mind a project that you want to try and implement in that language.
    • Play to the languages strengths. Don't try to write a text processing utility in assembler, unless you're feeling masochistic.
    • Make the project tough but not overly ambitious. You want a challenge that you can learn from, but you don't want something so difficult that you get put off.

Last year, one blogger decided to Learn 12 New Programming Languages in 12 Months. His language choices included:

  • Clojure (a Lisp dialect for the JVM), Factor (a stack based language), Go (described as a cross between C++ and Python), Haskell (a purely functional strongly typed language), Erlang (a fault tolerant, real-time concurrent language), Scheme (another Lisp dialect), Fantom (which claims to be portable across the JVM, .NET CLR, and JavaScript in the browser), Scala (a JVM based language which combines OO and functional paradigms), OCaml (another statically typed, OO/functional language), Ruby (popular with Rails), Lua (a small, portable scripting language) and Prolog (a declarative logic language).

It was a tall order, and he only got around to learning four languages in that year (Clojure, Objective-C, Fantom and Lua) but the planning probably gave him a good overview of what was out there and I'll be interested to see if he has managed to find the time to learn the 8 more langauges he set as his goal this year.

The easiest option for structuring your learning mulotiple languages might be a book like Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages. This covers an interesting selection of languages (Ruby, Io, Prolog, Scala, Erlang, Clojure & Haskell) which have a range of language features, and should help many programmers who have only been exposed to the usual mono-cultures of curly brackets languages.

share|improve this answer

If by "technologies" you mean languages, then what you really need to learn is language theory and compiler design. Once you know how a lexer identifies tokens, how the parser builds an AST and how the code generator turns the AST into assembly language, you're pretty much set to figure out any procedural language.

If you truly mean different technologies (like relational databases, web development, map/reduce frameworks and sensor networks) then I'd recommend you take them one at a time, and create a sandbox project using each one.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.