Patric Boscolo Microsoft...

19
Patric Boscolo Microsoft @patricsmsdn

Transcript of Patric Boscolo Microsoft...

Patric Boscolo

Microsoft

@patricsmsdn

RyuJIT + SIMD

Garbage Collector

Runtime components Compilers

.NET Compiler Platform (Roslyn)

Languages innovation

.NET Framework 4.6 .NET Core 5

Fully-featured and integrated

.NET libraries and runtime for Windows

Modular and optimized

.NET libraries and runtimes

Base class libraries

NuGet packages

Libraries

C#, VB Source code

.exe/.dil IL assemblies

Established .NET compilers

C#, VB Source code

.exe/.dil IL assemblies

.NET Compiler Platform (“Roslyn”)

Swift Captive audience

“Mainstreaming” advanced features

Lots of mindshare

Java Somewhat uncool

Great ecosystem

Evolving again “Functional” F#, Scala, Erlang, Clojure, …

Decidedly cool, and on the right side of history

But also elitist and rag-tag

“Systems” Go, Rust, D, …

performance-productivity-reliability triangle

“Compute” Python, R, Matlab

Lots of cloud cycles!

JavaScript It’s everywhere!

Getting better and better

TypeScript helps

Wire data Untyped, semi-structured

Tranlating to strong types is expensive and lossy

Bad match for OO – functions not “on the inside”

Performance Devices get smaller and smaller

In the cloud, time and space is money

Asynchrony Latency is high

We dealt with single values, but not collections

GitHub tour

Open Source

.net Compiler Platform

Languages

https://github.com/dotnet/roslyn

.NET 2015

Next gen JIT, SIMD

Runtime components

Compilers .NET Compiler Platform

Languages

.NET Core 5 Libraries

.NET Framework 4.6 Libraries

Libraries

Distributed with Windows

Large footprint for server

and client applications

No side-by-side

.NET

Framework 4.6 .NET

Core 5

Distributed with every app

Cross-platform, cloud

optimized implementation

Side-by-side

C# 1

Hello

World

C# 2

Generics

C# 3

Linq

C# 4

Dynamic

C# 5

Async

C# 6

Boilerplate

C# 7

???

Pattern matching

if (o is Point p && p.X == 5) { WriteLine(p.Y); }

if (o is Point{ X is 5, Y is var y }) { WriteLine(y); }

if (o is Point(5, var y)) { WriteLine(y); }

Patterns in switch statements

switch (o)

{

case string s:

Console.WriteLine(s);

break;

case int i:

Console.WriteLine($"Number {i}");

break;

case Point(int x, int y):

Console.WriteLine($"({x},{y})");

break;

case null:

Console.WriteLine("<null>");

break;

}

Should we have recursive patterns?

Should there be a way to specify positional matching?

Should there be an expression form of switch?

Tuple types

public (int sum, int count) Tally(IEnumerable<int> values) { … }

var t = Tally(myValues);

Console.WriteLine($"Sum: {t.sum}, count: {t.count}");

public async Task<(int sum, int count)> TallyAsync(IEnumerable<int> values) { … }

var t = await TallyAsync(myValues);

Console.WriteLine($"Sum: {t.sum}, count: {t.count}");

Tuple literals

public (int sum, int count) Tally(IEnumerable<int> values)

{

var s = 0; var c = 0;

foreach (var value in values) { s += value; c++; }

return (s, c);

}

public (int sum, int count) Tally(IEnumerable<int> values)

{

var res = (sum: 0, count: 0);

foreach (var value in values) { res.sum += value; res.count++; }

return res;

}

Microsoft Visual Studio Webcast

https://www.microsoft.com/germany/techwiese/events/

SAVE

THE

DATE

© 2014 Microsoft Corporation. All rights reserved. Because

Microsoft must respond to changing market conditions, it should

not be interpreted to be a commitment on the part of Microsoft,

and Microsoft cannot guarantee the accuracy of any information

provided after the date of this presentation. MICROSOFT MAKES

NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE

INFORMATION IN THIS PRESENTATION.

Vielen Dank

Entwickler:

www.techwiese.de - News, Ressourcen, Events und Support für Entwickler

www.msdn.de/newsletter - MSDN Flash – kostenloser Newsletter für Entwickler

IT Pros:

www.itprohub.de - News, Ressourcen, Events und Support für IT Profis

www.technet.de/flash - TechNet Flash - kostenloser Newsletter für IT Profis

Für Devs und IT Pros:

www.mva.ms - Kostenlose Online-Schulungen für Entwickler und IT Profis

www.ch9.ms - Videoplattform für Entwickler und IT Profis

Weiterführende Informationen