Van Roy, Peter
[UCL]
What will a definitive programming language look like? By definitive language I mean a programming language that gives good solutions at its level of abstraction, allowing computer science researchers to move on and work at higher levels. Given the evolution of computer science as a field with a rising level of abstraction, it is my belief that a small set of definitive languages will eventually exist. But how can we learn something about this set, considering that many basic questions about languages have not yet been settled? In this paper, I give some tentative conclusions about one definitive language. I present four case studies of substantial research projects that tackle important problems in four quite different areas: fault-tolerant programming, secure distributed programming, network-transparent distributed programming, and teaching programming as a unified discipline. All four projects had to think about language design. In this paper, I summarize the reasons why each project designed the language it did. It turns out that all four languages have a common structure. They can be seen as layered, with the following four layers in this order: a strict functional core, then deterministic concurrency, then message-passing concurrency, and finally shared-state concurrency (usually with transactions). This confirms the importance of functional programming and message passing as important defaults; however, global mutable state is also seen as an essential ingredient.
- Agorics, Inc. (2004),
http://www.agorics.com
- Abelson, H., Sussman, G.J., Sussman, J.: Structure and Interpretation of Computer Programs, 2nd edn. MIT Press, Cambridge (1996)
- Al-Metwally, M.: Design and Implementation of a Fault-Tolerant Transactional Object Store. PhD thesis, Al-Azhar University, Cairo, Egypt (December 2003)
- Armstrong, J.: Making reliable distributed systems in the presence of software errors. PhD thesis, Royal Institute of Technology (KTH), Kista, Sweden (November 2003)
- Armstrong, J., Williams, M., Wikström, C., Virding, R.: Concurrent Programming in Erlang. Prentice-Hall, Englewood Cliffs (1996)
- Cardelli, L.: A language with distributed scope. In: Principles of Programming Languages (POPL), San Francisco, CA, pp. 286–297. ACM Press, New York (1995)
- Dean, J., Ghemawat, S.: MapReduce: Simplified data processing on large clusters. In: 6th Symposium on Operating Systems Design and Implementation (OSDI 2004), December 2004, pp. 137–150 (2004)
- Ericsson: Open Telecom Platform—User’s Guide, Reference Manual, Installation Guide, OS Specific Parts. In: Telefonaktiebolaget LM Ericsson, Stockholm, Sweden (1996)
- Felleisen Matthias, On the expressive power of programming languages, ESOP '90 (1990) ISBN:9783540525929 p.134-151, 10.1007/3-540-52592-0_60
- Hardy Norman, KeyKOS architecture, 10.1145/858336.858337
- Haridi Seif, Van Roy Peter, Brand Per, Mehl Michael, Scheidhauer Ralf, Smolka Gert, Efficient logic variables for distributed computing, 10.1145/319301.319347
- Haridi Seif, Van Roy Peter, Brand Per, Schulte Christian, Programming languages for distributed applications, 10.1007/bf03037481
- Hewitt Carl, Viewing control structures as patterns of passing messages, 10.1016/0004-3702(77)90033-9
- Hewitt, C., Bishop, P., Steiger, R.: A universal modular ACTOR formalism for artificial intelligence. In: 3rd International Joint Conference on Artificial Intelligence (IJCAI), August 1973, pp. 235–245 (1973)
- Holt R. C., Wortman D. B., Barnard D. T., Cordy J. R., SP/k: a system for teaching computer programming, 10.1145/359581.359586
- Janson, S., Montelius, J., Haridi, S.: Ports for Objects in Concurrent Logic Programs. In: Agha, G., Wegner, P., Yonezawa, A. (eds.) Trends in Object-Based Concurrent Computing, pp. 211–231. MIT Press, Cambridge (1993)
- Lambda the Ultimate discussion. State and modularity (October 2003),
http://www.lambda-the-ultimate.org/classic/message9361.html
- Lea, D.: Concurrent Programming in Java, 2nd edn. Addison-Wesley, Reading (2000)
- Miller Mark S., Morningstar Chip, Frantz Bill, Capability-Based Financial Instruments, Financial Cryptography (2001) ISBN:9783540427001 p.349-378, 10.1007/3-540-45472-1_24
- Miller Mark S., Tribble E. Dean, Shapiro Jonathan, Concurrency Among Strangers, Trustworthy Global Computing (2005) ISBN:9783540300076 p.195-229, 10.1007/11580850_12
- Miller, M.S., Stiegler, M., Close, T., Frantz, B., Yee, K.-P., Morningstar, C., Shapiro, J., Hardy, N., Tribble, E.D., Barnes, D., Bornstien, D., Wilcox-O’Hearn, B., Stanley, T., Reid, K., Darius Bacon, E.: Open source distributed capabilities (2001), Available at
www.erights.org
- Morrison, J.P.: Flow-Based Programming: A New Approach to Application Development. Van Nostrand Reinhold, New York (1994)
- Shapiro Ehud, The family of concurrent logic programming languages, 10.1145/72551.72555
- Spiessens Fred, Van Roy Peter, The Oz-E Project: Design Guidelines for a Secure Multiparadigm Programming Language, Multiparadigm Programming in Mozart/Oz (2005) ISBN:9783540250791 p.21-40, 10.1007/978-3-540-31845-3_3
- Stiegler, M.: The SkyNet virus: Why it is unstoppable; How to stop it. Talk available,
http://www.erights.org/talks/skynet/
- Van Roy, P., Haridi, S.: Concepts, Techniques, and Models of Computer Programming. MIT Press, Cambridge (2004)
- Van Roy Peter, Haridi Seif, Brand Per, Smolka Gert, Mehl Michael, Scheidhauer Ralf, Mobile objects in distributed Oz, 10.1145/265943.265972
- Waldo, J., Wyant, G., Wollrath, A., Kendall, S.C.: A note on distributed computing. In: Second International Workshop on Mobile Object Systems– Towards the Programmable Internet, July 1996, pp. 49–64 (1996); Originally published at Sun Microsystems Laboratories in 1994
- Wiger, U.: Four-fold increase in productivity and quality – industrial-strengh functional programming in telecom-class products. In: Proceedings of the 2001 Workshop on Formal Design of Safety Critical Embedded Systems (2001)
- Wikipedia, the free encyclopedia. Entry “virtual economy” (January 2006),
http://www.en.wikipedia.org/wiki/Virtual_economy
Bibliographic reference |
Van Roy, Peter. Convergence in language design: A case of lightning striking four times in the same place.8th International Symposium on Functional and Logic Programming (Fuji Inst Educ & Training, Fuji Susono (Japan), Apr 24-26, 2006). In: Lecture Notes in Computer Science, Vol. 3945, p. 2-12 (2006) |
Permanent URL |
http://hdl.handle.net/2078.1/60006 |