Posted by javakiddy
on October 30, 2008 at 5:41 PM PDT
As I understand it enrollment levels for programming courses at colleges and universities have taken a nose dive. Computer programming, not long ago one of the most over-subscribed subjects, is now struggling to compete. Is the industry itself partially to blame?
High-school age programmers probably don't want to write financial applications or transactional databases... but they might be interested in making devices see, hear, spin, roll, lift, and/or just blow up. Can they use Java for that? Should they?
All three of these, in their own way, address a common issue: how do we bring the complex world of software development within the reach of the novice (or occasional) programmer?Okay, time for another "when I was a lad" digression: in days of yore to know about "computers" was to know about programming. Mainly BASIC, which was the language of choice on early home computers. Amazing as it seems, the computer actually "booted" straight into BASIC, and general housekeeping tasks like loading a program or deleting a file were done through BASIC direct mode instructions. The core of every high school "Computing" course (the ugly term "I.T." had yet to be invented) was coding software. Sure, you'd be shown a word processor, on the off chance you might encounter such an exotic beast in the outside world (and if you were really lucky you might have ten minutes on a spreadsheet) but mainly it was programming, programming, programming.
How times change!
Not that I'm complaining, things can't stand still, and the BASIC front-end was doomed to be replaced almost from the moment it first appeared. And naturally this would be reflected in the classroom. But I sometimes wonder if removing all programming from the core I.T. curriculum, and parcelling it off into speciality modules, was a wise decision. Increasingly the rich multimedia world we live in is exposing itself to the end user by way of programming APIs and software languages. At one end of the scale we have HTML: although not strictly a programming language it is a form of 'coding', which benefits from a familiarity with software development. At the other end of the scale we have an increased visibility (and importance?) of script-ability features, like those Fabrizio is considering for blueMarine.
JavaFX Script is a domain specific language for graphics, in itself not an idea which one would consider controversial. But the decision to make the syntax akin to scripting languages like ECMAScript did appear to raise a few eyebrows when JavaFX was first formally taken into the Java family a couple of Java One's back. Is this a case of some of the Java faithful adopting a rather snobbish attitude to a syntax clearly designed to court the likes of web designers and animators(..?) (An aside: I urge anyone with mixed feelings to give JavaFX a second try when the full release arrives shortly — there's a lot of power hidden beneath that user-friendly facade.)
If I'd have been born ten or fifteen years after I was, I probably wouldn't have become a programmer! Without an interest in financial applications or transactional databases (strange that!) I would presumably have given software development a miss. As Chris Adamson so succinctly noted, the mainstream languages like Java don't seem to offer much that would fire the imagination of young programmers. Even platforms like Flash and phone MIDlets, once awash with games, now seem more concerned with boring middle-aged pursuits like database connectivity and web services.
What I see is a world in which every part of our lives — no longer just our work, but our play too — is being moved into the digital realm. Our music, our memories, our innermost secrets, increasingly they are being digitised and pushed onto the cloud (whether or not that's a good idea is an entirely separate debate!) Anyone with at least modest levels of coding skill is at an advantage in making these tools work and inter-operate. Yet the routes into programming seem dry and stuffy, devoid of any fun or instant gratification — a far cry from twenty years ago.
Technologies like JavaFX, with rapid code/compile/test cycles (for near instant gratification) and accessible multimedia features may offer the answer. But do they risk being tainted by unwarranted criticism from hard-core coders who see their average-Joe syntax, and just don't 'get it'?