
Reverse.jar - henning
http://blog.tmorris.net/reversejar/
======
mjw
[only tangentially related to the sentiment here but:]

There is this tendency (which I can sympathise with but only to an extent) in
mathematics and to an extent computer science.

"Let me solve the problem once, in as general and as abstract terms as
possible. Leave the lesser minds to prove the corollaries, to apply the work.
Let them take on the cognitive load of rephrasing their problems into my
abstracted vocubulary in order to benefit from my vast insights and my
generalised theorems."

But, crucially in software development, formal systems are designed for the
human brain -- and not just individual brains but whole teams of them.
Programs become as much a medium of communication between humans and other
humans (of varying skillsets) as between humans and computers.

You can't escape UI work and UI considerations, I guess is the point :)

~~~
brehaut
I think this line of reasoning is why the C# team avoided the M word and
introduced Linq for a range of things (sequence comprehensions, reactive
programming etc) and is introducing the async syntax for more stuff in 5, even
though they could all be implemented with the same more general model.

[edit] the M word is Monad

~~~
alextgordon
I don't think there's anything inherently wrong with monads, it's just that
nobody's figured out how to explain them yet :) This is somewhat compounded by
the awful name and Haskell's less than practical character. My guess is that
they'll turn up in a new language in a few years and everyone will wonder what
they did without them.

~~~
alanh
Don't people argue that jQuery is DOM manipulation in monads? I sure ask what
I did before jQuery :)

[http://importantshock.wordpress.com/2009/01/18/jquery-is-
a-m...](http://importantshock.wordpress.com/2009/01/18/jquery-is-a-monad/)

HN discussion: <http://news.ycombinator.com/item?id=439116>

~~~
jrockway
People argue this, but not people who know what a monad is.

~~~
jimbojohn
Care to clarify, or do you prefer just telling people they're wrong? The
linked article is on the surface convincing, but I have never touched Haskell

~~~
jrockway
I've spent more time explaining monads to HN than I have anything else. It
comes up at least twice a day and I am tired of writing an explanation twice a
day.

Go read the Typeclassopedia.

------
silentbicycle
It seems to be overwhelmed. Google cache:
[http://webcache.googleusercontent.com/search?q=cache:16XHnrP...](http://webcache.googleusercontent.com/search?q=cache:16XHnrPKAVQJ:blog.tmorris.net/reversejar/+reverse.jar)

~~~
8ren
Text-only version of cache (Full version also isn't loading)
[http://webcache.googleusercontent.com/search?q=cache:16XHnrP...](http://webcache.googleusercontent.com/search?q=cache:16XHnrPKAVQJ:blog.tmorris.net/reversejar/+%22reverse.jar%22&strip=1)

------
nailer
This happens, but sometimes the academic doesn't make the breadth of immediate
utility for their intentions clear.

~~~
silentbicycle
Part of the problem is that people using said languages may not see that those
problems have anything in common. When somebody comes along and says, "Dude,
you can automatically handle all of those edge cases at once, _with one
general rule_!" it sounds like a bunch of mathematical jibber-jabber.

(The fact that it often _is_ mathematical jibber-jabber doesn't help their
cause, though.)

~~~
8ren
IMHO the difficult part is seeing the commonality of those edge cases. That
requires firstly knowing about the edge cases, and secondly seeing the problem
(the commonality of those cases). The final step is a solution, which is where
the maths comes in (or might).

Anecdotally, it seems fairly common that maths is independently re-invented by
people applying it - famously for relativity, IIRC. That's because the maths
guys don't actually know about the applications.

It's a truism for our industry that if a new approach really is significantly
better (eg. x10) _in practice_ , it will be adopted. You don't need to
convince people; you just beat them. OTOH, there's a common wish to over-
automate: to spend a week saving a second, and then it turns out to not handle
the very next case. So, some people don't like to use frameworks because they
are too constricting (don't handle all the cases _in practice_ ); and some
(Alan Kay) even say if you _can_ build your own infrastructure, you _should_.

Mathematical ideas usually only work on their own assumptions - a difficult
part is matching those assumptions to an application. Though maybe this isn't
a problem for the generics example.

There's also incidental practical issues, like the need to ship, then of back-
compatibility, resulting in a current Java implementation that can't express
_List <Circle|Rect>_ (you need an explicit _Shape_ interface/superclass).
Although *ML has proper algebraic data types, does C# do it properly? I don't
know.

~~~
silentbicycle
> That's because the maths guys don't actually know about the applications.

That's often a big part of it: Someone who isn't a day-to-day user of
something sees an issue in it and recognizes that it could be done in a
cleaner way, but explains the solution in their own terms rather than in the
local language.

------
highlander
It's a balance. With overly simplistic languages, one ends up with too much
code and repetition. However, when languages get more, well, 'advanced', it
just gets harder to hire people who can work with it. Sure you need fewer
people, but they're harder to find.

------
kazuya
In reality, the obstacle is in realizing the need of list.reverse library,
rather than in making it decent.

------
bhiggins
You know, a lot of non-academic languages are pretty crappy... like Ruby, or
PHP. But I'm not impressed with languages out of academia either. I don't care
about your -morphisms or fancy type systems...

~~~
strlen
You know, creationism and demon possession are both quite crappy. But I'm not
impressed with biology out of academia either. I don't care about your
evolution or fancy germ theory...

~~~
bhiggins
Your argument is so compelling. Now I see how wrong I've been. I'll just
accept everything the ivory tower says from now on, on any topic,
unconditionally. Brilliant.

~~~
Luyt
Reminds me of something I read on <http://skeptoid.com/episodes/4217> :

Appeal to Lack of Authority

Authority has a reputation for being corrupt and inflexible, and this
stereotype has been leveraged by some who assert that their own lack of
authority somehow makes them a better authority.

 _Starling might say of the 9/11 attacks: "Every reputable structural engineer
understands how fire caused the Twin Towers to collapse."

Bombo can reply: "I'm not an expert in engineering or anything, I'm just a
regular guy asking questions."

Starling: "We should listen to what the people who know what they're talking
about have to say."

Bombo: "Someone needs to stand up to these experts."_

The idea that not knowing what you're talking about somehow makes you heroic
or more reliable is incorrect. More likely, your lack of expertise simply
makes you wrong.

~~~
strlen
> The idea that not knowing what you're talking about somehow makes you heroic
> or more reliable is incorrect

That's a really good definition of anti-intellectualism. It's easy to sneer at
academic languages (and easy to hate them, just observe a college frosh/soph
struggling through Scheme or Haskell), but things we now take for granted
e.g., garbage collection, virtual machines, IDEs, object orientation,
templates/generics were all (even recently) considered academic.

~~~
bhiggins
the only struggle with scheme is with falling asleep

