160 likes | 257 Views
I would start with Better Languages from Microsoft (Research). Thomas Ball Microsoft Research. LINQ: Language Integrated Query .NET technology that bridges the gap between programming languages and data 101 LINQ examples http:// msdn.microsoft.com/en-us/aa336746.aspx
E N D
I would start withBetter Languages from Microsoft (Research) Thomas Ball Microsoft Research
LINQ: Language Integrated Query • .NET technology that bridges the gap between programming languages and data • 101 LINQ examples • http://msdn.microsoft.com/en-us/aa336746.aspx • Based on ideas from Comega experimental language from MSR
<book> <title/> <author/> <year/> <price/> </book> Relational Objects XML The LINQ Project .NET Language Integrated Query C# 3.0 Visual Basic 9.0 Others LINQ toObjects LINQ toDataSets LINQ toSQL LINQ toEntities LINQ toXML
F# Declarative let f x = x * x Concurrent async { … } type Foo() = … OO on .NET
April 2008 Microsoft Research refresh release F# Roadmap • Improvements to the F# research release Just Released September 2008 CTP • Broadly improved VS 2008 integration • Simplifications in language and libraries 2009 Supported Release • Full product-quality release • Fully stable and supported language • Aligned with future VS releases
F# Resources • On the Web: • http://fsharp.net • Books:
Contract Library in .NET 4.0 announcing Code Contracts for .NET Coming soon: Tools for contracts at
How Do You Know What It Does? string s = o.GetDescription(i); … s.Length … stringGetDescription(int x); /// <param name=“x”> /// should be greater than zero /// </param> /// <returns> /// non-null string /// </returns> stringGetDescription(int x);
Let’s Fix It For Once And All! Design-by-Contract meets .NET! stringGetDescription(int x) { Contract.Requires( 0 < x ); Contract.Ensures(Contract.Result<string>() != null ); … }
What Can I Do With Contracts? classRational {public Rational(int n, int d) {Contract.Requires( 0 < d );this.N = n;this.D = d; }} Static Checking Runtime Checking Test Generation (Pex) Documentation
What Contracts Can I Write? • Requires • What must be true at method entry • Ensures • What must be true at method exit • Invariants • What must be true at all method exits • Assertions • What must be true at a particular point • Assumptions • What should be true at a particular point
Better Languages • Greater developer productivity • More reliable code • More precise downstream analysis
What People Want • End-to-end integrated solution • Languages • Libraries, frameworks, middleware • Tools (testing, debugging, performance, etc.) • Planning/management • Tracking (features, schedule, bugs) • Group coordination • Deployment, monitoring, update, etc.
Visual Studio Team System 2008 • Microsoft Visual Studio Team System 2008 is an integrated Application Life-cycle Management (ALM) solution comprising tools, processes, and guidance to help everyone on the team improve their skills and work more effectively together. Visual Studio Team System enables members of your team to: • Collaborate and communicate more effectively with other team members and business stakeholders. • Ensure software quality using advanced quality tools at every step of the application life cycle. • Gain visibility into project activity and priorities to make informed decisions based on real-time data. • In addition, over 200 Visual Studio Industry Partners offer products to support a broad range of software processes, tools, and platforms.