If you are completely new to programming, you may have trouble deciding how to start at all.
Shortly speaking, do the following:
I've heard many recommendations. Let us regard several of them:
Python
- is the most recommended, and often used in schools and universities for beginners. It allows fast start
without kicking much around project and program structure and has laconic and clever syntax. At the same time
it is professional, industrial-scale instrument.
Python Tutorial will guide you at the beginning. Downloads page provides distribution packages - though at beginning it is worth using online compiler, like IdeOne which is suitable for small programs. Note there are two main versions of Python - 2-nd and 3-rd.
C
- some schools and universities prefer to start teaching with this language. This language (not C++
) can
make your mind clearer about "how computer works internally" and how many simplest things should be written
manually (since they are absent in standard libraries).
However, I regard all this mess with pointers an unnecessary overhead for beginners. It was one of my first languages and I liked it much, but I do not think you should start with it.
The greatest book on C is C Programming Language by the language authors Kernighan and Ritchie. The compiler itself usually is included in distributions of all unix-based operating systems.
Java
- it is a cool language for development large business applications. People who say it is good for
newcomers point that Java has many strict rules which allows avoid mistakes. Syntax is C-like, which is also
used by many other languages.
But though I myself use it every day, I do not recommend it. There are too many rules for beginner to learn, and too many concepts to understand, so that one may feel the language too difficult to start. Some people start with it to be able to write for Android. Anyway starting with Python will greatly help understanding Java later.
To write in Java you'll need to download JDK package from java.oracle.com. Good book to learn is Java 2 by Cay Horstmann though there are several other worth of reading.
C#
- it is in many ways similar to Java
(you may think of it as of Java-like language made by Microsoft). For
beginner there would not be great difference between them.
C++
- the great improvement of C
language which offers almost as rich functionality as Java. However, the only
advantage is the speed - both Java and C# are 2-5 times slower. It is the main language used for embedded and
system programming.
At the same time all features of C are preserved so you still have a chance to get overwhelmed by complexity of some concepts. Shortly speaking only start with it if you know you need it.
PHP
- most common language for web-programming. This web-site is written in it also.
It is one of the easiest language to start. However, not as easy to learn it deeply.
There are a lot of under-water rocks which will make you stumble.
Syntax is C-like also and many function names resemble the same from C libraries.
Basic
- was created as a language for non-programmers. It is somewhat outdated now, but you may try it if you
find even Python difficult for you. Basic will help you to learn the core of programming logic with only about ten
keywords.
Though it is not easy to find some implementation of Old Good Basic
now, there are some online emulators. Refer
to wikipedia page on Basic - programming language. Do not try to start with
Visual Basic and other specific derivatives.
JavaScript
- easy to start language used mostly in web-development on browser side. Has Java-like syntax, but is
a very different thing. There are not many stand-alone compilers or interpreters, but JavaScript could be executed
by any browser if you know how. If you do not know, perhaps it is not the best idea.
Haskell
- there is a resource claiming that Haskell is suitable for teaching small children:
Haskell For Kids.
To be honest, I do not believe it is that easy matter. However you may want to try.
It is a cool and specific language of functional family with great deal on type-safety etc - but it is complicated enough and probably you will find it not easy to use it for starting with simple tasks involving input and output.
Other languages. There are many. Some professors tell to start with Fortran
since it was the first language. Not
the best motivation since you never learn writing with a goose quill. Some books insist on starting with Lisp
or Prolog
which are too specific. There is an ActionScript
resembling JavaScript
, but you need to find out
how to compile and execute it. There is Erlang
, F#
, Scala
and Ocaml
which are the most popular functional
languages. Several variants of VisualBasic
. For teaching students there was invented Pascal
which later
evolved into Delphi
. And many others...
However, if you have no knowledge of programming and your future goals, you have no any reasons to use these.
Now just start - and Good luck!