Cientistas usaram Python para fotografar buraco negro

Várias bibliotecas da linguagem Python fazem parte dos algoritmos para conseguir a primeira foto real de um buraco negro

Anúncios

Você deve ter ouvido falar na famosa “foto do Buraco Negro” que virou manchete nos noticiários mundo a fora. Pois bem, cientistas por trás desta façanha usaram um novo algoritmo para tirar uma foto de um buraco negro. Uma das partes mais interessantes sobre isso é que eles usaram muitas bibliotecas Python para fazer a mágica.

Abaixo segue uma lista de bibliotecas Python mencionada no artigo deles:

Eles também usaram seu próprio código Python personalizado que está disponível no Github do projeto. Caso você queira ter uma ideia geral de como foi feito isso, o vídeo a seguir tem uma explicação mais leiga das idéias por trás de tirar a foto. Foi gravado durante uma boa palestra TED com uma das pesquisadoras:

Fonte: Python Library blog

Python, R e Scala: as linguagens da ciência de dados

O Cientista de Dados Igor Bobriakov escreveu um excelente post (em inglês) sobre as principais bibliotecas para Data Science em linguagens Python, R e Scala. Confira a tradução em português

O Cientista de Dados Igor Bobriakov escreveu um excelente post (em inglês) sobre as principais bibliotecas para Data Science em linguagens Python, R e Scala, com um infográfico bastante didático. Neste post você encontra esse excelente trabalho traduzido na íntegra para o português pelo site Ciência e dados. Boa leitura!

Data Science é um campo promissor e empolgante, desenvolvendo-se rapidamente. Os casos de uso e aplicações da Ciência de Dados estão em constante expansão e o kit de ferramentas para implementar esses aplicativos cresce na mesma proporção.

Cada uma dessas linguagens é adequada para um tipo específico de tarefas, além de cada desenvolvedor escolher a ferramenta mais conveniente para si. Muitas vezes, a escolha de uma linguagem de programação é subjetiva, mas, abaixo, tentaremos saudar as forças de cada uma das três linguagens descritas.

Linguagem R

Projetada principalmente para computação estatística, a linguagem R oferece um excelente conjunto de pacotes de alta qualidade para coleta e visualização de dados estatísticos. Outro ponto forte para a Linguagem R é o conjunto de ferramentas bem desenvolvidas para pesquisa reproduzível. No entanto, R pode ser de alguma forma específico e não é tão bom quando se trata de engenharia e alguns dos casos de programação de propósito geral.

Linguagem Python

Python é uma linguagem de propósito geral com um rico conjunto de bibliotecas para uma ampla gama de propósitos. É tão boa para problemas de matemática, engenharia e Deep Learning quanto para manipulação de dados e visualizações. Esta linguagem é uma excelente escolha para especialistas iniciantes e avançados, o que a torna extremamente popular entre os Cientistas de Dados.

Linguagem Scala

Scala é uma solução ideal para trabalhar com Big Data. A combinação Scala e Apache Spark oferece a oportunidade de aproveitar ao máximo a computação distribuída em cluster de computadores. Portanto, a linguagem possui muitas ótimas bibliotecas para aprendizado de máquina e engenharia; no entanto, falta possibilidades de análise e visualização de dados em comparação com as linguagens anteriores. Se você não estiver trabalhando com Big Data, o Python e R podem mostrar um desempenho melhor que Scala. Mas se estiver trabalhando com Big Data, Scala pode ser a melhor opção.

Continue Lendo “Python, R e Scala: as linguagens da ciência de dados”

O que é API REST (RESTFUL)?

API REST: Entenda o que é e para que serve estes recursos de desenvolvimento.

Fazer a integração de dados entre diferentes sistemas sempre foi um entrave na vida do time de desenvolvimento da TI. Diferentes tecnologias, linguagens, proteção de dados e muitos outros argumentos sempre dificultaram esta boa comunicação.

O que é uma API?

A sigla API vem do inglês e significa Application Programming Interface (
Interface de Programação de Aplicações, em português). Pires (2017) define o funcionamento de uma API objetivando “fornecer um ponto de acesso entre a aplicação e seu cliente, seja ele um usuário ou uma outra aplicação. “. Em resumo, uma aplicação intermediária entre duas aplicações (provavelmente web).

E o que é REST?

REST vem de Representational State Transfer (em português, Transferência de Estado Representacional).

Existe uma certa confusão quanto aos termos REST e RESTful. Entretanto, ambos representam os mesmo princípios. A diferença é apenas gramatical. Em outras palavras, sistemas que utilizam os princípios REST são chamados de RESTful.

  • REST: conjunto de princípios de arquitetura
  • RESTful: capacidade de determinado sistema aplicar os princípios de REST.

Referências: BeCode |Wikipedia

O INCRÍVEL CRESCIMENTO DA LINGUAGEM PYTHON

Recentemente, o Stack Overflow (site de perguntas e respostas sobre programação, que se transformou em ponto de encontro dos programadores em todo mundo) realizou um estudo sobre como os países ricos (aqueles definidos como alta renda pelo Banco Mundial) tendem a visitar um conjunto diferente de tecnologias em relação ao resto do mundo. Entre as maiores diferenças está a linguagem de programação Python.

A conclusão do estudo, foi o extraordinário crescimento da linguagem de programação Python nos últimos cinco anos, conforme visto pelo tráfego no Stack Overflow em países de alta renda. O termo “crescimento mais rápido” pode ser difícil de definir com precisão, mas a linguagem Python tem uma sólida pretensão de ser uma das maiores linguagens de programação do mundo e com “crescimento mais rápido”. Parece que o objetivo vai sendo alcançado.

Crescimento da Linguagem Python em Países de Alta Renda

Acompanhando o Stack Overflow Trends fica fácil perceber que a linguagem Python vem crescendo rapidamente nos últimos anos. Mas vamos nos concentrar em países de alta renda e considerar as visitas às questões, e não as questões respondidas (isto tende a dar resultados semelhantes, mas tem menos ruído mês a mês, especialmente para tags menores).

O Incrível Crescimento da Linguagem Python
Fonte: Stack Overflow

O estudo começa considerando de dados de visualizações a questões sobre Python no final de 2011 e, no período de 2011 a 2017, podemos considerar o crescimento da linguagem Python em relação a outras cinco principais linguagens de programação. (Observe que esta é, portanto, uma escala de tempo menor do que a ferramenta Stack Overflow Trends, que se remonta a 2008). Este gráfico acima contém seis das dez tags mais visitadas no Stack Overflow em países de alta renda; as quatro não incluídas são CSS, HTML, Android e JQuery.

Leia a matéria sobre este estudo na íntegra no site da Data Science Academy

Dica de cursos para Programação – parte 1

Olá, meus caros.

Tenho consumido alguns cursos online e volta e meia sempre me pedem dicas. Algumas escolas online ofertam cursos gratuitos e outros pagos por um preço justo. Para quem é da área de TI, oportunidades não faltam.

UDEMY

Volta e meia com ofertas de cursos a um preço baixo, a UDEMY se destaca neste segmento de cursos online. Alguns cursos gratuitos são bem interessantes, apesar de não oferecerem certificado. Destaco um que fiz e tenho indicado para a equipe de Desenvolvedores que chefio como o Git e Github para iniciantes (para quem está começando e como curso gratuito é de bom tamanho). Outro que fiz e também indico é o Python 3 na web com Django (básico e intermediário). Além de outros a um preço acessível, afinal tem de tudo ali na Udemy. Nem todos os cursos mantém a mesma qualidade, então é bom você analisar a experiência do instrutor e as avaliações de quem já fez o curso.

School of Net

Cursos gratuitos e pagos também nesta linha é o School of Net. Boas opções com cursos de PHP, Python, Banco de dados, Node e afins. Uma boa opção a custo baixo ou zero. Você pode fazer os cursos de maneira gratuita ou ser um assinante do site.

Em breve mais dicas

Qual é a semelhança entre um programador e um jogador de futebol?

por Juliano Niederauer

Em qualquer profissão, encontramos profissionais de todos os níveis de qualificação. Logo, existem programadores bons, médios e ruins, assim como existem jogadores de futebol bons, médios e ruins. Existem ainda os programadores brilhantes, que equivalem ao que no futebol chamamos de “craque”. Mas por que resolvi comparar os programadores com os jogadores de futebol? Ocorre que essas duas profissões apresentam algumas características em comum, sendo a principal delas a capacidade de raciocínio. Afinal, por que alguns profissionais conseguem um lugar de destaque em relação aos demais?

Para que você entenda melhor, vamos descrever brevemente as “categorias” de programadores:

Programadores ruins – são pessoas que, de alguma maneira, entraram na área de desenvolvimento de software, mas não possuem a menor habilidade ou capacidade para isso. Se você entregar a elas um programa para desenvolver, por mais simples que seja, podem passar dias ou até meses tentando implementá-lo, sem sucesso. O que um programador experiente resolveria em questão de horas, acaba se transformando em dor e sofrimento para esse profissional que parece ter caído de paraquedas nessa profissão. Afinal, mesmo percebendo que não possuem nenhuma habilidade para escrever um código, é isto o que fazem (ou melhor, tentam fazer).

Seria como o jogador de futebol ruim. Certamente você já viu atuar em seu time de futebol algum jogador de muito baixa qualidade e escutou algum amigo ou comentarista falando: “A culpa não é dele, mas do técnico que o coloca para jogar!”. Da mesma forma, a culpa pela empresa não conseguir produzir os seus programas não é do programador ruim, mas da própria empresa que o contratou para uma função da qual não é capaz.

Programadores medianos – gostam de codificar, demonstram entusiasmo, mas normalmente esbarram em limitações técnicas que acabam criando uma falta de iniciativa para resolver problemas por conta própria. Na maioria das vezes, o programador mediano tenta procurar soluções prontas, ou seja, para ele “nada se cria, tudo se copia”. No mundo da programação, em algumas situações isso pode funcionar, principalmente no que diz respeito a funções usadas com frequência por todos (como por exemplo validar um número de CPF). No entanto, cada programa tem sua lógica, que deve ser construída pela criatividade do próprio programador, ao invés de tentar copiá-la de colegas ou achar algo “parecido” na Internet.

Seria como o jogador futebol mediano, que alguns chamam de jogador “protocolar”. Ele faz o básico, recebe a bola, passa a bola ao companheiro mais próximo, marca e colabora com a equipe dentro de suas limitações. Se tentar “copiar” as habilidades do companheiro que é mais capaz tecnicamente, vai acabar até prejudicando o seu desempenho.

Programadores bons – apresentam uma apurada lógica de programação, sendo capazes de construir rapidamente uma carreira bem-sucedida como desenvolvedor de software. Suas habilidades são valorizadas e seus colegas de trabalho o respeitam como profissional. Toda empresa na qual ele trabalha é enriquecida de alguma forma pela sua presença. Para todo tipo de problema proposto, é capaz de apresentar uma solução organizada e eficiente.

Seria como um bom jogador de futebol. Todo clube gostaria de tê-lo em seu time, pois além de desempenhar o básico de sua função, ainda apresenta características extras. É como um meia que serve os atacantes e ainda aparece eventualmente na área para fazer gols.

Programadores brilhantes – verdadeiros Senhores da lógica, possuem o dom de formular soluções rápidas, diferenciadas e tão inesperadas que surpreendem até a empresa em que trabalham. Um programador brilhante é comparado ao que no futebol chamamos de “craque”. Observe a figura para entender melhor. Imagine que os jogadores A, B e C são do mesmo time.

O jogador A está com a bola e o jogador B é o craque. O jogador A passa a bola, que vai em direção ao jogador B. Antes da bola chegar aos pés do jogador B, ele já sabe que irá passá-la ao jogador C, pois o craque tem uma visão periférica do ambiente em que está envolvido, ao contrário dos jogadores ruins ou medianos, que receberiam a bola e ainda precisariam de um tempo para pensar o que fazer, sendo provavelmente desarmados antes de executar qualquer ação.

Mas não é apenas isso. O craque sabe não apenas a qual jogador irá repassar a bola, mas já prevê qual a ação irá realizar depois disso. Na figura, essa ação é representada pela seta pontilhada. Após receber e passar a bola imediatamente ao jogador C, o craque irá correr na direção D, já esperando receber a bola de volta e dar prosseguimento à jogada. Essa é a diferença entre o craque e o bom jogador. O primeiro é capaz de prever um maior número de etapas com antecedência.

Da mesma forma, um programador brilhante, quando recebe um trabalho a executar, em pouquíssimo tempo (muitas vezes em poucos segundos) já consegue definir em sua mente um mapa lógico, ou seja, um abrangente planejamento de como o programa será implementado. Ele consegue definir em instantes uma série de etapas que os programadores menos qualificados levariam dias para planejar.

Alguns podem perguntar: “É possível um programador ruim ou mediano se tornar bom ou brilhante um dia?”. Como em toda profissão, o estudo e a dedicação podem fazer o profissional evoluir. No entanto, existe algo maior que é chamado de dom, aptidão, talento. Por que muitas vezes Romário sequer aparecia para treinar, mas nos jogos fazia gols espetaculares? Ele tinha o dom de fazer gols. Já o Rei Pelé foi um atleta exímio, cuja dedicação era reconhecida por todos, com horas e horas extras de treinamento diário. Porém, será que essa dedicação adiantaria alguma coisa se ele não tivesse o dom de jogar futebol? Nesse caso, certamente ele seria apenas um bom jogador, comum.

Quem almeja fazer sucesso em alguma profissão deve demonstrar suas aptidões e criatividade desde cedo. Muitos programadores iniciantes me perguntam:“Quais os frameworks que você recomenda para programar?”. Ora, se você quer aprender a programar, já quer começar usando frameworks? No meu tempo, abríamos o Bloco de Notas do Windows e já começávamos a programar. Está certo que hoje a quantidade de recursos e ferramentas é maior, porém elas podem acabar prejudicando o real aprendizado e desenvolvimento de sua lógica de programação. Além disso, o uso de um framework pode impactar diretamente na performance de sua aplicação, pois você vai acabar incluindo em seu código uma série de funções que não irá utilizar. Lembre-se que quem utiliza coisas prontas é o programador mediano. Se você quer ser bom ou brilhante, escolha um editor Web (como o Dreamweaver, por exemplo) e vire uma “máquina” de programar, evitando usar funções de terceiros, a não ser que sejam indispensáveis. Com o tempo, monte sua própria biblioteca de funções para reaproveitá-las, pois você saberá como funciona cada uma delas, não será uma “caixa preta” que vai impactar na sua aplicação.

Atualmente, as empresas encontram cada vez mais dificuldades em conseguir bons profissionais para a área de desenvolvimento. Muitas vezes, já precisei de estagiários e funcionários desta área. Quando envio as ofertas para universidades, por exemplo, praticamente ninguém as responde. Já estão todos empregados ou estagiando. Outros não respondem porque não são qualificados o suficiente. Logo, não faltam vagas de estágio ou emprego. Pelo contrário, faltam pessoas qualificadas para preenchê-las. Portanto, se você acha que tem aptidão para essa área, não pense duas vezes e invista em sua formação e capacitação, pois oportunidades certamente não irão faltar para atingir o sucesso profissional.

Python[aula 2]: Tipos de dados e Operações Básicas

Olá Pessoal! Essa é a segunda aula de Introdução ao Python. Nesta aula, veremos os tipos de dados e variáveis possíveis na linguagem e como ela trata cada um deles.

22262546893_3a7acd9cbf_z

Tipos básicos

Em Python, possuímos alguns tipos básicos. Ex:

● Tipos numéricos:
– Inteiro (int);
– Inteiro preciso (long);
– Ponto flutuante (float);
– Número complexo (complex);
Tipo String (str);
Tipo booleano (bool).

Para descobrir explicitamente qual o tipo da variável criada, podemos pedir em linha de comando da seguinte maneira:

type (variável)

No caso dentro do parenteses, você colocar o nome da variável que quer saber o tipo.  Como exemplo, vamos definir 6 variáveis distintas e dar valores diferentes para cada uma (arquivo exAula2.1):

a = 1
b = 1.5
c = 3+2j
d = True
e = “DanielBrandao.com.br”

Agora, vamos descobrir qual o tipo de cada uma dessas variáveis, utilizando a seguinte sintaxe:

print (type(a))
print (type(b)) # E assim por diante…

Operações Básicas

Em Python, é possível se utilizar 3 tipos de operações básicas: Aritmética, Lógica e Relacional.

As operações aritméticas são as básicas matemáticas, como:

– Adição (+)
– Subtração (-)
– Multiplicação (*)
– Divisão(/)
– Divisão inteira (//)
– Potenciação (**)
– Resto (%)

Exemplo: Calculando o resto de uma divisão (arquivo exAula2.2):

resto = (2*5)%2
print (resto)

As  Operações lógicas, temos que lembrar da famosa ‘tabela verdade’. As operações possíveis são:
– E (and);
– Ou (or);
– Não (not).

Exemplo: Tabela da Verdade AND e OR:
●True and True
●True and False
●False or True
●False or False

Já as  Operações relacionais (ou comparativas), muito utilizadas em funções (o que veremos mais adiante) são:
– Igual (==);
– Diferente (!= ou <>);
– Maior que (>);
– Menor que (<);
– Maior ou igual (>=);
– Menor ou igual (<=).

Na próxima lição, veremos como mudar o tipo de uma variável e como podemos receber um valor digitado pelo usuário para uma variável. Até a próxima.

OBS: Todos os arquivos dos exemplos utilizados em cada lição estão disponíveis em meu repositório no Github.