đŸŽ” It Was 46 Years Ago Today, That Kernighan and Ritchie Taught The World How To Play đŸŽ”

46 years ago today, Brian Kernighan and Dennis Ritchie defined a “Hello, World!” program in their The C Programming Language book:

đŸŽ” It Was 46 Years Ago Today, That Kernighan and Ritchie Taught The World How To PlayÂ đŸŽ”

46 years ago today, Brian Kernighan and Dennis Ritchie defined a “Hello, World!” program in their The C Programming Language book:

Many computer scientists would define Dennis MacAlistair Ritchie as one of the great computer programmers of all time, who actually created the C programming language alongside the creator of the Unix operating system: Ken Thompson. In fact, they received the Turing Award (the ‘Nobel Prize for Computer Science’) for their work in 1983. C and UNIX (and its sibling, Linux) will always be known as building the foundation of our modern digital world.

Before C, we had computer languages which were often focused on a certain purpose. COBOL did business applications, and FORTRAN was focused on engineering and science. These languages, too, were often tightly defined, and where it was difficult for programmers to get around strict compiler rules. C changed this and brought us a general-purpose language and which allowed the programmer a great deal of freedom to program in the way that they wanted. It was fast and could produce efficient machine code. But, it was not really for novices, as its usage of memory pointers could cause many problems, including buffer overflows.

Unfortunately, C is pinpointed for the majority of zero-day threats. Novices were often guided towards Pascal as a safer place to learn to program, but for serious applications, C became the de facto standard in building systems, especially within the core of operating systems: the kernel. This also included using C programming for software drivers and where assembly language could be integrated directly into C programs. So, when something had to be carefully crafted at a machine level, C was there to provide a solution.

While Java and Python — and their more robust frameworks — replaced C in many applications, it still remains a common way of writing fast and efficient code. Golang was Google’s attempt at writing a language which felt like C, but was more robust in running code. But, now, Rust, though, has come along and gives a more robust memory model and machine-level code.

For me, it was the place where I learnt C programming, and I would say it is the language that I must understand. Everything else is just now quite C. Because Golang is similar to C, I found that I prototype in Golang before turning to Rust for the final application. For teaching, there was great tension as to whether we should be teaching students to program in Pascal or in C. For me, it was C, especially as we taught computer interface, and which required an integration at the hardware level.

And, so, everything would go fine until I taught parameter passing and pointers, and that’s where it kinda all fell apart. You would not believe the number of times I would put a red line over a coursework submission and in using code that was extremely unsafe. When students demo’ed their code, I would often just enter, ‘aaaaaaaaaaaaaaa 
aaaaaaaa’, and most of the programs would instantly crash, as students had just declared a string for just a few characters. Any other characters entered would cause the memory to overflow and write over other variables or write into code.

Conclusions

Computer programming should be a mandatory subject at school. Go program our future! If you don’t program, then learn a new language — the barrier to creating code has never been lower.

Thank you to Kernighan and Ritchie, for allowing me to build things that are made from software. Go get your kids into coding!