the horn package manager 2 options for creating dsls in.net
Post on 21-Dec-2015
222 views
TRANSCRIPT
![Page 1: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/1.jpg)
The HORN Package Manager
2 options for creating DSLs in .NET
![Page 2: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/2.jpg)
Who Am I?
![Page 3: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/3.jpg)
Why?
![Page 4: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/4.jpg)
Show me the Pain
![Page 5: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/5.jpg)
We Live On the bleeding Edge
![Page 6: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/6.jpg)
Or Do we?
![Page 7: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/7.jpg)
The Usual Suspects
ASP.NET MVCContrib
![Page 8: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/8.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/9.jpg)
The Beleaguered ALT.NET Dev
![Page 10: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/10.jpg)
The Treadmill of Change is Always
Turning
![Page 11: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/11.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/12.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/13.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/14.jpg)
Building the Stack (Surely Not) And it goes on and on
![Page 15: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/15.jpg)
A Maze of Dependencies
![Page 16: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/16.jpg)
The Usual Suspects
ASP.NET MVC Contrib
We Need a Hero
![Page 17: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/17.jpg)
Gentoo Portage
![Page 18: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/18.jpg)
Package Tree Metaphor
![Page 19: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/19.jpg)
Ebuilds
![Page 20: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/20.jpg)
The Usual Suspects
ASP.NET MVC Contrib
Why not XML?
![Page 21: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/21.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/22.jpg)
The Usual Suspects
ASP.NET MVC Contrib
Why an Internal DSL?
![Page 23: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/23.jpg)
The Semantic Model
![Page 24: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/24.jpg)
Source Control
![Page 25: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/25.jpg)
Build Engine
![Page 26: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/26.jpg)
(Horn DSL)== Ebuild
vs.
![Page 27: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/27.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/28.jpg)
Duck Typing
![Page 29: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/29.jpg)
Duck Typing
![Page 30: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/30.jpg)
Macros
![Page 31: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/31.jpg)
The Boo Horn DSL
![Page 32: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/32.jpg)
Rhino DSL
![Page 33: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/33.jpg)
Meta Methods
![Page 34: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/34.jpg)
The Boo Compiler
![Page 35: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/35.jpg)
CustomizeCompiler Method
![Page 36: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/36.jpg)
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](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/37.jpg)
The IronRuby Horn DSL
![Page 38: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/38.jpg)
Mixins
![Page 39: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/39.jpg)
Method Missing
![Page 40: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/40.jpg)
The Usual Suspects
ASP.NET MVC Contrib
Current State of Horn
![Page 41: The HORN Package Manager 2 options for creating DSLs in.NET](https://reader030.vdocuments.us/reader030/viewer/2022032522/56649d6b5503460f94a4ae44/html5/thumbnails/41.jpg)
The Usual Suspects
ASP.NET MVC Contrib
Questions