A internet está cheia de grandes códigos. Eles formam o alicerce sobre o qual várias infra-estruturas são construídas. Mesmo a própria plataforma sobre a qual você está lendo isto é construída com uma dedicação à criação de grandes códigos. Enquanto o utilizador médio não vai tomar nota disto, os bons programadores, por outro lado, estão sempre a procurar melhorar as suas aplicações (e consequentemente, a sua codificação).
A base sobre a qual o grande código é escrito assenta na habilidade do programador e na sua linguagem de escolha. Isto inevitavelmente leva a algum choque épico entre desenvolvedores não apenas no nível de habilidade, mas principalmente em sua linguagem preferida. Este é o resultado que você provavelmente obterá quando colocar duas grandes linguagens de programação como Golang(Go) e Python lado a lado.
No entanto, vamos recuar um pouco e avaliar ambas as linguagens a partir do ponto de mérito e funcionalidade. Vamos tirar as preferências e preferências pessoais. Depois nivelemos o campo de jogo, no sentido da perícia. Agora, tudo o que nos resta são duas grandes escolhas: Ir contra Python. A questão agora se torna, o que é certo para você?
- Um conto de Python
- Fala de Golang(Go)
- Golang vs Python performance
- Binary search
- Bubble sort
- Ler do ficheiro
- HTTP Tratamento de pedidos
- Python vs Golang web frameworks
- Gin
- Echo
- Go kit
- Empresas usando Golang
- PayPal Taps Golang para Modernizar e Escala
- American Express usa Golang para pagamentos & Recompensas
- Salesforce abandonou Python para Golang em Einstein Analytics
- Stream – Porque mudámos de Python para Go
- Pydio reescreveu o compartilhamento de arquivos em Golang
- Repustate migrou API de Python (primeiro Django depois Falcon) para Go
- Quem escolher?
- Golang é rápido de aprender, desenvolver e correr
Um conto de Python
Ask alguns desenvolvedores e você vai ouvir que não havia nada antes de Python e não haverá nada depois dele. Ao longo dos anos, ele tem conseguido ganhar um culto como o de seguir porque é uma linguagem de programação muito boa. A internet está cheia de maravilhas criadas usando Python.
Python é antiga, em termos de anos de programação. Foi conceptualizada pela primeira vez em 1991. E com a idade vêm certas vantagens. Tem um largo seguimento que se traduz em ser estável e bem documentado. Na maioria dos casos, você encontrará bibliotecas para quase tudo e amostras de código para quase tudo que você possa pensar. O que isto significa para devs e empresas é que a escolha de usar Python vem com ele uma riqueza de experiência e codificação apenas esperando para ser acessado.
Existem muitos projetos de código aberto que usam Python como base, então na maioria dos casos, você não está começando do zero. Ele está bem integrado em aplicativos empresariais e pode ser usado em linguagem de máquina e aplicativos de IA. Mas tem os seus pontos negativos. Para um, não é ideal para tarefas de memória intensiva, um pouco no lado lento para execuções e inadequado para o desenvolvimento de aplicações móveis.
Fala de Golang(Go)
Desenvolvido no Google em 2009. Go foi uma solução para um problema. Seu objetivo era criar uma linguagem que tirasse toda a bagagem e os excessos encontrados em linguagens como C++. Isto dá-lhe um impulso de desempenho e velocidade que torna o trabalho com ele um deleite. Além disso, a maioria dos desenvolvedores que pegam Go pela primeira vez não vão ficar à deriva, pois os elementos familiares e a facilidade de uso viriam como uma agradável surpresa.
Isso não quer dizer que a linguagem seja perfeita em todos os casos. Embora leve velocidade e elegância para o próximo nível, deixa, no entanto, algumas coisas a serem desejadas. Para um, não tem uma biblioteca extensa, nem suporte para herança. Além disso, não há uma biblioteca GUI ou suporte a programação orientada a objetos. O que ela tem é uma thread leve (Goroutines), biblioteca padrão inteligente, forte segurança integrada e é fácil de codificar com o mínimo de sintaxe.
Golang vs Python performance
Nós podemos falar infinitamente sobre os prós e contras de Golang ou Python, mas quando é até o fio, o que todos nós procuramos para ele como eles se comportam. Então fizemos alguns testes em nosso equipamento de teste rodando um CPU Intel® Core™ i7-9700K @ 3.60GHz × 8 núcleos. E o código usado está disponível aqui.
Binary search
Criamos listas de ints (de 1 a 100000) e depois usamos a pesquisa binária para encontrar sempre o mesmo número 729. Os resultados são:
Língua | Velocidade |
---|---|
Vai | 20,8 ns/op |
Python | 2442.13377 ns/op |
Bubble sort
Novamente geramos uma lista de inteiros (desta vez aleatórios, com 10000 elementos) e ordenamos aqueles usando algoritmos de ordenação de bolhas.
Língua | Velocidade |
---|---|
Vai | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Ler do ficheiro
Um simples teste de leitura do ficheiro de texto “lorem ipsum”.
Linguagem | Velocidade |
---|---|
Vai | 5305 ns/op |
Python | 58359 ns/op |
HTTP Tratamento de pedidos
Fazer um servidor HTTP é realmente fácil, mas nós fizemos um esforço e fizemos o análogo em Python. Verificamos quanto tempo levaria para responder com uma simples mensagem “olá mundo!”.
Linguagem | Velocidade |
---|---|
Vai | 0,070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang web frameworks
Uma das maiores vantagens de usar Python é a vasta colecção de bibliotecas e frameworks que estão disponíveis. Django e Flask são dois dos frameworks web Python mais populares que permitem construir uma aplicação web ou API no tempo mais rápido possível.
Golang não tem um único framework dominante como Django para Python ou Laravel para PHP e a comunidade Go é, de certa forma, avesso a frameworks. Os resultados da pesquisa Go 2018 mostram que o desenvolvimento web Golang é o mais prevalecente com 65%, e aumentou sua dominância à medida que os entrevistados da pesquisa de área primária trabalham em (acima dos 61% do ano passado): o desenvolvimento web tem sido o domínio mais comum para o desenvolvimento Go desde 2016.
Aqui estão os frameworks web Golang mais populares:
Gin
Gin é um framework web Golang que é conhecido por desenvolver APIs de alto desempenho. É também um dos frameworks mais simples de aprender. Leva cerca de 10 minutos para se acostumar a ele. Se você precisa de desempenho e boa produtividade, você vai adorar Gin.
Faatures
- Rápido desempenho: Roteamento baseado em árvore Radix, impressão de pequenos pés de memória
- Suporte de middleware: Uma solicitação HTTP de entrada pode ser tratada por uma cadeia de middlewares e a ação final
- Grupamento de roteamento: Organize melhor as suas rotas
- Gestão de erros: Gin fornece uma maneira conveniente de coletar todos os erros ocorridos durante uma requisição HTTP
- Rendering built-in: Gin fornece uma API fácil de usar para renderização JSON, XML e HTML
- Extensível: Criar um novo middleware é tão fácil, basta verificar os códigos de exemplo
Echo
Echo é um framework web de alto desempenho, extensível e minimalista Go, fornecendo um roteador HTTP otimizado, APIs de grupo, vinculação de dados para JSON e XML, suporte a HTTP/2, e muito mais.
Embora Gin seja um pouco mais popular (36k estrelas GitHub), muitos desenvolvedores escolhem o Echo (16k estrelas GitHub) porque ele tem melhor documentação e é um framework um pouco mais rápido.
Faatures
- Roteador HTTP otimizado que prioriza inteligentemente rotas
- API RESTful Robust e escalável, facilmente organizado em grupos
- C framework de middleware extensível, muitos middlewares embutidos, middleware podem ser definidos em nível de raiz, grupo ou rota
- Encadernação de dados para JSON, XML e payload de formulários
- Funções Handy para enviar uma variedade de respostas HTTP, incluindo JSON, XML, HTML, File, Attachment, Inline, Stream ou Blob
- Controlo de erros HTTP central e facilmente extensível API
Go kit
Go kit é um kit de ferramentas de programação para construir microserviços (ou elegantes monolitos). O Go Kit é uma estrutura com opiniões. Resolve problemas comuns em sistemas distribuídos e arquitetura de aplicações para que você possa se concentrar em fornecer valor ao negócio.
Faatures
- Operar em um SOA heterogêneo – esperar interagir com a maioria dos não-Go-serviços do kit
- RPC como padrão primário de mensagens
- Serialização e transporte plugáveis – não apenas JSON sobre HTTP
- Operar dentro das infra-estruturas existentes – sem mandatos para ferramentas ou tecnologias específicas
Empresas usando Golang
Golang é amplamente adotado pelas principais empresas. Há mais de um milhão de desenvolvedores usando Go no mundo todo – abrangendo bancos e comércio, jogos e mídia, tecnologia e outras indústrias, em empresas tão diversas como PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox e, claro, Google.
Aqui estão alguns exemplos de estudos de caso:
PayPal Taps Golang para Modernizar e Escala
O valor de Go em produzir código limpo e eficiente que facilmente escalonável como escalas de implantação de software tornou a linguagem um forte ajuste para suportar os objetivos do PayPal.
Ver estudo de caso →
American Express usa Golang para pagamentos & Recompensas
Go fornece ao American Express a velocidade e a escalabilidade de que ele precisa para suas redes de pagamento e recompensas.
>
Ver estudo de caso →
Salesforce abandonou Python para Golang em Einstein Analytics
Salesforce explica porque a linguagem de programação Go do Google é mais adequada que Python e C para Einstein Analytics.
Veja o estudo de caso →
Stream – Porque mudámos de Python para Go
Temos uma pequena equipa de desenvolvimento em Stream powering feeds e chat para mais de 500 milhões de utilizadores finais. A combinação de Go de um grande ecossistema, fácil onboarding para novos desenvolvedores, desempenho rápido, suporte sólido para concorrência e um ambiente de programação produtivo fazem dele uma ótima escolha.
Veja o estudo de caso →
Pydio reescreveu o compartilhamento de arquivos em Golang
Pydio, solução de armazenamento em nuvem de antes do Dropbox, transformou uma plataforma de Sync-and-Share de conhecimento completo e o aplicativo preso à sua pilha técnica inicial: LAMP, como em Linux/Apache/MySQL/PHP. Leia um artigo sobre as motivações da reescrita inteiramente em Golang, a nova arquitetura e as escolhas por trás dela.
Veja o estudo de caso →
Repustate migrou API de Python (primeiro Django depois Falcon) para Go
A migração reduziu o número de instâncias EC2 necessárias em 85% e o tempo médio de resposta de uma chamada API de 100ms para 10ms. Devido à semelhança entre Python e Go, eles foram capazes de rapidamente reposicionar nossos testes unitários escritos no nariz para se adequar à estrutura que Go requer com apenas alguns simples scripts sed.
Veja o estudo de caso →
Quem escolher?
Embora Python tenha permanecido como favorito da comunidade, mantendo o lugar #2 no primeiro trimestre de 2019 para a linguagem de programação mais rápida no GitHub em termos de pedidos de pull (+17%), Golang não está tão atrasado e está no ponto #4 (+8%). A escolha entre Golang vs Python se torna ainda mais borrada. Independentemente disso, há algumas coisas a serem consideradas ao selecionar o que pode ser certo para você.
-
Scalabilidade: Golang foi criado com a escalabilidade em mente. Ele vem com a concorrência embutida para lidar com várias tarefas ao mesmo tempo. Python usa concurrency mas não é inbuilt; ele implementa o paralelismo através de threads. Isto significa que se você vai trabalhar com grandes conjuntos de dados, então Golang parece ser uma escolha mais adequada.
-
Performance: Python não é conhecido por ser amigável à memória ou CPU, mas com seu enorme número de bibliotecas, Python executa eficientemente para tarefas básicas de desenvolvimento. Golang vem com características embutidas e é mais adequado para arquiteturas de software de microserviços.
-
Aplicações: Python brilha quando usado para escrever códigos para inteligência artificial, análise de dados, aprendizagem profunda e desenvolvimento web. Enquanto Golang tem sido usado para programação de sistemas, ele é adorado por desenvolvedores que o usam para computação em nuvem e aplicações de computação em cluster.
-
Comunidade &Biblioteca: Como mencionado anteriormente, a idade do Python dá-lhe certas vantagens. Uma das quais é o número de bibliotecas que possui e a grande comunidade que a suporta. Golang, por outro lado, ainda é uma linguagem em crescimento e não tem o número de bibliotecas e a comunidade de suporte que o Python comanda. No entanto, ainda não devemos contar Go out. Sua taxa de crescimento e adoção é incrível e está se expandindo a cada dia.
-
Execução: Se velocidade é o nome do jogo, então Golang ganha por uma milha.
Após levar tudo isso em conta, seu caso de uso será o fator determinante em qual linguagem adotar. Dado um cenário em que você está montando uma equipe de desenvolvimento para criar microserviços, Golang seria a escolha mais razoável aqui, pois é rápido, fácil de codificar e pode escalar excelentemente bem. Python, por outro lado, é mais voltado para IA, ML e análise de dados.
Então, ir de cabeça em cabeça, Go sairia por cima na maioria dos casos e é considerado uma alternativa válida ao uso do Python. Os desenvolvedores precisam escolher uma linguagem de programação considerando sua natureza e tamanho do projeto de desenvolvimento, bem como o conjunto de habilidades dos envolvidos.
A boa notícia, no entanto, é que independentemente da escolha, ambas as linguagens estão sempre evoluindo. Enquanto Golang pode parecer uma escolha óbvia na maioria dos casos, a comunidade Python não está apenas sentada e sem fazer nada. Ambas as linguagens estão se expandindo e crescendo. Isto significa que veremos mais funcionalidade e melhorias no futuro.