Computers are so much fun
I’m not a great writer so I won’t be going into detail but here are some brief notes. When I get more than a few minutes to think about this I’ll make it more interesting and engaging to read. (I’ll also correct my grammar and spelling.)
I am writing this page because of my continuing interest in computer science and programming. I interview many people for jobs at the company where I work. More often than not, they do not understand the big daddy language of computers, C++. This is the computer language we use day-to-day and the language used, pretty much, to create all other languages. The reason for this seems to be that, in general at modern British universities, they are being taught the basics of computer programming. It would be helpful for these basics to have been learned before going to university. It leaves little time to learn the more complicated issues. More emphasis is required on Computer Science at schools to stop this delay in what our under-graduates know when they graduate. Once in a job, no-one really has the time nor inclination to learn new things.
So you wanna be a
Where to start as a computer programmer? Age and experience are what counts here. The younger you are, or the less experience you have with programs, the more likely you will need easy and simple languages. I assume in this day and age, and the fact you are looking at this on a weblog, that you at least can use a keyboard, mouse and screen.
But first: have you got what it takes to think like a computer programmer?
For an introduction to computers, a good start is the Royal Institution’s Christmas Lecture in 2008. Prof. Chris Bishop spoke about the ‘Hi-tech Trek‘ and gives a good insight into what a computer can do for us. NOTE: There are 5 lectures.
Computers process data but in order to do that they need instructions. Programming is how you instruct the machine to manipulate data. Other bits of hardware will get data into the machine and get data out again, although the computer will be controlling those bits of hardware too.
The commands come in many, many different forms because each central processing unit (CPU) is made by different manufacturers. To make things easy, computer scientists have devised languages which convert something more readable into these CPU commands. So it does not matter which computer you have, any language you learn will work on every computer. This fact is so true, that Alan Turing proved that you could make a computer out of a some tape, something to read and write from the tape and it would do everything that your latest MacBook Pro could do: just really slowly!
Why so many languages? In the same way as CPU’s are created by different manufacturers for different purposes, different languages are created by software engineers for different purposes. Luckily, one of those purposes has been to make it easy to get a computer to do what you want. (I won’t list all the languages, you can use your favourite search engine for that.) These easier languages aren’t as powerful as their professional counterparts but that isn’t their purpose.
Here is my list of languages that you should learn, in order, if you have never had any experience of programmer. My aim of this list is to suggest languages that would ultimately lead you to become a programmer at a very professional level (C++/Java). Also take a look at these 5 Tools to Introduce Programming to Kids.
Scratch : teaches you the fundamentals of commanding a computer but in a drag and drop interface (Alternative: LEGO Mindstorms NXT, Alice, Hackety Hack)
Processing.org : get away from that drag and drop and start typing. This is what programming is all about. TYPING! Depending on your interests, this language will lead you to programming robots! (Alternative: YouSRC, BASIC, Python, Arduino) (note: YouSRC is more of an education language but is pretty good at engaging young people quickly)
Java : this is a full language and used all around the internet and in your mobile phones. It was created to solve some of the issues with security that C/C++ experienced.
C# : a very recent language that adopts the syntax of the older language C++ and techniques from Java. Once you’ve been through the other languages you will find C# extremely powerful and easy to learn. It’s a great language for developing tools for Microsoft Windows. C# was developed primarily by Microsoft and used a software library called Microsoft.NET . As you can imagine, this doesn’t work on Mac OS X or on Linux. However, a project called ‘Mono’ has been addressing this issue for some years so you can develop using C# on non-Windows computers.
Doing it Online
So you want to jumpinto programming right now? Luckily, this is the 21st Century and it is possible to develop software remotely without ever installing anything to your computer. Once you’re hooked on programming you can install a software development kit (SDK) and write software that can be installed and executed on other computers.
Here are some online facilities for learning programming:
Processing.org : http://sketchpad.cc/
Java : http://compilr.com/
C# : http://compilr.com/
Doing it Offline
….[notes to come]…
A word about C++
This is a hardcore language and has pretty much become the replacement for C. One you’ve understood Java or C# you will be ready to start installing a compiler, SDK, and IDE, and developing code locally to your own machine. All other languages will have been created in C and C++ (C++ was created with C, C is now the granddaddy of all modern languages). I don’t have the facts but I’d say pretty much every device you have will have used C or C++ to write the software on it. If you want to learn why C++ is so powerful, you’ll have to take a good computer science degree. If you want to program robots and/or video games; you going to need to learn C++ and by virtue of that, C.
A word about Visual Basic (VB)
Just don’t use Visual Basic… it is not going to make you any friends in the robot and gaming community.
END OF LINE