Following on from the Python is overrated stuff, I’ve been thinking about programming languages, their uses, and the unavoidable flame wars that occur whenever this subject (or that of editor, desktop environment etc.) comes up.
Obviously, people have their favourites and want to evangelise about and/or defend them. Unfortunately and all too often this is taken to zealotry-type levels and that’s when debates breakdown into flames.
One of the things often missing from these arguments is perspective.
Picture a full-time developer (i.e. me) who spends all day designing and implementing ‘enterprise’ type systems – large scale applications that are re-distributed to others and developed/maintained by others.
Now picture an administrator. She writes scripts that make her life easier. She’ll most likely use any language which lets her get the job done and on to the next one.
Somewhere in between is the guy whose scripts have grown into applications, yet most likely remained in the same language due to personal preference (or fear/reluctance to re-implement). He, and our administrator above, are likely one-person-shows – they choose what they write and how they write it.
Of course, there are additional scenarios, but these will do for now.
I’ve been through all three stages outlined above, from writing scripts in Perl to designing and implementing applications in .NET/C#.
When I first started coding in Perl, I couldn’t understand why anyone would want to use another language. Then I had to learn Delphi in a hurry because Perl simply wasn’t an option for a particular problem. PHP followed, then Visual Basic, Visual Basic .NET (yes there is a difference – a big one), C#, and Python. Whilst learning each of these, I went through the predictable stages:
- Why doesn’t this work? It works that way in language X
- Oh, that’s what I should be doing – that makes more sense
- Language X is rubbish compared to this, I’m only go to use this from now on…
- (Eventually) solve a problem in new language that would have taken 2 lines in language X
- Realise the limitations of the language, add it to my skillset (rather than replacing previous skills) and move on
What you’ve got to remember is that it’s horses for courses, and you should use whatever makes your life easier. From the perspective of an administrator, that would Perl, Python, Ruby etc. From the perspective of the the full time developer, it’s Java, .NET etc. From the perspective of the guy in the middle, it’s a case of using whatever he thinks is best.
Whatever you do pick a language because you want to use it, not just because it’s got mindshare at the moment.
So, the next time a language debate comes up, apply some perspective.
Hm.<br />
<br />
The reason I push Python so much, I believe (and you may feel that this is a lie that I tell myself) is that people reject it without trying it. The canonical example of this is someone refusing to use it, or rejecting it, because it uses whitespace for blocking, but, frankly, I saw Rory’s objections (you have to type “self” a lot; it does more (procedural stuff) than I want it to) as more of the same. I don’t bang on at you too much about Python, because I’m aware that you’ve tried it and, as you say, added it to your skillset and moved on. No problem there. In my experience, a pretty high proportion of the people I get to try Python properly find it makes their lives easier and is a good addition to their skillset; it’s that “getting people to try Python properly” thing that’s the issue. My argument with Rory wasn’t just about trying to convince Rory, even though I think his objections lacked a certain rigour; they were also about trying to convince all the people who read his website and will reject Python based on the fact that someone they respect doesn’t like it that he may not be right.
So an possible addendum to my post should be:<br />
<br />
<cite>Don’t <strong>not</strong> try a language just because someone else doesn’t like it.</cite><br />
<br />
The “dimissing without trying” bit could be used with any language – <em>cough</em> C# <em>cough</em> – but it does get applied to Python a fair bit so I’ll agree with you there.<br />
<br />
The last bit about Rory using his ‘respect’ is very true, and one of the reasons I’m not a <em>huge</em> fan of his (which should be read differently to “not a fan of his”).
While I think that relatively experienced developer would agree with you on the “horses for courses” analogy, I find that there is a serious shortage of “experienced” developers<br />
<br />
I have heard that university lately is turning into java occupational training, and you can really see it in these kids straight out of school. I am training somebody up for embedded C programming right now, and he has a strangely aversive response to the idea of having to write his own memory management, or handling pointers carefully. He knows how to do it, but takes it personally that he has to.<br />
<br />
At the same time, he can code circles around me writing Java server daemons.<br />
<br />
Perhaps the “horses for courses” analogy can be applied to job applicants as well?