Measurements and Programming Language Comparisons

What's more readable, ten lines of Python or ten lines of Perl?

What runs faster, ten lines of Haskell or ten lines of Perl?

What's more scalable, ten lines of Java or ten lines of Perl?

What's more maintainable, this program or that program?

Did you account for the relative experience of the programmer or programmers? How about special domain knowledge? The presence or absence of specific libraries? Documentation? Deployability?

Which program is more correct? Did you measure? Do you have a definition of sufficient correctness? Should the program account for errors which are unlikely to happen? Do you have space or time constraints?

How long did the program take to write? How long did it take to debug? Did you test it? How did you test it? Who has to maintain it? What kinds of maintenance is necessary?

Are there idioms you have to translate between languages? What are the possibilities that you'll get the translation wrong? What are the nuances of one implementation you've overlooked in translation?

How long does the program have to last?

Even if you've measured and analyzed and satisfied your understanding of every important constraint I've mentioned (as well as those important constraints I haven't mentioned), do the specific details of your project generalize over other projects?

Put more pithily:

  • We are not all Google, Yahoo, Facebook, Twitter, Amazon, eBay, or Craigslist.
  • We are not all Paul Graham.
  • Sometimes I don't care about error checking for a one-off job that will take minutes to write, seconds to run, and save me eight hours of manual work.
  • Sometimes I have to deploy code to systems where I can't upgrade existing software (and sometimes I have to install my own dependencies).
  • Sometimes the most important part of a project is to enable a team of developers to make the right change quickly rather than writing a bare-bones blog in 15 minutes.
  • Sometimes understanding the problem is a lot more important than the specifics of the implementation language.
  • Sometimes optimizing a program is more about not writing code than writing the fastest possible code in the fasted possible language.
  • Most of the code I write looks nothing like the code in the Great Computer Language Shootout for many important reasons.

  • Most of the people I work with are intelligent, capable, experienced people willing and able to learn new things.
  • I wouldn't hire anyone to maintain code who hasn't demonstrate some ability to learn the problem domain as well as the language or languages in question and the relevant libraries.

Please try to keep these messy details of the real world in mind the next time you debate programming languages on the Internet.

Modern Perl: The Book

cover image for Modern Perl: the book

The best Perl Programmers read Modern Perl: The Book.

sponsored by the How to Make a Smoothie guide



About this Entry

This page contains a single entry by chromatic published on September 15, 2010 1:59 PM.

What You Can and Cannot Teach about Encapsulation was the previous entry in this blog.

That Silly Obsession with the Greek Alphabet is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.

Powered by the Perl programming language

what is programming?