E N D
2. Ivan Towlson
Mindscape
ivan@mindscape.co.nz | http://hestia.typepad.com/flatlander/
Code Different
3. Agenda C# and Visual Basic reconsidered
Tools for your toolkit
F#
Boo
Language hosting
DSL Tools
Whats cooking
4. C# and Visual Basic reconsidered Imperative
Textual
No extensibility mechanisms
Minimal abstraction over the underlying machine
The assembly languages of the CLR
5. F# A functional-object hybrid
Included in Visual Studio 2010
A CLR language
You can call C# or Visual Basic components from F#
You can call F# components from C# or Visual Basic
6. F# Features With C#/VB Equivalents First class functions
Similar to .NET delegates
Lambdas and closures
Similar to C# lambdas
Type inference
Similar to C# var, but used much more extensively
You rarely have to write explicit type annotations in F#
7. F# Features With C#/VB Equivalents Comprehensions
Similar to LINQ
Quotations
Similar to expression trees
8. F# Idioms Emphasis on functions rather than records
Rich data type support: options, tuples, discriminated unions
Pattern matching
Immutable by default
Helps with asynchronous and parallel programming
Expressions that have values instead of statements that perform actions
F# Interactive REPL
Try out your code as you go (tip: Alt+Enter!)
9. F# Features Asynchronous workflows and agents
Example: parallel or cloud computing
Computation expressions
Customising how a sequence of expressions is executed
Parser generator
Example: simple macro or expression languages
Units of measure
Example: scientific or financial computation
10. F# Tools IntelliFactory WebSharper Platform
Create HTML and JavaScript using F#
Define user interface flows using F# workflows
Formlets: type-safe composable Web forms
11. Boo Open source imperative language
Built for the CLR
Interoperates with other CLR languages
User-defined macros
Add your own language-level constructs
Extensible compiler pipeline
Build your own domain-specific language on Boo
12. Language Hosting Enables users (or you!) to script, automate and customise your application with the flexibility of a full programming language and no need to recompile or redeploy
PowerShell (PSHost/Runspace)
Dynamic Language Runtime (ScriptEngine/ScriptScope)
IronPython
IronRuby
13. DSL Tools Built into Visual Studio
Used for a lot of the Visual Studio designers
LINQ to SQL, Entity Framework
Modelling projects (UML diagrams)
Create graphical languages that integrate into Visual Studio
Visual Studio SDK Visualisation and Modelling Toolkit
Generate code using T4 template or custom tool
Typically hosted in C# or Visual Basic projects
14. Whats Cooking?
15. Whats Cooking? Axum
A language specifically designed for concurrent programming
Messaging, dataflow, coordination
C# meets Erlang
Preview available from Microsoft DevLabs
Related: CHESS, a debugging tool for concurrent programs
16. Whats Cooking? DryadLINQ
Distributed parallelisation across a cluster of machines
Academic release available from Microsoft Research
17. Whats Cooking? Kodu
A visual programming language for creating games
High-level primitives chosen for the gaming domain: collision, colour, vision, hearing, time
You can write games on your Xbox!
Technical preview available from Microsoft Fuse Labs
18. Whats Cooking? Pex and Moles
Testing tools
Pex: analyses methods for interesting inputs and outputs and creates test suites to ensure all cases are covered
Moles: replace any .NET method even built-in ones with your own delegate
Available from Microsoft Research