¿Debo ir con Python o Elixir para un chatbot basado en la web?

Hay algunas cosas que debes considerar:

  • Curva de aprendizaje: Python es mucho más fácil de aprender que Elixir. Tengo mucha experiencia con Ruby, pero aún me llevó bastante tiempo aprender Elixir.
  • Velocidad de ejecución: Por supuesto, Erlang VM con archivos BEAM precompilados vencerá a Python. Sin embargo, si no tiene requisitos locos sobre el rendimiento y no tiene millones de usuarios, Python está bien. Suponiendo que sabe cómo escribir código e implementar servidores correctamente, con Python, también puede manejar fácilmente a millones de usuarios. Pero no tan rápido y eficiente como Erlang y Elixir.
  • Tolerancia a fallos: este es un gran impulso para que cualquier otro sistema compita con Erlang VM. Si usa Erlang VM correctamente, puede ejecutar varios procesos de Erlang en varias máquinas como si fueran un sistema unificado. Los procesos se monitorean y se comunican entre sí sin problemas. Pueden detener / iniciar y reemplazar procesos fallidos en muy poco tiempo.
  • Alta disponibilidad: las máquinas Erlang VM matan a cualquier otra en esta competencia. Hay sistemas Erlang / OTP que han estado funcionando durante 30 años con 0, sí, tiempo de inactividad CERO. Los sistemas Erlang se pueden actualizar en vivo sin derribar las máquinas.
  • Conexiones concurrentes por máquina: Erlang VM supera a todo lo demás. WhatApps puede manejar 2 millones de conexiones concurrentes en una sola máquina.

De todos modos, si no construyes un sistema súper pesado y sabes lo que estás haciendo con Python, ve con Python. Es más fácil de aprender, más fácil encontrar ingenieros para contratar.

Los súper ingenieros como yo que pueden escribir código Erlang y Elixir son raros. Si contrata personas de Elixir en el mercado popular, es probable que tenga una pesadilla de mantenimiento más adelante.

¿Su bot de chat estará realmente activo, hablando con decenas de miles de personas simultáneamente, o se usará mucho menos que eso? La respuesta a esa pregunta gobernaría en gran medida dónde me inclinaría. Mi segunda pregunta es ¿necesitará el bot comportarse de una manera extremadamente sofisticada o es más un servidor glorificado con algunas capacidades de análisis sofisticadas?

Estoy muy entusiasmado con Elixir como lenguaje, y la plataforma en la que se basa, Erlang OTP, es realmente fenomenal en la multitarea. Si necesita aprovechar al máximo la CPU de su máquina, Elixir no solo es (IMO) mejor como lenguaje y plataforma principales, sino que se ajusta específicamente a sus necesidades.

Python como lenguaje siempre ha sido muy pobre para aprovechar múltiples núcleos en un host. Hay hacks y soluciones alternativas, pero en el nivel más fundamental, Python simplemente no pretende ser excelente para manejar muchos eventos simultáneos. Ese no es su fuerte. Dicho esto, es cierto que el soporte de la biblioteca de Python es mucho más maduro que el de Elixir. Si quiere decir que su bot de chat es sofisticado en lugar de una especie de servidor elegante, entonces, como observa, las poderosas bibliotecas de aprendizaje automático de Python podrían ser el factor determinante.

Python porque es bastante estándar y es compatible con la mayoría de las plataformas de bot