News that numerous cathedrals are offering short courses in Latin is a reminder of the long decline of the language over the years. It was a core subject in the British education system until fairly recently – and not because anyone planned to speak it, of course. It was believed to offer valuable training for intellectual composition, as well as skills and thinking that were transferable to other fields.
It may have been the right decision, but when it was ultimately decided that these advantages were outweighed by Latin being a dead language we arguably lost that intellectual training in the process. This is why we want to make the case for moving another discipline to the centre of the curriculum that offers analogous benefits – computer programming. And unlike Latin, it is anything but dead.
There are many computer languages for different purposes. C and C++ remain the fastest to execute and are used by the gaming industry, for instance. In the internet era, much of the page design is done with the likes of JavaScript or PHP. Meanwhile Python has been rapidly gaining a reputation as a general purpose code that is easy to learn.
Imagine you complete a computer-programming course, but never have a chance to use the programming language once the course is over. Based on the research results reported by Ebbinghaus, over the years you should expect.
There are many parallels between natural languages and programming languages like these. You must learn to express yourself within the rules of the language. There is a grammar to comprehend. And what you write must be interpretable by another human being. (Yes, it must be interpretable by a computer. But just as Noam Chomsky’s example of “colourless green ideas sleep furiously” is grammatically correct nonsense, you can write obfuscated computer code that no one else can decipher.)
People who program can communicate with computers, which is becoming more and more important now that computers have a hand in almost everything. In today’s IT-literate world, we are all expected to be fluent in word processing and spreadsheets. The next logical step is to be able to program.
The younger generation are already exposed to computers almost from the day they are born, which explains for example Barclays bank’s recent launch of Code Playground, an initiative to engage young children in the basics of programming via a colourful website.
Problematis solvendis
There is a myth that only maths geniuses are suited to programming. It is more accurate to say you need a logical approach and an ability to problem solve. Just as Latin constructs reinforce communication, programming constructs reinforce problem solving. It teaches you to break a problem into achievable chunks and to think very precisely. And once you have mastered the basics, it opens up great potential for creative thinking.
Then there are specific workplace benefits, such as for businesses that are building a bespoke piece of software. Errors sometimes occur when documents outlining in English how a program should work are translated into computer code. Those who have an appreciation of a programming language can write these more clearly. Indeed, businesses usually have to employ specialist analysts as intermediaries to help with this translation process.
As computers become more dominant, those who don’t know how to think in this way risk being increasingly left behind. We can foresee a time when greater numbers of people become interested in learning to program for themselves, but in the meantime there is a great case for making the basics of computer programming a core skill at school.
One candidate language would be Python, it’s freely available and one of the easier programming languages to learn – compared, say, to C/C++. It has grown in popularity in recent years, initially for this simplicity but lately because it has been adopted by the big data community. It is likely to be around for a few years and not become a dead language any time soon. There are plenty MOOCs (online courses) to get you started.
If a teacher walked into a classroom and told today’s students they were going to study a dead language, you can imagine the reaction. Imagine instead introducing them to an easy-to-use programming language which is probably already installed on their laptops. It can allow them to automate many boring tasks such as checking email and sending out pre-written responses; or receive custom notifications by text; or download files or copy text from a website whenever it updates.
It’s time that those in charge of education policy recognised the shift in employability skills and the need for a new generation of problem solvers. We may have reached the point where the three Rs of education – reading, writing and ‘rithmetic – should become the four Rs, with the addition of programming. Or 'rogramming, as we would soon get used to calling it.
Just out of interest , we know there's a lot of programming involved in the making of a satellite . Which languages are they written in ?
The NASA satellite missions I've been involved with all used assembly language for the onboard software. There is a strong preference at NASA to use flight software with heritage -- reusing components (both hardware and software) with a proven successful history on previous missions. So rather than using compiled code on the latest, most powerful processors,we often end up using hand-coded assembly on wimpy, but tried-and-true, processors. For example,the THEMIS project, built in 2003 and launched in 2007, runs on Intel 8085 processors, with hand-coded assembly modules with heritage from previous missions like WIND, CLUSTER, and STEREO.
Since they have a custom architecture connected to miscellaneous I/O peripherals they should be programmed in C/C++ or directly in ASM for better performance and optimizations..
They are fully custom so I don't think there are other approaches to the problem, think also that they have to use really low energy (and must be charged by sun) so they tend to have not so powerful hardware and must be REALLY optimized (that's why ASM is the way). You shouldn't waste any single CPU cycle!
Lastly the kind of devices attached to a satellite are really uncommon so I think it's difficult to use any kind of standard API to interface (like RS232 or so on), I think they're different for every case.
I wouldn't surprise myself to find many old chips like Z80s doing the dirty work on a satellite just because they're powerful enough to do simple tasks although their 8bit bus!
Aside from the possibilities that have already been mentioned, at least one spacecraft was controlled by software written in Lisp for part of its flight.
ZakZak
I can tell you that the Mars Rover had at least some C++ code (PDF Link); They used Rogue Wave's Tools.h++ library.
Most of the operational languages used at NASA and Lockheed center around statistics and calculus. Thus meaning MATLAB, haskell, Erlang, and scala. MATLAB and Erlang being the big ones that was requested for provisioning.
While the hardware end of things is going to be centered around Assembly, C and Verilog.
Dwight SpencerDwight Spencer
NASA uses many languages and it varies on the basis of its uses and where it is used. The programmes written for some calculation and for some scripting are written in mostly using python. The programmes for ground instruments and ground control are written using C, C++, Ada, etc. The critical programmes written for the on board instruments and hardware are mostly in Assembly Language as it gives the most control over the hardware and some old languages are also used as many hardware on the satellite are of old technologies(It doesn't mean they're out dated cause some functions are impossible to do without them) and other languages like MatLab, Visual Basic is also used for scientific calculations.
As with any other software endeavour, the language used to perform some function in a satellite will be the most appropriate language given the various business and IT drivers in effect.
You'll find examples of different languages being used in aerospace if you look around. Given your question, you probably want to have a look at Ada, which is often referred to as being used in 'real-time systems', a news article so that effect is here, some non-defence users are listed here.