| By Joel Pobar | Article Rating: |
|
| December 7, 2007 05:15 AM EST | Reads: |
8,753 |
Solutions and Opportunities
The good news is, there's plenty of places to start looking for solutions, and the opportunity in this space is what makes it so exciting. There's OS level plumbing, virtualization (hardware and software), virtual machine plumbing (ala software transactional memory), compilers, languages, libraries, GPU programming and more. Let's look at the 10,000 foot view in some of these areas - hopefully it'll get you as excited as I am about this space.
Languages
Have you seen C# 3.0 lately? Introducing language plumbing that enables data querying libraries like LINQ was genius. Further more, with libraries like Parallel Extensions Framework for .NET, it can leverage the LINQ architecture to perform LINQ queries in parallel across multiple cores. It leverages a parallel programming style called declarative data parallelism (ala functional programming etc). Declarative data parallelism has few or no side-effects. No side effects means high throughput operations over data without the need for "protection". Consider the case of multiplying all elements in an array by 2: for two processors, you could split the array in to two parts, hand one part to one processor and the other part the second processor and ask them to perform the same operation in parallel. Both procs walk their array parts multiplying elements and at the end of it all, we simply join the two parts from each processor for our result. This kind of parallelism is highly scalable (Google's MapReduce API does a very similar thing, and scales across thousands of machines).
Erlang is another parallel enabled programming that's close to my heart. It's a "fit for purpose" highly parallel programming languge that leverages a parallel programming model called the Actor model. From Wikipedia: "The Actor model is a mathematical model of concurrent computation that treats "actors" as the universal primitives of concurrent digital computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and determine how to respond to the next message received". Erlang kicks ass. The messages that are sent and received are truly first class citizens, and they're light as a feather, weighing in at only a few hundred bytes per message. Those messages are sent in a highly concurrent fashion via Erlang abstraction called 'processes', which are neither OS threads, nor fibres, but rather a lightweight isolated process abstraction that is scheduled and managed by Erlang itself. Really cool stuff.
There's a bunch of other interesting languages that support concurrency features as first class or close to: Concurrent ML, C Omega, F# etc (http://en.wikipedia.org/wiki/Concurrent_computing), and they're worth checking out. F# especially if you live on the .NET platform like I do. My guess is we'll be seeing more and more concurrency features built in to languages as time rolls on.
Published December 7, 2007 Reads 8,753
Copyright © 2007 SYS-CON Media, Inc. — All Rights Reserved.
Syndicated stories and blog feeds, all rights reserved by the author.
More Stories By Joel Pobar
Joel Pobar speaks, consults, and teaches .NET technologies: CLR; programming languages; threading; platforms and more. A former Microsoft Program Manager, since leaving Microsoft he has been tinkering with v.next software: machine learning, natural language processing, programming languages and more.
- Kindle 2 vs Nook
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- Confessions of a Ulitzer Addict
- IBM Hardware Chief, Intel VC Exec Arrested in Insider Trading Scam
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- Moving Your RIA Apps into the Cloud: Seven Challenges
- Adobe’s Aiming ColdFusion at Multiple Clouds
- Windows 7 – Microsoft’s First Step to the Cloud
- Ulitzer Provides a Powerful Social Journalism Platform
- Jill Tummler Singer, Deputy CIO of CIA, Keynotes at GovIT Expo
- Open Source Mobile Cloud Sync and Push Email
- Kindle 2 vs Nook
- The Difference Between Web Hosting and Cloud Computing
- Cloud Computing on Gartner's Top 10 List and SYS-CON Events' 2010 Calendar
- Ajax in RichFaces 3.3, JSF 2 and RichFaces 4
- Confessions of a Ulitzer Addict
- IBM Hardware Chief, Intel VC Exec Arrested in Insider Trading Scam
- My Thoughts on Ulitzer
- Tactical Cloud Computing Panel at 1st Annual GovIT Expo
- Ulitzer.com Named Exclusive "New Media" Sponsor of Cloud Computing Conference & Expo
- US Post Office Hops a Ride on NetSuite’s Cloud
- Moving Your RIA Apps into the Cloud: Seven Challenges
- Adobe’s Aiming ColdFusion at Multiple Clouds
- Building a Drag-and-Drop Shopping Cart with AJAX
- What Is AJAX?
- Google Maps! AJAX-Style Web Development Using ASP.NET
- Flashback to January 2006: Exclusive SYS-CON.TV Interviews on "OpenAjax Alliance" Announcement
- AJAXWorld Conference & Expo to Take Place October 2-4, 2006, at the Santa Clara Convention Center, California
- AJAX Sponsor Webcasts Are Now Available at AJAXWorld Website
- How and Why AJAX, Not Java, Became the Favored Technology for Rich Internet Applications
- "Real-World AJAX" One-Day Seminar Arrives in Silicon Valley
- AJAXWorld University Announces AJAX Developer Bootcamp
- AJAX Support In JadeLiquid WebRenderer v3.1
- Where Are RIA Technologies Headed in 2008?
- Struts Validations Framework Using AJAX






































