Go vs python 2017

Bem, essa pergunta, como sempre, tem a resposta "depende".

Vou dizer as razões pelas quais eu usaria o Python sobre Golang e mais tarde irei ao contrário.

Por que e quando eu usaria o Python?

  • Se eu já estou familiarizado e vou usar isso para mais coisas, posso reutilizar meu conhecimento. Golang, a partir de hoje, é realmente ótimo para servidores, mas talvez não para outras coisas.
  • Se eu vou usá-lo para Machine Learning ou Data Science, já que pacotes como Pandas, NumPy e TensorFlow o tornam realmente poderoso.
  • Se eu precisar para meu próprio script.
  • Como uma linguagem de programação de uso geral para aplicativos de desktop, pequenos scripts e similares: uma GUI para uma ferramenta, algo no estilo DevOps que não requer rede ...
  • Se eu precisar chamar o código C / C ++ (meu caso usual é C ++, mas também deve funcionar com C), uma vez que existem bibliotecas como o pybind que tornam essa tarefa a mais fácil possível.

Por que e quando usar o Go?

  • A implantação em outras máquinas pode ser mais fácil. O produto final é um binário independente. Você pode atenuar isso um pouco no Python com o uso do PipEnv e contêineres como o Docker, mas ainda assim, a implantação do Go parece ser mais fácil.
  • Se eu tiver que escrever um servidor altamente concorrente, o Go seria, fora da caixa, provavelmente a minha primeira opção: sua facilidade de uso versus desempenho é quase imbatível. Mas, por outro lado, se você precisar de um servidor simultâneo (mas não tão simultâneo, talvez), o Python3 + assíncrono pode fazer um bom trabalho e talvez você possa usar o Python3 para outras coisas também, já que possui muitos pacotes e é fácil de colar no C / C ++ nativo.
  • Se eu precisar de alto desempenho no processamento e, por algum motivo, não quiser usar o NumPy ou similar, o Go será mais rápido, pois ele pode ser multithread facilmente (ao contrário do Python, que só pode usar o multiprocessamento) e é compilado no código nativo.

Em suma, se eu quiser escrever um servidor escalável, o Go é uma das melhores maneiras. O Python3 + assíncrono também é algo a considerar, especialmente no contexto da reutilização do Python para outras coisas. O Python parece ser melhor e mais estendido para ciência de dados, scripts e pequenas ferramentas com GUIs. Se eu fosse você, pensaria em qual idioma mais utilizarei e seguirei em frente. Outro ponto a ser observado é que o Python é tão fácil de estender a partir do C / C ++ que, quando você precisar de alto desempenho, pode isolar essas áreas no C / C ++ e chamar a partir do Python, fornecendo bons resultados também. Mas o Go será mais concorrente imediatamente.