A recurring question on these boards is ? how do I get started in programming? ? Whether it?s choosing a programming language, finding tutorials or choosing an IDE, this FAQ is here to provide some guidance.
The FAQ assumes you want to start making desktop applications, with the most likely purpose of preparing for a Computer Science or Software Engineering degree. If you want to program websites, stop reading this and head over to w3schools.com. If you?re aiming for a particular domain (games, robotics, research etc), read this and then if any doubt remains please ask in the forums.
1) What programming language should I start with?
Short answer: Any widely used, general-purpose programming language can be a good choice. If that can be of any help, this author?s opinion is that you can?t go wrong with C#.
Long answer: What you?re looking for is a general-purpose programming language that:
Will teach you elements common to most languages (statements, expressions, loops, conditionals, functions, objects, operators etc)
Has a relatively clean syntax, logical design, and doesn?t lose you in low-level details
Is popular and useful
Has good IDE support so you can concentrate on learning how to program and not how to fight your way around crappy tools
Let's compare 4 of the most widely recommended languages:
C:
Barebones, ?close to the metal? language, goes hand-to-hand with a course on computer architecture
Ancient and eternal
Hard to do anything graphical or even text-based (GUIs, games): C is primarily designed as a systems programming language
Lacks such basic features as a string type, a container library, support for OOP, etc.
C++:
All the advantages of C plus support for objects and generics, and better standard library
Essential skill for any game programming position and in a wide array of domains
Complex at the outset: hard to learn, hard to master
Like C, it is mainly designed as a systems programming language
C#:
Logical, reasonably simple
Productive for GUIs, games, databases etc.
Shields you from the OS (the .NET framework act as an intermediary), a good thing in many ways except for learning how computers work
Not meant for writing device drivers or other such low-level code
Python:
Highly intuitive and elegant, geared towards beginners
Interactive prompt lets you learn by trial-and-error much faster
IDE support (debugging tools, etc) not great
Shields you from the OS and computer architecture (same as C# in that regard)
Other possible choices:
Java (similar to C#; if you're on Windows, C# is the better choice)
Ruby (similar to Python, but not as popular)
Objective-C (popular for Mac and essential for iPhone development)
Visual Basic (very similar to C#, but geared towards VB6 developers and beginners; many would say its peculiar syntax and legacy baggage make it an inferior choice)
Functional languages like Scheme, Haskell, F#, Lisp, etc. which are interesting from a CS perspective but not that widely used.
One good IDE (Integrated Development Environment). What is available depends on your platform:
WINDOWS:
For C, C++, C# and Visual Basic, look no further than the Express Editions of Visual Studio. They are free, stripped-down versions of the most widely used IDE in the industry. Check out the video tutorials there to get you started. If you are a student, you also might be eligible to a free, full version of Visual Studio through Dreamspark or MSDNAA.
The remaining tools are compatible for Linux and Mac as well:
For Java, both Eclipse and Netbeans are great choices. Be sure to check the great tutorials offered on both of these sites.
An alternative for C, C++, C# and VB development is MonoDevelop. Frankly, Visual Studio trumps it on Windows, but it's pretty much the only way to do serious .NET (C# and VB) development on Mac and Linux, where Visual Studio is not available.
MAC:
In addition to the cross-platform tools mentioned above:
For C, C++ and Objective-C, be sure to get Xcode. The recommended choice for developing iPhone applications as well.
LINUX:
In addition to the cross-platform tools mentioned in the Windows section:
For C and C++, the best IDE is probably Code::Blocks, but there are several alternatives.
Note that you don't necessarily need any particular IDE. Some people, especially Linux users (for some reason) prefer a "simpler" setup using just something like Programmer's Notepad (or even plain text editors like notepad. gedit etc) in combination with their favorite compiler (GCC, MSVC, etc).
You will still hear people recommending Dev-C++ around the net. To put it simply: don't use it.
Question
Andre S. Veteran
A recurring question on these boards is ? how do I get started in programming? ? Whether it?s choosing a programming language, finding tutorials or choosing an IDE, this FAQ is here to provide some guidance.
The FAQ assumes you want to start making desktop applications, with the most likely purpose of preparing for a Computer Science or Software Engineering degree. If you want to program websites, stop reading this and head over to w3schools.com. If you?re aiming for a particular domain (games, robotics, research etc), read this and then if any doubt remains please ask in the forums.
1) What programming language should I start with?
Short answer: Any widely used, general-purpose programming language can be a good choice. If that can be of any help, this author?s opinion is that you can?t go wrong with C#.
Long answer: What you?re looking for is a general-purpose programming language that:
Let's compare 4 of the most widely recommended languages:
C:
C++:
C#:
Python:
Other possible choices:
2) What are some good tutorials on the Internet?
Classified by language:
C/C++
C#:
Python
3) What software do I need?
One good IDE (Integrated Development Environment). What is available depends on your platform:
WINDOWS:
The remaining tools are compatible for Linux and Mac as well:
MAC:
In addition to the cross-platform tools mentioned above:
LINUX:
In addition to the cross-platform tools mentioned in the Windows section:
You will still hear people recommending Dev-C++ around the net. To put it simply: don't use it.
4) Can you recommend some books?
For complete beginners:
C Primer Plus (5th Edition)
C++ Primer Plus (5th Edition)
Illustrated C# 2008
Beginning Visual Basic 2010
Learning Python: Powerful Object-Oriented Programming
How to think like a computer scientist: Java edition, C++ edition, Python edition, Ruby edition
Will add more later !
Link to comment
Share on other sites
70 answers to this question
Recommended Posts