In Unix Vs. MIT cultures, one of the recurring themes is "The Right Way" Vs. "The Good Enough Way." Another way to put this is "The Perfect is the Enemy of the Good."
Pyscologists have a term for someone who expects too much: A Perfectionist. The Perfectionist's dilemma is that they can't every get started on anything until they have it planned, and planned perfectly
. As a result, it's nearly impossible for them to move from planning to actually implementing (doing).
What does this have to do with Perl? In class last week, we were talking about 5th generation langauges - declarative languages that understand the context of your words and can figure out meaning, instead of relying on syntax. Dr. Leidig said that the ideal programming language would be able to parse english sentances. Not quite to the level of a turing test, in that it doesn't have to reply
in english, but pretty close.
So, of course, ProLog and LISP come up, and Bill Day says something like "Any Language with a DWIM (Do What I Mean) command has got to be another generation." We discuss how ProLog and LISP truely are AI languages that can truely understand context - but not english context.
Of course, I mention Perl. The professor's response is something like "Yes, Perl was an ugly, early attempt at grokking context." (Ok, he didn't say Grok, but that's what he meant.)
So here you have this computer language that no one in class has been formally trained on, yet several of us have used to create large, complex, mission-critical applications. And you have LISP, that several people have been formally trained on, and yet pretty much none of them have written more than two or three lines of code in. The first language is Good, the Second is Perfect.
To borrow a line from Joel Spolsky, "What's going on here?"
Well, the Perfect is the enemy of the Good here, and Good is certainly Good Enough. "Learning LISP" has been on my to-do list for several years, but i've never had the time. "Learning Perl" wasn't even on my to-do list back in 1997, but I needed a quick program to grep some data, and the code was so trivial that I didn't have to "learn it."
Doing a google search, I found this
explanation of how Good can be better than best - simply put "getting to best usually gets complicated."
More searching nets the original quote to Voltaire
. Anyone have any additional insight into this?