On Fri, Jan 09, 2009 at 01:06:44PM +0100, Manlio Perillo wrote: > John Goerzen ha scritto: >> On Thu, Jan 08, 2009 at 09:46:36PM +0100, Manlio Perillo wrote: >>> I'm speaking about servers, not clients. >>> >>> How much of pure Haskell internet servers are used in a production >>> environment, in the "open internet" (and not in restricted LANs)? >> >> Does that really matter? I tend to judge technology based on its >> merits for my work, not on who uses it. > > Well, testing a server is not easy. > You can have a server that works for you without problems, but in > different environment it gives problems.
I completely understand that, as a sysadmin that has to maintain mission-critical systems. Unfortunately, it's also so often used as a justification for using "whatever everyone else has". So many people buy Exchange for that reason, as an example. Exchange has a pretty long history of bugs that make it really unsuitable for use in the Enterprise, yet people use it anyway because they think everyone uses it. A particularly amusing example is at http://software.complete.org/software/issues/show/114 - my little OfflineIMAP program appears to be able to take down entire Exchange databases and force a restore from backup, because Exchange has a hard-coded limit of 32k different mail header names *per installation*, and OfflineIMAP generates one unique header each time it uploads a message to the server. If my program can do that accidentally, imagine what someone with a will to do that could do. Nobody would have ever tried Haskell, Python, or Perl in mission-critical situations if they always thought like that. Somebody has to be first, and I see no problem with it being us, as long as we are confident of the outcome. Part of the calculus has to be: 1) Can we test it under stress? 2) How confident are we that it will behave right under conditions we can't test? (Esp. malicious ones) 3) Can we fix it ourselves if it breaks? How many others can fix it? I really like Haskell because of #2. While there is no 100% guarantee, I feel better about Haskell not throwing a type error in some obscure condition than I do about Python not doing so. I also like #2 because of the availability of both HUnit and QuickCheck. Write your code right, and you can QuickCheck a significant part of it. -- John _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe