Formalizing the Dynamic Semantics of Java

Download Report

Transcript Formalizing the Dynamic Semantics of Java

1
Introdução
 Qual é a importância da linguagem?
 O que é a linguagem?
 Como aprendemos a linguagem?
 O que é a linguagem de programação?
 Como aprendemos a linguagem de programação?
© 2006, Gustavo Motta, UFPB
1-1
1
Introduction
 Programming linguistics:
• concepts and paradigms
• syntax, semantics, and pragmatics
• language processors.
 Historical development of programming languages and
paradigms.
© 2004, D.A. Watt, University of Glasgow
1-2
Programming linguistics
 Programming linguistics is the study of programming
languages (PLs).
 This is by analogy with linguistics, the study of natural
languages (NLs):
• Both PLs and NLs have syntax (form) and semantics (meaning).
 However, NLs are far broader, more expressive, and more
subtle than PLs.
 Also, linguists are limited to studying existing NLs.
Computing scientists can design, specify, and implement
new PLs.
1-3
Properties
 A PL must be universal – capable of expressing any
computation.
• A language without iteration or recursion is not universal.
• A language of recursive functions (and nothing else) is universal.
 A PL should be reasonably natural for expressing
computations in its intended application area.
 A PL must be implementable – it must be possible to run
every program on a computer.
 A PL should be capable of acceptably efficient
implementation.
1-4
Concepts
 Concepts are building blocks of programs and PLs:
• values and types
• variables and storage
• bindings and scope
• procedural abstraction
• data abstraction
• generic abstraction
• concurrency
1-5
Paradigms
 A paradigm is a style of programming, characterized by a
particular selection of key concepts.
 Imperative programming: variables, commands,
procedures.
 Object-oriented (OO) programming: objects, methods,
classes.
 Concurrent programming: processes, communication.
 Functional programming: values, expressions, functions.
 Logic programming: assertions, relations.
1-6
Syntax, semantics, and pragmatics
 A PL’s syntax is concerned with the form of programs:
how expressions, commands, declarations, and other
constructs must be arranged to make a well-formed
program.
 A PL’s semantics is concerned with the meaning of (wellformed) programs: how a program may be expected to
behave when executed on a computer.
 A PL’s pragmatics is concerned with the way in which the
PL is intended to be used in practice. Pragmatics include
the paradigm(s) supported by the PL.
1-7
Language processors
 A language processor is a system for processing programs
– either executing them or preparing them for execution.
 Language processors include:
• compilers
• interpreters
• source-code editors
• symbolic debuggers.
1-8
Historical development (1)
1955
Fortran
Lisp
Algol60
1960
Cobol
1965
PL/I
Algol68
Simula
1970
Pascal
Smalltalk
C
1975
Modula
ML
1980
Ada83
OO
C++
imperative
concurrent
functional
1985
1-9
Historical development (2)
1980
Ada83
1985
C++
Haskell
1995
Ada95
Java
2000
C#
OO
1990
imperative
concurrent
functional
2005
1-10