the horn package manager 2 options for creating dsls in .net

41
The HORN Package Manager 2 options for creating DSLs in .NET

Upload: rene

Post on 10-Feb-2016

26 views

Category:

Documents


0 download

DESCRIPTION

The HORN Package Manager 2 options for creating DSLs in .NET. Who Am I?. Why?. Show me the Pain. We Live On the bleeding Edge. Or Do we?. The Usual Suspects. ASP.NET MVCContrib. A typical Scenario. ASP.NET MVC Moves From Beta to Release Candidate. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: The  HORN  Package Manager 2 options for creating DSLs in .NET

The HORN Package Manager

2 options for creating DSLs in .NET

Page 2: The  HORN  Package Manager 2 options for creating DSLs in .NET

Who Am I?

Page 3: The  HORN  Package Manager 2 options for creating DSLs in .NET

Why?

Page 4: The  HORN  Package Manager 2 options for creating DSLs in .NET

Show me the Pain

Page 5: The  HORN  Package Manager 2 options for creating DSLs in .NET

We Live On the bleeding Edge

Page 6: The  HORN  Package Manager 2 options for creating DSLs in .NET

Or Do we?

Page 7: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Usual Suspects

ASP.NET MVCContrib

Page 8: The  HORN  Package Manager 2 options for creating DSLs in .NET

A typical Scenario ASP.NET MVC Moves From Beta to Release Candidate I use MVCContrib for the WindsorControllerFactory from CastleMVCContrib uses the trunk version of Castle

I use Nhibernate

Nhibernate is built against a different castle versionI use NhibernateContrib for NhibernateIntegration

I need rebuild NhibernateContrib with the rebuilt Nhibernate I use Rhino

Rhino references Nhibernate and Castle

Etc., Etc., Etc., Etc.

Page 9: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Beleaguered ALT.NET Dev

Page 10: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Treadmill of Change is Always

Turning

Page 11: The  HORN  Package Manager 2 options for creating DSLs in .NET

Building the Stack (Surely Not)C:\dev\Shared>cd NHibernate

C:\dev\Shared\Nhibernate>svn up

C:\dev\Shared\Nhibernate>cd nhibernate

C:\dev\Shared\NHibernate\nhibernate>nant

C:\dev\Shared\NHibernate>cd ..\..

C:\dev\Shared>cd Castle

Page 12: The  HORN  Package Manager 2 options for creating DSLs in .NET

Building the Stack (Surely Not)C:\dev\Shared>cd NHibernate

C:\dev\Shared\Nhibernate>svn up

C:\dev\Shared\Nhibernate>cd nhibernate

C:\dev\Shared\NHibernate\nhibernate>nant

C:\dev\Shared\NHibernate>cd ..\..

C:\dev\Shared>cd Castle

Page 13: The  HORN  Package Manager 2 options for creating DSLs in .NET

Building the Stack (Surely Not)C:\dev\Shared\Castle>svn up

C:\dev\Shared\Castle>nant

C:\dev\Shared\Castle>copy ..\NHibernate\nhibernate\build\NHibernate-2.0.0.Alpha1-debug\bin\net-2.0\*.* build\net-2.0\debug /y

C:\dev\Shared\Castle>nant

Page 14: The  HORN  Package Manager 2 options for creating DSLs in .NET

Building the Stack (Surely Not) And it goes on and on

Page 15: The  HORN  Package Manager 2 options for creating DSLs in .NET

A Maze of Dependencies

Page 16: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Usual Suspects

ASP.NET MVC Contrib

We Need a Hero

Page 17: The  HORN  Package Manager 2 options for creating DSLs in .NET

Gentoo Portage

Page 18: The  HORN  Package Manager 2 options for creating DSLs in .NET

Package Tree Metaphor

Page 19: The  HORN  Package Manager 2 options for creating DSLs in .NET

Ebuilds

Page 20: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Usual Suspects

ASP.NET MVC Contrib

Why not XML?

Page 21: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Usual Suspects

ASP.NET MVC Contrib

XML is as “out” as

Flared Trousers

Page 22: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Usual Suspects

ASP.NET MVC Contrib

Why an Internal DSL?

Page 23: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Semantic Model

Page 24: The  HORN  Package Manager 2 options for creating DSLs in .NET

Source Control

Page 25: The  HORN  Package Manager 2 options for creating DSLs in .NET

Build Engine

Page 26: The  HORN  Package Manager 2 options for creating DSLs in .NET

(Horn DSL)== Ebuild

vs.

Page 27: The  HORN  Package Manager 2 options for creating DSLs in .NET

Boo is.....• An object oriented statically typed language

• An Open source project, released under the BSD license.

• A python inspired language

• A language with a focus on compiler extensibility

Page 28: The  HORN  Package Manager 2 options for creating DSLs in .NET

Duck Typing

Page 29: The  HORN  Package Manager 2 options for creating DSLs in .NET

Duck Typing

Page 30: The  HORN  Package Manager 2 options for creating DSLs in .NET

Macros

Page 31: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Boo Horn DSL

Page 32: The  HORN  Package Manager 2 options for creating DSLs in .NET

Rhino DSL

Page 33: The  HORN  Package Manager 2 options for creating DSLs in .NET

Meta Methods

Page 34: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Boo Compiler

Page 35: The  HORN  Package Manager 2 options for creating DSLs in .NET

CustomizeCompiler Method

Page 36: The  HORN  Package Manager 2 options for creating DSLs in .NET

IronRuby• .NET implementation of the Ruby language

• Seamless Integration with .NET libraries

• Compatibility with the 1.8.x branch

Page 37: The  HORN  Package Manager 2 options for creating DSLs in .NET

The IronRuby Horn DSL

Page 38: The  HORN  Package Manager 2 options for creating DSLs in .NET

Mixins

Page 39: The  HORN  Package Manager 2 options for creating DSLs in .NET

Method Missing

Page 40: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Usual Suspects

ASP.NET MVC Contrib

Current State of Horn

Page 41: The  HORN  Package Manager 2 options for creating DSLs in .NET

The Usual Suspects

ASP.NET MVC Contrib

Questions