Abstract
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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
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, M.: On the expressive power of programming languages. In: Jones, N.D. (ed.) ESOP 1990. LNCS, vol. 432, pp. 134–151. Springer, Heidelberg (1990)
Hardy, N.: KeyKOS architecture. ACM SIGOPS Operating Systems Review 19, 8–25 (1985)
Haridi, S., Roy, P.V., Brand, P., Mehl, M., Scheidhauer, R., Smolka, G.: Efficient logic variables for distributed computing. ACM Transactions on Programming Languages and Systems 21(3), 569–626 (1999)
Haridi, S., Roy, P.V., Brand, P., Schulte, C.: Programming languages for distributed applications. New Generation Computing 16(3), 223–261 (1998)
Hewitt, C.: Viewing control structures as patterns of passing messages. Journal of Artificial Intelligence 8(3), 323–364 (1977)
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. Communications of the ACM 20(5), 301–309 (1977)
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, M.S., Morningstar, C., Frantz, B.: Capability-based financial instruments. In: Frankel, Y. (ed.) FC 2000. LNCS, vol. 1962, pp. 349–378. Springer, Heidelberg (2001)
Miller, M.S., Shapiro, J.: Concurrency among strangers. In: De Nicola, R., Sangiorgi, D. (eds.) TGC 2005. LNCS, vol. 3705, pp. 195–229. Springer, Heidelberg (2005)
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, E.: The family of concurrent logic programming languages. ACM Computing Surveys 21(3), 413–510 (1989)
Spiessens, F., Van Roy, P.: The Oz-E project: Design guidelines for a secure multiparadigm programming language. In: Van Roy, P. (ed.) MOZ 2004. LNCS, vol. 3389, pp. 21–40. Springer, Heidelberg (2005)
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, P., Haridi, S., Brand, P., Smolka, G., Mehl, M., Scheidhauer, R.: Mobile objects in Distributed Oz. ACM Transactions on Programming Languages and Systems 19(5), 804–851 (1997)
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
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Van Roy, P. (2006). Convergence in Language Design: A Case of Lightning Striking Four Times in the Same Place. In: Hagiya, M., Wadler, P. (eds) Functional and Logic Programming. FLOPS 2006. Lecture Notes in Computer Science, vol 3945. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11737414_2
Download citation
DOI: https://doi.org/10.1007/11737414_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-33438-5
Online ISBN: 978-3-540-33439-2
eBook Packages: Computer ScienceComputer Science (R0)Springer Nature Proceedings Computer Science
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.