Presentation is loading. Please wait.

Presentation is loading. Please wait.

12. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research... 13.2 Roadmap  Summary: —Trends in programming paradigms  Research:...

Similar presentations


Presentation on theme: "12. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research... 13.2 Roadmap  Summary: —Trends in programming paradigms  Research:..."— Presentation transcript:

1 12. Summary, Trends, Research

2 © O. Nierstrasz PS — Summary, Trends, Research... 13.2 Roadmap  Summary: —Trends in programming paradigms  Research:... —scg.unibe.ch

3 © O. Nierstrasz PS — Summary, Trends, Research... 13.3 C and C++ Good for:  systems programming  portability Bad for:  learning (very steep learning curve)  rapid application development  maintenance Trends:  increased standardization  generative programming

4 © O. Nierstrasz PS — Summary, Trends, Research... 13.4 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)

5 © O. Nierstrasz PS — Summary, Trends, Research... 13.5 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...)

6 © O. Nierstrasz PS — Summary, Trends, Research... 13.6 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

7 © O. Nierstrasz PS — Summary, Trends, Research... 13.7 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”)

8 © O. Nierstrasz PS — Summary, Trends, Research... 13.8 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

9 © O. Nierstrasz PS — Summary, Trends, Research... 13.9 Logic Programming Good for:  searching (expert systems, graph & tree searching...)  symbolic interpretation Bad for:  debugging  modularity Trends:  constraints  concurrency  modules

10 © O. Nierstrasz PS — Summary, Trends, Research... 13.10 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)

11 © O. Nierstrasz PS — Summary, Trends, Research... 13.11 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

12 © O. Nierstrasz PS — Summary, Trends, Research... 13.12 Visual Programming Languages Good for:  Simulation, games  GUI programming Bad for:  Complex algorithms  Scale Trends:  Programming for kids  Model transformation

13 © Oscar Nierstrasz ST — Introduction 1.13 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. License http://creativecommons.org/licenses/by-sa/3.0/


Download ppt "12. Summary, Trends, Research. © O. Nierstrasz PS — Summary, Trends, Research... 13.2 Roadmap  Summary: —Trends in programming paradigms  Research:..."

Similar presentations


Ads by Google