Transcript Bad for

12. Summary, Trends, Research
PS — Summary, Trends, Research ...
Roadmap
>
Summary:
— Trends in programming paradigms
>
Research: ...
— scg.unibe.ch
© O. Nierstrasz
13.2
PS — Summary, Trends, Research ...
C and C++
Good for:
> systems programming
> portability
Bad for:
> learning (very steep learning curve)
> rapid application development
> maintenance
Trends:
> increased standardization
> generative programming
© O. Nierstrasz
13.3
PS — Summary, Trends, Research ...
Functional Languages
Good for:
> equational reasoning
> declarative programming
Bad for:
> OOP
> explicit concurrency
> run-time efficiency (although constantly improving)
Trends:
> standardization: Haskell
> extensions (concurrency, objects)
© O. Nierstrasz
13.4
PS — Summary, Trends, Research ...
Lambda Calculus
Good for:
> simple, operational foundation for sequential
programming languages
Bad for:
> programming
Trends:
> object calculi
> concurrent, distributed calculi (e.g., pi calculus, “join”
calculus ...)
© O. Nierstrasz
13.5
PS — Summary, Trends, Research ...
Type Systems
Good for:
> catching static errors
> documenting interfaces
> formalizing and reasoning about domains of functions
and objects
Bad for:
> reflection; self-modifying programs
Trends:
> reasoning about concurrency and other side effects
> “pluggable”, optional types
© O. Nierstrasz
13.6
PS — Summary, Trends, Research ...
Polymorphism
Good for:
> parametric good for generic containers
> subtyping good for frameworks (generic clients)
> overloading syntactic convenience (classes in Haskell,
overloading in Java)
> coercion convenient, but may obscure meaning
Bad for:
> local reasoning
> optimization
Trends:
> combining subtyping, polymorphism and overloading
> exploring alternatives to subtyping (“matching”)
© O. Nierstrasz
13.7
PS — Summary, Trends, Research ...
Denotational Semantics
Good for:
> formally and unambiguously specifying languages
> sequential languages
Bad for:
> modelling concurrency and distribution
Trends:
> “Natural Semantics” (inference rules vs. equations)
> concurrent, distributed calculi
© O. Nierstrasz
13.8
PS — Summary, Trends, Research ...
Logic Programming
Good for:
> searching (expert systems, graph & tree searching ...)
> symbolic interpretation
Bad for:
> debugging
> modularity
Trends:
> constraints
> concurrency
> modules
© O. Nierstrasz
13.9
PS — Summary, Trends, Research ...
Object-Oriented Languages
Good for:
> domain modelling
> developing reusable frameworks
Bad for:
> learning (steep learning curve)
> understanding (hard to keep systems well-structured)
> semantics (no agreement)
Trends:
> aspect-oriented programming
> prototype-based programming (renaissance)
© O. Nierstrasz
13.10
PS — Summary, Trends, Research ...
Scripting Languages
Good for:
> rapid prototyping
> high-level programming
> reflection; on-the-fly generation and evaluation of
programs
> gluing components from different environments
Bad for:
> type-checking; reasoning about program correctness
> performance-critical applications
Trends:
> replacing programming as main development paradigm
> scripting web applications
© O. Nierstrasz
13.11
PS — Summary, Trends, Research ...
Visual Programming Languages
Good for:
> Simulation, games
> GUI programming
Bad for:
> Complex algorithms
> Scale
Trends:
> Programming for kids
> Model transformation
© O. Nierstrasz
13.12
ST — Introduction
License
http://creativecommons.org/licenses/by-sa/3.0/
Attribution-ShareAlike 3.0 Unported
You are free:
to Share — to copy, distribute and transmit the work
to Remix — to adapt the work
Under the following conditions:
Attribution. You must attribute the work in the manner specified by the author or licensor
(but not in any way that suggests that they endorse you or your use of the work).
Share Alike. If you alter, transform, or build upon this work, you may distribute the
resulting work only under the same, similar or a compatible license.
For any reuse or distribution, you must make clear to others the license terms of this work. The
best way to do this is with a link to this web page.
Any of the above conditions can be waived if you get permission from the copyright holder.
Nothing in this license impairs or restricts the author's moral rights.
© Oscar Nierstrasz
1.13