Thursday, June 14, 2012

Don't Like My Language? Well You're A Dumbass

Okay, I kid, I kid. Sort of...

Experts Become Polyglots

This last weekend I attended the Pittsburgh Tech Fest. I met a lot of good people, and I heard a lot of really good talks. It started off with a keynote speaker named "Doc" Norton, whose named inspired shuddering fears of an old anti-virus tool I used to use that would eat up all of my CPU at random... but I digress: He had a very good talk to start off the day. He spoke about what it means to be an expert programmer and talked briefly about becoming a "polyglot" (or a speaker of many languages) of programming. He talked about how when someone becomes an expert in one language, it's often a good idea for them to move on and learn other languages, because when the do that, they learn new paradigms, new methods and new ideas for solving problems. In the end, it actually makes them better at all languages they use to be well versed in more than one language.

This really spoke to me, because while I definitely don't believe I'm an "expert" in any one language, since reaching a certain point with C#, I've been trying to dive more into other languages and get a deeper understanding of them. The first language I decided to do that with has been JavaScript. This is mostly because I know it's something I'll use whenever I'm doing web development.

JavaScript/Node.js Haters

Since starting to really try to master JavaScript, I've been finding myself running into a lot of other people's opinions on JavaScript and particularly JavaScript when it comes to Node.js. It seems that, especially in circles outside of Microsoft developers, there is a very low opinion of JavaScript and Node.js. At least two of the speakers at the Pittsburgh Tech Fest, that were talking about nothing to do with Node.js, made it a point to mention they didn't like Node.js. When pressed on their reasoning, they offered up mostly uninformed opinion, but one thing they both said was "because it's JavaScript". When asked why that was a hindrance, they'd say something to the effect of "the scoping is terrible" or "there's no strong typing".

Languages Are Like Onions... 

Sorry, I just watched Shrek with daughter the other day. The point I want to make about "other languages": Programming languages, all of them, have a specification. That specification may include things like dynamic typing (no strong typing), or a different scoping of variables than the language you're used to. This doesn't make that language "incorrect" in it's own implementation, it just makes it different from your favorite language. Each of these features are generally implemented by some very smart people for very specific reasons. The choice to use loose typing, for example, is just a choice saying "hey, I trust the developer that is using this knows what he's doing and doesn't need his hand held in the form of compiler errors while dealing with multiple data types". The choice to scope variables to functions, rather than any set of curly brackets, is just that, a choice.

Your Generalizations Are Bad... Allow Me To Generalize

A general dislike for an entire programming language, in this author's opinion, just amounts to a lack of understanding of that language. All too often I think it probably amounts to a little insecurity as well. Or fear of the unknown. It's hard to say. Some languages are verbose to the point of being a little annoying (CGI or VB comes to mind). Some languages don't have very good frameworks associated with them (ASP Classic anyone?). Some languages are downright archaic (COBOL, RPG make my eyes bleed). Some languages are stuck in one OS environment (C#, VB.Net, and I'm not counting Mono for now). Other languages just lack features and want you to throw interfaces on everything (I'm looking at you, Java). Some languages feel like they've been cobbled together haphazardly from remnants of PERL and a thousand open source projects (*cough*PHP*cough*). Offended? Oh no? I didn't touch on your favorite language? Damn. I'll try harder next time. I was just trying to illustrate, a complaint can be made about any language.

Can't We All Just Get Along?

... the point is, they're all good languages. All of them. And I'm happy to learn more about them and try them out, and you should be too. They all have strong points and weak points. What language should you choose for your next project? Whatever you want.


  1. I equate programming languages (and technology in general) to tools. Learning how to use other tools is not a bad thing.

    Though I have found C#'s evolution in adapting different programming paradigms to have given me a enough to keep learning that it's kept my interest. It's becoming a Swiss-army knife.

    I will say I have enough experience with it to say I have no interest in learning or doing anymore PHP. Mainly cause it's a language that was cobbled together vs actually designed. I find arrow notation (->) to be too verbose. Too much typing. Though I know dot notation is available now.

    True story, I was "discussing" languages with a coworker, I was arguing pro-Python side (even the little I knew about it I liked it), he was arguing pro-PHP. I mentioned my dislike for arrow notation as it's verbose and clutters up the screen. He goes "I LOVE arrow notation." I went catatonic at that statement and stopped talking at that point.

    OTOH, from the little Python I've done, I'm finding it very elegant and structured.

    To me it still goes back to using the right tool for the job. I'm programming web applications served by Windows servers. So C# has been the right tool for the job.

    If I needed a tool that was duct taped together from several rusty broken blades of various hack saws and held together by chicken wire into a circle and spinning at an inconsistent RPM, resulting in a tool that's likely to harm the user as much as help them, then maybe PHP would be the right language. MAYBE. :-) (Requisite PHP dig.)

  2. Haha... TheChow!

    Yeah, PHP isn't the prettiest thing in the world anymore. It started off sexy, but too much plastic surgery over the years, IMO. I don't *mind* it though, it's definitely still evolving and very well supported.

    Python is a cool language, and I think I could get into Scala if time allowed. I did a talk on that at the Tech Fest and it seemed really cool. Very compact and concise.

  3. Hehe, you do love poking php Ben. And who doesn't love giving the dead-horse VB a good kicking?

    But you gotta admit, php is extremely fast, very stable, vastly supported (LAMP config, anyone?) and is probably the most well documented language in the world. If you're having a problem with anything, it is extremely unlikely a simple google search or search on won't solve the problem immediately. Even jQuery/javascript isn't so well documented.

    Sure it has a million deprecated-but-still-supported functions. Sure if you want to use a new library you have to recompile the whole goddamn php service. Not sexy, agreed. But, there's nothing you can't do with it. I've written very complex and large applications with it. If you have the right IDE, even the "->" stuff isn't so bad.

    Try phpDesigner if you really want to get into php.

    IMO utility+support > sexiness

    That's why some people still use C. I'd rather chew off my own kneecap than use it at this point, but if I was an EXPERT in it, I'd definitely use it. I've generally found that people who complain overly much about PHP haven't used it much (understandably, just like I've only used C once and hated every second).

    Anyway, good post Ben.


This form allows some basic HTML. It will only create links if you wrap the URL in an anchor tag (Sorry, it's the Blogger default)