The Future Is In Concurrency

I have said this earlier, with the hardware guys pumping out multi-core processors, software developers will have to cope with them. Also the fact that number of cores in a multi-core processor are increasing at a fast rate, using them for increase in scalability is going to be one of the core skills of software development. In fact, increasingly, business models require scalability as a core feature of an application.

One of the ways of doing this is concurrency – a way of coding parallelism in the software world. This is one of the reasons some concurrent programming languages are being seen in the new light, especially Erlang. Erlang is an open source programming language designed at the Ericsson Computer Science Laboratory. Concurrency has arrived for the traditional imperative languages like Java, C++ and Python. However, a language that is developed with concurrency as inbuilt features will provide better semantic and syntactic support. The others will still have to handle workarounds for problems like global variables.

If you are thinking that all this applies only to system or server software, you are wrong. Even the personal computers will be based on multi-core architectures, so all software – right from applications like email clients, feed readers to a variety of business applications, including the Web applications – will demand it. Yes, even Web applications. ErlyWeb is a Web framework in Erlang and can be used as an indication of entry of concurrency into Web programming.

What does this means for a developer is that programming will now include learning to work with multi-core processors, by default. Whether a newbie or not, at least the basic theory of concurrent programming will be required in programming. And that will include challenging some of the fundamentals we know today, and probably even an effort to unlearn some of them. Like one of the critical steps in design would be to identify the tasks that can be executed in parallel. Or to understand the impact of the share nothing architecture or design the ability to handle the shared resources through parallel processes.

If someone asked me today about learning programming languages, my advise would definitely include at least one language that allowed concurrent programming. The future is in concurrency.

Discussion [Participate or Link]

  1. -jn- said:

    Another alternative is to avoid making concurrency such a special case. For example, Fortress assumes that operations on collections of data will be run in parallel unless the programmer does additional work to force sequential behavior. Lazy functional languages such as Haskell allow one to specify the computation while leaving the sequencing up to the run-time environment.

    Perhaps concurrency should be handled in the same way as multiple piplines in a CPU: just don’t let the programmer interfere with it?

  2. Abhijit Nadgouda said:

    Yes, I agree with you that in a dominant parallelism design, running parallel by default will help. That is, the developer will have to take extra efforts to make them sequential. However, it is still a case that the developer has to decide what should run parallel, or in another case what should not.

    Complexity in the real world is not because it is parallel, but because it is parallel but still has dependencies. These will have to be designed into the system, and will need exclusive attention from the developer.

  3. Python Moving | iface thoughts said:

    […] with Ruby and I agree with Krys that it is happening with Python and I predict that it will happen with a concurrent programming language like […]

  4. Praise For Erlang | iface thoughts said:

    […] popular languages are caught without explicit support for the new hardware developments, which will drive the future of programming. Erlang, with its, explicit intent of concurrent programming is the most probably to fill in the […]

  5. Python 3K Discussions | iface thoughts said:

    […] from running in parallel. While this was acceptable earlier, the advent of multiple cores has raised the stake in concurrency. Juergen proposes removal of GIL to enable truly parallel threads. Guido provides convincing […]

Say your thought!

If you want to use HTML you can use these tags: <a>, <em>, <strong>, <abbr>, <code>, <blockquote>. Closing the tags will be appreciated as this site uses valid XHTML.



Abhijit Nadgouda
iface Consulting
+91 9819820312
My bookmarks


This is the weblog of Abhijit Nadgouda where he writes down his thoughts on software development and related topics. You are invited to subscribe to the feed to stay updated or check out more subscription options. Or you can choose to browse by one of the topics.