iron* - an introduction to getting dynamic on .net

33
Iron* - An Introduction to Getting Dynamic on .NET //kristiankristensen.dk twitter.com/kkristensen [email protected]

Upload: kristian-kristensen

Post on 13-May-2015

1.451 views

Category:

Technology


2 download

DESCRIPTION

In recent years dynamically typed languages have received more and more attention on the .NET platform. Initially, an implementation of Python showed up. Later, the Dynamic Language Runtime (DLR) appeared which made it much easier to implement dynamically typed languages on .NET. This session explores how dynamically typed languages fit in the ecosystem of .NET. We’ll see why dynamic languages are interesting and contrast them to their static brethren (C#, Java). Then we will touch on how IronPython and IronRuby are implemented on .NET via the Dynamic Language Runtime (DLR). Finally, we’ll look at some code examples of how you can utilize these languages on .NET today.

TRANSCRIPT

Page 1: Iron* - An Introduction to Getting Dynamic on .NET

Iron* - An Introduction to Getting Dynamic on

.NET //kristiankristensen.dk

twitter.com/kkristensen

[email protected]

Page 2: Iron* - An Introduction to Getting Dynamic on .NET

Question

Page 3: Iron* - An Introduction to Getting Dynamic on .NET

Dynamic Languages

Dynamic Language Runtime

Demo!

45 min 15 min

Agenda

Page 4: Iron* - An Introduction to Getting Dynamic on .NET

Why Dynamic Languages

Fashion

Fame

Weight Loss

Interest

Fortune

Page 5: Iron* - An Introduction to Getting Dynamic on .NET

What makes a language “dynamic”?

Page 6: Iron* - An Introduction to Getting Dynamic on .NET
Page 7: Iron* - An Introduction to Getting Dynamic on .NET

http://www.flickr.com/photos/35064820@N00/3950391591/

Page 8: Iron* - An Introduction to Getting Dynamic on .NET
Page 9: Iron* - An Introduction to Getting Dynamic on .NET

http://www.flickr.com/photos/janineberben/3219556705/

Page 10: Iron* - An Introduction to Getting Dynamic on .NET

Why Dynamic Languages

Simplicity

Expressive Perspective

Page 11: Iron* - An Introduction to Getting Dynamic on .NET
Page 12: Iron* - An Introduction to Getting Dynamic on .NET
Page 13: Iron* - An Introduction to Getting Dynamic on .NET

The traditional view of the world

Dynamic Languages

Simple and succinct

Implicitly typed

Meta-programming

No compilation

Static Languages

Robust

Performance

Intelligent tools

Better scaling

Page 14: Iron* - An Introduction to Getting Dynamic on .NET

Dynamic Language Runtime

Page 15: Iron* - An Introduction to Getting Dynamic on .NET

Dynamic Languages on .NET

IronPython IronRuby

C# VB.NET

Common Language Runtime

Iron?

Page 16: Iron* - An Introduction to Getting Dynamic on .NET

Multiple Language Dynamic Dispatch

Object Binder

Python Binder

Ruby Binder

COM Binder

Dynamic Language Runtime

GetMember Name=“Foo”, IgnoreCase=false

IronPython x.Foo

IronRuby x.Foo

C# x.Foo

VB.NET x.Foo

Page 17: Iron* - An Introduction to Getting Dynamic on .NET

Common Language = CLR + DLR

Today’s view of the world

Dynamic Languages

Simple and succinct

Implicitly typed

Meta-programming

No compilation

Static Languages

Robust

Performance

Intelligent tools

Better scaling

Page 18: Iron* - An Introduction to Getting Dynamic on .NET
Page 19: Iron* - An Introduction to Getting Dynamic on .NET

Iron languages are first class .NET citizens

Page 20: Iron* - An Introduction to Getting Dynamic on .NET

IronWhat? • True language implementation

– True to the language

– True to the community

– True to the experience

– Excellent performance

• Great integration with .NET – Easy to use .NET libraries

– Easy to use other .NET languages

– Easy to use in .NET hosts

– Easy to use with .NET tools

• Implementation Running On .NET

Page 21: Iron* - An Introduction to Getting Dynamic on .NET
Page 22: Iron* - An Introduction to Getting Dynamic on .NET

Languages on DLR

• Pictures

Page 23: Iron* - An Introduction to Getting Dynamic on .NET

Why Iron* Languages?

Easy to extend

Easy to embed

.NET Interop

Page 24: Iron* - An Introduction to Getting Dynamic on .NET

” Talk is cheap. Show me the code.” - Linus Torvalds

http://en.wikiquote.org/wiki/Linus_Torvalds

Page 25: Iron* - An Introduction to Getting Dynamic on .NET

Ruby Test Framework

Page 26: Iron* - An Introduction to Getting Dynamic on .NET

[TestClass] public class StackTest { [TestMethod] public void NewStackHasZeroElements() { var s = new Stack<string>(); Assert.AreEqual<int>(0, s.Count); } [TestMethod] public void StackPeekTopElement() { var s = new Stack<string>(); s.Push("bob"); Assert.AreEqual<int>(1, s.Count); Assert.AreEqual<string>("bob", s.Peek()); } [TestMethod] public void StackPopTopElement() { var s = new Stack<string>(); s.Push("bob"); Assert.AreEqual<string>("bob", s.Pop()); Assert.AreEqual<int>(0, s.Count); } }

Page 27: Iron* - An Introduction to Getting Dynamic on .NET

IronPython in Visual Studio

http://ironpython.net/tools

Page 28: Iron* - An Introduction to Getting Dynamic on .NET

Easy to embed aka BadPaint

Page 29: Iron* - An Introduction to Getting Dynamic on .NET

The road ahead (picture)

Page 30: Iron* - An Introduction to Getting Dynamic on .NET
Page 31: Iron* - An Introduction to Getting Dynamic on .NET

http://ironpython.net

http://ironruby.net

http://dlr.codeplex.com

Page 32: Iron* - An Introduction to Getting Dynamic on .NET

The end.

Page 33: Iron* - An Introduction to Getting Dynamic on .NET

//kristiankristensen.dk //twitter.com/kkristensen

[email protected]