Elegir un lenguaje: Python, JavaScript o Go
Por qué existen tres lenguajes, en qué es genuinamente bueno cada uno, y el hecho honesto de que tu primer lenguaje importa mucho menos de lo que se dice.
Python, JavaScript y Go pueden sumar dos números, recorrer una lista y definir una función. Entonces, ¿por qué existen tres lenguajes, y por qué discuten sobre ellos los programadores que trabajan? Porque un lenguaje no es solo una forma de escribir instrucciones. También es una comunidad, un conjunto de bibliotecas y un conjunto de prioridades sobre qué debería ser fácil y qué debería ser difícil.
Python es el lenguaje de los datos y de los scripts. Archivos, hojas de cálculo, estadística, aprendizaje automático, pequeñas herramientas que pegan otros programas entre sí. Su sintaxis no estorba, así que lo que lees en la pantalla es la forma del problema. El precio a pagar es la velocidad: Python suele ejecutarse más despacio que los otros dos, y para un script que se ejecuta una vez por noche eso no le importa a nadie.
import csv
with open("sales.csv") as f:
total = sum(float(row["price"]) for row in csv.DictReader(f))
print(total)Python: leer una hoja de cálculo, sumar una columna, imprimir la respuesta. Nueve líneas.JavaScript es el lenguaje del navegador, y eso no es una preferencia, es un hecho del mundo: es el único lenguaje que ejecutan todos los navegadores. Si tu programa tiene que reaccionar a un clic y cambiar lo que ve una persona, JavaScript ya está ahí, en todos los dispositivos, sin nada que instalar. También se ejecuta en servidores, así que el mismo lenguaje puede cubrir los dos extremos de un sitio web.
document.querySelector("#total").textContent = "42"
button.addEventListener("click", () => {
count = count + 1;
});JavaScript: cambiar lo que hay en la página y luego reaccionar cuando se hace clic en un botón.Go es el lenguaje de los servicios que deben ser rápidos y simples. Lo construyeron personas que estaban hartas de programas de servidor grandes, lentos y complicados. Se compila en un único archivo que puedes copiar a una máquina y ejecutar, arranca en milisegundos, y su comprobador de tipos atrapa categorías enteras de errores antes de que el programa llegue a empezar. El precio es la verbosidad: escribes más palabras para decir lo mismo.
http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("ok"))
})
http.ListenAndServe(":8080", nil)Go: responder a una comprobación de salud y luego servir en un puerto. Dos sentencias y un servicio funcionando.Aquí viene la parte honesta. Los conceptos que viste en las tres lecciones anteriores no pertenecen a ningún lenguaje. Valores y tipos, condiciones, bucles, funciones, alcance: todos los lenguajes que conozcas alguna vez los tienen, y funcionan igual. Solo cambia la forma de escribirlos.
same ideas, three spellings
value + type name = "Ada" const name = "Ada" var name string
condition if age >= 18: if (age >= 18) { if age >= 18 {
loop over list for s in scores: for (const s of ...) for _, s := range ...
function def f(a, b): function f(a, b) { func f(a, b) float64
map {"soup": 2.50} { soup: 2.50 } map[string]float64{...}Una fila por concepto. Cuatro columnas de formas de escribirlo, una columna de significado.El primer factor de decisión real es la legibilidad, y significa algo concreto: ¿con cuánta rapidez puede entender lo que hace este código una persona que no lo escribió? El código se lee muchísimo más a menudo de lo que se escribe, y lo leen personas cansadas y con prisa. Un lenguaje que hace corto y obvio el caso habitual se gana su sitio. Esta es la razón honesta de que Python sea popular para enseñar y para trabajar con datos, y es el motivo de que Go se niegue a dejarte escribir lo mismo de seis maneras distintas.
Así que aquí está la conclusión, dicha sin rodeos. El primer lenguaje que aprendes importa mucho menos de lo que la gente te cuenta. Lo que estás aprendiendo de verdad ahora mismo es la forma de las ideas: que un tipo es un conjunto, que una condición es un booleano, que un bucle tiene un coste, que una función es una caja con una sola salida. Eso se transfiere por completo y para siempre. La sintaxis la olvidarás y la volverás a aprender en un fin de semana, varias veces, durante el resto de tu vida laboral. Elige cualquiera de los tres, termina con él un proyecto pequeño de verdad, y serás capaz de leer los otros dos.
Práctica
Estás construyendo una página en la que hacer clic en un botón cambia un número en pantalla, y tiene que funcionar en un teléfono sin nada instalado. ¿Qué lenguaje elige la situación por ti?
Pistas
- Pregúntate dónde tiene que ejecutarse el código, no qué lenguaje queda más bonito en un tutorial.
- Un navegador ya contiene exactamente uno de estos tres, y no es el que se instala.
Relaciona cada situación con el lenguaje que mejor le encaja, y con la razón honesta.
Pistas
- Haz coincidir la forma del problema con la forma de la herramienta: archivos y números, una página, o un servicio bajo carga.
- Ninguna de estas fortalezas es absoluta. Un lenguaje es bueno en algo porque las bibliotecas que lo rodean son buenas en eso.
Te unes a un equipo pequeño que debe entregar un producto funcionando en dos meses. Ordena las consideraciones en el orden en que un buen ingeniero las sopesa de verdad.
- 1Comprobar que las bibliotecas que el trabajo necesita existen para un lenguaje que podamos usar
- 2Replantearse la elección solo si aparece un límite real en producción
- 3Preferir el lenguaje que el equipo ya sabe leer y mantener
- 4Preguntar qué tiene que hacer el programa y dónde tiene que ejecutarse
- 5Escribirlo, manteniendo el código legible para la siguiente persona
Pistas
- Lo primero que se rompe cuando un proyecto crece rara vez es la sintaxis.
- El usuario nunca ve tu lenguaje. El usuario ve si la página abre y si el botón funciona.