Lisp and .NET Using Lisp to Generate .NET Business Applications - - PowerPoint PPT Presentation

lisp and net
SMART_READER_LITE
LIVE PREVIEW

Lisp and .NET Using Lisp to Generate .NET Business Applications - - PowerPoint PPT Presentation

Lisp and .NET Using Lisp to Generate .NET Business Applications Focus on Productivity Comac is a fulfillment and digital print services company for marketing materials My job is to build business applications ROI is the key Lisp


slide-1
SLIDE 1

Lisp and .NET

Using Lisp to Generate .NET Business Applications

slide-2
SLIDE 2

Focus on Productivity

Comac is a fulfillment and digital print

services company for marketing materials

My job is to build business applications ROI is the key Lisp contributed greatly

slide-3
SLIDE 3

Our Solution

Lisp Macros for C# Generative Programming Domain Specific Language Metadata Driven Patterns are Key

slide-4
SLIDE 4

Compiler Pipeline Model

slide-5
SLIDE 5

Why This Solution?

Lisp Advantages and Disadvantages .NET Advantages and Disadvantages Lisp.NET?

slide-6
SLIDE 6

Why Build DSL with Lisp?

Functional, Higher Order Map, Filter and Accumulate Eval Development Environment

slide-7
SLIDE 7

Why C#, .NET?

Hundreds of great components (ROI) Huge library (for business apps) Comprehensive infrastructure

Authentication, Authorization Message Queue (Asynchronous, Reliable) Remote deployment

slide-8
SLIDE 8

Lisp and .NET Today

RDNZL – Edi Weitz FOIL – Rich Hickey, Eric Thorsen LSharp – Rob Blackwell Common Larceny – Will Clinger …

slide-9
SLIDE 9

Demo

Building the Booklet Manager 400 lines of DSL -> 25,000 lines of C# It runs, so ready for user feedback

slide-10
SLIDE 10

Works Best with Repeating Patterns

Manage GUI Edit GUI Business Rules Database Layer

RDBMS

Manage GUI Edit GUI Business Rules Database Layer

slide-11
SLIDE 11

GUI Example

cd Generic Screens ManageSearchWithTaskBar Task Bar Search For Search Value Sort Order Search Task 1 Task 2 Task 3 Search Previous Results Search Results Delete Selected Edit Selected Add New Close

(multiple-value-call (db-put!-c *db*) (add-relation "Billable_Function" :attrs (mapcar-apply #'create-attr '( ("Billable_Function_Id" int :is-pk t) ("Description" char :dom-len 30 :lookup-display t) ("Category" varchar :dom-len 25 :nullable t ) ("Sub_Category" varchar :dom-len 50 :nullable t) ("Unit_Measure" int) ("Is_Taxable" smallint :is-bool t) ("Is_Software" smallint :is-bool t) ("Is_Broker" smallint :is-bool t) ("Is_Commissionable" smallint :is-bool t) ("Listing_Order" int) ("Oracle_Exist_Id" int) ("Oracle_New_Id" int) ("Definition" longvar :dom-len 8000))) :indexes (mapcar-apply #'create-ix `( ("XIE1Billable_Function" :ix-attrs ,(mapcar-apply #'create-ix-attr '(("Category" :pos 1)))) ("XIE2Billable_Function" :ix-attrs ,(mapcar-apply #'create-ix-attr '(("Description" :pos 1)))) ("XIE3Billable_Function" :ix-attrs ,(mapcar-apply #'create-ix-attr '(("Listing_Order" :pos 1 ))))))))

slide-12
SLIDE 12

Domain Specific Language

Business Application Builder Language

Metadata + Parameters Templates Code Snippets

slide-13
SLIDE 13

Results

250 Database Tables, 600 Screens

24 Person Months

5 Years Experience

Active Server Pages then VB6 then .NET Evolvable Maintainable Refactorable

Works on Business Applications – Patterns Others more problematic

slide-14
SLIDE 14

Conclusion

Lisp Macro Concept -> C#/.NET Advantages of Lisp Advantages of .NET Domain Specific Language Great Productivity!

slide-15
SLIDE 15

Future Ideas

Business rules metadata IDE with visualizations Database designer, round tripping