Crushed Under the Tower of Software-Babble

02 May

BNF Syntax diagrams

I think my brain cells are shrinking—it is unbelievable how quickly I forget. Such is the life of a software developer, these days.It is amazing how quickly I can forget the details of one programming language detail over another after just a few weeks away—when I see my old code, I amaze myself at how good a programmer I was… last month!

No contemporary programmer can make it through the week with only one or even just two languages. If you are a web programmer, for example, you are probably spending a lot of time in PHP, Java, Python, or Ruby for back-end development. But when you are programming for the front-end, so that means, a lot of JavaScript coding as well. And if you are configuring your Linux server, then you might be hacking bash scripts.

Then there are the myriad of other syntax formats to keep track of, HTML, CSS, their variations (HTML 3, 4, 5, XHTML; CSS1, 2, 3), URL encoding, JSON, XML, YaML, and hundreds or thousands more!

Even if you are not, primarily, a web developer; every application, Windows, Mac, iPhone,  Android, etc. talks to the internet in some fashion (or probably should). So, in addition to C++, C#, Objective-C (uh, now, Objective-C 2.0), or whatever you might be using for the native application (god forbid that you are having to support more than one platform), you’ll have some of the formats and languages that have been popularized on the Web.

Of course, it doesn’t help when most of these languages share so much common syntax—C, Java, PHP, JavaScript, C#—but, each in their own unique fashion. Is there a constant for boolean true and false? Is it “True” and “False”, “true”/”false”, or “TRUE”/”FALSE”? What is the difference between single-quoted strings and double-quoted strings—or is one of them not allowed? Do I concatenate strings with a ‘.’, a ‘+’, or a function call? Are closure functions supported? How do I display output to the console? How do I retrieve the number of elements in an array? Is it “null”, “Null”, “NULL”,  “nil”, or “Nil”? Are variable names prefixed with ‘$’, ‘%’, or nothing?

I remember the days when someone would claim that a standard language would reduce the requirement for this proliferation of languages, it was said with C and, particularly with Java, and more recently with JavaScript. This is sometimes a little bit true, but mostly it’s marketing people espousing this and naïve developers believing it. (Though, in my own naïveté, I’m anticipating JavaScript to become the language of the future!)

In a perfect world, you could have different developers each focused on one technology—web front-end, web back-end, each OS platform technology—collaborating when necessary. No… in a perfect world, we’d all have photographic memories.

The problem is that all of these issues distract from the developer’s core problem-solving objective. Such is the life of a modern programmer, living on the bleeding-edge.


Tags: , ,