BT

InfoQ Homepage Presentations Functional Thinking

Functional Thinking

Bookmarks

Bio

Neal Ford is Software Architect and Meme Wrangler at ThoughtWorks, a global IT consultancy with an exclusive focus on end-to-end software development and delivery. He is the designer/developer of applications, instructional materials, magazine articles, courseware, video/DVD presentations, and author and/or editor of 5 books.

About the conference

Strange Loop is a multi-disciplinary conference that aims to bring together the developers and thinkers building tomorrow's technology in fields such as emerging languages, alternative databases, concurrency, distributed systems, mobile development, and the web.

Recorded at:

Jan 13, 2012

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Strange Loop

    by Alex Miller /

  • Functional Programming Should be Taught First

    by Faisal Waris /

  • Re: Functional Programming Should be Taught First

    by Aggelos Biboudis /

  • Re: Functional Programming Should be Taught First

    by Damien Pollet /

  • Re: Functional Programming Should be Taught First

    by Daniel Gruszczyk /

  • Very good introduction of Functional Programming

    by 哲 永田 /

  • Funny how examples are always math

    by Leandro A /

  • Slides

    by Gabriel Kastenbaum /

  • Props to the Camera Operator

    by William Pollock /

    • Always enjoying the OOP to FP presentations and books!

      by Aggelos Biboudis /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      It is a nice trick to unblock the mind. Of course an fp introduction can go as far as +oo, even for an intro but Neal Ford, gave a nice and concise speech on this matter. Functional programming for the working OOP programmer. I liked it!

    • Strange Loop

      by Alex Miller /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      If you're interested in other upcoming videos from Strange Loop, the full release schedule is here and all slides are here. If you want to be notified about Strange Loop announcements in the future, sign up for the mailing list.

    • Functional Programming Should be Taught First

      by Faisal Waris /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Functional Programmng (FP) requires a declartive, mathematical way of thinking.

      Unfortunately, our minds get corrupted too early by imperative, OO thinking. And - as I found out - (re-)learning functional programming requires quite a bit of effort (to get those neurons re-wired). CS shools should teach FP first. Its gratifying to see CMU taking a lead.

      A declarative way of thinking is a better basis for creating abstractions.

    • Very good introduction of Functional Programming

      by 哲 永田 /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      I like this video very much. I believe this is very educational for new comers of FP, like me. Neal Ford is very good.

    • Re: Functional Programming Should be Taught First

      by Aggelos Biboudis /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      As I always say, OOP to Functional is really difficult, Functional to OOP could be just disturbing, yet doable in a timely manner.

    • Funny how examples are always math

      by Leandro A /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      They should give examples of end-user software like how to implement a web browser using functional programming or how to implement a blog or something.

    • Your message is awaiting moderation. Thank you for participating in the discussion.

      Hi,

      Just to notice that what you see at 20:00 are not matching with the slides that are shown. Neil Ford talks about slide no 45, not 35 . And I did not find the lides about some clojure code. Maybe the version of the slides that is given here is not the right one?
      Anyway, it's a minor problem. The presentation is just great so far :)

    • Re: Funny how examples are always math

      by Hermann Schmidt /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Indeed, most real world problems are about shuffling data around and transforming structures. When was the last time I had to invent a real algorithm, which may work recursively? I cannot remember.
      Of course math examples are perfect for functional programming. Math is all about functions and recursive definitions after all.

      I think, when data structures are able to execute code on behalf of the caller (with closures), and thus avoid the ubiquitous iteration loops, most work is done already. A mainstream enterprise Java program contains mostly copy operations and loops over structures. Sophisticated algorithms are not often needed.
      The standard data structures Map, Set, List, Tree, Array should provide processing algorithms, which potentially can run in parallel. The so-called business logic as such has almost never anything to do in parallel, really. It's all in the data structures.

      The "business" services very rarely have any state, they are basically data structure transformers between some user or external interfaces and persistent data storage, which carry the state.

      One reason why I enjoy programming in Ruby: Almost no loops! Array, Hashes, Strings, Files, all have operations based on closures. A real pleasure to program.
      As for Java, a decent closure syntax and a rewrite of the standard library would help a lot.

    • Re: Funny how examples are always math

      by Faisal Waris /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Agree that closures/lambdas make data manipulation a lot easier - even when not working on complex algorithms. Such 'functional' data manipulation can be more easily parallelized.

      Example: Word Count is the canonical ("Hello World" equivalent) demo problem in map-reduce. Following are F# serial and parallel versions of Word Count - which are strikingly similar:


      let file = @"C:\Users\Fai\Downloads\War_and_Peace.txt"
      let splitLine (l:string) = ...function to split a line into words...

      //serial word count
      file |> File.ReadLines
      |> Seq.map splitLine
      |> Seq.collect (fun xs -> xs)
      |> Seq.map (fun w -> w.ToLower())
      |> Seq.countBy (fun w -> w)

      //parallel word count
      file |> File.ReadLines
      |> PSeq.map splitLine
      |> PSeq.collect (fun xs -> xs)
      |> PSeq.map (fun x -> x.ToLower())
      |> PSeq.countBy (fun w -> w)

    • Props to the Camera Operator

      by William Pollock /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Nice presentation, of the sort I wish I would have seen years ago. Ford paces back and forth throughout the presentation -- whoever ran the camera for this session must have been going crazy, but she/he did a great job.

    • Re: Functional Programming Should be Taught First

      by Damien Pollet /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Do you realize you've written most of this comment in the passive voice?

    • Re: Functional Programming Should be Taught First

      by Faisal Waris /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      Sorry, I was just being lazy. The comment doesn't take effect unless someone starts reading it. :)

    • Re: Functional Programming Should be Taught First

      by Daniel Gruszczyk /

      Your message is awaiting moderation. Thank you for participating in the discussion.

      I am actually writing a dissertation about that, it will be intresting how quickly people with different programming experience pick up a functional paradigm and can use newly learned functional language to solve a fairly complex problem given to them.

    Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

    Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

    BT

    Is your profile up-to-date? Please take a moment to review and update.

    Note: If updating/changing your email, a validation request will be sent

    Company name:
    Company role:
    Company size:
    Country/Zone:
    State/Province/Region:
    You will be sent an email to validate the new email address. This pop-up will close itself in a few moments.