October 12, 2007
When somebody tell you they are a programmer what do you usually assume? Besides the fact that he/she knows a programming language people usually assume he/she knows the language that’s still alive and well. For example you hear things like: “I’m fluent in C, C++, Java, and dabble in bash scripting”. That’s like 95% of all tech resumes out there today. Since we are including scripting into this, let’s add things like Ruby, PHP, Python, and Perl too. So that’s a pretty standard arsenal of coding lexicon. But then we start getting into more and more obscure stuff. Say, when was the last time you heard of Object Pascal? How about ML, or ALGOL, or COBOL, or Ada. Now I’m pretty young, but I haven’t even heard of Ada before.
This got me to thinking about languages in general. We can safely consider that Latin is a dead language since nobody that spoke it originally is around to tell us the correct pronunciation and unless you are going into law or medicine you probably will have little use for it (thus it’s a dead language). With the pace of current progress I would not be surprised if C and C++ will eventually go the way of Fortran and Cobol and become the domain of Universities and Department of Defense (security through obscurity).
So go out there an learn an obscure language and use it so that one day somebody stops by your cube to see what you’re working on and go “What the hell is that syntax?”.”Oh, that’s ALGOL.” you answer nonchalantly. It’s a geek equivalent to “Yeah, I’m fluent in Latin”.
5 Comments |
Coding |
Permalink
Posted by mzolin
October 9, 2007
I was thinking the other day about the evolution of a coder. If you have picked up the skill on your own and have moved pass simple hacks the following may sound familiar.
Step 1: 1 + 1 = 2
This is when you are just starting out. You need an app that does something very specific. The code has tons of global constants and there are assumptions on every corner. Basically the program computes the sum of 1 and 1. If you try to plug in 1 + 2 it will crash. After a while you find yourself writing hundreds of these hacks and as soon as you are tasked with something more complex then a coffee mug, the code gets bulky and unmaintainable. That’s it, the next step is upon you. Evolve or die.
Step 2: x + y = z
Eventually you realize that all the code in the world uses a few simple procedures over and over in increasingly elaborate ways. When push comes to shove, no matter what you are making you will need to be able to do very basic things over and over. Using the “Step 1″ mentality we could just copy and paste the code n-many times and all will be happy… For a while at least. Then use realize that the one simple procedure is flawed or can be more efficient. Now what? Thus you arrive to the concept of reusable code. It takes years of coding to be able to break up your code into a well balanced architecture but everything flows some much nicer when you do. A cool side effect is that your code becomes scalable.
Step 3: Duck <?## Polar Bear %%%^ Refrigerator
What drives today’s world of compatibly and interoperability are APIs. It’s cool to reuse your own code, but it’s even cooler when you use someone else’s. This is when things get really interesting. Even more interesting is what you are the one writing an API. Say you have a some meta data that you copied from a website. You would like to send it to your friend with a Nokia in his pocket. So, you paste your data (it can literally be anything) and your code has enough intelligence to digest it and come back with something that can be sent over the GSM network and into your friend’s phone. Alas your toolkit may have some limits on the input (otherwise we are looking at an infinite state machine, i.e. artificial intelegence) but you are free to take the input and do whatever is necessary to make the output pliable to the user. You can create your own language, or rules, or use another toolkit to help you chew the data. When it comes to building APIs that hardest part is thinking of ways the user might utilize it and making that process simpler.
Leave a Comment » |
Coding |
Permalink
Posted by mzolin