Multi Lingual LINQ and Rx

Tue, 23 Jul 2013 16:10:00 GMT
1, 24

“Imitation is the sincerest [form] of flattery” – Charles Caleb Colton

When dealing with technology, or nearly any other creative endeavor, one of the ways that you know if you’ve discovered a successful creation is to see how much it is embraced by not only your peers, but also your competitors. We can see this in quotes by Shakespeare, the music of Bach, parodies of Peter Schickle, Hip Hop sampling, and countless others.

This blog is based on one of the more significant technologies that many peers and competitors embraced – LINQ. As developers on both the Microsoft stack, and others saw the power of LINQ and worked to incorporate the concepts into their native languages, including JavaScript, C++, Scala, Java, Ruby, Python, and the list goes on. While the ideas in concept are not totally unique in LINQ, the way that they were put together provided the simplicity and elegance that drew many to desire to replicate it in their native tongues.

We’re starting to see a similar wave of imitation with the Reactive Extensions as we did with LINQ. While Rx primarily extends the ideas and concepts from LINQ as can be seen by the nickname “LINQ to Events”, the way it puts them together is forging it’s own way. Indeed, it is already creating it’s own movement with the Reactive Manifesto.

What began as a mechanism to bring asynchronous LINQ to C# and VB, has become a powerful mechanism to declaratively process real-time streams of data in a multitude of environments. Microsoft got the ball rolling by creating not only .Net implementations of RX, but also JavaScript and subsequently C++. More recently, Brian Benz announced the availability of Rx for Ruby and Python. We’re also seeing a number of efforts around Functional Reactive Programming (FRP) including Haskell and F#. Others have joined the party with the Scala based Reactive Web and ReactiveMongo (a scala based driver for MongoDB). Netflix has even contributed their own RxJava.

In many ways, I’ve found LINQ and Rx to be disruptive technologies (in a good way). The amount of effort around manipulating core language constructs to enable the concepts only speaks to the impact that they’ve had on developer’s lives. I’m not saying that Erik Meijer is a combination of JS Bach, Shakespeare, and Sir Mix-a-Lot, but I’ve definitely noticed his handprint on many as the father of this disruption. I can only hope that we’ll see this kind of continued energy and creativity far into the future.

I’m sure I’ve missed some language implementations of LINQ or Rx and can’t anticipate future versions that are inevitably yet to come. Please do others a favor and comment back with links to your favorite implementation so that we can build a complete list together.