C#/.NET 5/4/ Ian Cooper
The shape of things to come (1) Who are you? What is your language Why do you use it? What kind of projects is it most suited to? What kind of projects is it least suited to? What are you using it for today? 3 exciting new developments Frameworks that fuel adoption 5/4/2015Ian Cooper 2
The shape of things to come (2) What is the future for your language? What is the future for dynamic and scripting languages in general? What other languages do you use? 5/4/2015Ian Cooper 3
Who do you think you are? 5/4/2015Ian Cooper 4 Foxpro C++ MFC Win 32 COM ATL Windows C#.NET Wilson NHibernate Nant NUnit Wix LDNUG MVP 1992: 1994: 2002: Monorail
Cool, sharp, lightning 1997: Project Lightning COM+ 2.0 The Universal Runtime Project Cool Anders Hejlsberg worked on derailed J++ C# shows J++ heritage (delegates, WFC) C# C-family language for.NET Open source and commercial implementations 5/4/2015Ian Cooper 5
Why? using System; namespace ShowFeatures { class Program { static void Main(string[] args) { Program program = new Program(); program.PrintGreeting(args[0]); } private void PrintGreeting(string to) { System.Console.WriteLine("Hello {0}", to); } 5/4/2015Ian Cooper 6 Garbage Collection Object Oriented C family language Access to extensive.NET libraries Strongly Typed
Where can you use it? 5/4/2015Ian Cooper 7.NET Framework C#VBOthers… ADO.NET Windows Forms Windows Presentation Foundation Windows Communication Foundation ASP.NET XAML … Base Class Library Common Language Runtime
Where is it not suitable? Not a systems development language Restricts ‘unsafe’ operations like pointer manipulation Overhead of runtime, not ‘to the metal’ 5/4/2015Ian Cooper 8
What are you using it for today? Web based underwriting system Geographically distributed user base Internet and intranet access Highly scalable Document Generation system Highly reliable, scalable, and robust Multi-threaded Extensible pipes and filters architecture 5/4/2015Ian Cooper 9
LINQ 5/4/2015Ian Cooper 10.NET Language Integrated Query C# 3.0VB 9.0Others… LINQ to Objects LINQ to SQL LINQ to XML LINQ to Entities LINQ to DataSets Objects Relational XML
C# 3.0 Language Extensions 5/4/2015Ian Cooper 11 var contacts = from c in customers where c.State == "WA" select new { c.Name, c.Phone }; var contacts = customers.Where(c => c.State == "WA").Select(c => new { c.Name, c.Phone }); Extension methods Lambda expressions Query expressions Object initializers Anonymous types
Workflow Foundation Classes Workflow Runtime Engine In-process, multiple hosting options Provides support for long-running transactions Leverages idea of code as data Activities are.NET components Both off-the-shelf and custom Both simple and composite Flow is described by XAML Both rules and conditions supported 5/4/2015Ian Cooper 12
Dynamic Language Runtime Services that run on top of CLR Dynamic type system Dynamic method invocation Implement dynamic languages like Python and Ruby on the.NET Framework Microsoft issued under permissive source, so can ship with open source projects like Moonlight VBx VB to be recast as scripting language? 5/4/2015Ian Cooper 13
What drives adoption? Windows Forms RAD smart-client development Successor to VB, PowerBuilder, et al. Webforms Moved rich-client developers to web Incorporates ASP.NET Ajax Monorail challenging page controller approach Silverlight Rich media content via CLR on the browser 5/4/2015Ian Cooper 14
The future Cw or Comega Asynchronous concurrency constructs PLINQ may use Cw features F# Mixed functional/imperative language Influenced by Ocaml DSLs Partial methods and classes, Guidance Toolkit Software factories, MDA, something else? 5/4/2015Ian Cooper 15
Dynamic Languages? 5/4/2015Ian Cooper 16 Position Sep 2007 Position Sep 2006 Delta in Position Programming Language Ratings Sep 2007 Delta Sep 2006 Status 11 = Java21.701%+0.17% A 22 = C14.908%-3.15% A 34 ↑ (Visual) Basic10.748%+0.12% A 45 ↑ PHP10.204%+1.08% A 53 ↓↓ C %-0.82% A 66 = Perl5.416%-0.01% A 78 ↑ C#3.583%+0.59% A 87 ↓ Python3.025%-0.12% A 99 = JavaScript2.722%+0.28% A 1013 ↑↑↑ Ruby2.065%+1.13% A 1112 ↑ PL/SQL1.860%+0.82% A 1211 ↓ SAS1.395%-0.54% A 1316 ↑↑↑ D1.370%+0.82% A 1410 ↓↓↓ Delphi1.224%-0.88% A 1517 ↑↑ ABAP0.706%+0.15% A ↓↓ Lisp/Scheme0.633%-0.02% B 1715 ↓↓ COBOL0.630%+0.07% B 1850 ↑↑↑↑↑↑↑↑↑↑↑ Lua0.572%+0.51% B 19 = Ada0.566%+0.03% B 2021 ↑ Fortran0.478%+0.08% B Source: Tiobe Programming Community Index
Guilty Pleasures Don’t use others but Learning Ruby, because the smart kids are. Early Ruby adoption around Watir or scripting Later Ruby adoption around IronRuby Intrigued by Boo Used by Monorail for Brail Little Knowledge outside.NET space 5/4/2015Ian Cooper 17