Subject: Re: Destructive Side Effects
From: Erik Naggum <erik@naggum.net>
Date: Sat, 17 Nov 2001 22:02:16 GMT
Newsgroups: comp.lang.lisp
Message-ID: <3215023332792113@naggum.net>

* David McClain
| Actually, I think that programming without side effects has some rather
| nice qualities.

  You are never programming without side effects, you just like the ones
  you use.  This applies to all programming languages and all issues.  Just
  because you have a different set of side effects that you like than other
  people, does really not give you the right to proclaim that you do not
  have any side effects.  This annoying expression "without side effects"
  is just for show and marketing: The only program that has no side effects
  is the program that is never even written.  Geez, this is that stupid
  tail-call "elimination" thread all over again.

| I, personally, wouldn't like to release dynamically typed code to the
| field, unless it were peppered with exception handling clauses and well
| guarded against user abuse.

  What compelled you to share your personal choices with us?  Why post
  anything about your personal choices at all?  Do you think anyone cares?
  Do you welcome random noise-makers who walk into your SML newsgroup and
  proclaim that I would not like to release SML code in the field?  What
  kind of worthless assholes would you consider people who did that?

  Now, please be smart enough to respect that people make different sets of
  choices and that some consider this nonsense about "without side effects"
  to be an offensive marketing lie.  If you are not smart enough to respect
  or indeed figure this out, get the hell out here before you go postal on
  us with a stupid line of self-defense, like so many others who think it
  is perfectly OK to post "why I think I Lisp is insufficient" articles. 

| Actually, I was not taken aback by the naming of functions, but rather that
| it forced me to use destructive operations in a routine that simply needed
| some elements elided from a list before passing along to legacy code.

  More understanding and less fixation on style would be more beneficial
  than telling people _that_ you were "taken aback".  Explain why, explain
  how you got to accept the gospel of fewer visible side effects.  What you
  _feel_ is completely irrelevant to everybody else in a technical forum.

| Lisp does force one to view the argument lists of functions as lists, and
| with keyword parameters, portions of these lists can be viewed as
| property lists.  I find that convenient.

  I find it massively misguided.  It has also proved unproductive for you
  since you ended up with a counter-productive conclusion and only offered
  you an opportunity to air your arrogance about side effects.  Quit that.

| But sometimes keyword arguments must be removed from argument lists
| before handing these args off to older routines that would find the
| additional keywords offensive.

  Well, if you knew Common Lisp, you would know that you can always add the
  keyword argument :allow-other-keys and its value t to the argument list
  of a function that accepts keywords.  People who are unable to deal with
  the language they actually program in, pining for whatever programming
  language they learned first or whatever their problem is, always ignore
  the fact that people much smarter than them _have_ solved their problems
  for them already.  I find this tremendously annoying.  It is not the
  ignorance that I find so annoying, but the stupid arrogance of people who
  think they have reached the plateau in life where no more information or
  knowledge is necessary before they pass judgment on the world in general,
  when know things so well that they do not need to ask for guidance or
  help or more information before passing their judgment, getting all huffy
  and puffy with their stupid concerns that are only _their_mistakes_.

  If you had been smart enough to ask us what you should do if you wanted
  to pass an argument list obtained with &rest to another function that did
  not accept as many keywords, you would have received an intelligent
  answer specific to our problem, and you would have avoided all the silly
  crap you guessed were problems, but which are not.

| Destructive operations need to rise higher in one's mind, as functions
| that must be used with caution, as they may have unexpected consequences
| elsewhere in the overall code of a large program.

  It also helps to learn how to write higher quality software without being
  so snotty about your _inability_ to write code in the language you use.

  One of the most annoying side effects of langauges that promote some
  usually silly design idea is that people who use them think they are so
  superior because of this _one_ feature.  Next thing you know, some people
  will think they are superior because their skin is paler than many other
  people.  That would never happen, would it?  People can be stupid about
  the superiority of their programming language, but skin color?  No way.

///
-- 
  Norway is now run by a priest from the fundamentalist Christian People's
  Party, the fifth largest party representing one eighth of the electorate.
-- 
  Carrying a Swiss Army pocket knife in Oslo, Norway, is a criminal offense.