280 likes | 468 Views
Fremtidens programmeringssprog . Bent Thomsen PhD, DIC, Cand.Scient, EurIng, CEng, CITP, CSci, FBCS, MACM, MIEEE bt@cs.aau.dk Department of Computer Science Aalborg University. How would you like to programme in 20 years?. Well ….
E N D
Fremtidens programmeringssprog Bent Thomsen PhD, DIC, Cand.Scient, EurIng, CEng, CITP, CSci, FBCS, MACM, MIEEE bt@cs.aau.dk Department of Computer Science Aalborg University
How would you like to programme in 20 years? Nouhauz event on future programming languages
Well … "Some believe that we lacked the programming language to describe your perfect world" Agent Smith - The Matrix Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
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# Nouhauz event on future programming languages
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. Nouhauz event on future programming languages
What is the Most Important Open Problem in Computing? Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
How to increase Programmer Productivity? 3 ways of increasing programmer productivity: • Process (software engineering) • Controlling programmers • Good process can yield up to 20% increase • Tools (verification, static analysis, program generation) • Good tools can yield up to 10% increase • 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 Nouhauz event on future programming languages
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. Nouhauz event on future programming languages
Other languages Different Programming language Design Philosophies C If all you have is a hammer, then everything looks like a nail. Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
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" Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
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. Nouhauz event on future programming languages
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. Nouhauz event on future programming languages
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. Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
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) Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
Java 1.3 77 packages 1595 classes Java 1.0 8 packages 212 classes Java 1.1 23 packages 504 classes Java 1.2 59 packages 1520 classes Java 1.4 103 packages 2175 classes Java 1.5 131 packages 2656 classes javax.activity, javax. management New Events Inner class Object Serialization Jar Files International Reflection JDBC RMI JFC/Swing Drag and Drop Java2D CORBA JNDI Java Sound Timer Regular Exp Logging Assertions NIO java.nio, javax.imageio, javax.net, javax.print, javax.security, org.w3c javax.naming, javax.sound, javax.transaction javax.accessibility, javax.swing, org.omg java.math, java.rmi, java.security, java.sql, java.text, java.beans Nouhauz event on future programming languages java.applet, java.awt, java.io, java.lang, java.net, java.util
Programming Language History2000s • XML • Microsoft .NET • Multiple languages • C++ • C# • Visual Basic • COBOL • Fortran • Eiffel • Common virtual machine • Web services Nouhauz event on future programming languages
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 Nouhauz event on future programming languages
C# 2.0 Language Enhancements • Generics • Anonymous methods • Iterators • Partial types Nouhauz event on future programming languages
Programming Language Genealogy diagram.pdf Diagram by Peter Sestoft Nouhauz event on future programming languages
Beyond Java 1.5 and C# 2.0 • Aspect Oriented Programming • AspectJ • Business Process Management • BPML • Multi Paradigm integration • C Omega Nouhauz event on future programming languages
So how would you like to programme in 20 years? Nouhauz event on future programming languages