James Iry writes about programming languages, type systems, and software estimation, including a well-known satirical language history.
Commenters call his Brief, Incomplete, and Mostly Wrong History of Programming Languages the best article on the subject, and quote it often.
> none of it matters if you hope more people use and understand functional programming
On a personal level, I couldn't care less tbh. If people want to learn it, that's great, if not that's also fine. There's plenty of room for procedural, OOP, and FP to exist side-by-side. If one domain feels complex to you, don't do it (or put extra effort into learning it), but I'd argue that OOP is much more complicated - it's just that most devs tend to grow up with OOP and so the context switch to FP is more difficult.
> you overestimate how much people actually understand oop vs just winging it, in particular, inheritance and polymorphism
Forget 'polymorphism' for a second and think about 'object'. An object in the real world doesn't have behaviours attached to it. An object in the real world doesn't mutate, in-place, in a discreet portion of time. Objects in the real world have a immutable past, a present state, and multiple possible futures based on interactions with external events. Those interactions is literally how we define time. OOP (as it's commonly practiced) does away with time and has myriad complexities because of it.
The trivial OOP explanation "an object is like a thing in the real world. A rabbit is an object, a triangle is an object, etc." combined with the unbelievable complexity artefacts (in place mutation, hidden state, attached behaviours, etc.) - is much, much worse than the upfront cost of learning about: pure functions, monadic composition, etc.…
Reminds me of the Haskell entry on the Brief, Incomplete, and Mostly Wrong History of Programming Languages [0].
"1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?""
Math people: "What if we made software code more like mathematical proofs?"
Idk. What if you had dated before age 38?
[0] http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html
For more correctness, scala has had interop hiccups
http://lampsvn.epfl.ch/trac/scala/ticket/2991
http://stackoverflow.com/questions/3313929/how-do-i-disambiguate-in-scala-between-methods-with-vararg-and-without
(and does Orig. Commenter have examples of clojure hiccups? Interop is very important to both (and F#). Maybe a more meaningful compare/contrast is haskell, scala and F# (which I can't do)
http://matt.might.net/articles/best-programming-languages/
---------------
http://james-iry.blogspot.com/2010/05/types-la-chart.html
(his league table of "Most Powerful Type Systems": Agda, epigram, scala, haskell
> They just released a proposal that effectively side-steps the problem of checked-exceptions-in-lambdas.
The main problem of checked exception in lambdas is that Java's type system does not allow expressing statements like "`forEach` throws whatever the lambda throws". Here are two links:
http://james-iry.blogspot.com/2012/02/checked-exceptions-might-have-their.html
https://blog.jooq.org/javas-checked-exceptions-are-just-weird-union-types/
The proposed syntax puts the exceptions on equal footing with the happy path. Not a bad idea, but irrelevant to the main problem.
"The Internet was built by people like me." - Eric S. Raymond
I guess that's kind of like if Tim Berners-Lee said:
"I built the internet."
Maybe this author can fit some Eric S. Raymond's content into his blog post:
http://james-iry.blogspot.com.au/2009/05/brief-incomplete-and-mostly-wrong.html
If Eric S. Raymond doesn't spend wastefully, he should still have tens of millions:
http://www.zdnet.com/article/eric-raymond-how-ill-spend-my-millions/
He's a great software engineer, but I didn't like the tone of this campaign for monthly donations either.
Sorry I think that joke went over your head.
1990 - A committee formed by Simon Peyton-Jones, Paul Hudak, Philip Wadler, Ashton Kutcher, and People for the Ethical Treatment of Animals creates Haskell, a pure, non-strict, functional language. Haskell gets some resistance due to the complexity of using monads to control side effects. Wadler tries to appease critics by explaining that "a monad is a monoid in the category of endofunctors, what's the problem?"
http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html