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: 
C Y C++
JAVA
JavaScript,
PHP
C#
Wiring / Processing
sketch
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,
PHP
C#
Wiring / Processing
sketch
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

Entradas populares de este blog

5-ESTRUCTURA CONTROL DE DECISIÓN-CON SCRATCH

5- ESTRUCTURA DE CONTROL DE DECISIÓN EN PSEINT

Desarrollos de Scratch para robótica