Utiliza este crédito gratuito para lanzar tus proyectos ahora en Digital Ocean, eres libre de gastarlo cuando quieras en los siguientes 60 días.
Índice del contenido
Python vs Javascript ¿cuál es el mejor en 2024?
Python vs Javascript ¿cuál es el mejor en 2024?
Python y Javascript son dos de los lenguajes más populares entre las personas que están aprendiendo a programar, ambos son legibles, sencillos y con una curva de aprendizaje bastante plana si los comparamos con lenguajes como C, C++, Java o Rust. Ambos con sus fortalezas, debilidades, sus haters y sus defensores.
Usos de Python y Javascript
Usos de Javascript en el navegador
Javascript se usa, principalmente, para desarrollar aplicaciones web. Es el lenguaje por defecto de los navegadores web, pero su versatilidad no se detiene ahí; Node permite utilizarlo también en tu ordenador, para ser usado como un lenguaje del lado del servidor, crear APIs, servidores, incluso al machine learning, aunque no es tan popular como Python en este rubro.
En los últimos años hay rumores de que
deno
, hecho por el creador de Node js, reemplazará a node, su predecesor, pero son solo eso, rumores. Además de Node, Javascript cuenta con muchísimos motores, tales como
Bun
winterJS
que ofrecen un rendimiento superior y más amenidades que Node.
Python para AI y machine learning
Python es un lenguaje multipropósito, te permite crear aplicaciones nativas con interfaz de usuario, programar redes o servidores web, inteligencia artificial, desarrollo de aplicaciones web, prácticamente lo que sea.
Aunque su fuerte en este momento es machine learning, creación de scripting y podriamos decir que un poco de desarrollo web, estando muy por debajo de Javascript en este campo.
Popularidad entre ambos lenguajes
Javascript empezó siendo mucho más popular que Python, probablemente debido al auge de los navegadores web. Sin embargo, en algún punto cercano al 2017, Python ganó relevancia en comparación con Javascript y la tendencia se mantiene hasta finales del 2022.
Python se mantiene más popular que Javascript
Stackoverflow muestra en sus encuestas que, entre los desarrolladores, Python es mucho más popular que Javascript. Sin embargo, Typescript (el super set de Javascript con tipado fuerte que mencioné anteriormente) es ligeramente más popular que Python.
Python y Javascript salarios
Según la última encuesta de Stackoverflow (2023), los profesionales que usan Python son ligeramente mejor pagados que aquellos que usan Javascript. Sin embargo la diferencia no es tan significativa. Typescript también se encuentra por encima de Javascript.
Antigüedad, Python es más antiguo
Python apareció a finales de los 80, mientras que Javascript apareció a principios de los 90, por lo que Python es más antiguo que Javascript.
¿Cuál es más rápido Javascript o Python?
Al ser lenguajes interpretados son mucho más lentos que lenguajes compilados, por lo que quedarán bastante mal parados si los comparas con C, C++, Java, Rust, etc. Sin embargo entre ellos la diferencia es evidente: se puede afirmar que Javascript ejecutado en Node es mucho más rápido que Python con su intérprete original.
El gráfico de abajo compara el tiempo de ejecución promedio de diez repeticiones del problema de las N-Reinas (mientras más bajo mejor), usé los respectivos códigos de javascript y python de Sean P. Gallivan (todos los créditos al autor) y el programa multitime para el cálculo del tiempo promedio.
Se usó Node.js v15.10.0 y Python 3.8.6. El código se ejecutó directamente desde la terminal, sin ningún otro programa ejecutándose. Si quieres saber las especificaciones de la computadora puedes escribirme a mis redes sociales y con gusto te las hago saber.
Aclaro, a pesar de ser bastante obvio, que no es una metodología con el rigor científico adecuado, sin embargo es útil a manera de comparación grosso modo.
Python y Javascript ¿Lenguajes compilados o interpretados?
Para empezar diremos que Python es un lenguaje interpretado. Si no te suena el término, significa que tiene un intérprete que traduce las instrucciones, una por una, a lenguaje máquina, para que se ejecuten al momento. Por lo que no tienes que compilar todo tu código cada vez que quieras ejecutarlo, como sí lo harías con C++, Java, Rust, etc.
Javascript nació como un lenguaje interpretado, sin embargo los motores modernos han logrado que se convierta en un lenguaje compilado JIT (“Just in Time”). Prácticamente todos los navegadores hacen compilado JIT de Javascript, exceptuando, como siempre, IE8. En mi opinión su diseño no es más elegante que el de Python, esto se nota por ejemplo en el manejo de fechas de Javascript, que por cierto detesto.
Si quieres aprender como funciona el motor de Javascript a un nivel más profundo, te dejo un enlace a una serie de videos en youtube donde se trata el tema más detalladamente.
Observa este esquema súper simplificado que compara los lenguajes compilados e interpretados.
En este esquema me refiero a Javascript al momento de su creación, como lenguaje interpretado, no a la compilación JIT de la que te hablaba.
Si bien no son los lenguajes con mayor rendimiento, su flexibilidad es ideal para iterar una y otra vez en una startup o proyecto nuevo
Soporte, Javascript y Python
Soporte para Javascript
Javascript se encuentra en todos los navegadores de manera nativa, basta con que abras la terminal de tu navegador preferido para que empieces a utilizarlo. Es el lenguaje preferido para manipular el DOM .
Abajo puedes ver la terminal de javascript del navegador web Firefox
Además puedes usar node para ejecutarlo en tu computadora.
Soporte para Python
Python no se encuentra en los navegadores, sin embargo está instalado en la mayoría de los sistemas GNU/Linux de manera predeterminada, si usas una distribución de GNU/Linux y abres la terminal de tu sistema operativo y ejecutas el comando Python lo más probable es que ya se encuent` instalado.
Comparación de tipado entre Python y Javascript
Respecto al tipado, es un tema muy complejo en el que no he encontrado un consenso claro y uniforme sobre que se considera tipado fuerte y que tipado débil. Sin embargo los expertos suelen decir que los lenguajes fuertemente tipados no permiten cambios en los tipos de datos una vez declarados, mientras que los débilmente tipados sí.
Te dejo un par de ejemplos para que los consideres
Tipado en Javascript
Primero veamos que sucede si intentamos cambiar un tipo en Javascript.
//javascript
let numeroEnTexto = "1"
numeroEnTexto = 1 // no pasa nada
const numero = 1
numero = "2"
Uncaught TypeError: Assignment to constant variable.
Además de const, Javascript permite declarar una variable, let o var. Si en lugar de usar const hubieramos usado var o let el error no se presentaría.
Pero ahora mira lo que sucede si sumamos un entero y una cadena de texto.
//javascript
console.log(1 + "1")
"11"
¡No pasa nada! El intérprete de Javascript los suma sin problema alguno, incluso aunque uno es de tipo string y el otro un entero. Si eres de los que prefieren usar tipado fuerte con javascript, ya sea porque traes un background de C++, Java u otro lenguaje furtemente tipado o simplemente prefieres las ventajas de un tipado fuerte, dale una mirada a lo que Typescript y su compilador tienen para ofrecer.
// Este es código Typescript
// Observa como cada tipo de variable requiere su correspondiente tipo de dato
let idUser: number | string;
const months: Array<string> = ["Enero", "Febrero"]
Tipado en Python
Python no requiere, de manera forzosa, que especifiques el tipo de variable. Mira lo que sucede si intentamos cambiar el tipo de una variable en Python.
# Python
numero = "1"
numero = 1
numero = [1]
numero = {1:1} # no hubo error en ningún caso
Y ¿qué pasa si ahora intentamos sumar dos variables de tipo distintas como hicimos en Javascript?
# Python
print(1 + "1")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Como puedes apreciar, Python no permite realizar transformaciones implícitas de un tipo de variable a otro.
def titleToNumber(columnTitle: str) -> int:
# ...
Tipado opcional en Python
¿Y el Typescript para Python? Pues ya va incluido, Python incorpora tipado opcional, a partir de su versión 3.5, el tipado puede ser usado por algunos linters para mostrarte errores en el código, sin embargo el intérprete no obliga a su uso. Revisa la documentación oficial para aprender a usarlos.
Diferencias de sintaxis entre Python y Javascript
Sintaxis de Javascript
La sintaxis de Javascript es bastante parecida a la de C++ y otros lenguajes de programación clásicos. La separación entre partes del código se hace por medio de llaves y puntos y comas. Javascript usa this como referencia al propio objeto y no se requieren al declarar métodos en los objetos.
// true con minúsculas
if(true){"resultado"}
console.log("El punto y coma al final es opcional");
class MiClase {
constructor(propiedad) {
this.propiedad = propiedad;
}
}
function(argumento, argumento_por_defecto="predeterminado"){
let myFirstArgument = arguments[0]
return myFirstArgument
}
try {
functionThatCausesError();
} catch(error){
console.error(error);
}
Sintaxis de Python
Por otro lado, Python favorece la legibilidad, el uso de caracteres especiales se encuentra reducido al mínimo y la separación para las partes del código se hace por medio de indentaciones y saltos de linea. Python usa self para referirse al propio objecto y requiere que se pase como primer argumento a cada método del objeto.
# True con mayusculas
if True:
return "resultado"
print("También puedes incluir punto y coma al final, pero la convención es no hacerlo")
class MiClase:
def __init__(self, propiedad):
self.propiedad = propiedad
def funcion(argumento_por_defecto = "predeterminado", *args, **kwargs):
mi_lista_de_argumentos = args
mi_diccionario_de_argumentos = kwargs
return mi_list_de_argumentos
try:
do_something()
except:
print("An exception occurred")
Las diferencias de sintaxis son mucho más extensas que las que aquí expongo, cada uno tiene sus propias funciones, sus propias librerías integradas y una sintaxis diferente, pero espero que al menos hayas apreciado las pequeñas diferencias entre ambos.
Librerías estándar, comparación entre Python y Javascript
Python se caracteriza por ser un lenguaje con baterías incluidas, es decir, ya incluye por defecto muchísimas funcionalidades que solo tienes que importar para empezar a usarlas, ¿quieres trabajar con redes? importa el modulo socket, ¿quieres crear un GUI?, usa tkinter, ¿manipular audio?, usa audioop. Python incluye librerías para la mayoría de las necesidades comunes. Incluso incluye numpy, una poderosa librería para el análisis númerico.
Por otro lado, Javascript incluye solo lo necesario, aunque tiene una gigantesca comunidad de usuarios creando paquetes y poniéndolos a disposición de cualquiera que quiera tomarlos.
Capacidad de asincronismo Python vs Javascript
Asincronismo en Javascript
Las funciones asíncronas de javascript se ejecutan en un hilo separado y regresan al principal cuando se completan.
async function(){
await downloadData()}
Asincronismo en Python
En Python las funciones asíncronas corren en un hilo sencillo y únicamente cambian a otra corrutina cuando una operación asíncrona es encontrada.
A partir de Python 3.5 se incorpora asincronismo mediante la misma sintaxis de async y await
from tortoise import Tortoise, run_async
from database.connectToDatabase import connectToDatabase
async def main():
await connectToDatabase()
await Tortoise.generate_schemas()
if __name__ == '__main__':
run_async(main())
Frameworks para desarrollo web de Python y Javascript
Javascript y Python tienen bastantes frameworks para elegir cuando se trata de desarrollo web.
Frameworks web para Javascript
Existen muchísimos frameworks de Javascript para desarrollo web tanto para el backend como para el frontend; para el backend
- express
- nustjs
- meteor
- sails
- vue
- react
- svelte
- angular
- adonisjs
Incluso aún a pesar de la abundancia de opciones que hay salen nuevos frameworks de Javascript más frecuentemente que para Python.
Frameworks web para Python
Debido a que Python no se encuentra instalado en los navegadores, el desarrollo web actual usando Python se centra principalmente en la parte del Backend, donde tenemos soluciones bastante maduras como Django, con sus ventajas y desventajas , o Flask y algunas más modernas como el rapidísimo framework de desarrollo web FastAPI , del que ya escribí una entrada anteriormente.
- Django
- Fastapi
- Flask
- Pyramid
Puedes escribir código HTML y CSS usando Python para el frontend, pero nunca tendrás la misma versatilidad que ejecutar código javascript directamente en el navegador del usuario.
Actualización: Me enteré de una librería que está ganando popularidad, llamada htmx, que te permite generar aplicaciones modernas devolviendo html en lugar de respuestas JSON. Entra en mi entrada sobre django y htmx para conocer más.
Paquetes con pypi y NPM
Tanto la comunidad de Python, como la de Javascript, tienen librerías disponibles que solucionan la mayoría de los problemas más comunes a la hora de programar.
Paquetes en Javascript
Javascript usa npm para el manejo de paquetes y hay bastantes de donde elegir. En junio del 2019 npm superó el millón de paquetes publicados . ¡Muchísima variedad para elegir! Aunque también te encuentras cosas como esta:
Paquetes en Python
Pypi es la plataforma principal encargada del manejo de paquetes en Python. En la fecha en la que se actualizó este artículo Pypi tiene 348,000 paquetes publicados , ¡solo una quinta parte de la cantidad que tiene Javascript! Y como son menos paquetes podemos esperar paquetes más relevantes ¿no? A ver…
¿Cuál es mejor Python o Javascript?
Espero que esta pequeña comparación te haya mostrado un poco las diferencias que existen entre ambos lenguajes y si estás pensando en centrarte en alguno de ellos tengas más información sobre la mesa para tomar la decisión correcta.
Si te urge empezar a desarrollar sitios web ya, sin complicarte, yo me iría por Javascript.
Si quieres dedicarte al machine learning y análisis de datos, o quieres una solución más integral en los sitios web y más flexibilidad, yo me iría por Python.
De cualquiera manera no tienes porque reducirlo todo a una dicotomía, si tienes tiempo para dedicarle a ambos puedes hacerlo, muchos desarrolladores web dominan múltiples lenguajes y los usan indistintamente de acuerdo a sus necesidades.