Advanced Programming Languages

by Jose Emilio Labra Gayo
Table of Contents
  1. Introduction
  2. Research
  3. Teaching
  4. Paradigms
  5. My List of Programming Languages
  6. Selected Bibliography
  7. Acknowledgments

Introduction

This page collects my personal links in the field of Programming Languages. At first, it was devoted to functional programming. Now, I am very interested in the expressiveness of programming languages in general.

With the term advanced I mean that it is oriented to researchers on programming languages .

I would like to add a personal comment to each link, but sometimes, I prefer to leave it blank than to include a meaningless comment. Of course, this page will always be under construction.

Research

Resources for Programming Language Research
The Computing Research Repository (CoRR)
A general repository of research material that contains an item about Programming Languages
Programming Language Research, by M. Leone
It contains a long list of Researchers in Programming Languages and Compilers

Syntax

Syntax deals with the form and structure of the symbols in a language without considering their meaning.

Backus Naur Form (BNF)
The BNF Web Club Language Contains BNF descriptions of a lot of popular programming languages
Parsing

Semantics

Semantics deals with the meaning of language sentences.

Static Semantics

Static semantics deals with the meaning of language sentences without considering the input data

Attribute Grammars
The LRC Attribute Grammar System
Type Theory
OO Type Theory

Dynamic Semantics

Dynamic semantics takes into account the behaviour of the programs. It usually depends on the input data.

General
Denotational Semantics
Operational Semantics
Axiomatic Semantics
Semantics of Interaction
Monadic Semantics
Action Semantics
Algebraic Semantics

Semantic Related Developments

Abstract Interpretation
Program Transformation

Directory of Program Transformation Systems and People involved in Transformation Research

Decompilation

Decompilation is the inverse of compilation

The Decompilation Page

Partial Evaluation

Semiotics

Pragmatics

Pragmatics deals with the use of a language. In my view, programming language pragmatics refers to programming methodologies, programming techniques, design patterns, etc.

Software Patterns
Generic Programming
Visual Programming
Visual Language Research Bibliography
Persistent Systems
Presistence, by C. Reinke
Reflective Programming
HyperProgramming

Implementation Techniques

Conferences about Programming Languages

Other Lists of conferences
My List of conferences (ordered by submission deadline and not regularly updated...sorry)
Title Submission Deadline Place Date
First International Workshop on Practical Aspects of Declarative Languages (PADL'99) 30 August 1998 San Antonio, Texas January 18-19, 1999
1999 ACM SIGPLAN Conference on Programming Language Design and Implementation 9 Oct. 1998 Atlanta, Georgia, USA May 1-4, 1999
3rd Latin-American Conference on Functional Programming 1 Nov 1998 Recife, Brasil 8-9, March, 1999
2nd International Workshop on Attribute Grammars and their Applications 30 Nov. 1998 Amsterdam, The Netherlands 26 March 1999
European Joint Conference on Theory and Practice of Software - Amsterdam, The Netherlands 22-26 March, 1999
Principles, Logics, and Implementations of high-level programming languages (PLI' 99) - Paris 27 Sept-1Oct, 1999
The 1999 International Conference on all Array Programming Languages (APL99) 1 Feb. 1999 Pennsylvania, USA 10-14, August, 1999
ACM SIGPLAN 1999 Workshop on Compiler Support for System Software (WCSSS'99) 26 Feb. 1999 Atlanta, Georgia, USA 1 May 1999
International Conference on Principles and Practice of Declarative Programming (PPDP'99) 1 March 1999 Paris 29 Sep-1 Oct, 1999
The 1999 International Conference on Functional Programming (ICFP) 10 March 1999 Paris 27-29 Sept, 1999
Semantics of Objects as Processes'99 1 April 1999 Lisboa, Portugal 15 June, 1999
4th Fuji International Symposium on Functional and Logic Programming 24 May 1999 Tsukuba, Japan Nov, 1999
Workshop on Algorithmic Aspects of Advanced Programming Languages (WAAAPL'99) 16 June 1999 Paris 29-30 Sept, 1999
The Third International Workshop on Higher Order Operational Techniques in Semantics (HOOTS99) 26 June 1999 Paris 30 Sep - 1 Oct 1999
Second International Workshop on Practical Aspects of Declarative Languages (PADL'00) 9th August Boston, Massachusets 17-18 January 2000
1ST Scottish Functional Programming Wrokshop 30 April 1999 Stirling, Scotland 29 August - 1 Sep. 1999
(STACS'2000) 17th International Symposium on Theoretical Aspects of Computer Science 5 Sep. 1999 Lille, France 17-19 Feb. 2000
The 11th Nordic Workshop on Programming Theory 5 Sep. 1999 Uppsala University, Sweden 6-8 Oct. 2000
ICLP'99 Workshop on Optimization and Implementation of Declarative Programming Languages (WOID'99) 16 Sep. 1999 Las Cruces, New Mexico 29 Nov. - 4 Dec. 1999
Frontiers of Combining Systems (FroCoS'2000) 1 October 1999 Nancy, France 22-24 March 1999
The Seventh International Workshop on Foundations of Object-Oriented Languages 4 October 1999 Boston, Massachusetts, USA 22 January 2000
2000 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM'00) 4 October 1999 Boston, Massachusetts, USA 22-23 January 2000
The Third Workshop on Rigorous Object Oriented Methods (ROOM 3) 8 October 1999 York, UK 17 January 2000
European Joint Conferences on Theory and Practice of Software (ETAPS'2000) 18 October 1999 Berlin, Germany 25 March - 2 Apr. 2000
14th European Conference on Object-Oriented Programming (ECOOP'2000) 22 October 1999 Cannes, France 12-16 June 2000
International Conference on Theoretical Computer Science 28 January 2000 Sendai, Japan 17-19 August 2000
Workshop on Coalgebraic Methods in Computer Science (CMCS'2000) 3 January 2000 Berlin, Germany 25-26 March 2000
Joint Modular Languages Conference (JMLC'2000) 31 January 2000 Zurich, Switzerland 6-8 Sept. 2000
IV Brazilian Symposium on Programming Languages 31 January 2000 Recife, Brazil 17-19 May 2000
2nd International Workshop on "Constructive Methods for Parallel Programming" (CMPP 2000) 20 March 2000 Ponte de Lima, Portugal 2 July 2000
Workshop on Generic Programming 20th March 2000 Ponte de Lima, Portugal 6th July 2000

Related Groups and People

Other Lists of Researchers in Programming Languages
Advanced Programming Languages
Researching in foundations, design, implementation, and optimization of current and future programming languages by Microsoft Research
BRICS
Basic Research in Computer Science
Imperial College
The Logic Programming Group at Imperial College (R. Kowalski)
Kansas State University
Programming Language Semantics Research (D. Schmidt)
Northeastern University
The Programming Language Semantics Group
National Technical University of Athens
Nikolaos S. Papaspyrou (Denotational Semantics)
Universidad de A Coruña
Victor M. Gulias Concurrent Functional Languages. Objective Caml extensions. Formal Verification and Rewriting Systems
Universidad Complutense de Madrid
Universidad Politécnica de Madrid
Computational Logic, Implementation, and Parallelism Lab ( Manuel Hermenegildo)
Universidad Nacional de La Plata. Argentina
LIFIA (Computational Biology, Combinator Parsers)
Universidad de Málaga
J. Enrique Gallardo (Concurrent Haskell, WinHugs)
University of Oviedo
Oviedo3 Group , (Jose E. Labra G )
University of Copenhagen
DIKU Topps: Program semantics and specialization
Utrecht University
Software Technology Group , S. D. Swierstra (Functional Programming, Attribute Grammars, Combinator Parsers)

Teaching Programming Languages

Introduction to Programming Languages
Selecting the first language
Courses about Programming Languages
Courses about Foundations of Programming Languages
Courses about Language Processors

Programming Language Paradigms

Comparing Programming Languages

The Dictionary of Programming Languages
Programming Language Exploration
My Programming Language Crisis
A comparison of several features of different programming languages
Scripting: Higher Level Programming for the 21st Century, by John K. Ousterhout IEEE Computer magazine, March 1998
Justifies the power of Scripting programming languages
Are VHLLs Really High-Level? Thoughts on the Surprising Conservatism of Computer Programming
By Greg Nilsson
Interesting programming languages
Numeric Quest Inc.
The Quine Page
99 Bottles of Beer
A very long list of programming languages solving the same problem
Some Papers Comparing programming languages
Declarative vs. Inferential
A discussion about "Declarative Programming languages" and related names.

Functional Programming

Functional programming on the web, by Phillip Wadler
com.lang.functional FAQ
The Abyss of Functional Language
It contains a lot of links to functional programming and has a very similar goal to these pages. 
Links to functional programming
A collection of links selected by the Functional Programming Group at Glasgow
Claus Reinke
Functional Programming and Persistence
Selected Functional Programming Languages

Logic Programming

Virtual Library
Association of Logic Programming
Guide to Constraint Programming
Implementation of logic languages
Contains interesting pointers about how to implement efficient logic languages
Selected Logic Programming Languages

Object Oriented Programming

Object Oriented Programming, by Ricardo Devis
Object Oriented Systems by Computer Technology
Object-Orientation PhD network
Selected Object Oriented Programming Languages

Cross Paradigms

Logic-Functional

Escher
A prototype for a constraint functional logic language
Mercury
Advanced Logic/functional programming language

Object Oriented-Functional

FOOPS
A Functional and Object Oriented Programming System
Kawa
A Java Based Scheme System. Compiles Scheme code into Java byte-codes

Object Oriented-Logic

Resources in Object-Oriented Logic Programming

Programming Languages

My List of Programming Languages
Name Description Developer
ABC Interactive and imperative language for teaching purposes L. Meertens S. Pemberton
Ada A standardized programming language that supports a lot of features suitable for software engineering (modularity, efficiency, abstract data types, concurrent programming, object-oriented programming, etc.) . The name comes from Ada Lovelace (1815-1852). It was a registered trademark from the US government. Now it relies on a certification mark. All validated Ada compilers must have it.
ADL Algebraic Design Language Tim Sheard
Agora A reflective prototype-based object-oriented programming language entirely (and solely!) based on message passing W. De Meuter
Bablog A lazy higher order programming language
Ch A superset of C Interpreter which can interface with C/C++ binary libraries and be embedded in other application programs. SoftIntegration
Charity A nice Categorical Programming Language. It has lazy evaluation, higher-order functions and all its computations terminate! Charity Development Group at the University of Calgary
Cilk A language for multithreaded parallel programming based on ANSI C. Supercomputing Technologies group at MIT
Clean A lazy functional programming language with unique types R. Plasmeijer et al. Commercial Support
Cayenne Lazy Functional Language with dependent types L. Augustsson
Dylan Object-oriented DYnamic LANguage Apple Computer
Elegant It has strong typing (with subtyping and polymorphism) and supports attribute grammars. (= Exploiting Lazy Evaluation for the Grammar Attributes of Non Terminals). Now it is available as open source software. Philips, Lex Augusteijn
Elephant 2000 A Programming Language Based on Speech Acts J. McCarthy
Elf Constraint Logic Programming Language based on the Logical Framework. It is a uniform meta-language for specifying, implementing, and proving properties of programming languages and logics. Frank Pfenning
Erlang A non-pure functional programming language specially suited to telecommunication products. It contains a platform-independent development environment. Other page about Erlang. A new Project: High-Performance Erlang

Ericsson
Escher A declarative general purpose language integrating logic and functional features John Lloyd, A. Bowers
FISH Array Prog. Language, Functional = Imperative + Shape B. Jay
FOOPS Functional Object Oriented Programming System J. Goguen
Gjava An extension of Java with Generic Types P. Wadler M. Ordersky
Gödel A strongly typed logic programming language. Purely declarative John Lloyd, A. Bowers
Gofer Predecessor of HUGS, a Haskell variation with some extensions to the type system. A tutorial

M. P. Jones
Haskell A non-strict purely functional language International Committe
Hugs It was named Haskell Users Gofer System. Now it is a Haskell implementation as a interpreter M. P. Jones. Yale University
Hope An early Functional language with polymorphic typing and algebraic datatypes R. Paterson
J A succesor of APL Iverson Software
Java A famous Object Oriented Programming Language  Sun
Lambda Prolog A logic programming language with higher order programming, polymorphic typing and modules Dale Miller, Gopalan Nadathur
LEDA A multiparadigm programming language T. Budd
Life Logic, Inheritance, Functions, and Equations H. Ait Kaci
LISP LISt Processing. An historic symbolic programming language that has survived and is widely used today Invented by John McArthy.
Maude A high-performance reflective language and system supporting both equational and rewriting logic specification and programming The Maude Group. SRI International
Mercury Advanced Logic/functional programming language F. Henderson. ...
ML A functional programming language with strict evaluation and some imperative features. 
Mondrian An experimental scripting programming language evolved from Haskell E. Meijer
OBJ A family of programming languages based on order sorted equational logic J. Goguen
OCAML A dialect of ML with Object Oriented capabilities X. Leroy
Oz A concurrent object-oriented language with dataflow synchronization
Pict A concurrent programming language based on the pi-calculus B.C. Pierce, D. Turner
Pizza A superset of Java with parametric polimorphism, algebraic data types, etc. P. Wadler, M. Odersky
Pliant A highly customisable programming language with dynamic compilation and reflexiveness Hubert Tonneau
P2 Shape Polymorphism B. Jay
Python An interpreted, interactive and object oriented programming language. It also has modules, classes, exceptions and dynamic typing. Guido Van Rossum
Rebol Relative Expression-Based Object Language Carl Sassenrath at Rebol Technologies
Scheme A small dialect of Lisp

G. L. Steele Jr.

G. J. Sussman

TCL Tool Command Language

J. Ousterhoot

Scriptics: Tcl Platform Company

Toy A prototype for a constraint functional logic language.

Selected Bibliography

This section is new (I want to include more papers and books)

Selected Papers

On understanding types, data abstraction, and polymorphism . Luca Cardelli and Peter Wegner
Computing Surveys, 17(4):471-522, 1985. A must read paper.
Type Systems. Luca Cardelli
Chapter on the CRC Handbook of Computer Science and Engineering. A tutorial paper on type systems
Growing a Language. G. Steele (OOPSLA'98)
A very nice paper that describes how a programming language should grow

Selected Books

John C. Mithell, Foundations for Programming Languages. MIT Press, 1996
John C. Reynolds, Theories of Programming Languages. Cambridge University Press, 1998. 500+xii pages, ISBN 0-521-59414-6 (hardback)

Acknowledgments

This page was inspired by the overwhelming "Object Oriented Page" from Ricardo Devis.

I want to add a link to those pages who have a link to this page. If you have one, please, let me know.

Links to this page:
Jax RCFB Miscellaneous Links
Jack J. Woehr
Some Links
Janaki Sivaramakrishnan
Open Directory Project
It has a category dedicated to Computers/Programming/Languages and has added a link to this Page.
EAPLS Related web sites
The European Association for Programming Languages and Systems page has a list of related web sites
an introduction to programming languages
andrew cooke (he prefers it without capitals)
The Code Cranker
The Programmer's search engine
Valid CSS! Valid HTML 4.0! Viewable With Any Browser nedstat
Author: Jose Emilio Labra Gayo
Last Updated: Date: 16 May 2000