ABSTRACT
Software systems bridge the gap between information processing needs and available computer hardware. As system requirements grow in complexity and hardware evolves, the gap does not necessarily widen, but it certainly changes. Although today's applications require concurrency and today's hardware provides concurrency, programming languages remain predominantly sequential. Concurrent programming is considered too difficult and too risky to be practiced by "ordinary programmers". However, software engineering is moving towards a paradigm shift, following which concurrency will play a more fundamental role in programming languages. We discuss some of the implications of the shift towards process-oriented programming. We outline some of the features of our own process-oriented language. Finally, we review the potential impact on software engineering and on software development processes.
- Ada. Ada 95 reference manual. Revised International Standard ISO/IEC 8652:1995, 1995. www.adahome.com/rm95. Accessed 2008/03/12.Google Scholar
- Joe Armstrong. A history of Erlang. In HOPL III: Proceedings of the Third ACM SIGPLAN Conference on the History of Programming Languages, pages 6.1--6.26, New York, NY, USA, 2007. ACM Press. Google ScholarDigital Library
- Fred R. M. Barnes and Peter H. Welch. Occam-π : blending the best of CSP and the π-calculus. www.cs.kent.ac.uk/projects/ofa/kroc. Accessed 2008/03/13.Google Scholar
- Nick Benton, Luca Cardelli, and Cédric Fournet. Modern concurrency abstractions for C#. ACM Transactions on Programming Languages and Systems, 26(5):769--804, September 2004. Google ScholarDigital Library
- Andrew P. Black, Jie Huang, Rainer Koster, Jonathan Walpole, and Calton Pu. Infopipes: An abstraction for multimedia streaming. Multimedia Systems, 8:406--419, 2002. Google ScholarDigital Library
- Hans-J. Boehm. Threads cannot be implemented as a library. In PLDI '05: Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 261--268. ACM Press, 2005. Google ScholarDigital Library
- Per Brinch Hansen. The programming language Concurrent Pascal. IEEE Transactions on Software Engineering, 1(2):199--207, June 1975.Google ScholarDigital Library
- Per Brinch Hansen. Joyce---a programming language for distributed systems. Software---Practice and Experience, 17(1):29--50, January 1987. Google ScholarDigital Library
- Per Brinch Hansen. The Search for Simplicity---Essays in Parallel Programming. IEEE Computer Society Press, 1996. Google ScholarDigital Library
- Mark Brunelli. Question & Answer: Smalltalk with object-oriented programming pioneer Kay. searchsoa.techtarget.com/news/interview/0,289202,-sid26_gci962762,00.html. Accessed 2008/03/25.Google Scholar
- R. H. Campbell and A. N. Habermann. The specification of process synchronization by path expressions. In G. Goos and J. Hartmanis, editors, Lecture Notes in Computer Science, volume 16, pages 89--102. Springer, 1974. Google ScholarDigital Library
- Larry Constantine and Ed Yourdon. Structured Design. Prentice Hall, 1979.Google Scholar
- E. W. Dijkstra. Cooperating sequential processes. Technical Report Technical Report EWD-123, Technological University, Eindhoven, The Netherlands, 1965. Reprinted in {17}.Google ScholarDigital Library
- Reedy Feggins. Designing component-based architectures with Rational Rose RealTime. http://www.ibm.com/developerworks/rational/library/-797.html. Accessed 2008/03/25.Google Scholar
- Robert W. Floyd. The paradigms of programming. Communications of the ACM, 22(8):455--460, 1979. Turing Award acceptance speech. Google ScholarDigital Library
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Google ScholarDigital Library
- F. Genuys, editor. Programming Languages (NATO Advanced Study Institute). Academic Press, 1968.Google Scholar
- A. Goldberg and D. Robson. Smalltalk-80, The Language and its Implementation. Addison-Wesley, 1983, Reprinted with corrections 1985. Google ScholarDigital Library
- Peter Grogono and Brian Shearing. MEC Reference Manual. Technical Report TR E-06, Department of Computer Science and Software Engineering, Concordia University, February 2008.Google Scholar
- Raphael Güntensperger and Jürg Gutknecht. Active C#. In 2nd International Workshop .NET Technologies'2004, pages 47--59, May 2004.Google Scholar
- C. A. R. Hoare. Communicating sequential processes. Communications of the ACM, 21(8):666--677, August 1978. Google ScholarDigital Library
- Andrew Hunt and David Thomas. The Pragmatic Programmer: From Journeyman to Master. Addison-Wesley, 1999. Google ScholarDigital Library
- Galen C. Hunt and James R. Larus. Singularity: rethinking the software stack. SIGOPS Operating System Review, 41(2):37--49, 2007. Google ScholarDigital Library
- M. A. Jackson. Information systems: Modelling, sequencing and transformation. In R. M. McKeag and A. M. MacNaughten, editors, On the Construction of Programs. Cambridge University Press, 1980.Google Scholar
- Willard Khorfage and Arthur P. Goldberg. Hermes language experiences. Software---Practice and Experience, 25(4):389--402, April 1995. Google ScholarDigital Library
- Thomas Kuhn. The Structure of Scientific Revolutions. University of Chicago Press, 1962. Third Edition published in 1996.Google ScholarCross Ref
- Nurudeen Lameed. Implementing concurrency in a processs-based language. Master's thesis, Department of Computer Science and Software Engineering, Concordia University, Montreal, March 2008.Google Scholar
- Doug Lea, Pete Soper, and Miles Sabin. The Java Isolation API: Introduction, applications and inspiration. bitser.net/isolate-interest/slides.pdf. Accessed 2007/06/14.Google Scholar
- Edward A. Lee. The problem with threads. IEEE Computer, 39(5):33--42, May 2006. Google ScholarDigital Library
- Barbara Liskov. Primitives for distributed computing. In SOSP '79: Proceedings of the Seventh ACM Symposium on Operating Systems Principles, pages 33--42, New York, NY, USA, 1979. ACM. Google ScholarDigital Library
- Jeff Magee and Jeff Kramer. Concurency; State Models and Java Programs. Wiley, second edition, 2006. Google ScholarDigital Library
- S. Matsuoka and A. Yonezawa. Analysis of inheritance anomaly in object-oriented concurrent programming language. In Research Directions in Concurrent Object-Oriented Programming, pages 107--150. MIT Press, 1993. Google ScholarDigital Library
- D. May. Occam. ACM SIGPLAN Notices, 18(4):69--79, April 1983 Google ScholarDigital Library
- Giuseppe Milicia and Vladimiro Sassone. The inheritance anomaly: ten years after. In SAC '04: Proceedings of the 2004 ACM Symposium on Applied Computing, pages 1267--1274, New York, NY, USA, 2004. ACM. Google ScholarDigital Library
- Robin Milner. A Calculus of Communicating Systems. Springer, 1980. Google ScholarDigital Library
- Robin Milner. Communicating and Mobile Systems: The π Calculus. Cambridge University Press, 1999. Google ScholarDigital Library
- K. Nygaard and O-J. Dahl. The development of the SIMULA language. In R. Wexelblat, editor, History of Programming Languages, pages 439--493. Academic Press, 1981. Google ScholarDigital Library
- Bran Selic. What's new in UML 2.0? IBM White Paper, April 2005. Available at ftp://ftp.software.ibm.com/software/rational/web/whitepapers/intro2uml2.pdf. Accessed 2008/03/25.Google Scholar
- Pete Soper. JSR 121: Application Isolation API Specification. Java Specification Requests. http://jcp.org/aboutJava/communityprocess/final/-jsr121/index.html. Accessed 2008/03/15.Google Scholar
- Robert Strom. HERMES: A Language for Distributed Computing. Prentice Hall, 1991. Google ScholarDigital Library
- Herb Sutter and James Larus. Software and the concurrency revolution. ACM Queue, 3(7):54--62, September 2005. Google ScholarDigital Library
- Peter van Roy and Seif Haridi. Concepts, Techniques, and Models of Computer Programming. MIT Press, 2001. Google ScholarDigital Library
Index Terms
- Concurrent software engineering: preparing for paradigm shift
Recommendations
A Survey of Software Engineering Practice: Tools, Methods, and Results
The results of a survey of software development practice are reported and analyzed. The problems encountered in various phases of the software life cycle are measured and correlated with characteristics of the responding installations. The use and ...
An objects-first approach to teaching introductory software development
EDUCATION'09: Proceedings of the 6th WSEAS international conference on Engineering educationSoftware development (SD) refers to design and development of software applications. Most educational institutions teach introductory modules in SD using a procedural paradigm and an imperative language. Modules are often delivered in the first semester ...
Design of an Empirical Study for Comparing the Usability of Concurrent Programming Languages
ESEM '11: Proceedings of the 2011 International Symposium on Empirical Software Engineering and MeasurementThe recent turn towards multicore processing architectures has made concurrency an important part of mainstream software development. As a result, an increasing number of developers have to learn to write concurrent programs, a task that is known to be ...
Comments