Hacker News new | comments | show | ask | jobs | submit login
Which programming language is the best for programming beginner?
12 points by surendra_sedhai on Apr 18, 2011 | hide | past | web | favorite | 15 comments
QBASIC was the first programming language I learned in my secondary school. It has already been more than a decade.

Some of the engineering colleges teach "C" as introductory programming language. However, i somehow feel like Python is very intuitive and easy to understand. Is it a good idea to begin computer programming with Python?

I would divide languages into these categories:

Practical and beginner-friendly: C# (if you're a Windows person), Python, Ruby

Technical and foundational (start here if you don't mind studying for 5 years before you produce anything practical): C, Lisp (using SICP)

Interesting but not beginner-friendly or foundational (play with these when you get bored): Erlang, Go, JavaScript, ML, Scala, Smalltalk

Haskell falls somewhere in between the last two groups. It's very technical, and it's foundational for functional programming, but it doesn't transition to other languages as well as C or Lisp might, and it doesn't have as much support as C and Lisp.

The last group is languages that are not especially interesting, beginner-friendly or foundational. That group consists of: C++ (complicated), Delphi/Pascal (little community support), Java (crufty, limiting), Perl (nightmarish syntax), PHP (jumbled mess which allows, but does everything possible to discourage, good code), Visual Basic (basically just C# with "simpler" syntax and less community support)

Any languages not mentioned are probably either far too obscure or outdated for you to even think about now.

I welcome disagreement on this categorization.

PS: I didn't forget Objective C, I've just never used it so I didn't know where to put it. Probably "interesting but not beginner-friendly."

PPS: There is a category which includes languages from all of the above categories. That category is "Likely to get you a job." It includes C, C++, C#, Java, JavaScript, Objective C, PHP, Python, and Ruby.

Ironically, this response is VERY similar to the confusing verbosity of most programming languages. :) In Python, you would just say:


(NOTE: I do appreciate the thoughtful and detailed response. I was mainly illustrating a point for Python as an excellent programming language for novices.)

I am not a professional teacher but I tend to recommend Javascript for learning the first basics of programming.

The reasons are as follows.

1) Follows (mostly) C style syntax which transfers well into many other languages (Java, C, C++, C#, etc).

2) Lots of good examples available, just view source on your browser

3) Runs in your browser so no software to install no classpath, projects, compilation, or configuration to deal with. Also easy install of debugger, console, etc through firebug.

4) High instant gratification factor. e.g. make change, see results on web page. It makes a direct connection between the the students coding effort and creating something useful as opposed to a for-loop that prints 100 numbers to a green screen. If you are dealing with a teenager or younger person, getting something "cool" published on the web can be a great factor in motivation. Javascript requires the least amount of cost infrastructure and deployment hassles.

Lifehacker came out with a 'Learn to Code' series a few months ago (http://lifehacker.com/#!5744113/learn-to-code-the-full-begin...) and used JavaScript as the language for the same reasons that imechura has given above.

Whichever your friends or family know best (or lacking that, whichever you find the most readable / enjoyable documentation for).

You can't really go wrong with either of the mainstream languages, so I'd advise you to have a look at the documentation or tutorials for some of them, and choose one that you like best.

It also depends a lot on what you want to write, as certain languages are better for one task than the other. I wouldn't write a web app in C, for example, nor would I write an operating system kernel in python.

Python is often recommended, and a great starting point is Zed Shaw's popular "Learn Python the Hard Way:"


Zed also offers online instruction/classes. Cool guy too.

Well, that depends on the goals of the beginner in question. We could also ask which human language is best for the beginner, but the answer would invariably be the language of the culture they live in.

I was just talking to a neighbor who's a game and graphics developer. He writes code in C/C++/C#. I was telling him about my side project, a website which sells cupcake wrapper designs. We got to talking about web development and he asked me what homework would I give him to get started. Well, after some more digging, it turns out he was most motivated by the idea of making some passive income on the web.

So, while I did email him links to RoR. I told him that learning about SEO, Keywords, and WordPress is what he should do first; that he should put up a couple of "trial balloon" sites to collect emails about his ideas, and then if he found potential customers who were interested in one of his ideas, he would have some great motivation to work through that RoR tutorial.

So, my advice is: Programming is just a tool, and unless the person is interested in programming from a pure academic standpoint, it's better to first find out what they want to do with that tool, and go from there.

There's a theory about this. If one starts by learning object orientation first, it becomes second nature and easier to write well structured code afterwards(thinking of making smaller component, good structures etc) instead of vice versa, starting with procedural code and learning objects afterwards.

That's why most colleges start with Java and learn basics and object orientation, then move to C to learn memory management,pointers etc, and then Lisp and data structures to expand one's mind.

Though some courses start now with python which I find extremely cool. If I were to start again I'd like python since you can hack fully functional programs more quickly, and think about lists and data structures first instead of way later on. It also helps to rule out faster if the person is meant for programming or not.

I find Python the easiest for non-programmers to learn. Less things to account for (syntax, conventions, etc.). Allows people to be very direct with what they want their program to achieve.

The language matters less than the book or teacher presenting it. While some languages might make it a bit harder on the instructor, the inverse is a lot worse for a beginner.

And the quality of the book often depends on the prior knowledge of the fledgling programmer and his/her ambitions (important for the topics of exercises etc.).

It's hard to give an easy answer here. Scheme and Python are quite popular in this area, but not everyone should start programming by reading SICP.

I was just considering this question myself. I'm teaching programming to a friend with no experience at all. I finally settled on Lua, even though I don't know it myself. The syntax is clean, it's a compact language, and once she learns it she could use it in gaming, which she's into. My runner-up was Ruby. Python would be good too, though I think the significant whitespace is a distracting pitfall for absolute beginners.

Modern Perl, have a look at: http://www.modernperlbooks.com/mt/index.html

I'm actually starting with Node.js. I was thinking of Python, but Node seemed more up my alley, as a interface designer for web apps. Haven't had much time to dabble, though.


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact