domingo, 30 de junho de 2019

Estas são as 3 melhores linguagens de programação para você aprender agora

Peter Wayner, Info World em 25/06/2019.

Cada vez mais pessoas se interessam em aprender programação, e para isso é essencial escolher a primeira linguagem a ser usada. Hoje, as escolas estão variando entre JavaScriptPython e Java, mas será que alguma dessas pode ser considerada melhor que as demais? Confira as avaliações com as principais razões para aprendê-las.

Java é clássico

O Java continua a ser a espinha dorsal de muitos sites e aplicativos. Escolher uma linguagem com um forte número de seguidores permite que o aluno seja beneficiado com um sistema já totalmente abastecido com sofisticadas ferramentas de desenvolvimento. Além disso, há bilhões de linhas de código aberto que o aluno pode estudar, revisar e ampliar para seu próprio trabalho.

Python é novo

Na verdade, o Python não é tão novo - o projeto começou há cerca de 30 anos -, mas parece novo porque seu sucesso demorou para chegar. Apenas recentemente o Python alcançou uma ampla adoção com programadores casuais. A novidade significa que as escolas que estão adotando o Python estão criando novos planos de aula e produzindo novos conteúdos, e não desenterrando algumas velhas perguntas empoeiradas dos anos 90 com referências ao MySpace.

JavaScript está em toda parte

Na última década, o JavaScript assumiu as linhas de frente dos servidores da Web à medida que os aplicativos da Web Node.js se tornaram a maneira mais popular para os desenvolvedores escreverem “código isomórfico”. JavaScript tem praticamente a mesma idade do Java, mas demorou bons anos para os programadores descobrirem seu poder. É novo e antigo ao mesmo tempo.

Java reduz erros

Você pode não gostar de gastar o tempo para especificar o tipo de cada variável, mas não leva muito tempo para clicar em três teclas para adicionar "int" ao seu código. Quando você faz isso, você ganha todo o poder que resulta de permitir que o compilador verifique seu código imediatamente e encontre os erros antes de implementá-lo. As linguagens verificadas por tipos nos forçam a pensar com mais rigor sobre a lógica em nosso código, e essa é uma lição essencial para novos programadores. A estrutura do Java reduz os erros e constrói um código melhor.

Python é construído

Os amantes da linguagem tipada são inteligentes e escrevem um bom código, mas se você acha que seu código é bom o suficiente para rodar sem as informações extras sobre os tipos de dados para cada variável, o Python será bom para você. O computador pode descobrir o tipo de dados quando você os armazena em uma variável.

JavaScript é flexível

O JavaScript em si não é tipado, mas ultimamente alguns dos membros do JavaScript estão migrando para o TypeScript, um superconjunto da linguagem original que lhe dá a capacidade de definir os tipos quando você quiser. E se você não quiser, bem, o JavaScript também funcionará bem. É uma versão mais relaxada da verificação de tipos.

Java governa dispositivos

O sistema operacional mais popular do mundo é o Android, uma pilha enorme de código construída em Java. Mas essa é apenas a plataforma mais visível. Decodificadores, novos Chromebooks e até mesmo alguns desktops executam aplicativos para Android como os smartphones.

Python governa a ciência de dados

Se você está criando um software para trabalhar com dados, há uma boa chance do Python ser mais adequado. A sintaxe simples atraiu muitos cientistas e a linguagem encontrou um forte número de seguidores em laboratórios de todo o mundo. Agora que a ciência de dados está se consolidando no mundo dos negócios, a linguagem está crescendo.

JavaScript governa a web

As outras plataformas podem ser boas, mas o navegador continua sendo o único portal que todos usam para se conectar com o mundo. Geralmente, é o software mais usado na área de trabalho do computador, no smartphone e no tablet. O JavaScript expandiu sua influência, já que o crescimento do Node.js facilitou a vida dos desenvolvedores.

Java roda tudo

Se você escrever um código em Python, há uma boa chance de que ele acabe sendo executado no Jython, uma implementação da linguagem escrita em Java para aproveitar a onipresença da Java Virtual Machine. Se você precisar executar o JavaScript, também poderá alimentá-lo com o Rhino, uma ferramenta que transforma o código em bytecode Java. Vale destacar, também, que muitas linguagens de programação funcionais como Scala, Clojure e Kotlintambém dependem dos mesmos fundamentos.

Python é executado em todos os lugares

Apesar de menos popular, é fácil encontrar o Python em muitos computadores. Os criadores da linguagem sempre trabalharam com código aberto e os pacotes estão em praticamente todos os lugares.

JavaScript é executado no navegador

O JavaScript é hoje a base para diferentes linguagens. Os desenvolvedores querem alcançar os usuários e, se os usuários estiverem no navegador, encontrar uma maneira de executar seu código em JavaScript - a maneira mais rápida de alcançar a todos. Linguagens como Lisp, OCaml e Pascal podem ser convertidas para JavaScript e executadas no navegador.

Java tem IDEs excelentes

Eclipse, NetBeans e IntelliJ são alguns dos melhores ambientes de desenvolvimento integrados. Eles foram criados pela comunidade Java ao longo dos anos como um dos ambientes mais favoráveis ​​para escrever código. Os algoritmos de conclusão e geração de código podem não gravar todo o programa, mas podem escrever uma quantidade significativa. Todo esse controle ajuda os novos desenvolvedores a obter a sintaxe correta.

Python agrega

Algumas das ferramentas mais recentes, como Jupyter, agregam código, dados e explicações para que as pessoas possam compartilhar suas ideias. Os cadernos Jupyter não são documentos estáticos, mas ferramentas interativas para serem exploradas. Outros estão construindo ferramentas sofisticadas em torno da linguagem para melhorar as pesquisas. O PyTorch, por exemplo, é um kit de ferramentas de aprendizado profundo preenchido com código, dados e algoritmos para análise. Ambientes como esse irão dominar o futuro da ciência de dados.

JavaScript tem JSFiddle

Cada navegador vem com capacidade suficiente para atuar como um IDE. O JSFiddle é apenas o mais conhecido entre diversos sites que permitem compartilhar código JavaScript com outros desenvolvedores. Ferramentas como essa simplificam a experiência do aluno.

Aprenda qualquer uma (ou as três)

O mundo da programação se beneficia da alternância. Embora possa ser confuso trabalhar com diferentes linguagens e manter a sintaxe correta, é possível usar o Java, Python e JavaScript nos projetos. Para os especialistas, as três linguagens não precisam ficar isoladas umas das outras.

segunda-feira, 24 de junho de 2019

Novidades do C# 8.0: Default Interface Members

Por Renato Groffe em 24/06/2019 no site iMasters

Resultado de imagem para c# 8.0
DotNetCurry.com


Este último mês de Maio/2019 foi bastante agitado dentro da comunidade .NET, com o anúncio de novos updates do Visual Studio 2019 e do .NET Core 3.0. Com essas novas versões um dos recursos mais esperados para o C# 8.0 também foi disponibilizado para testes: Default Interface Members.
Permitindo agora que implementações de métodos e propriedades sejam declaradas em uma interface, esta nova funcionalidade contribui para evitar a quebra de código quando da necessidade de inclusão de novos membros nessas estruturas.
Na listagem a seguir temos um exemplo envolvendo a interface IPrestadorServico, além das classes PessoaFisica e PessoaJuridica como duas possíveis implementações da mesma:
namespace ExemploDefaultInterfaceMembers
{
public interface IPrestadorServico
{
string Codigo { get; }
string Nome { get; set; }
}
public class PessoaFisica : IPrestadorServico
{
public string CPF { get; set; }
public string Codigo { get => CPF; }
public string Nome { get; set; }
}
public class PessoaJuridica : IPrestadorServico
{
public string CNPJ { get; set; }
public string Codigo { get => CNPJ; }
public string Nome { get; set; }
}
}
Podemos testar o uso de Default Interface Members com as estruturas aqui apresentadas como exemplo por meio das seguintes alterações:
  • Declarando a propriedade PossuiCNPJ em IPrestadorServico e atribuindo como valor default true. Esta mesma propriedade pode ainda ser redefinida em PessoaFisica para retornar false, ao passo que nenhuma alteração acontecerá em PessoaJuridica;
  • Com o método ObterDescricaoGeral, sem que se efetuem modificações em PessoaFisica e PessoaJuridica.
namespace ExemploDefaultInterfaceMembers
{
public interface IPrestadorServico
{
string Codigo { get; }
string Nome { get; set; }
bool PossuiCNPJ { get => true; }
string ObterDescricaoGeral()
{
return $"{Codigo}, {Nome}, é uma Empresa: " +
(PossuiCNPJ ? "Sim" : "Não");
}
}
public class PessoaFisica : IPrestadorServico
{
public string CPF { get; set; }
public string Codigo { get => CPF; }
public string Nome { get; set; }
public bool PossuiCNPJ { get => false; }
}
public class PessoaJuridica : IPrestadorServico
{
public string CNPJ { get; set; }
public string Codigo { get => CNPJ; }
public string Nome { get; set; }
}
}
É importante destacar que membros com implementação default e que não foram redefinidos nas classes que derivam de uma interface não estarão disponíveis para acesso direto. O que isso significa na prática para este último exemplo?
Com uma referência baseada em PessoaFisica ou PessoaJuridica não estará disponível o método ObterDescricaoGeral. Variáveis declaradas como sendo do tipo IPrestadorServico terão acesso a tal método.
Já a propriedade PossuiCNPJ estará disponível apenas para variáveis declaradas como sendo da classe PessoaFisica ou baseadas na interface IPrestadorServico. Esta propriedade não estará disponível para acesso direto via referência do tipo PessoaJuridica.
Na imagem a seguir estão ilustrados esses pontos:
A próxima listagem traz um exemplo de utilização dos tipos PessoaFisica e PessoaJuridica em uma Console Application, com o método ImprimirDadosPrestador recebendo como parâmetro referências baseadas nestas classes:
using System;
namespace ExemploDefaultInterfaceMembers
{
class Program
{
private static void ImprimirDadosPrestador(
IPrestadorServico prestador)
{
Console.WriteLine(prestador.ObterDescricaoGeral());
}
static void Main()
{
var pessoaFisica = new PessoaFisica();
pessoaFisica.CPF = "22222222222";
pessoaFisica.Nome = "Testando Pessoa Física";
ImprimirDadosPrestador(pessoaFisica);
var pessoaJuridica = new PessoaJuridica();
pessoaJuridica.CNPJ = "33444555777788";
pessoaJuridica.Nome = "TestePessoaJuridica";
ImprimirDadosPrestador(pessoaJuridica);
}
}
}
A seguir está o resultado da execução deste projeto:
Caso queira saber mais a respeito de outras novidades que integram o C# 8.0acesse o post a seguir, em que agrupo todos os conteúdos que venho produzindo sobre esta versão:
E também a gravação de uma apresentação recente no Canal .NET, em que o MVP André Secco e eu apresentamos em detalhes as novidades do C# 8.0: