patric boscolo microsoft...
Post on 15-Feb-2019
215 Views
Preview:
TRANSCRIPT
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
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
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
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;
}
© 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
top related