On Thu, Dec 12, 2013 at 2:41 AM, rusi <rustompm...@gmail.com> wrote: > Yes its always like that: > When you have to figure 2 (or 10) line programs its a no-brainer that > the imperative style just works. > > When the ten becomes ten-thousand, written by a nut who's left you with > code whose semantics is dependent on weird dependencies and combinatorial > paths through the code you start wishing that > > - your only dependencies were data dependencies > - "Explicit is better than implicit" dinned into the nut's head > > which BTW are the basic tenets of FP.
And since teaching is seldom done with 10KLOC codebases, functional style can be left till later. I strongly believe that a career programmer should learn as many languages and styles as possible, but most of them can wait. Start with something easy, then pick up something harder later. ESR in "How to become a hacker" [1] suggests learning "Python, C/C++, Java, Perl, and LISP" [2], and do take note of his reasons _why_. I'm not sure that Perl is so important any more (though a Unix sysadmin should probably have at least a working knowledge of it, given the likelihood of tripping over it at some point), and for LISP you might substitute some other functional language, but broadly, those five recommendations haven't changed in years and years. Knowing multiple styles lets you learn from all of them. Pure functional programming means the result of any function can be determined entirely from its arguments; that doesn't fit into everything, but it sure does make your code easier to understand when you (mostly) stick to it. (For instance, the current logging level might change whether a particular line does something or does nothing, but it still fundamentally has the same meaning, and it won't change state magically anywhere else.) And there's a lot of "similarity of thinking" between a well-written program in one style and a well-written program in another style, regardless of which two styles they are. ChrisA [1] http://www.catb.org/esr/faqs/hacker-howto.html [2] http://www.catb.org/esr/faqs/hacker-howto.html#skills1 -- https://mail.python.org/mailman/listinfo/python-list