Which programming language to learn first?
One of the most frequently asked questions in the forums for beginners is “How to get started in programming?” Or “What programming language to learn first?” In this article I will try to answer these questions, although there will be others who will have different opinions. To try to be objective, I have based myself on the opinions on this topic of the programming forums.
To start, there is no programming language to start programming, programming begins on a paper, making algorithms. Of course to see if the algorithms work may be more comfortable to use a programming language. In this case the only thing I recommend is to use a simple language that is not object oriented, nor graphic. A good choice can be Basic, Pascal, Python and above all the syntax of the latter will be more useful later. But we should not exclude any language since even the language of a calculator may be sufficient to test simple algorithms. Also, it is good to have an idea of the types of language, what is a compiler and other general things. (http://www.computerscience.org/resources/computer-programming-languages/).
At this point, we already have some bases to start programming … something else, you do not have to program for programming, you have to have a goal, an idea, the need to create a program. Here, I can do nothing for you, this is according to your tastes, knowledge, and now we must make the first technical decisions:
- Object-oriented language?
- With virtual machine?
- User interface?
- Access to a database? If so, which one?
Once you have answered these questions, the number of programming languages will be reduced.
Below we will look at the programming languages that are mostly recommended to start programming, taking into account the learning point of view.
Note: there is also a very playful way to discover programming: KPL.
KPL stands for Kid’s Programming Language (http://www.sciencebuddies.org/science-fair-projects/project_ideas/CompSci_Kid_Programming.shtml).
Impeccable interface (colors, sound, and graphics) and a learning of programming oriented to the conception of games. The idea is to learn to have fun. If you really do not know anything about computer or programming, this can be the gateway. In the same way, this is a way for children to learn. This program is a freeware and is not limited to games, and of course, the page is multilingual (English, Portuguese, French and some Nordic languages), just like the program. In terms of language, it uses terms commonly used in other languages: Begin, End, Main, False, True, etc.
The programming languages we can use
Delphi / Pascal
A good solution, compilers and development environments is found free (under certain conditions). We can start by doing small programs in the Pascal Shell and then we can move (after having learned the notion of object) to more powerful things with graphical environments thanks to Delphi (and Kylix under Linux). Language is relatively intuitive and rigorous, creating graphical interface is simple, and we can quickly feel at ease.
The portability is mediocre but exists towards some platforms (Kylix …)
Object-oriented language, very portable, syntax also used for Internet scripts (syntax, not language …). There are lots of free development environments on the web: there is no more to choose according to our tastes, however, it does not have the ease of Delphi with regard to the graphical interface. This is a “last generation” language that will give an interesting experience to those who wish to work in computer science.
Simple, fast, creates good programming habits, light (so much so that moving to another language after becomes heavy), open, lots of documentation on the Internet. This allows us to quickly get into action, whether creating powerful scripts (thanks to object-oriented programming) or other things. It is also “latest generation” and portable. It works with a virtual machine that can be packaged thanks to some classes available on the web (they are of all kinds and for all purposes …) in an exe to distribute the application in a simple and independent way.
Python’s official website: http://www.python.org/
Python Tutorial: https://www.udemy.com/a-gentle-introduction-to-python-programming/
It is the future according to Microsoft, there are good things and bad in this platform but it allows to program graphical applications of simple way, only runs in Windows and with some adaptations in Linux. I would recommend C # which is the “native” language of this platform: its syntax very similar to C and Java, there are no pointers, everything is done at a level of abstraction superior to the old Microsoft languages. It compares to Java and Python except that it is not free.
A free development environment and Open source for .Net: http://www.icsharpcode.net/OpenSource/SD/
For me the object-oriented language par excellence. Free, simple syntax, imposes an unparalleled rigor in object-oriented programming. Unfortunately it is not very used, it is rare to find a job with this, but gives a solid reference, and with things like Squeak allow to do a lot of thing with it.
Dolphin Smalltalk Tutorial: http://www.dolphinmap.net/wiki/Documentation
The ones we can use ultimately
C / C ++
These are good languages, but with a complicated syntax that does not facilitate their learning. In addition the use of pointers makes that its use, even for the professionals, is complicated. The advantage is that these languages can be used on various platforms (after compilation) and, once mastered, make the others look simple. These languages are still widely used in the professional world. Use it if you want to make computing your profession.
To learn C: http://sopa.dis.ulpgc.es/so/cpp/intro_c/
To learn C ++: http://zator.com/Cpp/E1_2.htm
Borland C ++ Homepage: http://www.codegear.com/en/products/cppbuilder
A language initially intended for the development of dynamic web pages. Its syntax is very similar to that of C ++. PHP is fairly simple to handle and allows you to easily connect to a database. To develop dynamic web pages, a good knowledge of Html and possibly of SQL is also required if a database is needed.
It allows to quickly see the work, putting it online, and thus have the comments / suggestions of the users.
We can also develop other non-web applications with this language.
We can program procedurally or object-oriented, at our choice.
It is a good language but not necessarily the best language to learn. It is powerful and permissive but at the risk of learning bad habits. Especially with regard to web pages, this does not influence to be properly programmed from the beginning.
If you are looking for language that is easy to learn, allows you to learn object-oriented programming, and good programming habits, then choose a language like Python.
To learn PHP: https://www.udemy.com/php-for-complete-beginners-includes-msql-object-oriented/
Official page: http://www.php.net/
Language still used in programming real-time systems. It is easy to learn but it is recommended especially for future computer scientists, if not, there is not much interest. It is better to go to Ada only with the goal of “real time” since it tends to disappear.
To learn Ada: http://groups.engin.umd.umich.edu/CIS/course.des/cis400/ada/ada.html
The functional languages are numerous, they are classified into two large families: the pure (haskell) and the non-pure (family lisp). At the same time the family of cigars are classified into two: the truly pure, without effect side effect (haskell family) and ML family (Caml, SML, …). The way to program is totally different in relation to the other languages. Functional programming is another way of viewing a program and this does not prevent for example having a functional and object oriented language (scala for example) or even a functional language that associates imperative / object oriented / functional (Ocaml). Knowing one of these allows to have good foundations and will also allow more mathematical oriented people to move smoothly to computer science. These are usually used in numerical analysis or in artificial intelligence (but it is only because of their origin). We can use them to program everything that can be programmed with other languages (commonlisp community is very active)
(X) HTML / CSS
I’ll be brief, writing a web page or website in HTML is to programming what to drink a glass of water is to alcoholism. Here is to present a document, not to program, and not because some scripts are added, this changes a lot.
To learn HTML: http://www.w3schools.com/html/
To learn DHTML: http://w3schools.sinsixx.com/dhtml/dhtml_intro.asp.htm
Let’s be clear, this seemingly simple language is not at all adapted to the learning of programming. Its flexibility and power can cause you to acquire poor programming habits and can even discourage you from the mistakes you are allowed to make. It is better to start learning a rigorous language, then to exploit to the maximum Perl.
To learn Perl: http://www.wikilearning.com/
Visual Basic / Basic: D
The professionals who have worked with him advise against it. This creates bad programming habits (it is not necessary to declare variables, no notion of value / reference, unsuccessful attempt to program with objects, …), and also Microsoft (it is a proprietary language) has abandoned it to privilege Framework .Net. In conclusion, there is no free version, therefore it is necessary to pay. The only positive point I would recognize is its playful side and the ease of making graphical interfaces for Windows (something I forgot, it’s not portable …), but it’s not the only one, if it’s the one that interests you, rather lean towards Delphi or .Net.
The case of Basic is more or less the same, there are free compilers, but it is an obsolete language that is neither fast, nor portable, nor oriented to objects, nor rigorous. Lean over Pascal which will then allow you to evolve towards Delphi.
To Learn Visual Basic: http://www.vbtutor.net/vbtutor.html
For mathematicians, they can try the languages of test management systems. At the moment, their potency is limited but they are expected to develop over time. At the moment the most outstanding are the ML family or Haskel. For Ocaml, we have Coq. The paradigms are based on logic.
To learn Coq: http://coq.inria.fr/ (in English)
A tip, it is very common in the programming world to have to read articles in English, so we will learn to program in better conditions if we can read in English or better yet if we can write. (To ask questions in specialized forums …).
Well, I hope it was as complete as possible.
You can find many free compilers for different languages at this address:
PS: Getting started in programming is also being faced with a thorny question: But why does not my program run? Error messages displayed (or not) by the compile or runtime environments (or the behavior of the two) sometimes immerse the novice into total confusion that can become exasperating. A good method is to give the code to someone with experience to read it first, and / or explain the problem to another person. Sometimes saying out loud our reasoning will put us on the right track. Finally the ability to program (well) goes (often) on par with that of abstracting from this material world in which we are submerged. Welcome to the world where nothing is really concrete.
If you like programming too much, you might dream about it … Then have a piece of paper and a pencil (the computer gun) on the night table, take note of the solutions that come to mind and try them out in the morning.