The family of concurrent logic programming languages
ACM Computing Surveys (CSUR)
Ports for objects in concurrent logic programs
Research directions in concurrent object-oriented programming
A language with distributed scope
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Mobile objects in distributed Oz
ACM Transactions on Programming Languages and Systems (TOPLAS)
Programming languages for distributed applications
New Generation Computing
Efficient logic variables for distributed computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
SP/k: a system for teaching computer programming
Communications of the ACM
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs
On the Expressive Power of Programming Languages
ESOP '90 Proceedings of the 3rd European Symposium on Programming
Capability-Based Financial Instruments
FC '00 Proceedings of the 4th International Conference on Financial Cryptography
A Note on Distributed Computing
MOS '96 Selected Presentations and Invited Papers Second International Workshop on Mobile Object Systems - Towards the Programmable Internet
ACM SIGOPS Operating Systems Review
Concepts, Techniques, and Models of Computer Programming
Concepts, Techniques, and Models of Computer Programming
MapReduce: simplified data processing on large clusters
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
A universal modular ACTOR formalism for artificial intelligence
IJCAI'73 Proceedings of the 3rd international joint conference on Artificial intelligence
Concurrency among strangers: programming in E as plan coordination
TGC'05 Proceedings of the 1st international conference on Trustworthy global computing
The oz-e project: design guidelines for a secure multiparadigm programming language
MOZ'04 Proceedings of the Second international conference on Multiparadigm Programming in Mozart/Oz
Delimited continuations in operating systems
CONTEXT'07 Proceedings of the 6th international and interdisciplinary conference on Modeling and using context
Links: web programming without tiers
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
Overcoming software fragility with interacting feedback loops and reversible phase transitions
VoCS'08 Proceedings of the 2008 international conference on Visions of Computer Science: BCS International Academic Conference
Hi-index | 0.00 |
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.