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]


Top Related