Minority Opinions

Not everyone can be mainstream, after all.

Languages I’ve Learned: Professional Development

leave a comment »

After a short time of playing with esoteric programming languages, I’ve found myself learning relatively few outside of a real use case.  Most of this next batch were directly inspired by school, hobby, or work projects.  I actively use at least half of them; more than the first two sets combined.  However, this set also covers more time than the first two, nearly reaching a decade.


An early course in my Physics program was centered entirely around learning Maple.  There were some physics lessons thrown in here and there, but they were mostly supplemental, having been covered in more depth by the course we were supposed to be taking at the same time.  Naturally, I found it ridiculously easy, and ended up supervising a section in later years.  The program itself was useful throughout my time at the university, particularly given that most physics professors would accept Maple printouts for homework.  Since then, I’ve rarely missed it, though I still remember it fondly.


An online game in which I participated mentioned having a problem with part of the site, so I offered to help.  When they sent the source, I recognized something that looked like Perl, so I dashed off some quick code without bothering to install an environment.  It didn’t work.  Since then, I’ve learned quite a bit of the language, though I still have to check the website frequently for parameter order and a few other things.  It’s a perfect language for a small dynamic web page; unfortunately, it ends up getting used a bit beyond that sweet spot.  The site I maintain for work, for example, keeps bumping its boundaries; I’ve lost track of the number of lame hacks we wish weren’t necessary.


PHP works almost hand-in-hand with MySQL, so that’s the database flavor I find myself using most often.  At one point, my employer paid for me to attend a MySQL conference, which has paid off tremendously for both of us.  The key takeaway: Think in terms of sets, joining them both to limit and to collect related data.


Where Maple excels at symbolic processing, Matlab works wonders with numeric data.  These courses involved something resembling real experiments, though they were still as much about the program as about the physics.  If I were actually into numeric experimentation, I might still be using it.


I made an honest attempt to use Haskell for a major hobby project, and utterly failed.  I also attempted to enter a weekend competition almost designed for functional languages, and failed.  Yes, there’s something elegant about functional programming, but it’s certainly not the usability aspect.  Perhaps the worst part was having been denied the ability to print debugging statements, before having learned about unit testing.


I had used Bash from the command line on several computers, but not until installing LFS did I truly use it as a programming language.  I’m now much quicker to cut a quick script out of any repetitive set of commands, and even use for loops on the command line.  The height of my ability must have been I took up David A. Wheeler’s challenge to create a reasonable GLOBIGNORE pattern that ignores files with leading dashes, leading dots, and control characters.  A few years later, I was honestly surprised to see my name when I came across the article again.


At one point, I thought I would follow my father’s footsteps into the hardware realm.  I’ve designed one computer chip and manufactured another, but Verilog simulations are the closest I’ve come to see a design come to life.  Software results are just so much more immediately accessible that I haven’t yet looked back.  Perhaps someday I will; perhaps memristors will make hardware more interesting than software.


I have sung Python’s praises before, and complained about its flaws, both because it remains my favorite language of all.  It supports object-oriented programming or functional programming without being anal about it, it actively encourages clean and readable code, and it has libraries for just about everything under the sun.  I reach for it automatically for almost anything more complicated than a Bash script, unless the language is mandated by use case or company policy.


After several years of despising JavaScript on principles of security and accessibility, and perhaps a bit on having used eLinks as a primary browser, I finally started using it myself.  It has many of Python’s strengths, combined with a few of its own, but also has some annoying quirks.  What has truly made the difference for me is the availability of libraries like Prototype and jQuery, though I can still do a few interesting things without them.


Our company needs to use Flash for a feature that still doesn’t exist in HTML 5, and at one point decided to make an entire application in Flex.  I was mostly tasked with the back end, but still had to reach into the front just to get the two talking to each other.  Since completion, maintenance has fallen to me while the rest of the team moved on to the next product.  There have been several surprises along the way, and I’m coming to despise both the time of compilation and the type declarations, but it’s not a bad a language overall.


Written by eswald

6 Dec 2011 at 10:07 pm

Posted in Technology

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s