Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!news.stack.nl!talisker.lacave.net!lacave.net!not-for-mail From: Mike Stephens Newsgroups: comp.lang.ruby Subject: Re: functional paradigm taking over Date: Mon, 4 Apr 2011 04:05:10 -0500 Organization: Service de news de lacave.net Lines: 77 Message-ID: <6aeb13eb26b5656ca2247601ed369bcf@ruby-forum.com> References: NNTP-Posting-Host: bristol.highgroove.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: Quoted-printable X-Trace: talisker.lacave.net 1301907935 53703 65.111.164.187 (4 Apr 2011 09:05:35 GMT) X-Complaints-To: abuse@lacave.net NNTP-Posting-Date: Mon, 4 Apr 2011 09:05:35 +0000 (UTC) In-Reply-To: X-Received-From: This message has been automatically forwarded from the ruby-talk mailing list by a gateway at comp.lang.ruby. If it is SPAM, it did not originate at comp.lang.ruby. Please report the original sender, and not us. Thanks! For more details about this gateway, please visit: http://blog.grayproductions.net/categories/the_gateway X-Mail-Count: 380893 X-Ml-Name: ruby-talk X-Rubymirror: Yes X-Ruby-Talk: <6aeb13eb26b5656ca2247601ed369bcf@ruby-forum.com> Xref: x330-a1.tempe.blueboxinc.net comp.lang.ruby:2244 This thread has been touching upon three issues - functional languages as a way of expressing problems, Excel as a language environment, and the programmer. Today, relational databases are widely accepted. However Ted Codd did not invent the relational model because he thought relations were neat. If you look at what he said at the time, his motivation was to make corporate data more accessible to non-programmers. Forty years ago he thought there were less programmers than there were programs to be written. Arguably the same is true today. When I was a boy, I would see IDMS recordsets like this: 200 300 150 200 230 etc What this represented was 2011/Q1 Sales =3D =C2=A3200 2011/Q2 Sales =3D =C2=A3300 2011/Q2 Sales =3D =C2=A3150 Worse still you would have: 12 200 27 300 etc which meant: 2011/Q1 Sales =3D =C2=A3200 2011/Q1 Units =3D 12 2011/Q2 Sales =3D =C2=A3300 2011/Q2 Units =3D 27 etc Tedd said you must use relations. Relations are unordered so you can't hide information in the order of data. Also you must have a field name for each field (and it should be on the same domain, so Sales shouldn't be in the same 'column' as Units). You would therefore have to have: Period Sales Units 2011/Q1 200 12 2011/Q2 300 27 etc Whilst- as we all know - that typically doesn't tell you everything you need to know when you come across a recordset, it makes it much easier for someone not deeply involved in the system concerned, to work out what is going on. Put it another way, using relations makes it less likely you will make a mistake because you didn't know the subtleties of the behaviour of the programs generating that data. Then, relations are amenable to first order predicate calculus. This resticts the complexity of the operations you need to carry out. When you consider the merits of functional languages, I believe you should take into account not only the elegance with which you can express what you want to do, or how amenable it is to eg parallel processing. You should also consider whether it strikes a better balance between such issues and accessibility. Does all your terseness and 'elegance' give you a justifiable advantage over something simpler which could be more easily handled by a person of less capability? -- = Posted via http://www.ruby-forum.com/.=