mergulhando no ecossistema .net
DESCRIPTION
Slides da palestra que fiz na SEMCOMP 2013 sobre o ecossistema .NET, seus pontos fortes, seus pontos fracos, como ele se situa no atual mercado e quais são as oportunidades de trabalho para os que escolherem essa plataforma.TRANSCRIPT
Mergulhando no ecossistema .NET
Por Paulo Ortins
SEMCOMP + Palestrantes + Galera = ROCKS
Quem é Paulo Ortins ?
Vamos fazer algo um pouco diferente...
Montando o Slide Vitae 2010/2011
Montando o Slide Vitae 2011/2012
Montando o Slide Vitae 2012/2013
#DevInBahia
Churrasco Agile
Montando o Slide Vitae 2012/2013
Sócio/Fundador da OnceDev
• Diversão
• Amigos
• Código de Qualidade
• Comunidade
Mas o que isso tem haver com o ecossistema .NET ?
• Pessoas com backgrounds diferentes
• Linguagens de programação diferentes
• Ecossistemas diferentes
Mas o que isso tem haver com o ecossistema .NET ?
Java C#
Javascript
Ruby
Clojure PythonElixir
Go
Objective-C Scala
PHP
C C++
Mas o que isso tem haver com o ecossistema .NET ?
Aprender com a diversidade
O que é legal e o que não é legal na linguagem que a gente trabalha ?
• Features da linguagem
• Generalista/Nicho
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
E o que há de bom e de ruim no C#?
E o que há de bom e de ruim no C#?
• Features da linguagem
• Generalista/Nicho
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
Tipagem Estática
• C# é uma linguagem tipada
• Melhor suporte para Intellisense
• Type Checking
• Erros em tempo de desenvolvimento/compilação
Tipagem Estática
// Javascriptvar aluno = {
Idade: 17,Nome: 'Paulo Ortins'
};
function imprimirAlunoAdulto(aluno) {if (aluno.Idade > 18) {
console.message(aluno.Nome);}
}
Tipagem Estática
public class Aluno{
public int Idade { get; set; }public string Nome { get; set; }
}
Aluno aluno = new Aluno(){
Idade = 17,Nome = "Paulo Ortins"
};
public void ImprimirAlunoAdulto(Aluno aluno){
if (aluno.Idade > 18){
Console.WriteLine(aluno.Nome);}
}
Suporte a variáveis dinâmicas
• Suporte a programação dinâmica através da variável dynamic
• Nos permite escolher como iremos programar
Suporte a variáveis dinâmicas
dynamic aluno = new ExpandoObject();
aluno.Nome = "Paulo Ortins";
aluno.Idade = 18;
public void ImprimirAlunoAdulto(dynamic aluno)
{
if (aluno.Idade > 18)
{
Console.WriteLine(aluno.Nome);
}
}
Inferência de Tipos
Aluno aluno = new Aluno();
var aluno = new Aluno();
Dictionary<string, List<Aluno>> alunos = newDictionary<string, List<Aluno>>();
var alunos = new Dictionary<string, List<Aluno>>();
Extension Methods
public class StringUtil {
public static String ObterUltimosCaracteres(String string, int numeroCaracteres)
{
int ultimaPosicao = string.length();
return string.substring(ultimaPosicao - numeroCaracteres , ultimaPosicao);
}
}
StringUtil.ObterUltimosCaracteres("testando", 3);
Extension Methods
static string ObterUltimosCaracteres(this string s, int numeroCaracteres)
{
return s.Substring(s.Length - numeroCaracteres, numeroCaracteres);
}
"testando".ObterUltimosCaracteres(3);
LINQ
• Language Integrated Query
• Feature que nos permite fazer consultas sql-like em coleções:
– Em memória
– Em SQL
– Em XML
Exemplos de Uso do LINQ
• Agrupar pessoas por idade
// Query Expressions
var pessoas = from pessoa in people
group pessoa by pessoa.Idade;
// Lambda Expressions/Dot Notation
var peopleGroupedByAge = people.GroupBy(x => x.Idade);
Exemplos de Uso do LINQ
• Ordenar uma coleção de pessoas pela idade
// Query Expressions
var ordered = from pessoa in people
orderby pessoa.Idade
select pessoa;
// Lambda Expressions/Dot Notation
var ordered = people.OrderBy(x => x.Idade);
Outras Features
• Programação Funcional
• Computação Paralela
• Computação Assíncrona
E o que há de bom e de ruim no C#?
• Features da linguagem
• Generalista/Nicho
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
C# é linguagem interpretada
C# é uma linguagem generalista
• Web• Desktops
– Windows– Unix/MacOS
• Mobile– Windows 8/ Windows Phone– Android– iOS
• Cloud/Big Data– Azure/HDInsight
• Natural User Interfaces– Kinect
C# no Unix
C# for MacOS
• Usa o interface builder para desenhar telas com componentes nativos do Cocoa.
• Sincroniza esses componentes com o Xamarin For Mac
• Temos uma App Nativa na Mac Store feita com C#
E galera se empolgou, C# no iOS
C# no iOS
C# no iOS
C# no Android
C# no Windows 8/Windows Phone
C# no Windows 8/Windows Phone
• Windows Phone já passou o iOS em vendas na América Latina.
• Está prestes a ultrapassar o iOS no Brasil.
Azure/HDInsight
• Mundo produz cada vez mais dados.
• Dados devem ser processados e armazenados
• Cada vez mais soluções de cloud são necessárias.
• Azure e HDInsight trazem essa possibilidade pro ecossistema .NET.
Natural User Interface - Kinect
• Comunicação natural homem-maquina sem o auxilio de outros dispositivos
• Kinect é um sistema de detecção de movimentos desenvolvido inicialmente para video games mas que tem sido expandido para outras áreas.
Natural User Interface - Kinect
E o que há de bom e de ruim no C#?
• Features da linguagem
• Generalista/Nicho
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
Ferramental
Ferramental
E o que há de bom e de ruim no C#?
• Features da linguagem
• Generalista/Nicho
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
Custos• Windows 8.1
– Standard: $120
– Pro : $200
• VS 2013 – Upgrade: $99 até 2014, depois $299
– Full Price: $499
• Xamarin Studio– Indie: $299/ano, por plataforma
– Business: $999/ano, por plataforma
Custo – Estudantes/Startups
• Microsoft oferece licenças de graça para estudantes ou empresas em fase inicial, através do Dream Spark e o BizSpark.
• Xamarin também possui desconto para estudantes. O preço cai para $99/ano por plataforma.
E o que há de bom e de ruim no C#?
• Features da linguagem
• Generalista/Nicho
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
Mercado
• Há um deficit de programadores C# em Salvador, no Brasil e no mundo.
• A grande maioria dessas vagas é pra trabalhar em ambientes enterprise.
Médias Salariais - Salvador
• Programador Jr: R$ 900 – R$1400
• Programador Pl: R$1300- R$1700
• Programador Sr: R$1600 – R$ 2000
• Analista Jr: R$1800 – R$ 2600
• Analista Pl: R$ 2600 – R$ 3500
• Analista Sr: R$3500+
Médias Salariais - USA
E o que há de bom e de ruim no C#?
• Features da linguagem
• Generalista/Nicho
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
Open Source/Comunidade
• A Microsoft tem aberto muito dos seus códigos para a comunidade, embora o seu desenvolvimento não seja aberto a mesma.
• Ferramentas, em sua maioria, são:
– São desenvolvidas pela Microsoft
– Desenvolvidas por funcionários da Microsoft (Open)
– Desenvolvidas por outras pessoas porém pagas.
• É difícil concorrer com os “insiders”.
Incentivos a comunidade
• Incentivos as pessoas que mais contribuem com a comunidade
– Licensas gratuitas
– Acesso a discussões sobre o futuro da plataforma
E o que há de bom e de ruim no C#?
• Features da linguagem
• Performance
• Ferramental
• Custos
• Mercado
• Comunidade/Open Source
• Futuro
Vale a pena apostar no .NET/C#?
• Na minha opinião, sim, e eu estou apostando.
– Linguagem em constante evolução.
– Ecossistema evoluindo para atender as demandas do mercado atual e do mercado futuro.
• Cabe a vocês decidirem onde vocês vão apostar.
Meus Contatos
• Blog: Pauloortins.com
• Newsletter sobre .NET: dotnetpills.apphb.com
• Twitter: @pauloortins
• Email: [email protected]
Perguntas ?