05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2. Context and Motivation<br />

First, it discussed the notion of multi-language VMs as general purpose<br />

platforms, which are used for a wi<strong>de</strong> range of applications. Language implementers<br />

need to be supported in implementing abstractions for concurrent<br />

and parallel programming to enable VMs to remain general purpose<br />

platforms. Furthermore, VMs need unifying abstractions for that support, because<br />

supporting a wi<strong>de</strong> range of in<strong>de</strong>pen<strong>de</strong>nt features in a VM is infeasible.<br />

Second, this chapter briefly revisited the background behind the multicore<br />

revolution, which increases the need to support concurrent and parallel programming<br />

in VMs. Multicore processors will play a major role for the foreseeable<br />

future and t<strong>here</strong>fore, software <strong>de</strong>velopers will need to utilize them to<br />

satisfy their application’s performance requirements.<br />

Third, this chapter proposed the notions of concurrent programming and parallel<br />

programming to enable the categorization of the corresponding programming<br />

concepts based on their intent, realizing two distinct sets of concepts.<br />

Concurrent programming concepts are meant to coordinate modification of<br />

shared resources, while parallel programming concepts are meant to coordinate<br />

parallel activities to compute a common result.<br />

Fourth, a partial taxonomy is proposed to categorize concurrent and parallel<br />

programming concepts into threads and locks, communicating threads, communicating<br />

isolates, and data parallelism. This chapter discusses a number of<br />

concepts based on this categorization and <strong>de</strong>tails Clojure agents, because they<br />

are used in the remain<strong>de</strong>r of this dissertation as a running example.<br />

Finally, the chapter conclu<strong>de</strong>s with a vision on how to build applications in<br />

the multicore era. Applications need to be able to exploit concurrency and parallelism,<br />

and software <strong>de</strong>velopers want to utilize appropriate programming<br />

abstractions for the different parts of an application to achieve their goals.<br />

With this vision in mind, the next chapter discusses the question of which<br />

concurrent and parallel programming concepts multi-language VMs needs to<br />

support.<br />

38

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!