3 ms·
You know, I've learned something today! When some people talk about functional programming, they talk about monads and iterating with recursion and lambda calc
by dustingetz 15y ago
You know, I've learned something today!
When some people talk about functional programming, they talk about monads and iterating with recursion and lambda calculus.
Other people talking about functional programming mean using data-oriented abstractions, where functions operate on data in well-defined ways, to avoid state and interlocked dependencies[3]. I've been calling the latter a "functional style", but clearly there is ambiguity and people get turned off and say things like "we're using an OO language why would i want FP"
in Avdi Grimm's talk "Confident Code"[2] he calls this style "narrative structure", compared to "haphazard structure"[4]. I like that; "functional" envokes all sorts of emotion about being hard to understand and unnecessary. "Narrative" or "confident" or "data-oriented" are more articulate, and don't evoke flame wars.
Avdi's example (code screenshot) is the most articulate example of this I've yet seen.
https://lh4.googleusercontent.com/-Cs-muD17ato/Tk6b1Rb9MwI/AAAAAAAAAeY/MTDO67H4r1c/s912/narrative-code-avdi-grimm.png https://lh4.googleusercontent.com/-Cs-muD17ato/Tk6b1Rb9MwI/A...
And it's in ruby. Nothing hard here, but it meets a functional style per John D Cook's definition[1]: "OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts." "functional in the small and OO in the large" seems a good path. The Scala community seems to get this, and seems to me Scala is mainstreaming much quicker than any of the pure functional languages.
[1] http://www.johndcook.com/blog/2010/11/03/object-oriented-vs-functional-programming/ http://www.johndcook.com/blog/2010/11/03/object-oriented-vs-...
[2] http://avdi.org/talks/confident-code-2010-01-12/confident-code.html http://avdi.org/talks/confident-code-2010-01-12/confident-co...
[3] http://www.dustingetz.com/how-to-become-an-expert-swegr http://www.dustingetz.com/how-to-become-an-expert-swegr
[4] http://www.dustingetz.com/confident-code-vs-timid-code http://www.dustingetz.com/confident-code-vs-timid-code
- SoftwareMaven 15y agofunctional in the small and OO in the large" seems a good path. That's what I like about Erlang as well. Once you recognize processes as your objects, this philosophy just flows out of the language.
- deleted 15y ago[deleted]
- gclaramunt 15y agoBut is taking a while for Erlang to come to terms with it...see Joe Armstrong "Why OO sucks" (http://www.sics.se/~joe/bluetail/vol1/v1_oo.html http://www.sics.se/~joe/bluetail/vol1/v1_oo.html)