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.
This has been on the roadmap for years, nothing really new here. This is one of the few areas where Microsoft is making Windows better. Universal print is a very good things and so far works as expected. The last step is ending the option for 3rd parties to add traditional custom drivers.
It is somewhat of a hurdle, but it is for a long-term good. The downside is that printer manufactures are likely going to use this as an excuse to force users onto new printers. Considering this roadmap has been public for years, then printers sold during that time should be covered...but I'm sure they will have a different opinion.
Where are you seeing that? It seems hard to believe considering nothing in the Apple ecosystem gets that level of access, and the same for Android unless you put some kind of custom rooted image on the phone. It just seems like asking for something that hasn't ever been given to anyone, is a stupid strategy; it's going to be an automatic 'no'.
Printer companies have been doing a half-**** job of creating and maintaining print drivers forever and this isn't new. Microsoft has been warning and preparing companies that their drivers needed to meet certain requirements. It has got to the point over the last few years that Microsoft has been moving towards handling the print drivers in-house rather than continuing to watch the printer companies mail it in. Hopefully, the consumers will benefit, though I think the enterprise is probably more of the driving force.
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
https://www.neowin.net/forum/topic/899286-getting-started-faq/Share on other sites
70 answers to this question
Recommended Posts