Subject: Re: MOP - Part of the standard or not?
From: Erik Naggum <erik@naggum.no>
Date: 17 Aug 2002 03:22:58 +0000
Newsgroups: comp.lang.lisp
Message-ID: <3238543378011762@naggum.no>

* Tim Bradshaw <tfb@cley.com>
| I'd suggest that the minimum possible time to evaluate a language which is
| not a slight variant on something you already know is about a year - see
| http://www.norvig.com/21-days.html.  You have to work at it, too.  However
| you can probably do parallel evaluations to some extent.  Say, maybe, 18
| months for CL and SmallTalk.  If you want to become expert in it, it will
| take 5-10 years (assuming you already are a fairly fluent programmer).

  This is unduly pessimistic.  If you sit down with the standard and spend the
  time it takes to read it /in its own right/ instead of primarily trying to
  figure out if it is just like something you already know, it should take 18
  months to become an expert.  You will be an expert on the language, but not
  an expert user of the language.  I contend that if you try to become an
  expert user of a language without knowing the language, /you will fail/.

  I maintain that it is far better for a person to be able to read well than
  it is to write well.  You become a good writer by reading diligently and
  with great interest in how and what other people write.  You cannot possibly
  become a good writer simply by writing a lot.  Nor is it the intention in
  advanced societies that each person should start out in life from scratch.
  We have public education systems to ensure that people have a really good
  chance of not being completely ignorant of how the world they live in works
  when they reach the age of suffrage and can inflict harm on society with
  their ignorance if they vote for, say, George W. Bush.  For a person to be
  able to write well, they would have to read several orders of magnitude more
  than they write.  I fail to understand how programming is any different, yet
  I see a lot of people who effectively argue that reading other people's code
  would turn them into /worse/ programmers.  Few people today argue that
  correct spelling is optional, but it appears that some part of the compulsory
  education system has failed when more and more writers of English are
  amazingly incompetent spellers.  Being /aware/ that you spell a word in a
  different way than other people and accepted authorities is a necessary
  condition for learning to spell right, however.  Some people think that this
  is undemocratic or object to it on some ideological grounds, just like some
  people argue against using standards and specifications in programming.

  Reading and understanding specifications is a /prerequisite/ for writing
  good code.  Being able to subjugate one's personal desires to that of other
  people is a /prerequisite/ for working in a team, for other people, and is a
  goddamn /requirement/ to make code that works for any other person.
  Therefore, being able to read a specification like a standard and submitting
  to its requirements instead of thinking "I can do better, I in fact, I /am/
  better, than this" and thus screwing up for everybody else.

  If you only sit down to toy with a language until you "get it", and refuse
  to study it seriously, including reading specifications and other people's
  code, you end up writing code like some people write SMTP or NNTP servers
  and mail and news software in general -- and your code will rely on the
  ability of others to be liberal in what they accept.  It is a really bad idea
  to believe that one can learn to get it right from doing it wrong many times.

-- 
Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.