28
Fremtidens programmeringssprog Bent Thomsen PhD, DIC, Cand.Scient, EurIng, CEng, CITP, CSci, FBCS, MACM, MIEEE [email protected] Department of Computer Science Aalborg University

Fremtidens programmeringssprog       

  • Upload
    xuxa

  • View
    53

  • Download
    0

Embed Size (px)

DESCRIPTION

Fremtidens programmeringssprog       . Bent Thomsen PhD, DIC, Cand.Scient, EurIng, CEng, CITP, CSci, FBCS, MACM, MIEEE [email protected] Department of Computer Science Aalborg University. How would you like to programme in 20 years?. Well …. - PowerPoint PPT Presentation

Citation preview

Page 1: Fremtidens programmeringssprog       

Fremtidens programmeringssprog       

Bent ThomsenPhD, DIC, Cand.Scient, EurIng, CEng, CITP, CSci, FBCS, MACM, MIEEE

[email protected] of Computer Science

Aalborg University

Page 2: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

2

How would you like to programme in 20 years?

Page 3: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

3

Well …

"Some believe that we lacked the programming language to describe your perfect world"

Agent Smith - The Matrix

Page 4: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

4

How would you like to program in 20 years?

• New research project (codename P2025)– Currently reviewing the state-of-the-art

• ”The P-gang”:• Kurt Nørmark • Thomas Vestdam• Per Madsen • Lone Leth • Bent Thomsen

• Several Master Student projects

Page 5: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

5

2003/2004/2005 DAT5/DAT6 projects

• DAT5– Java vs. .Net Mobile (ver. 1)– Java vs. .Net Mobile (ver. 2)– Business Process Management

• DAT6– Mobile Business Process Infrastructure based on Ambients– Aspect.Net– Search for WS based on Semantic Web– Performance analysis of J2ME systems– (Distribution of computations in Location Based Services)

• DAT8/D8– Java vs. C on DSP– Multiple dispatch in C#

Page 6: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

6

Programming Language Research

• Oldest CS discipline (except HW) – All software is written in a programming language– over 50 years since first Fortran compiler

• Long term research– New ideas, concepts, … implemented in ”pure” language– May eventually become understood and incorporated in

mainstream Languages– It takes 10++ years for a paradigm shift to make it to industrial

practice– It takes 5 years from language ideas to industrial strength

implementation– And 5 years of ”deltas” to make it competitive

• High Risk – Low Reward– One in 7000 languages make it– Hardly anybody (except Bill Gates) make money on PrgL.

Page 7: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

7

What is the Most Important Open Problem in

Computing?

Page 8: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

8

The Most Important Open Problem in Computing

Increasing Programmer Productivity– Write programs correctly– Write programs quickly– Write programs easily

• Why?– Decreases support cost– Decreases development cost– Decreases time to market– Increases satisfaction

Todd A. Proebsting

Page 9: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

9

How to increase Programmer Productivity?

3 ways of increasing programmer productivity:

1. Process (software engineering)– Controlling programmers– Good process can yield up to 20% increase

2. Tools (verification, static analysis, program generation)– Good tools can yield up to 10% increase

3. Language design --- the center of the universe!– Core abstractions, mechanisms, services, guarantees– Affect how programmers approach a task (C vs. SML)– New languages can yield 700% increase

Page 10: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

10

Why Are There So Many Programming Languages

• Why does some people speak French?• Programming languages have evolved over time as

better ways have been developed to design them.– First programming languages were developed in the 1950s– Since then thousands of languages have been developed

• Different programming languages are designed for different types of programs.

Page 11: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

11

C

Different Programming language Design Philosophies

Other languages

If all you have is a hammer, then everything looks like a nail.

Page 12: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

12

Programming Language History1940s

The first electronic computers were monstrous contraptions– Programmed in binary machine code by hand– Code is not reusable or relocatable– Computation and machine maintenance were difficult:

• cathode tubes regularly burned out• The term ‘‘bug’’ originated from a bug that reportedly roamed

around in a machine causing short circuits

Page 13: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

13

Programming Language HistoryLate 1940s early 1950s

• Assembly languages – invented to allow machine operations to be expressed

in mnemonic abbreviations – Enables larger, reusable, and re-locatable programs– Actual machine code is produced by an assembler– Early assemblers had a one-to-one correspondence

between assembly and machine instructions– Later: expansion of macros into multiple machine

instructions to achieve a form of higher-level programming

Page 14: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

14

Programming Language History Mid 1950s

• Fortran , the first higher-level language– Now programs could be developed that were machine

independent!– Main computing activity in the 50s: solve numerical

problems in science and engineering– Other high-level languages soon followed:

• Algol 58 is an improvement compared to Fortran• Cobol for business computing• Lisp for symbolic computing and artificial intelligence• BASIC for "beginners"

Page 15: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

15

Programming Language History1960s

• Structured Programming, Dijkstra, Dahl, and Hoare.

• Pascal, Niklaus Wirth (ETH, Zurich)– Modelled after Algol– No GOTO– Very strongly typed– Procedures nested inside each other– Designed for teaching programming

• Simula, Dahl and Nygaard (Norway)– The first language with objects, classes, and

subclasses

Page 16: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

16

Programming Language History1970s

• C, Ken Thompson (Bell Labs)– Successor to B, which was stripped-down BCPL.– High-level constructs and low-level power

• Ada, Jean Ichbiah (France)– Instigated by the Department of Defense– Designed for systems programming, especially

embedded systems.

Page 17: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

17

Programming Language History1970s

• Smalltalk, Alan Kay, Adele Goldberg (Xerox PARC)– Graphics-rich

• GUI

• Fonts

– Object-oriented• Everything is an object

• Objects communicate through messages

• Scheme, Gerald Sussman & Guy Steele (MIT)– LISP with static scoping

• Prolog, Philippe Roussel (France)– Based on rules, facts, and queries.

Page 18: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

18

Programming Language History1980s

• Object-oriented programming– Important innovation for software development– The concept of a class is based on the notion of data

type abstraction from Simula 67 , a language for discrete event simulation that has classes but no inheritance

• 1979-1983: C++ Bjarne Stroustrop (Bell Labs)– Originally thought of as “C with classes”.– First widely-accepted object-oriented language.– First implemented as a pre-processor for the C

compiler.

Page 19: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

19

Programming Language History1980s

• Functional Programming– Extensive list of new concepts

• Lazy vs. eager evaluation

• Pure vs. imperative features

• Parametric polymorphism

• Type inference

• (Garbage collection)

– Hope– Clean– Haskell– SML– Caml

Page 20: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

20

Programming Language History1990s

• HTML, Tim Berners-Lee (CERN)– “Hypertext Markup Language”

• Language of the World Wide Web.

– A markup language, not a programming language.

• Scripting languages– PERL.

• CGI or Apache module

– Languages within Web pages• JavaScript, VBScript• PHP, ASP, JSP

• Java, James Gosling (Sun)

Page 21: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

21

The evolution of Java• 1993 Oak project at Sun

– small, robust, architecture independent, Object-Oriented, language to control interactive TV.

– didn’t go anywhere

• 1995 Oak becomes Java– Focus on the web

• 1996 Java 1.0 available• 1997 (March) Java 1.1 - some language changes, much larger library, new

event handling model • 1997 (September) Java 1.2 beta – huge increase in libraries including

Swing, new collection classes, J2EE• 1998 (October) Java 1.2 final (Java2!)• 2000 (April) Java 1.3 final• 2001 Java 1.4 final (assert)• 2004 Java 1.5 (parameterized types, enum, …)• 2005 J2EE 1.5

Page 22: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

22

java.applet, java.awt, java.io, java.lang, java.net, java.util

java.math, java.rmi, java.security, java.sql, java.text, java.beans

javax.accessibility, javax.swing, org.omg

javax.naming, javax.sound, javax.transaction

java.nio, javax.imageio,javax.net, javax.print,javax.security, org.w3c

javax.activity,javax.management

Java 1.08 packages212 classes

Java 1.123 packages504 classes

Java 1.259 packages1520 classes

Java 1.377 packages1595 classes

Java 1.4103 packages2175 classes

Java 1.5131 packages2656 classes

New Events

Inner class

Object Serialization

Jar Files

International

Reflection

JDBC

RMI

JFC/Swing

Drag and Drop

Java2D

CORBA

JNDI

Java Sound

Timer

Regular ExpLoggingAssertionsNIO

Page 23: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

23

Programming Language History2000s

• XML• Microsoft .NET

– Multiple languages• C++• C#• Visual Basic• COBOL• Fortran• Eiffel

– Common virtual machine– Web services

Page 24: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

24

C# History

• 12/1998 – COOL project started• 07/1999 – First internal ports to COOL• 02/2000 – Named changed to C#• 07/2000 – First public preview release• 02/2002 – VS.NET 2002, C# 1.0 released• 05/2003 – VS.NET 2003, C# 1.1 released• 06/2004 – Beta 1 of VS 2005, C# 2.0• 04/2005 – Beta 2 of VS 2005, C# 2.0• ? ?/2005 – VS 2005, C# 2.0 release

Page 25: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

25

C# 2.0 Language Enhancements

• Generics• Anonymous methods• Iterators• Partial types

Page 26: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

26

Programming Language Genealogy

diagram.pdf Diagram by Peter Sestoft

Page 27: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

27

Beyond Java 1.5 and C# 2.0

• Aspect Oriented Programming– AspectJ

• Business Process Management– BPML

• Multi Paradigm integration– C Omega

Page 28: Fremtidens programmeringssprog       

12.05.2005 Nouhauz event on future programming languages

28

So how would you like to programme in 20 years?