a evolução e o futuro da linguagem c# (1.0, 2.0, 3.0, 4 e 5) - virtual developer day 2011
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
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
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, ...
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
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
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
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
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
Demo Síncrono
Virtual Developer Day 2011 | .NET Interior
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
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
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
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
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
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
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
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
Demo async e await (C# 5)
Virtual Developer Day 2011 | .NET Interior
Contatos
• Blog
http://rogeriomc.wordpress.com/
@rogeriomc
Virtual Developer Day 2011 | .NET Interior
Virtual Developer Day 2011 | .NET Interior
Virtual Developer Day
.NET Interior | Microsoft - CEA/MSDN | Silverlight Brasil | Silverlight Planet | Codificando .NET