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.