¿El fin de la era de Python? Cómo la IA me ayudó a reescribir en Go una herramienta de 10 años

Reescribir OmniDB de Python a Go como caso de estudio — por qué en la era de la IA ya no tiene sentido sacrificar el rendimiento en tiempo de ejecución en el altar de la comodidad al programar.

¿Es solo mi impresión, o últimamente compensa recurrir a un lenguaje compilado incluso donde antes se habría elegido Python de forma automática?

OmniDB fue en su día una popular herramienta GUI para PostgreSQL — construida sobre Python/Django, con un frontend de escritorio que empezó en Electron y más tarde se sustituyó por el más ligero NW.js. El proyecto se fue quedando estancado poco a poco. No porque la idea fuera mala, sino porque mantener un stack monolítico de Python se volvió insostenible. Este artículo no es un tutorial de reescritura. Es una reflexión sobre por qué mueren proyectos así — y cómo un stack moderno, junto con la IA, está cambiando las reglas del juego.

Tesis: Reescribir software antiguo antes se consideraba casi un suicidio («nunca reescribas desde cero»). Hoy, gracias a los cambios en la tecnología y a la IA, una reescritura se convierte cada vez más en una decisión racional — y no soy el único con esta observación, como muestran varios ejemplos conocidos de grandes empresas.


1. El viejo dogma: el tiempo del desarrollador cuesta más que la CPU

«El hardware es barato, el tiempo del desarrollador es caro.»

Este principio ganó la guerra de lenguajes de los últimos quince años. Desarrollar en Python era rápido, la sintaxis amigable, el ecosistema de librerías enorme. ¿Que la aplicación consume 150 MB de RAM y tarda unos segundos en arrancar? No importa — esperamos, compramos una máquina más potente. Prácticamente todos los lenguajes populares de esa época (Python, JavaScript/TypeScript, Java) son interpretados o corren sobre una máquina virtual. A nadie le importaba mucho la eficiencia en tiempo de ejecución, porque «el hardware ya lo compensará».

2. La IA cambia la ecuación

Hoy la IA se encarga del código repetitivo, la refactorización e incluso la conversión de lógica entre lenguajes. El tiempo dedicado a escribir código tipado y compilado ya no es automáticamente varias veces mayor que en Python — la IA puede generarlo hoy en cuestión de segundos.

La consecuencia: si el coste de desarrollar baja, vuelven a primer plano la eficiencia en tiempo de ejecución, la velocidad de respuesta y la huella de memoria — precisamente lo que durante los últimos quince años se sacrificó de buen grado por la comodidad de programar.

Una pregunta para reflexionar: ¿todavía tiene sentido pagar con el rendimiento de la aplicación por «programar cómodamente», cuando gran parte de ese código ya lo escribe un LLM de todos modos?

3. La ilusión de la comodidad, o el infierno del despliegue en Python

Python es cómodo para escribir — pero llevarlo hasta el usuario es otra historia:

Go resuelve todo esto de otra manera:

La paradoja: desarrollar en Go acaba siendo más simple y sostenible, porque desaparece todo el lastre administrativo alrededor del despliegue. Lo que la comodidad de Python parece ahorrar al principio, vuelve como una deuda en cada release.

4. No soy el único — grandes empresas hacen reescrituras parecidas

Esto no es solo la sensación de un desarrollador reviviendo un proyecto paralelo de diez años. En la misma dirección — alejándose de un runtime cómodo pero lento hacia uno más rápido y predecible — se han movido en los últimos años muchas grandes empresas:

El denominador común de los tres primeros casos: nunca se trató de moda ni de «reescribámoslo porque Go/Rust está de moda». Siempre se trató de un límite concreto y medible — latencia, memoria, previsibilidad — que no se podía eliminar en el lenguaje original sin un cambio de arquitectura de fondo. Cloudflare va un paso más allá y muestra en acción la propia tesis de este artículo: lo que antes habría requerido un equipo durante meses, aquí lo logró una sola persona en una semana, a un coste muy por debajo del salario mensual de un solo desarrollador.

5. Caso de estudio: OmniDB en cifras

Comparación directa entre el antiguo OmniDB 3.2 (Python/Django + NW.js) y la nueva versión OmniDB 4.2 (Go/Wails), medida en la misma máquina:

MétricaOmniDB 3.2 antiguo (Python/NW.js)OmniDB 4.2 nuevo (Go/Wails)Diferencia
Tamaño de .app478 MB73 MB−405 MB (−85 %)
Archivo de descarga201 MB28 MB−173 MB (−86 %)
Arranque del servidor backend (hasta «listening»)0,32 s0,05 s~6 x más rápido
RSS del backend en reposo104 MB19 MB~5 x menos

Una nota honesta sobre la metodología: no incluyo una cifra para el arranque de toda la aplicación GUI (NW.js/Chromium frente a Wails/webview del sistema) — la diferencia probablemente sea aún mayor, pero sin una medición limpia solo estaría adivinando. Tampoco se puede comparar de forma justa la RAM de la aplicación completa: NW.js lleva todo su Chromium consigo, mientras que Wails usa el WebKit del sistema, cuya memoria se contabiliza aparte bajo procesos com.apple. WebKit.* en macOS. Por eso, lo anterior solo compara el servidor backend — una afirmación más modesta, pero verificable.

Qué se perdió en la reescritura: el sistema de plugins (plugins en Python) y el depurador paso a paso de PL/pgSQL, que necesitaba su propia extensión en C en shared_preload_libraries — algo que hoy ningún Postgres gestionado permitiría cargar de todos modos. Junto con ellos desaparecieron también tres integraciones de plugins para proyectos upstream ya muertos hace tiempo (pglogical, Postgres-BDR, Postgres-XL). No toda reescritura es indolora, y no tiene sentido ocultarlo.

6. Python en la era de la IA — rendimiento real frente a rendimiento aparente

Python está viviendo un boom gracias a la IA/ML, pero hay una trampa: en el entrenamiento e inferencia de modelos funciona sobre todo como «pegamento» (glue language) — los cálculos reales corren por debajo en C++/CUDA/PyTorch. Pero para herramientas de escritorio, utilidades CLI y clientes de bases de datos, Python trae todo el peso de su runtime — arranque lento, mayor huella de memoria — sin que el usuario se beneficie realmente de su flexibilidad. Solo la paga.

También conviene distinguir un segundo papel en el que Python aparece cada vez más en la era de la IA: como lenguaje de ejecución para los propios agentes de IA. Los intérpretes de código, los entornos sandbox para procesar archivos o los frameworks de agentes casi siempre recurren a Python — tiene una librería rica para trabajar con datos (pandas, openpyxl, Pillow), es el lenguaje sobre el que los LLM tienen más datos de entrenamiento y, sobre todo: un script que un agente genera y ejecuta una sola vez no se distribuye a ninguna parte. Vive unos segundos dentro de un sandbox aislado y luego desaparece.

Esa es una situación fundamentalmente distinta de una aplicación que cientos de personas instalan en su ordenador y abren cada día. A nadie le preocupa la velocidad de arranque de un script de sandbox de un solo uso — la velocidad de arranque de una aplicación de escritorio que se abre diez veces al día, sí. Python como «pegamento» para agentes y Python como runtime para una aplicación de escritorio distribuida son dos tareas distintas con requisitos distintos, y es un error meterlas en el mismo saco solo porque comparten lenguaje.

7. Conclusión: lecciones para futuros proyectos

  1. Reescribir un proyecto en un lenguaje más eficiente ya no es un capricho elitista — la IA ha abaratado significativamente tanto la conversión como el mantenimiento continuo, y también lo hacen grandes empresas como Discord, Dropbox, Uber o Cloudflare, cuando chocan con un límite de rendimiento concreto o quieren aprovechar las nuevas posibilidades del desarrollo asistido por IA.
  2. Python se merece su lugar donde domina — ciencia de datos, prototipado con IA, scripting agéntico puntual.
  3. Para herramientas distribuidas y aplicaciones cliente, sin embargo, hoy tiene sentido volver a lenguajes compilados y autosuficientes — Go, Rust, Zig.
  4. No tengas miedo de revivir buenas herramientas antiguas — un stack moderno más IA puede insuflarles una segunda vida con un coste de mantenimiento mínimo.

El nuevo OmniDB 4.2 se puede descargar gratis en 🔗 www.omnidb.net.


¿Tienes una experiencia parecida reescribiendo una herramienta antigua en otro lenguaje? Cuéntamela.