1-INTRODUCCION A LA PROGRAMACION-ESTRUCTURA DE CONTROL DE SECUENCIA
El arte de la programación es
tomar una idea muy grande y romperla en pedazos individuales y ordenados en instrucciones
fundamentales. Todos los programas de ordenador tratan de entradas y
salidas. Donde la entrada es la información que proporciona el usuario para qué
el programa pueda funcionar y la salida es la información que muestra el
programa después de procesar las entidades del usuario.
Hoy en día la Programación se ha
convertido en el conocimiento de moda y mucho hacemos uso de la ella sin
siquiera darnos cuenta, desde la TV hasta nuestros celulares, todos saben (o
dicen saber) algún tipo de lenguaje de programación. El ingeniero de software
Yevgeniy Brikman ha publicado un interesante post en su blog Don’t Panic en el
que explica que la cuestión no es saber programar, sino aprender a pensar como
un auténtico informático.
¿QUÉ LENGUAJE DE PROGRAMACIÓN DEBERÍA
APRENDER PARA EMPEZAR?
Esta es probablemente una de las
preguntas más populares entre las personas que quieren adentrarse, pero primero tendríamos que pensar en No aprendas a programar, primer debemos aprende a
pensar, Brikman explica que aprender a programar tiene muchos beneficios
innegables. Programar proporciona las herramientas necesarias para desarrollar
nuestras propias aplicaciones, ayuda a localizar problemas con dispositivos tecnológicos,
y abre puertas en el mercado laboral.
Sin embargo, según este ingeniero de
software, programar es solo una pequeña parte de las ciencias de la
computación, los estudios que popularmente se conocen como Informática. Brikman
explica:
Programar o escribir código consiste
en enseñar a un ordenador a realizar una operación determinada. Si nunca has
escrito código, probablemente tu idea de interactuar con una computadora sea
hace clic en una determinada aplicación. Bajo esta aplicación, lo que hay en
realidad es código que enseña al dispositivo a mostrar los menús de esa
aplicación, a guardar los datos en un lugar determinado, a recuperar esos datos
y a responder a tus clics de una forma concreta.
Toda la programación está basada en
los principios de las ciencias de la computación. Como tal, programar es una
parte importante de esta disciplina. Sin embargo, es solo una parte cuyo propósito
es mucho menos general.
Las ciencias de la computación, por
contra, enseñan habilidades de razonamiento y lógica que son útiles en otras
áreas distintas a la tecnología. Informática, en esencia, enseña a procesar y a
representar información.
Brinkman explica la diferencia entre
saber programar, y saber pensar como un informático con esta analogía:
El hecho de que una tecnología sea
omnipresente, no significa que debamos aprenderla en el instituto. Por ejemplo,
todos hemos volado alguna vez en un avión, pero obtener una licencia de piloto
no forma parte de nuestros estudios. Sin embargo, los conocimientos que nos
enseñan como funcionan los aviones sí que lo son.
La física y las matemáticas ayudan a
entender las fuerzas que intervienen en el vuelo como la gravedad, la presión
atmosférica, la velocidad, la fricción o la sustentación.
La biología ayuda a entender qué le
pasa al organismo humano a esa altura, cómo afectan al organismo la falta de
oxígeno y el frío extremo.
La historia explica cómo fueron
creados los aviones, cómo evolucionaron, y su papel en el transporte y el
comercio.
Para cuando uno se gradúa en el
instituto, ya tiene una idea general de qué es una avión y cómo funciona. La
asignaturas generales ayudan a entender una gran variedad de problemas,
incluidos cómo vuelan los aviones. Es muy distinto de una asignatura que te
enseña solo a manejar una de esas máquinas.
PROGRAMADOR
Por la misma razón, deberíamos
enfocarnos en estudiar ciencias de la computación, y no solo programación. La
primera enseña a pensar en un sentido general. La segunda es solo una
herramienta.
Yevgeniy Brikman continúa desgranando
las razones por las que él cree que programar es solo una parte de un
conocimiento más amplio y recomendable. El post está en inglés, pero merece la
pena leerlo en detalle. ¿Creés que tiene razón? [ Don’t learn to code. Learn to
think]Hoy en día la Programación se ha convertido en el conocimiento de moda y
mucho hacemos uso de la ella sin siquiera darnos cuenta, desde la TV hasta
nuestros celulares, todos saben (o dicen saber) algún tipo de lenguaje de
programación. El ingeniero de software Yevgeniy Brikman ha publicado un
interesante post en su blog Don’t Panic en el que explica que la cuestión no es
saber programar, sino aprender a pensar como un auténtico informático.
https://www.youtube.com/watch?v=Y1HHBXDL9bg
LOS
LENGUAJES DE PROGRAMACIÓN
Los
lenguajes de programación son idiomas artificiales diseñados para expresar
cálculos y procesos que serán llevados a cabo por ordenadores. Un lenguaje de
programación está formado por un conjunto de palabras reservadas, símbolos y
reglas sintácticas y semánticas que definen su estructura y el significado de
sus elementos y expresiones. El proceso de programación consiste en la
escritura, compilación y verificación del código fuente de un programa.
Antes
de diseñar un programa es necesario entender completamente el problema que
queremos resolver y conocer las restricciones de operación de la aplicación. La
programación es una tarea compleja y es muy importante abordar la solución a un
problema específico desde un punto de vista algorítmico. Un algoritmo es un
conjunto ordenado y finito de operaciones que permite hallar la solución de un
problema. Está definido por instrucciones o reglas bien definidas, ordenadas y
finitas que permiten realizar una actividad. Dado un estado inicial, una
entrada y una secuencia de pasos sucesivos, se llega a un estado final y se
obtiene una solución.
Cuando
un estudiante se empieza a enfrentar al mundo java, que es el lenguaje que se
ha difundido con más intensidad en la universidad, muchos aprende a programar
en el software jcreator, y de hay en adelante todos llaman a ese software como
java. Esto es un gran error, ya que java es un gran conjunto de librerías,
módulos y Api´s que entre todas conforman un lenguaje de programación de alto
nivel y que pueden ser programadas con cualquier editor de texto, es decir que
podemos programar java hasta en el simple block de notas que trae todo sistema
operativo; y para poder compilar y ejecutar el código que digitemos, podemos
hacerlo sin necesidad de ningún editor especial; tan solo una llamada al
comando de compilación desde la línea de comandos (símbolo del sistema) es
suficiente para compilar, encontrar los errores de un programa y posterior
mente ejecutarlo.
El arte de la programación
es tomar una idea muy grande y romperla en pedazos individuales y ordenados en instrucciones
fundamentales. Todos los programas de
ordenador tratan de entradas y salidas. Donde la entrada es la información que
proporciona el usuario paraqué el programa pueda funcionar y la salida es la
información que muestra el programa después de procesar las entidades del
usuario.
Los lenguajes de programación que utilizaremos son:
Wiring / Processing
sketch
C Y C++
JAVA
JavaScript,
JAVA
JavaScript,
PHP
C#Wiring / Processing
SQL
Pseint,
Ruby
HTML
Un
lenguaje de programación es un lenguaje inventado para controlar una máquina,
(normalmente, un ordenador). Hay muchísimos, de toda clase de tipos y
características, inventados para facilitar el abordaje de distintos problemas,
el mantenimiento del software, su reutilización, mejorar la productividad, etc.
El ordenador sólo entiende un lenguaje conocido como código binario o código
máquina, consistente en ceros y unos. Es decir, sólo utiliza 0 y 1 para
codificar cualquier acción.
Los
lenguajes más próximos a la arquitectura hardware se denominan lenguajes de
bajo nivel y los que se encuentran más cercanos a los programadores y usuarios
se denominan lenguajes de alto nivel.
Los
lenguajes de programación se pueden clasificar según varios criterios. He
encontrado doce en total: Nivel de abstracción, propósito, evolución histórica,
manera de ejecutarse, manera de abordar la tarea a realizar, paradigma de
programación, lugar de ejecución, concurrencia, interactividad, realización
visual, determinismo y productividad.
Hay
que tener en cuenta también, que en la práctica, la mayoría de lenguajes no
pueden ser puramente clasificados en una categoría, pues surgen incorporando
ideas de otros lenguajes y de otras filosofías de programación, pero no importa
al establecer las clasificaciones, pues el auténtico objetivo de las mismas es
mostrar los rangos, las posibilidades y tipos de lenguajes que hay.
1. Nivel de abstracción.
Según
el nivel de abstracción, o sea, según el grado de cercanía a la máquina:
Lenguajes
de bajo nivel: La programación se realiza teniendo muy en cuenta las
características del procesador. Ejemplo: Lenguajes ensamblador.
Lenguajes
de nivel medio: Permiten un mayor grado de abstracción pero al mismo tiempo
mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C puede
realizar operaciones lógicas y de desplazamiento con bits, tratar todos los
tipos de datos como lo que son en realidad a bajo nivel (números), etc.
Lenguajes
de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos, tipos de
datos, etc., de una manera cercana al pensamiento humano ignorando
(abstrayéndose) del funcionamiento de la máquina. Ejemplos: Java, Ruby.
Hay
quien sólo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C
es considerado de alto nivel).
La diferencia fundamental se puede explicar
con el siguiente ejemplo:
En un lenguaje de alto nivel sólo tengo que
poner sqt(x), que sería una función predeterminada, calcular el cuadrado de x.
Si
fuera de bajo nivel, yo mismo tendría que crear la función sabiendo como
funciona el cuadrado de un número:
cuadrado(x) = x * x
2. Propósito.
Según
el propósito, es decir, el tipo de problemas a tratar con ellos:
Lenguajes
de propósito general: Aptos para todo tipo de tareas: Ejemplo: C.
Lenguajes
de propósito específico: Hechos para un objetivo muy concreto. Ejemplo: Csound
(para crear ficheros de audio).
Lenguajes
de programación de sistemas: Diseñados para realizar sistemas operativos o
drivers. Ejemplo: C.
Lenguajes
de script: Para realizar tareas varias de control y auxiliares. Antiguamente
eran los llamados lenguajes de procesamiento por lotes (batch) o JCL (“Job
Control Languages”). Se subdividen en varias clases (de shell, de GUI, de
programación web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript
(programación web).
3. Evolución histórica.
Con
el paso del tiempo, se va incrementando el nivel de abstracción, pero en la
práctica, los de una generación no terminan de sustituir a los de la anterior:
Lenguajes
de primera generación (1GL): Código máquina.
Lenguajes
de segunda generación (2GL): Lenguajes ensamblador.
Lenguajes
de tercera generación (3GL): La mayoría de los lenguajes modernos, diseñados
para facilitar la programación a los humanos. Ejemplos: C, Java.
Lenguajes
de cuarta generación (4GL): Diseñados con un propósito concreto, o sea, para
abordar un tipo concreto de problemas. Ejemplos: NATURAL, Mathematica.
Lenguajes
de quinta generación (5GL): La intención es que el programador establezca el
qué problema ha de ser resuelto y las condiciones a reunir, y la máquina lo
resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog.
4. Manera de ejecutarse.
Según
la manera de ejecutarse:
Lenguajes
compilados: Un programa traductor traduce el código del programa (código
fuente) en código máquina (código objeto). Otro programa, el enlazador, unirá
los ficheros de código objeto del programa principal con los de las librerías
para producir el programa ejecutable. Ejemplo: C.
Lenguajes
interpretados: Un programa (intérprete), ejecuta las instrucciones del programa
de manera directa. Ejemplo: Lisp.
También
los hay mixtos, como Java, que primero pasan por una fase de compilación en la
que el código fuente se transforma en “bytecode”, y este “bytecode” puede ser
ejecutado luego (interpretado) en ordenadores con distintas arquitecturas
(procesadores) que tengan todos instalados la misma “máquina virtual” Java.
5. Manera de abordar la tarea a
realizar.
Según
la manera de abordar la tarea a realizar, pueden ser:
Lenguajes
imperativos: Indican cómo hay que hacer la tarea, es decir, expresan los pasos
a realizar. Ejemplo: C.
Lenguajes
declarativos: Indican qué hay que hacer. Ejemplos: Lisp, Prolog. Otros ejemplos
de lenguajes declarativos, pero que no son lenguajes de programación, son HTML
(para describir páginas web) o SQL (para consultar bases de datos).
6. Paradigma de programación.
El
paradigma de programación es el estilo de programación empleado. Algunos
lenguajes soportan varios paradigmas, y otros sólo uno. Se puede decir que
históricamente han ido apareciendo para facilitar la tarea de programar según
el tipo de problema a abordar, o para facilitar el mantenimiento del software,
o por otra cuestión similar, por lo que todos corresponden a lenguajes de alto
nivel (o nivel medio), estando los lenguajes ensambladores “atados” a la
arquitectura de su procesador correspondiente. Los principales son:
Lenguajes
de programación procedural: Divide el problema en partes más pequeñas, que
serán realizadas por subprogramas (subrutinas, funciones, procedimientos), que
se llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal.
Lenguajes
de programación orientada a objetos: Crean un sistema de clases y objetos
siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y
se comunican con otros objetos. Ejemplos: C++, Java.
Lenguajes
de programación funcional: La tarea se realiza evaluando funciones, (como en
Matemáticas), de manera recursiva. Ejemplo: Lisp.
Lenguajes
de programación lógica: La tarea a realizar se expresa empleando lógica formal
matemática. Expresa qué computar. Ejemplo: Prolog.
Hay
muchos paradigmas de programación: Programación genérica, programación
reflexiva, programación orientada a procesos, etc.
7. Lugar de ejecución.
En
sistemas distribuidos, según dónde se ejecute:
Lenguajes
de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el más utilizado en
servidores web.
Lenguajes
de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores web.
8. Concurrencia.
Según
admitan o no concurrencia de procesos, esto es, la ejecución simultánea de
varios procesos lanzados por el programa:
Lenguajes
concurrentes. Ejemplo: Ada.
Lenguajes
no concurrentes. Ejemplo: C.
9. Interactividad.
Según
la interactividad del programa con el usuario u otros programas:
Lenguajes
orientados a sucesos: El flujo del programa es controlado por la interacción
con el usuario o por mensajes de otros programas/sistema operativo, como
editores de texto, interfaces gráficos de usuario (GUI) o kernels. Ejemplo:
VisualBasic, lenguajes de programación declarativos.
Lenguajes
no orientados a sucesos: El flujo del programa no depende de sucesos
exteriores, sino que se conoce de antemano, siendo los procesos batch el
ejemplo más claro (actualizaciones de bases de datos, colas de impresión de
documentos, etc.). Ejemplos: Lenguajes de programación imperativos.
10. Realización visual.
Según
la realización visual o no del programa:
Lenguajes
de programación visual: El programa se realiza moviendo bloques de construcción
de programas (objetos visuales) en un interfaz adecuado para ello. No confundir
con entornos de programación visual, como Microsoft Visual Studio y sus
lenguajes de programación textuales (como Visual C#). Ejemplo: Mindscript.
Lenguajes
de programación textual: El código del programa se realiza escribiéndolo.
Ejemplos: C, Java, Lisp.
11. Determinismo.
Según
se pueda predecir o no el siguiente estado del programa a partir del estado
actual:
Lenguajes
deterministas. Ejemplos: Todos los anteriores.
Lenguajes
probabilísticos o no deterministas: Sirven para explorar grandes espacios de
búsqueda, (como gramáticas), y en la investigación teórica de hipercomputación.
Ejemplo: mutt (generador de texto aleatorio).
12. Productividad.
Según
se caractericen por tener virtudes útiles o productivas, u oscuras y
enrevesadas:
Lenguajes
útiles o productivos: Sus virtudes en cuanto a eficiencia, sencillez, claridad,
productividad, etc., motiva que sean utilizados en empresas, administraciones
públicas y/o en la enseñanza. Ejemplos: Cualquier lenguaje de uso habitual (C,
Java, C++, Lisp, Python, Ruby, …).
Lenguajes
esotéricos o exóticos: Inventados con la intención de ser los más raros,
oscuros, difíciles, simples y/o retorcidos de los lenguajes, para diversión y
entretenimiento de frikis programadores. A veces exploran nuevas ideas en
programación. Ejemplo: Brainfuck.
LENGUAJES DE PROGRAMACIÓN MÁS USADOS
Lenguaje de Programación “HTML”: Este
lenguaje es con el que se crean las páginas web, por ejemplo, que básicamente
es un conjunto de etiquetas que sirven para definir el texto y otros elementos
que puedes ver en las páginas web. HTML significa HyperText Markup Lenguaje
(«lenguaje de marcas de hipertexto») y es muy fácil de aprender. Luego ya
depende de si queremos una web más o menos elaborada podremos profundizar en este
lenguaje. Por ejemplo, el lenguaje de programación CSS (Cascading Style Sheets)
son hojas que sirven para dar “estilo” a las páginas web como su color, definir
su fondo, tipos de letra…etc
Lenguaje de Programación “SQL”: Este
lenguaje está creado para realizar consultas a bases de datos principalmente.
SQL son las siglas de Structured Query Lenguaje ( Lenguaje estructurado de
consultas) y se utiliza para páginas web y también para aplicaciones de
ordenadores, para manejar datos sobre todo. (Introducir datos, actualizar
datos, eliminar o seleccionar datos)
Lenguaje de Programación “Java”:
Probablemente éste podría ser el favorito de más de uno ya que es el lenguaje
utilizado para programas punteros como herramientas, juegos y aplicaciones.
Este lenguaje de programación se utiliza en miles de millones de dispositivos
móviles y aparatos de televisión y en más de 850 millones de ordenadores
personales de todo el mundo. Java está instalado en inmensidad de aplicaciones
y sitios web.
JavaScript: Seguramente también te suene
JavaScript, que es otro lenguaje utilizado para crear pequeños programas
encargados de realizar acciones y dar interactividad dentro de una web como por
ejemplo para crear efectos especiales, para definir interactividades con los usuarios,
efectos de textos. Hoy en día es casi el único lenguaje usado en todas las
páginas web por la compatibilidad con HTML5. Si quieres aprender a programar en
Javascript te recomendamos este enlace: JavaScript Curso Basico.
Lenguaje de Programación “C”: Este lenguaje
de programación está orientado a los Sistemas Operativos y es muy eficaz y con
él podemos crear Softwares de sistemas operativos como Windows o Linux y
también para aplicaciones. También sirve para experimentos informáticos,
físicos, matemáticos…etc. Es también muy utilizado en robótica con el que se
programan simuladores, etc.
Lenguaje de Programación “XML”: Este
lenguaje es también un lenguaje de etiquetas como el HTML, pero a diferencia de
éste, el lenguaje XML separa el contenido de la presentación, es decir, XML se
preocupa del significado del texto que define el HTML. Te da el dato + el
significado de ese dato, mientras que el HTML te da el dato nada más. El XML es
un complemento fundamental al HTML.
Lenguaje de Programación “PHP”: El PHP es un
lenguaje de programación similar al HTML que nos sirve fundamentalmente para
páginas web y se puede combinar con el lenguaje HTML. El lenguaje PHP se basa
en los “scripts” que es un guión de órdenes o instrucciones que recibe un
servidor de una página web para leer su código fuente.
HERRAMIENTAS IDE
Herramientas
IDE, como JCreator, Netbeans, Eclipse, Sun Studio Creator, y muchas otras más,
son solo editores de texto más avanzados que el Block de Notas, y que con
botones sencillos dan la facilidad al usuario de compilar, revisar y corregir
errores y ejecutar los programas digitados en ellos.
APRENDEREMOS:
C Y C++
JAVA
JavaScript,
C Y C++
JAVA
JavaScript,
PHP
C#Wiring / Processing
SQL
Pseint,
Ruby
HTML
C# es un lenguaje propietario de Microsoft que mezcla las características básicas de C++ (no las avanzadas) simplificándolas al estilo Java y ofreciendo un framework. C# forma parte de la plataforma .NET
El lenguaje de programación de Arduino está basado en C++ y aunque la referencia para el lenguaje de programación de Arduino está en http://arduino.cc/en/Reference/HomePage, también es posible usar comandos estandar de C++ en la programación de Arduino.
Comentarios
Publicar un comentario