Dan has a significant point: My personal experience was that I did not "get" the Map and Reduce found int Python until after I had starting using J. I was perfectly happy to interate, iterate, iterate... But after using J, it feels "unnatural" to have to apply operations to the elements of list this way. I am now going back and rethinking alot of my Python code to use the functional aspect of the language in place of 'for loops'
Mike > >http://labs.google.com/papers/mapreduce-osdi04.pdf > >http://www.zvon.org/other/haskell/Outputprelude/foldr_f.html > > Haskell and Lisp are not mainstream languages. Like J and APL, they have > many wonderful things to teach other languages, but "no one" uses them. > > >http://www.sgi.com/tech/stl/accumulate.html > > C and C++ don't have / , which is why it is in the STL. I could write > / in almost any language (particularly one with macros or a > preprocessor), but I'm specifically talking about mainstream languages > building it into the syntax. Besides, I've had to read a lot of C++ and > I've never seen the use of accumulate. > > >http://www.python.org/dev/peps/pep-0289/ > > I'll grant python and perl, having large user bases. Perl in particular > has two operators, map and grep , which act like f/ and (g@:#~ > f) respectively. But, at least in Perl, they're significantly less > efficient then their for/foreach/while/do counterparts. And again, they > don't enjoy the ubiquity in user code that / and # do in J and APL > (except in MY perl code). Perhaps they're not marketed well enough. I > know Perl6 will have lots of (APL-inspired) nice operators. I'm hoping > its release will make the hoi polloi see the light. > > >and the list goes on... > > Currently, the majority of commercial code* is written in C, C++, Java, > C#, and VB (6 and .NET). AFAIK, none of those languages have / built > into the syntax. In fact, the only mainstream language I know which has > it is SQL, which does it haphazardly (nonetheless, it may partially > explain SQL's popularity). > > So, unless the rest of the list contains those languages, it's almost > meaningless. If there's a way to build it on top of the language, fine. > Rather than the rest of the list, I'd like to see (sourced) statistics > showing what proportion of the commercial and industrial programs > implemented in those languages leverage the construct (and to what extent > within each program). Better yet, I'd like to know what proportion of > professional programmers understand and use it**. > > -Dan > > * If you don't believe me, search monster.com (or any other job listing) > for programming positions and the languages they require. The names of > languages other than these are likely to appear in the same job > description as the word "legacy". > > ** I'm going to be suspicious of any programmer who knows it's available > and uses "sometimes" , because I will then doubt he understands it. It's > an abstraction of for like for is an abstraction of goto . Of > course, it's not always the right tool. But it'll handle /most/ loops, > not /some/. > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
