Authors: Olli Savolainen and Daniel Schildt
Olli: In my opinion, it is important in the teaching of programming fundamentals to focus on the essential: Learning what will help you get started quickly and implement your own ideas.
This is particularly challenging with C and C++ languages, teaching of which is sometimes still needed. When a language is three to four decades old, it is certain to contain structures and practices that offer little benefit to learning in many new applications. However, they often have to be learned if you want to understand others’ code.
With the advent of the internet, the pace of software development appears to have exploded even faster. JavaScript was once considered just a scripting language.
However, it seems that in the future, ever-larger footholds will be gained by web software frameworks built more and more on JavaScript. It is no longer considered just a scripting platform, but a full-fledged programming language upon which platforms such as Node.js and its surrounding ecosystem are built. This is particularly true with TypeScript.
The web browser is approaching the status of a universal software platform, as it will also code for higher-performance code in the future. On the other hand, all of this is still relatively new – the challenge is to pay attention to the essential. Not to the outdated, but not to passing fashion trends either.
About Interfaces and Reusability
Daniel: Interfaces are both the past and the future. At a certain level, they create (hopefully also documented) the opportunity for the adoption of new tools. At the same time, new interfaces do not necessarily need to be built into previous background systems in every situation, and for example, the construction of mobile applications becomes significantly easier – if the interface is fast enough for large usage amounts.
Olli: One of the most important lessons for a novice programmer is that not everything should be done by oneself. Or even most things.
Daniel: In order for tomorrow’s application developers to learn to practically create applications that work in changing operating environments, teaching should also be modernized to the level of today’s tools. Also, embedded systems are being renewed, although many of the previous restrictions are still important to consider. However, various tools help and make previously slow processes easier to learn.
Example: printf()
Olli: One borderline case in what is still essential to teach nowadays is the printf() function taught by Viope. Its teaching can still be justified by the fact that it is used in several languages. The unusual syntax for printing variable values can also be defended by the fact that, for example, SQL’s prepared statements use similar syntax: First, a string is defined that includes placeholder character combinations like %d, and then it is defined what values are bound to the characters.
It may still be necessary to know that the placeholder required for printing with two decimal places is %.2f. But does a student nowadays have any benefit in knowing that the whole format is %[flags][width][.precision][length]specifier?
Would I use printf to print strings in a real situation? Rarely. Of course, creating command line applications is useful if the target group is other coders or administrators. However, more and more applications are now only being created with graphical user interfaces.
The Benefit of Command Line Applications in Learning
Daniel: Traditional command-line applications can still teach us a lot. Even though fewer end users would use them directly, understanding the use of Unix-based tools is of considerable benefit in understanding programming concepts. Piping data from one application to another is convenient on the command line, and this agility should also be utilized in larger applications. By dividing the application into smaller units (which communicate through interfaces with each other), individual parts can be rewritten without major changes to the rest of thesystem.
There is still room for the C language in programming, but its uses will change faster year by year. Many new development platforms and programming languages are built using it, so the language itself is not going anywhere. The question is more about what is built on top of it and how new tools will expand the programming field.
There is a lot of learning and a lot of new things to teach in schools. There is a need for experts. Welcome aboard.