Warum Dynamische Sprachen ?? Wo Würde Ich Persönlich Sie Verwenden, Wo Nicht ;-)
Total Page:16
File Type:pdf, Size:1020Kb
{ Helden brauchen weniger } Frank Fischer Manager Evangelism and Marketing http://blogs.msdn.com/frankfi Microsoft Deutschland GmbH Jim Hugunin 100K 80K 60K 101K 90K 40K 80K 46K 50K 36K20K 0K Python Python Python IronPython IronPython IronPython 2.1 2.3 2.5 0.1 1.0 2.0alpha1 Jim Hugunin Principal Architect Microsoft Corp. Eine 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?? Eine 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?? 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 s = „Hello“ + 8 Paradigma 1: Runtime over Compile-Time!!! Paradigma 2: Entscheidungen verzögern Entscheidungen schränken die Möglichkeiten ein Agilität == Möglichkeiten Welche Entscheidungen kann man hinauszögern? Paradigma 3: Details der Implementierung verbergen Set dbOpenRecordset = New ADODB.Recordset With dbOpenRecordset .CursorLocation = CursorLocation .Open sSQL, oConn, CursorType, LockType End With Void MyFunc() { var a = „Hello, world!“; } APL Erlang Perl Slate Squeak Befunge Forth PHP Pliant Snobol ChucK Groovy POP-11 SuperCard HyperTalk Curl Poplog SuperCollider dBASE (dBL) Lisp Pike Tcl ECMAScript Dylan Prolog XOTcl ActionScript Logo Python TeX macro language DMDScript Scheme REBOL VBScript Visual Basic 9.0 E4X Lua Revolution Ruby Visual FoxPro Io Maude system Smalltalk Windows PowerShell Oberon JavaScript Bistro xHarbour JScript Objective Modula-2 Self Eiffel Objective-C 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; } } EOF end class PostController < ApplicationControler def sendHello render :text => ‚Hello, World!‛ end end Require ‘erb’ Document = %[ <html xmlns=http://www.w3.org/1999/xhtml xml:lang=‚en‛ lang=‚en‛> <head> <title><% @titleLine.each do |titles|%> <%= @titles %> </title> … Eine 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?? Dem harten C++ Mann tut das weh… Speicher- und Laufzeitverhalten sind in dynamischen Sprachen eher eine Randbemerkung Media Credit: Jessica Scott Marshall sophomore Adam Jenks chews down a piece of chocolate pie during the pie eating Wo würde ich dynamische Sprachen einsetzen?? Wo man es kann ;-) Schnelle Ergebnisse Vorsicht: 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 Eine 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?? { Silverlight und PHP } http://www.php- compiler.net/doku.php?id=php-in- silverlight …haben wir gefragt, welche weitere Sprache sollen wir unterstützen… Antwort: „select * from ProgrammingLanguages where IsDynamic = true“ Daher: Dynamic Language Runtime als Basis Bringt den notwendigen Support für dynamische Sprachen Entwicklung soll extrem vereinfacht werden Browser .NET for Silverlight Host Data WPF Networking MS AJAX LINQ XLINQ Extensible Controls REST Library POX DLR BCL RSS DOM JSON Ruby Python Generics Collections SOAP Integration Legend CLR Execution Engine Application V2.0 Services XAML Legend Deploy V1.0 UI Core Inputs DRM Friction- Keyboard Mouse Ink Media Free Vector Text Installer Core Media Controls AnimationImages Auto- VC1 WMA MP3 Layout Editing Updater Presentation 30_000_000.times { |e| } ~1.8X faster i = 0 while i<30_000_000 i+=1 end ~3.3X faster STUFF = "hello\n" i=0 while i<10 i+=1 hello = '' 400_000.times do |e| hello << STUFF end end ~36% slower i=0 while i<300_000 i+=1 begin raise rescue end end ~5.6X slower { Späßle mit IronRuby } Sprachen IronRuby http://rubyforge.org/projects/ironruby http://www.iunknown.com/ IronPython http://msdn.microsoft.com/msdnmag/issues/06/ 10/clrinsideout/default.aspx?loc=de http://www.codeplex.com/IronPython http://www.iunknown.com/ JavaScript VBX © 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..