Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Alan Perlis once said: "A language that doesn't affect the way you think about programming, is not worth knowing".

I am not proud of the fact that I started programming with scripting languages first(php,then javascript and now learning python).

I dont have any experience in c,c++,java,.net,c#,objective-c.

Programming is such a vast field,it would take an eternity to get down to all aspect of it.

I cant go back in time.But there are lot of people who would benefit from this question.

MyQuestion:-If anybody had the option of going back in time,Which programming languages chronologically should that programmer shoot for?

The obvious answers might be opinion and purpose/requirement based,But keeping in mind the limited time we have,which languages we shouldnt miss out for to get thorough understanding of programming.Difference in opinion is OK,just looking for the approximate chronology.

Hope I am clear and not misunderstood.

share|improve this question

closed as primarily opinion-based by kevin cline, NickC, GlenH7, gnat, MichaelT Aug 25 '13 at 0:12

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

@MESSIAH: Re: "I can't go back in time." You don't have to. There is no reason for you to feel bad about your programming past. Everyone gets started somehow, and it seems improbable to get everything right right from the start. Learning order of programming languages is therefore perhaps overrated. Just because C was not the first language you learnt does not mean that you cannot learn it now. It's all about motivation! If it interests you, don't think about the time it will take you to learn; just immerse & enjoy yourself! –  stakx Aug 24 '13 at 23:55
Re: "to get thorough understanding of programming": If you are sufficiently interested in programming, and therefore keep discovering & learning new things, I believe this understanding will come by itself, given time (perhaps 10,000 hours). –  stakx Aug 24 '13 at 23:59
"GURU'S of coding always recommend starting something with low level languages(c,c++)" really? name one? plenty of people recommend learning a language that lets you get close to the metal but rarely as your first language. –  jk. Aug 25 '13 at 6:30
@jk.:People have always told me to start that way.I understand that learning the concept of any programming languages is critical than order,but still asking just to get an idea..I dont want to be a scripter all my life..i mentioned in my question that This will be opinion based and its completely ok.. –  Jayesh Jain Aug 25 '13 at 6:43

2 Answers 2

GURU'S of coding always recommend starting something with low level languages(c,c++) to get thorough understanding of programming.

Not in my experience; or at least not in the past 15 years or so. Low level programming provides little but impediments to beginner programmers who need to focus on problem solving, program design and debugging skills. Even if C and C++ provided some particular insight about computing that was unique across programming (and they don't) that isn't worth the impediments they place in front of beginners.

Difference in opinion is OK,just looking for the approximate chronology.

There is no approximate chronology. There's no sort of prerequisite or RPG leveling progression for programming - and even if there was, programming languages are the least useful bit. It's like measuring someone's skill at driving because they've driven a Ford and a Chevy...

What is often recommended is to start with some relatively high level, popular programming language. Something that lets the beginner focus on programming rather than syntax. Popular languages have more learning materials (including people to answer questions). Once they have a solid grasp on the language and programming basics, then start spreading out based on utility. If you need to do webdev, pick up Javascript. If you need backend stuff, SQL is important. If you're doing systems programming then C will be important.

After that it depends on you. Most recommend a breath of paradigms (regardless of language) to help broaden your ability to solve problems. If you're specialized in your career or what you want to do, that may be less useful than dedicated study in your specialization. If you aren't the sort with the mental agility to deal with so many problem solving tools, then maybe it's better if you're good at one thing than mediocre at many.

share|improve this answer
+1 for "There's no sort of prerequisite or RPG leveling progression for programming" –  Vitalij Zadneprovskij Aug 25 '13 at 6:45

In my opinion, programming is about solving problems. We have different tools we use in different situations, like a hammer to hit the nail, and a screwdriver for tuning screws. We use each programming language depending on the problem, so the question really depends on the problems we encounter:

  • For problems requiring performance, like the fastest way to sort a list, we prefer to use low-level languages which give tools to use all the potential of a computer;
  • For complex problems, like managing a database, we prefer more abstract languages, to really focus on the constraints;
  • For multi-platform programs, like an calculator application, we use more high level languages because we don't want to depend on the computer, etc.

The first programming language we learn is not a matter of pride. At that time it could be a mistake for the problem we encounter. But it doesn't matter because we learn from our tries and we continue to program.

My first program was a quiz made with Excel worksheet. I think it was really cool and I want to extend functionalities, so I use VB. Then I read a book about C89 and I tested it and I love it, then C++ to use SDL library to make a game. Nowadays, I have a range of tools to use, even though I started with a program that is not even a language.

To answer the question, I don't want to give a list of programming languages to discover, but if we want to write goods programs, we need to understand how it works. It is like a car, when we learn to drive a car, we learn how it is working, so we know why it is impossible to shift gears when we move back for example.

I think it is really important to know how a CPU works if we use low-level languages, how a garbage collector works if we use Java, how page caching works if we write web pages, etc.

This knowledge is acquired depending on our way to learn. Some people prefer to read a book, some people read source code, some experiment and try to break the program.

There is no ultimate way to learn programming, and each developer history is really interesting, because it reflects our passion on solving problems.

share|improve this answer

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