

Which programming language is the best for programming beginner? - surendra_sedhai

QBASIC was the first programming language I learned in my secondary school. It has already been more than a decade.<p>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?
======
DanielStraight
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.

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

Python

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

------
imechura
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.

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

------
madhouse
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.

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

<http://learnpythonthehardway.org/index>

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

------
euroclydon
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.

------
checoivan
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.

------
babeKnuth
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.

------
mhd
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.

------
vannevar
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.

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

------
lovskogen
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.

------
taphangum
PHP.

