frank fischer manager evangelism and marketing microsoft deutschland gmbh

31
Dynamische Sprachen { Helden brauchen weniger } Frank Fischer Manager Evangelism and Marketing http://blogs.msdn.com/frankfi Microsoft Deutschland GmbH

Upload: elldrich-genter

Post on 05-Apr-2015

105 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Dynamische Sprachen{ Helden brauchen weniger }Frank Fischer

Manager Evangelism and Marketinghttp://blogs.msdn.com/frankfiMicrosoft Deutschland GmbH

Page 2: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Zu Anfang: Eine Geschichte

Page 3: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Von einem, der auszog dem Bösen das Fürchten zu lehren…

Jim Hugunin

Page 4: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Standard Pystone Benchmark

0K

20K

40K

60K

80K

100K

IronPython

0.1

Python2.3

IronPython

1.0

IronPython

2.0alpha1

Python2.5

Python2.1

46K

101K90K

80K

50K36K

Page 5: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Hoppala…

Page 6: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

…stattdessen .net dynamische Sprachen beibrachte…

Jim Hugunin

Principal ArchitectMicrosoft Corp.

Page 7: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

AgendaEine Geschichte zum Beginn… (hatten wir gerade)

Was sind „dynamische Sprachen“ ?? Der Versuch einer Definition

Warum dynamische Sprachen ??Wo würde ich persönlich sie verwenden, wo nicht ;-)

Was hat Microsoft damit zu tun??

Page 8: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

AgendaEine Geschichte zum Beginn… (hatten wir gerade)

Was sind „dynamische Sprachen“ ??

Der Versuch einer Definition

Warum dynamische Sprachen ??Wo würde ich persönlich sie verwenden, wo nicht ;-)

Was hat Microsoft damit zu tun??

Page 9: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

A Definition…Dynamic programming language is a term used broadly in computer science to describe a class of high level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system, all during program execution. These behaviors can be emulated in nearly any language of sufficient complexity, but dynamic languages provide direct tools to make use of them.Dynamic languages and dynamic typing are not identical concepts, and a dynamic language need not be dynamically typed, though many dynamic languages are dynamically typed.

http://en.wikipedia.org/wiki/Dynamic_programming_language

Page 10: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

s = „Hello“ + 8

Page 11: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Was sollten wir also mitnehmen??Paradigma 1: Runtime over Compile-

Time!!!Paradigma 2: Entscheidungen verzögern

Entscheidungen schränken die Möglichkeiten einAgilität == MöglichkeitenWelche Entscheidungen kann man hinauszögern?

Paradigma 3: Details der Implementierung verbergen

Paradigma 4: Duck Typing!!

Set dbOpenRecordset = New ADODB.Recordset With dbOpenRecordset

.CursorLocation = CursorLocation

.Open sSQL, oConn, CursorType, LockType End With

Page 12: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Duck Typeing in C#

Void MyFunc(){

var a = „Hello, world!“;}

Page 13: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Brandneues Konzept… not quite!!!

APL Befunge ChucK Curl dBASE (dBL) ECMAScript ActionScript DMDScript E4X Io JavaScript JScript Eiffel

Erlang Forth Groovy HyperTalk Lisp Dylan Logo Scheme Lua Maude system Oberon Objective Modula-2 Objective-C

Perl PHP Pliant POP-11 Poplog Pike Prolog Python REBOL Revolution Ruby Smalltalk Bistro Self

Slate Squeak Snobol SuperCard SuperCollider Tcl XOTcl TeX macro language VBScript Visual Basic 9.0 Visual FoxPro Windows PowerShell xHarbour

Page 14: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Domain Specific Languages…

inline :csharp do |compiler| compiler.reference '..\PresentationFramework.dll' compiler.compile <<-EOF public class DialogHelpers { public static bool ShowDialog(FileDialog d) { bool? result = d.ShowDialog(); return result == null || result == false ? false : true; } } EOFend

Page 15: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Domain Specific Languages…

class PostController < ApplicationControler

def sendHellorender :text => “Hello, World!”

end

end

Page 16: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Domain Specific Languages…

Require ‘erb’

Document = %[<html xmlns=http://www.w3.org/1999/xhtml xml:lang=“en” lang=“en”><head><title><% @titleLine.each do |titles|%> <%= @titles %> </title>…

Page 17: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

AgendaEine Geschichte zum Beginn… (hatten wir gerade)

Was sind „dynamische Sprachen“ ?? Der Versuch einer Definition

Warum dynamische Sprachen ??Wo würde ich persönlich sie verwenden, wo nicht ;-)

Was hat Microsoft damit zu tun??

Page 18: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Mal ehrlich:Dem harten C++ Mann tut das weh…

Speicher- und Laufzeitverhalten sind in dynamischen Sprachen eher eine Randbemerkung

Media Credit: Jessica ScottMarshall sophomore Adam Jenks chews down a piece of chocolate pie during the pie eating

Page 19: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Meine persönliche MeinungWo würde ich dynamische Sprachen einsetzen??

Wo man es kann ;-)Schnelle ErgebnisseVorsicht: Wartbarkeit kostet Arbeit (Test getriebene Entwicklung)Mit dynamische Sprachen kann man auch Bibliotheken bauen… wenn man ordentlich programmiert

Wo bieten sich andere Sprachen an??Wo man muss…Bibliotheken

Page 20: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

AgendaEine Geschichte zum Beginn… (hatten wir gerade)

Was sind „dynamische Sprachen“ ?? Der Versuch einer Definition

Warum dynamische Sprachen ??Wo würde ich persönlich sie verwenden, wo nicht ;-)

Was hat Microsoft damit zu tun??

Page 21: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

{ Silverlight und PHP }

Demo http://www.php-compiler.net/doku.php?id=php-in-silverlight

Page 22: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Nachdem IronPython so erfolgreich war…

…haben wir gefragt, welche weitere Sprache sollen wir unterstützen…Antwort: „select * from ProgrammingLanguages where IsDynamic = true“Daher:

Dynamic Language Runtime als BasisBringt den notwendigen Support für dynamische SprachenEntwicklung soll extrem vereinfacht werden

Page 23: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Lang.Net Symposium

Page 24: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Legend

V2.0

Legend

V1.0

.NET for Silverlight

XAML

Pre

sen

tati

on

C

ore

Networking

JSON

RESTPOX

RSS

Data

LINQ XLINQ

DLR

Ruby Python

WPF

Extensible Controls

BCL

Generics Collections

Inputs

KeyboardMouseInk

Media

VC1 WMA MP3

Browser Host

MS AJAX Library

DOM Integration

UI Core

Images

Vector Text

Animation

DRM

Media

Controls

LayoutEditing

CLR Execution Engine

Deploy

Friction-Free

Installer

Auto-Updater

ApplicationServices

SOAP

Page 25: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

bm_loop_times

30_000_000.times { |e| }

~1.8X faster

Page 26: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

bm_loop_whileloop

i = 0while i<30_000_000 i+=1end

~3.3X faster

Page 27: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

bm_so_concatenate

STUFF = "hello\n"i=0while i<10 i+=1 hello = '' 400_000.times do |e| hello << STUFF endend

~36% slower

Page 28: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

bm_app_raise

i=0while i<300_000 i+=1 begin raise rescue endend

~5.6X slower

Page 29: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

{ Späßle mit IronRuby }

Demo

Page 30: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

Dynamic Language RuntimeSprachen

IronRubyhttp://rubyforge.org/projects/ironrubyhttp://www.iunknown.com/ IronPythonhttp://msdn.microsoft.com/msdnmag/issues/06/10/clrinsideout/default.aspx?loc=de

http://www.codeplex.com/IronPython http://www.iunknown.com/ JavaScriptVBX

Page 31: Frank Fischer Manager Evangelism and Marketing  Microsoft Deutschland GmbH

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.