* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Formalizing the Dynamic Semantics of Java
Survey
Document related concepts
Supercomputer architecture wikipedia , lookup
Stream processing wikipedia , lookup
Join-pattern wikipedia , lookup
History of compiler construction wikipedia , lookup
Control flow wikipedia , lookup
Logic programming wikipedia , lookup
Falcon (programming language) wikipedia , lookup
Go (programming language) wikipedia , lookup
Object-oriented programming wikipedia , lookup
Programming language wikipedia , lookup
Abstraction (computer science) wikipedia , lookup
Reactive programming wikipedia , lookup
C Sharp (programming language) wikipedia , lookup
Transcript
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