On Thu, Mar 19, 2015 at 7:38 AM, kirby urner <kirby.urner@gmail.com> wrote:

I'm not one of those who think you need to join warring Camp A (OOP) or warring Camp B (FP) and then express loyalty to one by dissing the other.  Rather, play up the strengths of both paradigms (I know Shiriam disputes that OOP is really a "paradigm" but whatever).[3]

I followed your link [3], and that's not my take on what he's saying at all.  My reading of the paper is that his central claim is that modern real-world languages don't fall into neat little divisions like "object-oriented" or "functional".  Therefore, he claims, the typical "programming paradigms" course in college is out of date, and in need of a renovation, so students can gain an appreciation for how these paradigms blend, rather than thinking of them as separate entities.  (He then puts forth his own textbook Programming Languages and Interpretation as a proposed solution). 

He even cites Python as an example of a language that blurs the lines between paradigms (it has OO, but it doesn't force you to use it, it has some functional constructs, but it's still not typically thought of as a functional programming language, etc.)  I'd expect you to mostly agree with that premise.

 

For me, the thing that has made me lose some enthusiasm for Python was not even mentioned in the article.  For me, the biggest downside is that the language, with its Global Interpreter Lock, lacks a clean solution to teaching concurrency.  IMHO, concurrency has become a vital issue, and requires a somewhat different way of thinking about problems.  To create the next generation of exceptional programmers, I believe we need to introduce models of concurrent programming much earlier in the curriculum.  Almost every recent programming language places a huge emphasis on concurrency (such as Clojure, Scala, Go, F#, Julia, and many others) but none of those are particularly welcoming to beginner programmers.  So I'd love to see more educational languages that feature concurrency.


That sounds valid and interesting.  How well does Pyret fit that bill I wonder?

Sadly, I don't expect Pyret will address concurrency at all.  I learned that Pyret is now strictly a compile-to-javascript language (presumably they feel the language will have better educational reach if you can code it entirely in a web-based IDE).  That may end up limiting Pyret's ability to include concurrency features.

Thanks for the other interesting comments and links.