If you want to start learning to program, there has never been a better time. The huge popularity of the Internet means there are vast amounts of help, documentation and examples online already.
One issue with modern programming now is what language do you learn? There is a massive selection to choose from – and the choice depends entirely on what your goal is.
If you want to learn web-programming to do things like write web-based applications you can choose to learn the older heavyweights of PHP, ASP.NET or Java (perhaps for Server Pages, Beans & Faces, SpringMVC), or some of the newest additions to web programming like Python or NodeJS.
For software programming there are the older C, C++ or Java languages, or newer C#, Python or Ruby.
And don’t get me wrong here – these are just a few, and represent the languages I regard as more popular (and I base this opinion on the recruitment spam I get). There are a lot of different languages to choose from, and they all have their advantages in certain scenarios.
Luckily, the vast majority of programming languages share common aspects. When you learn one you only really need to understand the syntax differences to learn another. As an example – Java and C# are near identical. I learned Java at University and my first graduate job was for a C#-based company. In less than 2 weeks I had learned the differences between the syntax and was working confidently in the new language. The same goes for many other languages too. Perl, PHP, Python and Ruby are all reasonably similar to each other.
When I first learned PHP, it was around about 1999 and I had a very basic website that I had made originally using Lotus Word Pro (as I didn’t have MSOffice to use Word!), and I wanted to make a message board and guest book to allow basic interactivity with my website without using a third party service like Bravenet.
So the first thing I did was look at how to make a web form to save form input on the server. I had noticed a few websites I visited with dynamic content had pages with ‘.php3’ extentions. This gave me a search term to stick into Alta Vista (Google had only just started in ’99. If you wanted to search anything before then you used Alta Vista or Yahoo). My search lead me to a couple of tutorials on PHP form creation, and from there I learned how to save my html form input as a file on the web server, which could then be read back into the webpage at loading time to create my guest book.
The next challenge though was hosting – if you use a language like PHP you need a host that supports it. Most free hosting companies only offered html hosting, but with a bit of digging I found a free host to use who supported PHP, and thus I was able to update my website and take my first steps in learning the language. I later took the skills I learned to make web-games, CMS and CRM systems, learning how to have PHP interact with a database on the way.
Nowadays it is a lot easier to find free PHP hosting – pretty much every free web service seems to support it. And if you shell out for a paid-hosting service you also usually get support for other languages like Ruby too.
I learned Python because I was an early adopter of the Raspberry PI and wanted to learn about using the IO pins on the board. The best examples for controlling the Pi’s IO pins is through the use of Python.
The point I’m trying to make is if you want to succeed at learning a programming language, set yourself a goal. Challenge yourself to do something. And there are soo many sources for help now online. GitHub has made collaboration with other developers a lot easier. Older services like SourceForge are not as good at encouraging collaboration.
So my goal was to add interactivity to my site. What goal would be yours?
Article status: PUBLIC DRAFT ; revisions will follow.