Today’s digital age requires us all to be tech savvy. Technology innovations are changing industries beyond recognition. Supporting this seismic change, there are many initiatives about encouraging the younger generation to learn technology. Educational programs, corporate initiatives, TV adverts, after-school clubs. It is widely believed the skilled talent required in the field of science and technology is falling well below the numbers needed in the future.

Therefore, making technology accessible, simple and available to as many students as possible is a common goal. After all, if we need to build new innovation faster, we need a rapid means of doing so. Training the next generation is an imperative in the IT world.

Smelling the Coffee

I was interested to learn that Stanford University’s introductory programming course (CS 106A), formerly based around the Java language, is now based on JavaSpript (CS 1067). In his piece “Universities finally realize that Java is a bad introductory programming language”, Matthew Hughes commented on the rationale as to why things have changed, and why Java, for so long the darling of how a lot of new technology is created, might not be the top of the list.

According to the University website, “[CS 106J] covers the same material as CS 106A but does so using JavaScript, the most common language for implementing interactive web pages, instead of Java.” The article then goes on to describe the Java language as being “perhaps the harshest language you can learn as a beginner… [because it is] extremely clunky and syntactically bloated”.

The article uses the simplest of examples, the classic new-starter training program, hello world. Here’s a Java version

class HelloWorld { public static void main(String[] args) { System.out.println(“Hello, world!”); } }

One argument is that the Java is anything but clear, anything but simple. Extrapolated to more complex applications, the point being made is that Java is complex and cumbersome to learn, use and therefore maintain. CAST Software suggest that Java is around 4 times more costly to maintain than, say, equivalent COBOL code.

Keeping it Simple

So what’s the Java course been replaced by? Let’s look at what the article said as the equivalent instructions in JavaScript –

alert(‘Hello, world!’);

And JavaScript is not the only new kid on the block. According to research published by Philip Guo on the ACM (Association for Computing Machinery) website in 2014, Python is now the most popular language for teaching introductory computer science in the United States, replacing Java at the top of the pile.

Consigned to the history books? 

Java has been subject to hundreds of patches to rectify security loop holes, recent high-water mark being in the 2016 Critical Path Update from Oracle, which addressed 276 vulnerabilities across 84 products. Added to which the focus has changed and levels of support introduced and later removed: for example, support for browser-based Java applets, called NPAPI, has been withdrawn.

So are we calling time on Java? Is this the start of the end? Is it going the way of PowerBuilder, Clipper and SmallTalk? Is three decades going to be the lifespan for Java? Highly unlikely, we’d say.  Java possesses some well-designed and important characteristics. First, it boasts almost ubiquitous availability across platforms and devices – from massive Mainframes to tiny embedded devices. Second, it’s very broad suitability across industries make it a real option for major business front-ends, application packages, even core business systems, embedded systems, and all points in between. At SHARE this year we heard from IDC, IBM and others reporting on continued adoption of Java as an enterprise-class language supporting systems of record and engagement on z/OS and Linux platforms.

Little wonder it remains so popular and prevalent: according to the TIOBE index it is more widely used today than any other language by some distance. In another article on the same topic in Jaxenter, Jane Elizabeth asserts “Java’s not going anywhere any time soon”.

So what of is Stanford’s decision: evidence of a pendulum swing back to a desire for a simpler language that is easier to learn and easier to train?

Standing the Test of Time

The notion of a simple-to-learn language sounds like a sensible new idea. But let’s not kid ourselves – this is not a new idea at all. Consider this alternative syntax for our Hello World program.

display “hello, world!”

This is a COBOL program. COBOL is the business language where a move statement is called ‘move’ or a compute is ‘compute’, and so on. It is the one that’s easy to learn, that’s English-like.

Purists can, and do, talk about suitability of one language over another for application creation. We’ll park that for now. What’s undeniable is COBOL’s suitability as a language to learn that is simple to pick up and simple to write.

COBOL is still out there. And the earliest release of the COBOL standard is still supported.

The latest incarnation, released this month, looks very different, and does a lot more than its predecessor. Today’s developer wants the latest, contemporary technology to do their work. For COBOL systems as well as other types of system – they need the latest IDEs, support for the latest platforms, object orientation, managed code, cloud, mobile, etc. This is all available from COBOL today. New COBOL-trained professionals are emerging into the market each year thanks to training programs hosted by IBM, Micro Focus and others. COBOL, alongside its bedfellow the mainframe computer, have successfully evolved and renewed themselves over time and remain, just as they were originally, a smart, innovative technology with a huge global adoption.

In reality, commercial IT systems will employ COBOL alongside Java in a composite application framework, after all what COBOL does brilliantly well (structure, arithmetic operations, large-scale data handling) and what Java does well are highly complementary. Indeed, composite Java and COBOL systems can be maintained within the same IDE and, where appropriate, employ the same managed code deployment model. As we all know, IT tends to be an inclusive process, not an exclusive one. A whole system is typically greater than just the sum of its parts…

Conclusion – moving faster, working smarter 

Innovation is the natural way of things. Innovation drives commerce. Technology is often a vehicle for this. Other industry testifies to this – consider today’s car and mobile phones. No-one ever wrote to the head of Porsche to implore them to discontinue production of the 911. The owners of Maserati and Jaguar don’t receive suggestions to stop building their latest models either.  No-one ever said “yes, we’re done here, there’s nothing more to develop”. Further, the giants of Apple and Samsung have no plans to move out of the mobile phone market, and no-one is suggesting they should.

Smart technology moves ahead, market demand changes, the competitive landscape changes. Manufacturers continue to develop, innovate and evolve their brands, their product releases. The new 911 shares only one thing in common with the 1963 original – the model of the car. The first mobile phone, from around 1973, and the latest smartphone both make calls, but aside from that have very little in common. COBOL was devised in 1959, the mainframe in 1963. Only the ill-informed would predict their demise.

Great ideas from yesteryear are woven into the fabric of today’s technology. The very best ideas were often very simple ones, and that’s why they continue to evolve.  Keep it simple, as the phrase goes.

Edited from a blog first made available on blog.microfocus.com

Editors Note:  Thanks as always to Derek Britton for sharing this great content with me, and re-editing it for this site.  Please follow Derek on Twitter derekbrittonuk he doesn’t disappoint.