a evolução e o futuro da linguagem c# (1.0, 2.0, 3.0, 4 e 5) - virtual developer day 2011

19
A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4, 5) (30/01/2011) Virtual Developer Day .NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET Rogério Moraes de Carvalho Consultor e Instrutor de Tecnologias da Informação Twitter: @rogeriomc

Upload: rogerio-moraes-de-carvalho

Post on 24-May-2015

5.660 views

Category:

Technology


1 download

DESCRIPTION

No dia 30/01/2011, eu apresentei o Webcast A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4, 5) no Virtual Developer Day 2011, evento organizado pela comunidade .NET Interior com apoio da Microsoft - CEA/MSDN, Silverlight Brasil, Silverlight Planet e Codificando.NET. O objetivo da apresentação foi dar uma visão geral da evolução da linguagem C# desde a versã0 1.0 até a versão atual 4 e do futuro da linguagem na versão 5, que por enquanto está em fase de desenvolvimento pela Microsoft.

TRANSCRIPT

Page 1: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

A evolução e o futuro da

linguagem C# (1.0, 2.0, 3.0, 4, 5) (30/01/2011)

Virtual Developer Day

.NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET

Rogério Moraes de Carvalho Consultor e Instrutor de Tecnologias da Informação

Twitter: @rogeriomc

Page 2: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Evolução da linguagem C#

Virtual Developer Day 2011 | .NET Interior

C# 1.0 (Fev 2002)

C# 2.0 (Nov 2005)

C# 3.0 (Nov 2007)

Código gerenciado, linguagem de POO, suporte nativo a propriedades e eventos, documentação XML, exceções, segurança de tipos, delegates, sobrecarga de operadores, ...

Generics, Iterators, tipos parciais, tipos anuláveis, classes estáticas, métodos anônimos, ...

Language Integrated Query (LINQ), expressões Lambda, métodos de extensão, tipos anônimos, ...

C# 4 (Abr 2010)

Objetos tipados dinamicamente, parâmetros opcionais e nomeados, covariância e contravariância, …

C# 5 (2012?)

Programação assíncrona, compilador como um serviço, ...

Page 3: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

C# 1.0

• Criada do zero para o .NET Framework 1.0

• Algumas características da linguagem

– Linguagem de POO de tipos seguros

– Suporta tipos por valor e por referência

• Estruturas, enumerações, classes, interfaces,

delegates e arrays

– Código gerenciado (com coletor de lixo)

– Várias categorias de membros em alguns tipos

• Campos, métodos, propriedades, eventos, ... Virtual Developer Day 2011 | .NET Interior

Page 4: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

C# 2.0

• Principais facilidades introduzidas

– Iterators

• Permite que o compilador gere automaticamente

código que implementa um dos seguintes tipos:

– IEnumerable, IEnumerator

– IEnumerable<T>, IEnumerator<T>

• Instruções yield return ou yield break

– Métodos anônimos

• Facilita a instanciação de delegates evitando a

necessidade da criação de métodos separados

Virtual Developer Day 2011 | .NET Interior

Page 5: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

C# 3.0

• Principal facilidade introduzida

– Language INtegrated Query (LINQ)

• Conjunto de tecnologias para permitir a integração

de capacidades de consulta diretamente para a

linguagem C#

• Facilita a escrita de códigos para:

– ordenar,

– filtrar,

– juntar,

– agrupar e

– agregar dados de fontes de dados variadas Virtual Developer Day 2011 | .NET Interior

Page 6: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

C# 4

• Principal facilidade introduzida

– Tipos dinâmicos

• Operações em tipos dinâmicos são ignoradas na

checagem de tipo em tempo de compilação

• As operações são resolvidas em tempo de

execução

• Introdução da palavra-chave dynamic

• Ambiente de execução que adiciona um conjunto

de serviços para linguagens dinâmicas no CLR

– Dynamic Language Runtime (DLR)

Virtual Developer Day 2011 | .NET Interior

Page 7: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Programação síncrona

• Características da programação síncrona

– Uma thread simples é usada para o

processamento do fragmento de código

– Cada membro de função executado precisa

terminar o seu processamento para que um

próximo seja executado

Virtual Developer Day 2011 | .NET Interior

Page 8: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Demo Síncrono

Virtual Developer Day 2011 | .NET Interior

Page 9: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Programação assíncrona

• Características da programação assíncrona

– Tarefas distintas são divididas entre duas ou

mais threads que processam blocos de código

simultaneamente

• Ou, pelo menos, dividindo tempo do processador

– Um membro de função executado não precisa

terminar o seu processamento para que um

próximo seja executado

Virtual Developer Day 2011 | .NET Interior

Page 10: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

APM

• Asynchronous Programming Model (APM)

– Primeiro padrão de programação assíncrona

introduzido no .NET Framework 1.0

– Versão assíncrona de NomeMetodo

• Método BeginNomeMetodo

– Inicia a operação assíncrona e retorna um objeto que

implementa a interface IAsyncResult

– Inclui os parâmetros da versão síncrona do método e

outros dois: delegate AsyncCallback e objeto de estado

• Método EndNomeMetodo

– Finaliza a operação assíncrona e pode retornar um valor

Virtual Developer Day 2011 | .NET Interior

Page 11: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

EAP

• Event-based Asynchronous Pattern (EAP)

– Segundo padrão de programação assíncrona

introduzido no .NET Framework 2.0

– Versão assíncrona de NomeMetodo

• Método NomeMetodoAsync

– Inicia uma operação assíncrona

• Evento NomeMetodoCompleted

– Evento para sinalizar a finalização da operação assíncrona

Virtual Developer Day 2011 | .NET Interior

Page 12: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

TAP

• Task-based Asynchronous Pattern (TAP)

– Novo padrão para programação assíncrona

– Baseado nos tipos Task e Task<TResult> do

namespace System.Threading.Tasks

• Usados para representar operações assíncronas

– Tipo Task: representa uma operação assíncrona sem um

resultado

– Tipo Task<TResult>: representa uma operação assíncrona

com um resultado do tipo TResult

Virtual Developer Day 2011 | .NET Interior

Page 13: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

TAP

• Versão assíncrona de um método com TAP

– Nomenclatura (um único método)

• Método NomeMetodoAsync (sufixo Async)

– Parâmetros

• Mesmos parâmetros na mesma ordem

– Parâmetros de saída (out) e por referência (ref) devem ser

evitados

– Tipo de retorno

• Tipo Task, se o método for void

• Tipo Task<TipoRetorno>, se o método não for void Virtual Developer Day 2011 | .NET Interior

Page 14: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Async CTP

• Visual Studio Async CTP (PDC - 28/10/2010)

– Community Tecnology Preview das novas

características para simplificar a programação

assíncrona em C# e Visual Basic

• Projetado para o Visual Studio 2010 RTM

– Suporta a nova sintaxe e APIs para

desenvolvimento assíncrono

– Download

• http://go.microsoft.com/fwlink/?LinkId=203690

Virtual Developer Day 2011 | .NET Interior

Page 15: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

C# 5

• Principal facilidade a ser introduzida

– Funções assíncronas

• Novas palavras-chaves: async e await

– A palavra-chave await é usada para marcar chamadas

assíncronas

» Dispensa a necessidade de se criar funções de

callback

– A palavra-chave async deve estar presente na assinatura

de funções que fazem chamadas assíncronas

» A palavra-chave await somente pode ser usada se a

palavra-chave async na assinatura da função

Virtual Developer Day 2011 | .NET Interior

Page 16: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

C# 5

• Características das funções assíncronas

– Tipos de retorno das funções assíncronas

• Deve ser void, Task ou Task<TResult>

– Avaliação de funções assíncronas

• Inicialmente idêntica a uma função síncrona

• Quando atinge uma expressão await, a função

assíncrona deve retornar ao seu chamador

– Se a função assíncrona não for void, um objeto Task ou

Task<TResult> será retornado para o chamador

Virtual Developer Day 2011 | .NET Interior

Page 17: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Demo async e await (C# 5)

Virtual Developer Day 2011 | .NET Interior

Page 18: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Contatos

• E-mail

[email protected]

• Blog

http://rogeriomc.wordpress.com/

• Twitter

@rogeriomc

Virtual Developer Day 2011 | .NET Interior

Page 19: A evolução e o futuro da linguagem C# (1.0, 2.0, 3.0, 4 e 5) - Virtual Developer Day 2011

Virtual Developer Day 2011 | .NET Interior

Virtual Developer Day

.NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET