LENGUAJES DE
PROGRAMACIÓN
Los lenguajes de programación son herramientas de Software que permiten al usuario de una computadora electrónica crear programas ejecutables para la realización de diversas tareas.
Los dispositivos electrónicos programables en la actualidad son muy importantes en cualquier campo del saber humano. Ello no hubiera sido posible sin las instrucciones de los lenguajes de programación, que permiten dar soluciones a distintos tipos de problemas de negocios, educativos, científicos, etc. Estos lenguajes han evolucionado a través del tiempo, desde el denominado “Lenguaje Máquina”, pasando por los lenguajes “Ensambladores”, hasta llegar a los “Lenguajes de Alto Nivel”. |
Fuente: info:eu-repo/semantics/openAccess
Existen gran cantidad de tipos de computadores y cada uno de ellos es capaz de recibir un conjunto de instrucciones y ejecutarlo para realizar tareas útiles. Sin embargo, el conjunto de instrucciones que cada tipo de computador es capaz de comprender es diferente y normalmente consiste únicamente de secuencias de números en código binario (únicamente con los valores 1 y 0) que se almacenan directamente en los circuitos de la máquina para su posterior ejecución. Estos conjuntos de instrucciones se llaman «lenguajes máquina» y son diferente en diferentes tipos de computadores porque se encuentran estrechamente relacionados al diseño de los circuitos que forman la máquina.
En los primeros días de la informática, los programas se escribían directamente en estos lenguajes, lo que resultaba en programas extremadamente difíciles de escribir y modificar y prácticamente imposibles de entender, incluso para la misma persona que los había creado. Para resolver esos problemas se crearon primero los lenguajes ensambladores y posteriormente los lenguajes de alto nivel. Estos lenguajes se llaman de alto nivel porque permiten expresar los algoritmos en términos más cercanos a la forma en que se conceptualizan en la cabeza de los programadores e incluyen estructuras como los tipos de datos, estructuras de control, declaraciones y abstracciones entre otras.
Actualmente existe una gran cantidad de lenguajes de programación de alto nivel y nuevos lenguajes se crean continuamente. Todos son capaces de representar algoritmos para resolver problemas pero varían en múltiples aspectos. Algunos son más fáciles de aprender y usar por programadores novatos, otros están orientados a propósitos específicos y facilitan la resolución de problemas en su área de enfoque y otros ofrecen un mayor poder de abstracción a cambio de una reducción en la eficiencia al ejecutar los programas. El lenguaje a utilizar dependerá de esos factores así como de otros, que incluyen la experiencia del programador y las restricciones del ambiente en que se crean los programas. Por ejemplo muchas empresas especifican que todos los programas que desarrollan sus empleados deben escribirse en un lenguaje de programación determinado.
A pesar de sus diferencias, todos los lenguajes son técnicamente equivalentes.
En los primeros días de la informática, los programas se escribían directamente en estos lenguajes, lo que resultaba en programas extremadamente difíciles de escribir y modificar y prácticamente imposibles de entender, incluso para la misma persona que los había creado. Para resolver esos problemas se crearon primero los lenguajes ensambladores y posteriormente los lenguajes de alto nivel. Estos lenguajes se llaman de alto nivel porque permiten expresar los algoritmos en términos más cercanos a la forma en que se conceptualizan en la cabeza de los programadores e incluyen estructuras como los tipos de datos, estructuras de control, declaraciones y abstracciones entre otras.
Actualmente existe una gran cantidad de lenguajes de programación de alto nivel y nuevos lenguajes se crean continuamente. Todos son capaces de representar algoritmos para resolver problemas pero varían en múltiples aspectos. Algunos son más fáciles de aprender y usar por programadores novatos, otros están orientados a propósitos específicos y facilitan la resolución de problemas en su área de enfoque y otros ofrecen un mayor poder de abstracción a cambio de una reducción en la eficiencia al ejecutar los programas. El lenguaje a utilizar dependerá de esos factores así como de otros, que incluyen la experiencia del programador y las restricciones del ambiente en que se crean los programas. Por ejemplo muchas empresas especifican que todos los programas que desarrollan sus empleados deben escribirse en un lenguaje de programación determinado.
A pesar de sus diferencias, todos los lenguajes son técnicamente equivalentes.
Lenguaje de la
Computación
Hemos visto cómo la Computación está cambiando al mundo y cómo estamos rodeados de ingentes cantidades de información, pero ahora ¡necesitamos representar la información que nos rodea de manera que nuestro ordenador la entienda y pueda trabajar con ella!
Nuestro ordenador no deja de ser una máquina electrónica, y como tal necesita aceptar unos datos de entrada, hacer con ellos operaciones y proporcionarnos a través de un medio de salida los resultados.
Necesitaremos entonces codificar la información que queremos enviarle, de manera que la "entienda". Vamos a ver cómo...
Nuestro ordenador no deja de ser una máquina electrónica, y como tal necesita aceptar unos datos de entrada, hacer con ellos operaciones y proporcionarnos a través de un medio de salida los resultados.
Necesitaremos entonces codificar la información que queremos enviarle, de manera que la "entienda". Vamos a ver cómo...
En el sistema digital que es nuestro ordenador los datos se representan mediante una magnitud física que toma sólo dos valores. Un sistema digital en el que los valores posibles son sólo dos se llama binario. En la actualidad, los ordenadores son digitales binarios. Pero, ¿cómo se ha creado este sistema?
La unidad de información empleada en los ordenadores se conoce con el nombre de bit (“binary digit”): sólo puede tener uno de dos posibles valores (0-1).
Nos planteamos por qué un ordenador necesita que le enviemos la información mediante bits que sólo pueden tener dos estados posibles de valores, y encontramos que:
La tecnología actual de los ordenadores hace que resulte fácil almacenar y manejar bits ya que en un ordenador digital binario, los componentes más básicos son dispositivos electrónicos con dos estados estables (representados mediante 0=sin corriente/voltaje/carga y 1=hay corriente/voltaje/carga). De esta forma, todas las informaciones con las que trabaje el ordenador se representan mediante códigos binarios. |
|
|
Acabamos de ver que cada uno de los dígitos representativos del sistema binario (1 y 0) se conoce como bit y es la unidad mínima de información. También hemos visto que necesitamos los bits para almacenar la información y para que el ordenador pueda trabajar con ella, pero...¡tantos bits forman un caos! ¿Cómo puedo agruparlos para dar orden a la información?
En el siguiente vídeo vamos a recordar lo que es un byte y sus agrupaciones superiores:
En el siguiente vídeo vamos a recordar lo que es un byte y sus agrupaciones superiores:
Siempre nos han enseñado que la agrupación más frecuente es la de 8 bits: Cada 8 bits forman un byte. Pero, ¿para qué hacemos esto además de para mantener ordenados los bits?¿Para qué sirve el byte?
Problema: Si necesitamos acceder a un bit en la memoria, se nos plantea una labor realmente complicada. Es una unidad tan pequeña que si tenemos que conocer la dirección de todos y cada uno de los bits en la memoria (dadas las altas capacidades que disponemos ahora) necesitaríamos una potencia de cálculo verdaderamente imposible para ejecutar los programas.
Problema: Si necesitamos acceder a un bit en la memoria, se nos plantea una labor realmente complicada. Es una unidad tan pequeña que si tenemos que conocer la dirección de todos y cada uno de los bits en la memoria (dadas las altas capacidades que disponemos ahora) necesitaríamos una potencia de cálculo verdaderamente imposible para ejecutar los programas.
Ya sabemos que cada bit de memoria es accesible mediante un número: su posición, conocida como su dirección. Pero la información suele tener unos valores para los que se necesita un grupo de bits en su codificación (un bit sólo puede tener 2 valores). Entonces, los ordenadores organizan la memoria como una serie de grupos de bits de tamaño fijo: ¡ahí toma su importancia el byte!
Un byte puede tener 2^8=256 valores diferentes. Con ellos ya podemos representar grupos de instrucciones y datos codificados en ceros y unos y almacenarlos en la memoria .
Así, en programación cada bit individual no tiene una dirección, sino cada grupo de 8 bits o byte.
Un byte puede tener 2^8=256 valores diferentes. Con ellos ya podemos representar grupos de instrucciones y datos codificados en ceros y unos y almacenarlos en la memoria .
Así, en programación cada bit individual no tiene una dirección, sino cada grupo de 8 bits o byte.
Fuente: https://edea.juntadeandalucia.es/bancorecursos/file/653ee80d-2517-4e6b-938d-8fc23331967f/1/PRO_2BAC_REA_01_V01.zip/33_el_lenguaje_de_la_computacin.html#t98a13561-7a51-ae43-2237-45e90964480f
En general, un programador que quiere conseguir que el ordenador realice determinadas operaciones, tiene que seguir estos pasos:
- El programador escribe una secuencia de instrucciones siguiendo las reglas de un lenguaje de programación. Esa secuencia de instrucciones se guarda en uno o varios archivos de texto. A estos archivos se les llama código fuente del programa.
- Mediante un programa especial (llamado compilador o intérprete) capaz de realizar esa tarea el ordenador convierte los archivos de texto en archivos ejecutables, es decir, traduce la secuencia de instrucciones escritas por el programador en instrucciones. A estos archivos ejecutables se les llama programas ejecutables.
- El programador o cualquier otro usuario le puede pedir al ordenador que ejecute el programa ejecutable.
El inicio de la informática moderna se suele situar en 1946, con ENIAC, el primer ordenador de propósito general (aunque entre 1936 y 1945 Konrad Zuse construyó en Alemania varios prototipos de ordenadores de propósito general que fueron destruidos durante la segunda guerra mundial).
Esos ordenadores, como todos los que han venido después, tenían su propio lenguaje máquina, el conjunto de instrucciones que puede ejecutar la CPU. Para hacer manejable la tarea de programar los ordenadores, se crearon los lenguajes ensamblador, que utilizan palabras para referirse a las instrucciones. El problema de estos lenguajes es que están ligados a la CPU utilizada.
En los años 50 aparecieron los lenguajes de programación independientes de una máquina en concreto y en los años 60 se desarrollaron la mayoría de los conceptos en que se basan los actuales lenguajes de programación, perfeccionados a lo largo del tiempo.
Desde entonces, se han inventado muchísimos lenguajes de programación, que han permitido a los programadores resolver problemas cada vez más complejos.
Esos ordenadores, como todos los que han venido después, tenían su propio lenguaje máquina, el conjunto de instrucciones que puede ejecutar la CPU. Para hacer manejable la tarea de programar los ordenadores, se crearon los lenguajes ensamblador, que utilizan palabras para referirse a las instrucciones. El problema de estos lenguajes es que están ligados a la CPU utilizada.
En los años 50 aparecieron los lenguajes de programación independientes de una máquina en concreto y en los años 60 se desarrollaron la mayoría de los conceptos en que se basan los actuales lenguajes de programación, perfeccionados a lo largo del tiempo.
Desde entonces, se han inventado muchísimos lenguajes de programación, que han permitido a los programadores resolver problemas cada vez más complejos.
Tipos de lenguajes de
programación
Existen multitud de lenguajes de programación y diferentes formas de clasificarlos. Así pues, a continuación, se describen las dos principales formas de clasificar los lenguajes de programación y cuales son los tipos más conocidos en cada una de ellas.
- Clasificación en función a la dependencia de la máquina sobre la que se van a ejecutar.
- Lenguajes de bajo nivel. Estos lenguajes de programación se programan para una máquina (procesador) específica. Por lo tanto, dependen de las instrucciones de la misma. Como ventaja, son lenguajes muy rápidos y eficientes, ya que maximizan el aprovechamiento de los recursos hardware, pero como inconveniente tiene que no son fácilmente portables a otras máquinas y que son más difíciles de programar ya que son menos intuitivos para el desarrollador.
- Lenguajes de alto nivel. Estos lenguajes no están vinculados tan directamente a la máquina, por lo que son mucho más portables. Además, emplean un lenguaje más cercano al natural por lo que son más amigables con el desarrollador. Como inconveniente, son lenguajes menos eficientes.
- Otra forma de clasificar a los lenguajes de programación es aquella basada en el paradigma de programación utilizado por cada uno de estos lenguajes. En estos casos pueden encontrarse principalmente los siguientes grupos:
- En estos lenguajes la ejecución de las instrucciones es principalmente secuencial, siendo esta secuencialidad solamente alterada por las estructuras de control.
- En estos lenguajes se especifica qué debe ejecutarse en lugar de como debe ejecutarse.
- Orientados a objetos. Se basan en el manejo de objetos sobre los que se aplican operaciones, en lugar de basarse en instrucciones que manejan objetos.
Fuente: https://procomun.intef.es/gl/ode/view/1571379893904
Plataformas para aprender a programar
Code.org
Excelente plataforma, creada por una organización sin ánimo de lucro, para aprender a programa debido a sus múltiples tutoriales paso a paso. Existen gran variedad de cursos, adaptados para distintos rangos de edad, que progresivamente van incrementando su dificultad, todos ellos gratuitos en su página web. El alumnado puede crear una cuenta lo que permiten cierta autonomía, ellos mismos pueden ir comprobando su progreso, lo que permite una atención a la diversidad al poder tener varios niveles de aprendizaje a la vez. La plataforma también tiene la posibilidad de crear clases privadas para poder monitorizar el avance de sus alumnos. |
|
|
Codecademy
Es una plataforma interactiva en línea que ofrece clases gratuitas de codificación en lenguajes de programación como Python, PHP, JavaScript, y Ruby, así como lenguajes de marcado incluyendo HTML y CSS23 y también uso de API's.Para motivar a los usuarios a participar el sitio cuenta con un sistema de gamificación por el que ofrece insignias o medallas al completar ejercicios, cuenta con foros de discusión y un glosario por curso, y mantiene un registro de la puntuación total del usuario y la muestra a los demás. |
Google CS First
CS First es una herramienta de Google que pretende facilitar el acceso a la formación en TICs. Tiene diversos clubs según lo que te interese (crear historias interactivas, animaciones, redes sociales, música, videojuegos...) y proporciona formación ( a través de tutoriales, actividades guiadas y con la posibilidad de consultar a un tutor) de forma totalmente gratuita para que te puedas iniciar. Emplea la programación por bloques mediante Scratch. |
|
Crear videojuegos
|
Scratch
Lenguaje de programación visual descrito anteriormente, sigue siendo altamente recomendable para estas edades. Muy apropiado como introducción a Mblock |
Snap!
Muy semejante al Scratch. Con una edición gráfica mucho más sencilla, lo que dificulta el hacer proyectos vistosos. Pero más potente a nivel de programación ya que dispone de elementos de mayor nivel de programación. Otra gran ventaja es la posibilidad de ejecutarlo en un navegador de tablet (iPad, Android), pues no utiliza flash. |
|
|
Blockly
Blockly es un editor de programación gráfica basada en la web, desarrollada por Google. Inspirado en herramientas como Scratch y Appinventor, es una herramienta excelente para enseñar a programar. Es la herramienta utilizada por Code.org en sus tutoriales para enseñar programación, si bien ésta no es la única propuesta en esta línea. |
Juegos para aprender a programar
CodeCombat
Es un juego web para aprender a programar. El alumno se pone en la piel de un personaje medial que deberá ir avanzando por los diferentes niveles del juego, solucionando los retos planteados, cada vez con mayor grado de dificultad. Utiliza programación textual, para que el alumnado se vaya familiarizando con ella, y además está disponible en múltiples lenguajes (como Python, Java o JavaScript). Es multijugador, completamente gratuito y también está adaptado a su uso en el aula (permite crear clases).. |
Robocode
Es un juego de programación en Java en el que el objetivo es desarrollar un tanque que combata con otros tanques. Las batallas se realizan en tiempo real y en pantalla. El lema de Robocode es: ¡Construye el mejor, destruye al resto! Es un programa Java, por lo que se necesita tener instalado Java Runtime Environment. |
|
|
Controlar Hardware
CodeBug
Una plataforma muy sencilla que permite integrar programación con hardware pues permite cargar el programa realizado en un dispositivo electrónico, de una forma sencilla y divertida. Ideal para inicializarse en un sencillo Kit robótico. El objeto a programar es una ranita biónica con luces y botones. La programación se puede realizar tanto por medio de bloques, como empleando programación textual en Python o JavaScript; pudiendo pasar de un tipo de programación a otro automáticamente.Otra ventaja que presenta es que no es necesario disponer de la ranita (aunque es económica), pues dispone de un emulador que reproduce lo que le pasaría a esta.La página web dispone de una serie de actividades para iniciarse clasificados en tres niveles de dificultad. |
Bitbloq
Software de la empresa BQ que sirve para programar tanto sus productos (placa bq Zum, robot Zowi) como placas Arduino. Su manejo es muy sencillo, consiste en arrastrar los componentes que usaremos, para posteriormente programar la secuencia deseada y finalmente simular, comprobando si el resultado es el esperado. |
Processing
Es un lenguaje de programación pensado para creadores visuales aunque por las posibilidades que brinda junto a Arduino es una plataforma muy atractiva para la programación educativa.De Processing hay multitud de tutoriales oficiales, una guía paso a paso (también oficial) para dar los primeros pasos, e incluso también un excelente tutorial interactivo |
mBlock
Makeblock creó mBlock haciendo un clon de Scratch al que añade nuevos bloques e instrucciones que permiten manejar el robot mBot de la misma casa. También sirve para controlar varias placas Arduino. |
Programar APPS
App Lab
Es una plataforma de Code.org que permite crear aplicaciones web para móvil con unos pocos pasos, y de una forma muy sencilla y elemental: a través de bloques de colores. Sin embargo, de no interesarnos la interfaz basada en bloques de colores nos ofrece la posibilidad de cambiar a un ‘modo JavaScript’ para directamente escribir las instrucciones, opción interesante para usuarios más avanzados que se vayan familiarizando con la programación textual. Una vez hayamos creado nuestra aplicación podremos ejecutarla en cualquier smartphone o tablet del mercado, a través de un navegador.Sin necesidad de conocimientos avanzados de programación, multiplataforma y completamente gratis.Code.org también dispone de unos cuantos tutoriales en vídeo y retos para ponerte a prueba y comprobar tus conocimientos. |
|
|
App Inventor
Creación de Google que permite diseñar y programar apps para telefonos o tablets con el sistema operativo Android . Se trata de programación por bloques, como Scratch y está dirigido al entorno educativo y del aprendizaje de la programación. Permite aprovechar algunas características de los móviles actuales, tales como la cámara, los sensores o por supuesto también las pantallas táctiles. |
Blockly
Descrito anteriormente, lo repetimos aquí porque también se puede utilizar tanto para la creación de videojuegos como de aplicaciones para smartphones y tablets.
Descrito anteriormente, lo repetimos aquí porque también se puede utilizar tanto para la creación de videojuegos como de aplicaciones para smartphones y tablets.
Lenguajes de programación
Python
Se trata ya de un lenguaje profesional, cuya filosofía hace hincapié en una sintaxis que favorezca un código legible, Es por esto que resulta muy adecuado emplearlo como introducción a la programación textual. Puede ser considerado como el siguiente paso después de Scratch. |
JavaScript
Ha estado tradicionalmente ligado con el mundo del diseño web, ya que sirve para añadir contenido dinámico a las páginas Web. Si bien, se puede emplear para mucho más porque es bastante flexible en sintaxis, sencillo de introducir y con resultados que se entienden rápidamente. |