Which programming language should I learn?
Like horses for courses there’s no “best” language; it depends on why you are learning to code in the first place. What reasons are there for learning and how might you benefit?
- Fun: some people enjoy coding and the skills gained are likely to be useful in whatever jobs the future holds.
- Skills: breaking a complex problem into simpler parts (decomposition), identifying the core logic (abstraction), researching to solve each part (communication), and then building up the whole (organisation and planning).
- Resilience and confidence: coding is part of software engineering which is hard and evolving and shows how to deal with challenges.
Even more so than in other disciplines, you need the attitude “if at first I don’t succeed …”, and coding is the perfect playground for experimentation and trial.
The current demand for programming languages may not be the same in 10 years’ time, but the associated skills will be the same. We therefore suggest emphasising fun and skills. Learning one language makes it easier to learn a second, but see note at the end. That said, two of the languages used most oftern by Prewired participants are Python and Scratch.
The Python programming language is relatively easy to learn and versatile. It’s being used to teach introductory computer science in many universities. However, like most language, there’s spelling, punctuation and grammar to get right. There is an excellent overview of introductory learning resources for Python at The Hitchhiker’s Guide to Python.
By contrast, Scratch is a visual programming language that encourages children to design and create their own games. It has a drag-and-drop interface that makes it much easier to write code without bothering about syntax. Primary schools in Scotland offer Scratch as an introduction to computing, so if you already know how to use Scratch, it is a good starting point before graduating to a lnaguage like Python.
Here is a list of some popular and widely-used programmig languages:
|Python||a general-purpose and versatile language that was originally designed for teaching but is increasingly used for data science.|
|HTML||the language that defines how a web page is diplayed in a browser. Strictly speaking, HTML is not a programming language. Rather, it is a markup language that adds structure to the text that is ‘understood’ by web browsers.|
|Java||designed to run equally well on a wide variety of computing platforms. Now often used for large team-built enterprise systems.|
|PHP||used on servers to process incoming web pages. Old but still widely used.|
|C and C++||Powerful but tricky. C++ is an enhancement of C to include modern concepts. Used when processing speed is a priority or there’s a need to get close to ‘bare metal’.|
|C#||modern attempt to simplify/improve Java and C++. Widely used in industry.|
|Visual Basic||development of an old language, BASIC, intended to enable owners of home computers to write programs. Microsoft attempted to modernise it but mainly used for historic purposes or to bypass the IT department, as there’s a version (VBA) within Microsoft Office. Few professional programmers would admit to using it.|
|SQL||a powerful database query language. Interesting because instead of coding “the process necessary to get the answer” (a procedural language), you declare what is to be achieved (a declarative language).|
|R||a modern language for use in statistics and data science. Originally intended for, and designed by, statisticians but gaining popularity.|
|Assembler||as near to ‘bare metal’ as is practical. Used to get up close and personal with the processor. Not particularly difficult, but tire instruction achieves very little, so very many are needed to get something done.|
What is Linux?
Linux is a free operating system, modelled on the commercially successful Unix system. It’s widely used in industry and the system of choice for learning about cyber security. It runs well on low powered machines (especially the XFCE version).
Unfortunately there are many versions and a lot of argument about which is best. Linux Mint is not unlike Windows and popular. It’s certainly good enough to abandon Windows for if you don’t need Windows-specific software. As mentioned below, it’s possible to try it out before installing and it can then be installed alongside Windows.
What computing equipment do I need?
Scratch, Blockly and Snap cannot damage your computer but installing other languages might interfere in unexpected way with the normal behaviour of your computer. Unless you are already quite confident about programing languages, so you probably want to limit use of your treasured home computer/laptop. Scratch works fine on a tablet but text-based languages really need a keyboard.
Prewired provide laptops for use during the session. You can save work in the cloud (easy with Scratch), or bring a USB flash drive to save your work.
If a child wants their own device:
- the BBC micro:bit is a self-contained device with sensors and only needs a computer to write and send the code to it. There are several ways to code it. We have some for use at Prewired.
- a Raspberry Pi currently costs around £34 for the top-end model. It’s a world class British invention selling in millions. Although it was designed for children to learn it has many serious uses. However you still need a power supply (similar to the kind used for mobile phones), an SD card (8GB or more), a keyboard and mouse with a USB connection, and an HDMI-compatible monitor. The Raspberry Pi is designed for experimentation, so you don’t need to worry about any of your programs ‘breaking it’. Prewired have monitors so you don’t need to bring your own in.
- An old Windows computer (perhaps too slow, or version no longer supported by Microsoft) can be given a new lease of life running Linux. Linux can run off a USB flash drive (get the Live version so session changes are saved) and is then easy to install alongside Windows for a dual-boot machine.