Categorias
PROGRAMAÇÃO

Flutter: como criar apps nativos para Android e iOS

No universo do desenvolvimento de aplicativos móveis, uma das maiores dificuldades sempre foi criar apps multiplataforma que rodassem nas duas principais plataformas mobile atuais: Android e iOS. Os obstáculos são variados, desde a performance até o custo de criar e manter os apps para cada sistema; porém, parece que uma solução realmente eficiente está começando a surgir.

Estamos falando do Flutter, um framework desenvolvido pela Google com base na linguagem Dart (também criada pela empresa). O objetivo desse SDK é oferecer uma solução para a criação de apps multiplataforma, atendendo não somente a dispositivos móveis mas também à web e em breve ao ambiente desktop.

Neste artigo, explicaremos exatamente o que é o Flutter e daremos algumas dicas para aqueles que estão buscando uma forma de aprendê-lo.

O que é o Flutter?

O Flutter nada mais é do que um framework que funciona como um template para o desenvolvedor, oferecendo uma série de funções úteis e práticas que podem ser usadas nos códigos do programa. É como se fosse uma estrutura base do software, auxiliando um gerenciamento ágil dos projetos.

Flutter

Também podemos entender o Flutter como um SDK (kit de desenvolvimento de software), por oferecer as ferramentas que facilitam a criação dos aplicativos. Esse framework é escrito em Dart, uma linguagem de programação fortemente tipificada e orientada a objetivos, bastante semelhante a linguagens como Swift, C#, Java e JavaScript.

Características do Flutter

De acordo com a própria Google, o Flutter foi criado para melhorar a qualidade dos aplicativos e aumentar a velocidade do seu desenvolvimento. Dessa forma, é possível alcançar mais usuários com uma mesma solução, sem precisar arcar com os custos da criação de duas versões de um mesmo app.

Além disso, o Flutter facilita a elaboração de aplicativos bonitos. Conferindo liberdade aos designers, que geralmente esbarram em limitações técnicas, esse framework possibilita a modificação de cada pixel da tela. É claro que a beleza de um app depende da criatividade do criador, mas o Flutter não impõe barreiras a esse desenvolvimento.

Flutter

Diferentemente de outras soluções, o Flutter gera códigos verdadeiramente nativos tanto para o Android quanto para o iOS, o que confere maior fluidez e velocidade na execução dos aplicativos. O Flutter não utiliza componentes nativos por meio de uma “ponte” (como o React Native) nem é executado em uma WebView (como no caso do Ionic).

Por fim, vale ressaltar que o Flutter é livre, com código fonte aberto. O projeto open source está sob a licença BSD-style, o que inclui a contribuição de milhares de desenvolvedores ao redor do globo. É possível encontrar o projeto do Flutter no GitHub e contribuir para o seu desenvolvimento.

Quer aprender Flutter?

Se você se interessou em aprender mais sobre o Flutter, pode estar se perguntando como pode começar a fazer isso. Em mais uma parceria com o TecMundo, a Udemy, maior plataforma de cursos online do mundo, oferece algumas alternativas para os interessados, com vários cursos distintos e complementares sobre Flutter. Todas as opções estão com descontos promocionais por tempo limitado, portanto não perca tempo e aproveite. Confira as ofertas relacionadas ao aprendizado do Flutter.

Categorias
PROGRAMAÇÃO

9 motivos para aprender Python em 2020

Analogias para referir-se ao Python não faltam: novo Excel, simples como o inglês, canivete suíço, soja da TI. Todo esse descritivo está muito ligado à sua natureza versátil e à grande variedade de projetos a que a linguagem de programação tem sido aplicada e, sim, com bons resultados. Se você conhece alguma linguagem e anda na dúvida sobre o que estudar como segunda opção, aqui listamos 9 boas razões para sua escolha ser Python. Se você não conhece nada de programação e pensa em iniciar-se nessa área, os mesmos motivos vão te inspirar, mas, sobretudo: a simplicidade do código, a alta demanda e os salários.

Python é uma linguagem de programação relativamente simples de aprender, tanto é que muitos dizem que sua lógica lembra bastante a do aprendizado do idioma inglês, além de utilizar em seus parâmetros parte do inglês falado no cotidiano, o que facilita bastante a leitura do código. A lógica é assim: você praticamente diz ao computador o que você quer. Trata-se de uma linguagem expressiva, voltada à produtividade e que te permite criar soluções rapidamente. Pode perguntar para qualquer especialista no assunto, Python é fluído, limpo e com sintaxe bem simples. Tudo isso faz dessa linguagem a porta de entrada para quem quer se aventurar pelo mundo da programação.

*IT Trends é uma edtech que tem a missão de preparar e educar profissionais para a economia digital por meio de informação, análises e cursos

Categorias
PROGRAMAÇÃO

Desenvolvedores sacrificam qualidade do software para cumprir prazos

Segundo relatório da Diffblue, prazos apertados e processos manuais de testes são alguns dos fatores que levam à baixa qualidade dos softwares

Os desenvolvedores de tecnologia vêm enfrentando inúmeros desafios na criação de softwares. Além da expectativa das funcionalidades, correção de possíveis bugs e prazos curtos a serem cumpridos, um relatório da Diffblue mostra que todas essas questões impactam na qualidade do trabalho dos profissionais da área.

Para o estudo, a Diffblue entrevistou 300 desenvolvedores dos Estados Unidos e Reino Unido. Questionados sobre quais fatores contribuem para a baixa qualidade do software, 40% dos profissionais citaram cronogramas irrealistas e 40% atribuíram a culpa aos processos manuais de teste.

No geral, as empresas definem metas de cobertura de códigos de teste, exigindo que os desenvolvedores criem essas avaliações para garantir a qualidade do seu software. A metade de cobertura média do código é de 63%, segundo a pesquisa, mas 48% dos participantes admitiram considerar difícil alcançar esse objetivo.

A maioria dos desenvolvedores concordou que os testes de unidade melhoram a qualidade do software e aceleram a manutenção do código. Mas, para atingir suas metas de cobertura, eles devem gastar 35% do tempo criando testes e 20% apenas escrevendo os testes de unidade, tempo que poderia ser melhor gasto em outras tarefas de codificação.

Para atingir todas essas expectativas, 42% dos desenvolvedores reconhecem que deixaram de escrever testes de unidade para concentrar seu tempo e esforços no desenvolvimento de novos recursos. Além disso, dois terços dos desenvolvedores disseram que a configuração dos testes de unidade é uma tarefa secundária.

Ainda conforme o levantamento, 82% dos entrevistados disseram preferir dedicar tempo a atividades mais criativas, como o desenvolvimento de novos recursos. Questionados sobre quais tarefas eles gostariam de ver automatizadas, 73% citaram o rastreamento de bugs e 70% apontaram para a realização de testes de unidade.

“A criação de código de qualidade não deve depender de desenvolvedores escreverem centenas ou milhares de testes não intuitivos e desinteressantes. Quando tarefas robóticas podem ser atribuídas a máquinas, elas devem ser – não apenas para manter a força de trabalho mais satisfeita e eficaz, mas também para melhorar a qualidade do código que eles criam”, concluiu o CEO da Diffblue, Mathew Lodge, em comunicado à imprensa. .

Categorias
PROGRAMAÇÃO

8 mentiras que os programadores dizem a si mesmos

Não existe um código perfeito. Às vezes cruzamos os dedos, porque, afinal de contas, computadores cometem erro

Peter Wayner, Infoworld (EUA)

03/11/2019 às 17h31

 

Os programadores têm orgulho de si mesmos por um bom motivo. Ninguém mais tem o poder de acessar um banco de dados e mudar a realidade. Quanto mais o mundo confia nos computadores para definir como o mundo funciona, mais poderosos os programadores se tornam.

Infelizmente, o orgulho termina com a queda. O poder que compartilhamos é real, mas está longe de ser absoluto, afinal, não existe um código perfeito. Às vezes cruzamos os dedos porque os computadores cometem erros. As máquinas também podem ser falíveis, o que todos sabemos por muita experiência em primeira mão.

Obviamente, muitos problemas decorrem de suposições que os programadores fazem e que simplesmente não estão corretas. Como Mark Twain disse: “Não é o que você não sabe que causa problemas. É o que você tem certeza de que não é verdade.”

Aqui estão algumas crenças falsas que nós, programadores, frequentemente fingimos ser verdadeiras.

1. Linguagens de programação são diferentes

Batemos nas mesas depois do trabalho. Escrevemos longos relatórios. Prometemos ao chefe que, desta vez, uma nova linguagem mudará tudo e um software maravilhoso fluirá dos teclados que todo o projeto será realizado um mês antes do prazo. No final, porém, colamos os dados nas variáveis ​​e testamos alguma lógica.

Os programadores veem a estrutura em seu código e sonham em acabar com qualquer ineficiência dele. Então eles imaginam elaborados castelos chamados “estruturas”, “andaimes”, “plataformas” ou “arquiteturas” e mexem com eles até oferecerem o suporte correto ao problema atual, para que tudo possa ser escrito em poucas palavras

No final, tudo isso é artifício. Licor estrutural que entorpece a dor da codificação da vida até que ela desapareça. Os computadores são construídos a partir de transistores e nenhuma quantidade inteligente de teorias pode ocultar o fato de que todo o nosso código se resume a um pouco de silício, escolhendo ir para a esquerda ou para a direita.

2. Estruturas estão melhorando

Talvez você tenha criado seu último aplicativo Web no React porque estava descontente com as páginas construídas no Vue. Ou talvez você reescreva tudo em algo menor, mais novo ou mais legal, como Marko, Glimmer ou Ghost? O programador está sempre procurando a estrutura perfeita, mas essa estrutura, como o fim do arco-íris, nunca aparece.

Ralph Waldo Emerson antecipou a vida do programador quando escreveu “Autossuficiência”, em 1841. “A sociedade nunca avança”, observou ele falando, claro, do curso das estruturas de programação. “Ele recua tão rápido de um lado quanto ganha do outro. Seu progresso é aparente apenas como os trabalhadores de uma esteira … Pois tudo o que é dado é tomado.”

E assim vemos repetidamente os desenvolvedores criarem novas estruturas para corrigir os problemas das estruturas antigas, introduzindo novas dificuldades ao longo do caminho. Se uma estrutura adicionar renderização do lado do servidor, ela atolará o servidor. Mas se tudo é deixado para os clientes, eles começam a ficar mais lentos. Cada novo recurso é uma troca entre tempo, código e largura de banda.

3. Nulo é aceitável

Descobrir como lidar com ponteiros nulos é um grande problema para o design de linguagem moderna. Às vezes, acho que metade do código Java que escrevo está verificando se um ponteiro é nulo.

A maneira inteligente como algumas linguagens usam um ponto de interrogação para verificar a nulidade ajuda, mas não elimina o problema. Várias linguagens modernas tentaram ultrapassar essa barreira, eliminando completamente o nulo. Se toda variável precisar ser inicializada, nunca poderá haver um nulo. Não há mais testes nulos. Problema resolvido. Hora do almoço.

A alegria dessa descoberta desaparece em várias linhas de um novo código, porque as estruturas de dados geralmente apresentam falhas sem informações. As pessoas deixam linhas em um formulário em branco. Às vezes, os dados ainda não estão disponíveis.

Se o elemento for uma sequência, você pode testar se o comprimento é zero. Se você trabalha bastante com as definições de tipo, geralmente pode criar algo logicamente correto para determinado problema, pelo menos até que alguém altere as especificações. Depois de fazer isso algumas vezes, você começa a desejar uma palavra simples que significa uma variável vazia.

4. Computadores podem entender escolhas humanas

A codificação de gênero e a escolha de pronomes é um grande campo minado para os programadores. Os computadores negociam listas fixas e menus bem definidos, e os seres humanos continuam mudando as regras.

Os cientistas da computação nunca resolvem realmente os problemas, apenas adicionam outra camada de indireção, neste caso, um ponteiro para um campo vazio onde a pessoa pode preencher sua escolha. Em seguida, algum palhaço vem e escolhe “sua majestade” como um pronome, o que faz com que algumas crianças riam e outros se sintam ofendidos. Mas voltar para uma lista fixa significa excluir algumas opções.

Esse modo de falha de design aparece repetidamente. Se você forçar todos a terem um primeiro nome e um sobrenome, alguns terão apenas um nome. Ou então, alguém que não quer ser conhecido por uma sequência de caracteres Unicode. E se alguém escolhe um novo emoji para o seu nome e o emoji não faz parte da lista final? Não importa o quanto você tente ensinar ao computador como ser flexível e aceitar caprichos e loucuras humanas, os humanos surgem com novas bombas lógicas que detonam o código.

5. Unicode significa comunicação universal

Há um comitê sério que se reúne com frequência tentando decidir quais emojis devem ser incluídos na lista definitiva de glifos que definem a comunicação humana. Eles também deixam de lado certos emoji, negando efetivamente os sentimentos de alguém.

A explosão de memes mostra quão fútil esse processo pode ser. Se o mundo considera os emoticons muito limitadores, incentivando-os a misturar texto com fotos de ícones culturais, como uma lista de emojis pode ser adequada?

Depois, há o problema das fontes emoji. O que parece fofo em uma fonte pode parecer covarde e suspeito em outra. Você pode escolher o emoji fofo, mas seu telefone enviará os bytes Unicode para seu amigo que tem um telefone de marca diferente e uma fonte que renderizará os bytes com a versão desagradável do emoji.

6. A linguagem humana é consistente

Uma das maneiras que os desenvolvedores criam é colocar um campo de texto e permitir que os humanos o preencham com o que quiserem. As seções de comentários em aberto são feitas para humanos e raramente são interpretadas por algoritmos, portanto não fazem parte do problema.

O problema real reside em campos estruturados com texto. Quando o meu GPS quer que eu escolha uma estrada que leva o nome de um santo, ele me diz para “virar para a Street Johns Road”. Os nomes das estradas com apóstrofos também fazem dar uma volta. É comum ver “St. John’s Road” soletrado como “Saint Johns”,“St. Johns”, “Saint John’s” e até da forma plural:“ Saint Johns”. Os Correios dos EUA têm uma lista de endereços sem caracteres extras e mantém um algoritmo elaborado para converter qualquer endereço aleatório na forma canônica.

7. Arquivos são consistentes

Parece que lembrar os dados deve ser algo que um computador possa fazer. Devemos ser capazes de recuperar os bits, mesmo que sejam preenchidos com muitas inconsistências lógicas, estilísticas, ortográficas, numéricas ou outras. Infelizmente, não podemos nem fazer isso.

Sempre que peço ao meu Mac que verifique o sistema de arquivos e corrija os erros, ele invariavelmente me informa sobre uma longa lista de “erros de permissão” que ele repara para mim. Como o software obteve permissão para alterar as permissões de acesso aos meus arquivos se eu não dei permissão para fazê-lo? Não me pergunte.

Esses são apenas dois exemplos de como os sistemas de arquivos não respeitam o pacto entre o usuário (a pessoa que fornece a eletricidade) e a máquina (um carente desesperado por eletricidade). Qualquer programador lhe dirá que existem centenas de outros exemplos de situações em que os arquivos não contêm o que esperamos que eles contenham. As empresas de banco de dados recebem muito dinheiro para garantir que os dados possam ser gravados de maneira consistente. Mesmo assim, algo dá errado e os consultores recebem ainda mais dinheiro para consertar o problema.

8. Estamos no controle

Gostamos de acreditar que nossas instruções estão dizendo ao computador, mas somos presos impotentes pegando o que as máquinas nos dão. O sistema operacional está no comando e pode ou não permitir que nosso código faça o que nós desejamos.

OK, e se compilarmos o kernel Linux do zero e instalarmos apenas o código que examinamos? Certamente estaremos no controle então. Não. O BIOS possui o primeiro controle sobre o computador e pode fazer clandestinamente alterações sutis e não tão sutis no seu código. Se você estiver executando na nuvem, o hipervisor terá ainda mais poder.

OK, e se substituirmos o BIOS por nosso próprio gerenciador de inicialização personalizado? Você está chegando mais perto, mas ainda há muito firmware enterrado dentro da sua máquina. Sua unidade de disco, placa de rede e placa de vídeo podem pensar por si mesmas e ouvem primeiro o firmware.

Não apenas isso, mas sua CPU pode ter um “Modo Deus Escondido”, que permite que outra pessoa assuma o comando. E esses são apenas os problemas com os chips oficiais que deveriam estar na sua caixa. Alguém pode ter adicionado um chip extra com uma agenda oculta.

Até esse pequeno pen drive possui um processador embutido com seu próprio código, tomando suas próprias decisões. Todos esses processadores incorporados foram pegos abrigando malware. O fato triste é que nenhum dos transistores nessa caixa embaixo da sua mesa informa você sobre isso.

Categorias
PROGRAMAÇÃO

Estas são as linguagens de programação mais valorizadas pelas empresas atualmente

Javascript, Java e Python figuram entre conhecimentos essenciais dos profissionais de tecnologia

Com surgimento de novas empresas de tecnologia no Brasil e negócios cada vez mais disruptivos digitalmente, estima-se que neste ano, mais uma vez, cerca de 70 mil vagas ficarão sem preenchimento na área de TI. O número de profissionais formados anualmente pelas universidades ainda está longe da demanda total que o mercado necessita e isso tem feito que muitas companhias capacitem seus profissionais por meio de treinamento intensivo em determinados cursos de programação.

Segundo levantamento da Digital Innovation One, plataforma de open education para desenvolvedores de software, feito com seus estudantes, mesmo dentro das universidades tem sido um grande desafio encontrar profissionais que estejam qualificados para as vagas. “A acirrada competição global dos negócios e busca pela inovação exige contínua adoção da evolução tecnológica, deixando o modelo de aprendizagem tradicional defasado em relação às reais necessidades do mercado de trabalho.”, revela Iglá Generoso, CEO da startup.

Com base nas buscas feitas pelas empresas do tipo de qualificação necessária para o preenchimento de vagas, a Digital Innovation One realizou um mapeamento e identificou quais são os cursos mais exigidos pelas empresas e tendências em linguagens de programação para 2020. Todos podem ser feitos online e de forma gratuita na plataforma da Digital Innovation One.

Javascript

​Quer chamar atenção das empresas e startups millennials? Então saiba que seu conhecimento de Javascript deve estar afiado. Graças às soluções web cada vez mais interativas e refinadas, os usuários elevaram seu nível de exigência em serviços, exigindo cada vez mais dos desenvolvedores, que devem entregar muito mais do que trabalhos triviais. Outro fator importante é que Javascript é o conhecimento essencial para o desenvolvedor de software avançar para tornar-se um desenvolvedor full-stack completo e atuar com ReactJS, React Native, Angular e Node.js.

Java

​Altamente requisitada por empresas tradicionais, Java tornou-se uma poderosa plataforma de desenvolvimento. O motivo: é uma linguagem portável para qualquer sistema operacional e tem grande variedade de frameworks que visam facilitar o trabalho do desenvolvedor para
criar aplicações para desktop, celular, cartão, web, televisão digital, etc. Aos profissionais de TI, cabe uma especialização nesta linguagem de programação.

Phython

​Com a ascensão da ciência de dados, apontada como a mais promissora área do TI pelo Fórum Econômico Mundial, a linguagem Phyton é muito valorizada pelas companhias brasileiras. Fundamentalmente estatística e com menor complexidade de aprendizado, nasceu no Centro
de Matemática e Ciência de Computação, localizado em Amsterdã, e tem impulsionado a migração de matemáticos e economistas para a área da tecnologia.

Generoso destaca ainda que “a nova geração de desenvolvedores de software precisa estar preparada para essas linguagens, porém ter uma base conceitual sólida em arquitetura, agilidade e padrões de desenvolvimento de software é fundamental. Isso permite que o desenvolvedor domine mais linguagens e não perca oportunidades de crescimento profissional nas tecnologias que transformarão o mercado global”.