Hidden in Plain Sight

If I go back and look at all the programming languages I’ve ever used, there’s been latent functionality that I didn’t know how to use at the time I was learning it and spent my time primarily using it.

Visual Basic had objects — it wasn’t fully object-oriented, and I didn’t know about “polymorphism” until much later, but it did have objects. Perl (5) had map. PHP had– well, okay. C#, back in 2.0, had delegates. Ruby had good metaprogramming capabilities.

These are not objective measurements, but it happens to all of us. We see a concept flourish in a new language, maybe because of particular fitness, maybe because of culture, and your eyes are slowly opened to it. Then you look around and find it, or some variation of it, where you least expect it. Sometimes, you take up using the concept in the languages you thought you already knew.

Sometimes the eye-openers really do require a niche language to manifest itself in. Newspeak is an example of this. In Newspeak, every name is bound dynamically and there is no global scope. You cart around a “platform” object with the capabilities you need, and to constrain something, you just call it with a lesser platform object. I read about Newspeak and it introduced me to the idea of capability-based programming using objects and their messages themselves taken to the extreme.

(Newspeak is a Smalltalk-based language with syntax that’d make a logician cry tears of what I guess must be logic. Gilad Bracha sees the many contradictions and uphill battles with Newspeak and is intent on surmounting them, while still being able to conceive of more visions. For the dozens of people that must be using Newspeak right now, I hope it succeeds.)

Other times, the language itself is the eye-opener. I’m fond of saying that JavaScript before Gmail was a runtime for “DHTML”, which was a way in which analog watches could follow your mouse cursor and fail to block right-clicking. There are so many contradictions with JavaScript — the rough first specification and implementation with its prevalent drawbacks, the choice of a purist language with a traditional syntax and scent, the hijacking of useful functionality by completely useless moving divs, the rediscovering of that language a few years back by the programmers that hadn’t read the specification and its continued integration into other environments beyond the browser. JavaScript is one of the world’s most spread programming languages and completely avoids the common practices in a range of decisions, from prototype-based object inheritance to accidentally non-transitive double-equals equality.

The problem with coming to terms with eye-openers is that they are hidden in plain sight. You begin turning every rock, jumping around flailing your arms wildly, trying to catch the silent revolution in your own peripheral vision, as if it was shrouded by an SEP field. And sometimes, you have exhausted the vocabulary of your tool, but you won’t know.

What did you last learn that was very useful and turned out to have been hidden in plain sight?

One thought on “Hidden in Plain Sight”

  1. The last thing I found was awk and how incredibly useful it is even for things like JSON. And guess what? It has hashes, so you can do a lot of things that people reach for Ruby to do, but with a much smaller memory footprint.

    Add to that make -j for doing REST. Concurrency without all the headaches, so long as you don’t mind the odd variables.

Leave a Reply

Your email address will not be published. Required fields are marked *