jueves, 7 de marzo de 2013

QUE ES UN PROGRAMA


Un programa informático es un conjunto de instrucciones que una vez ejecutadas realizarán una o varias tareas en una computadora. Sin programas, estas máquinas no pueden funcionar.Al conjunto general de programas, se le denomina software, que más genéricamente se refiere al equipamiento lógico o soporte lógico de una computadora digital.
En informática, se los denomina comúnmente binarios, (propio en sistemas Unix, donde debido a la estructura de este último, los ficheros no necesitan hacer uso de extensiones; posteriormente, los presentaron como ficheros ejecutables, con extensión .exe, en los sistemas operativos de la familia Windows) debido a que una vez que han pasado por el proceso de compilación y han sido creados, las instrucciones que se escribieron en un determinado lenguaje de programación, han sido traducidas al único idioma que la máquina comprende,combinaciones de ceros y unos llamado código máquina. El mismo término, puede referirse tanto a un programa ejecutable, como a su código fuente, el cual es transformado en un binario una vez que es compilado.
Generalmente el código fuente lo escriben profesionales conocidos como programadores. Este código se escribe en un lenguaje que sigue uno de los siguientes dos paradigmas: imperativo o declarativo, y que posteriormente puede ser convertido en una imagen ejecutable a través de un programa-compilador. Cuando se pide que el programa sea ejecutado, el procesador ejecuta instrucción por instrucción.
De acuerdo a sus funciones, los programas informáticos se clasifican en software de sistema y software de aplicación. En los computadores actuales, al hecho de ejecutar varios programas de forma simultánea y eficiente, se le conoce como multilateral.

QUE ES UN LENGUAJE DE PROGRAMACIÓN :

Un lenguaje de programación es un lenguaje artificial que puede ser usado para controlar el comportamiento de una máquina, especialmente una computadora. Estos se componen de un conjunto de reglas sintácticas y semánticas que permiten expresar instrucciones que luego serán interpretadas.

Debe distinguirse de “lenguaje informático”, que es una definición más amplia, puesto estos incluyen otros lenguajes como son el HTML o PDF que dan formato a un texto y no es programación en sí misma.

El programador es el encargado de utilizar un lenguaje de programación para crear un conjunto de instrucciones que, al final, constituirá un programa o subprograma informático.

En su uso, un lenguaje de programación puede acercarse a la forma humana de expresarse y, por eso, este tipo de lenguajes es llamado de alto nivel. Esto significa que utilizan palabras y formas en sus estructuras que se asemejan al lenguaje natural (especialmente al inglés). En cambio, aquellos lenguajes que se aproximan más a la forma en la cual la computadora se maneja, son llamados lenguajes de bajo nivel. Esto significa que lo que el programador deba escribir se acercará al lenguaje máquina, que es, en definitiva, lo que las computadoras pueden interpretar.

De todas maneras, un lenguaje de programación difiere en muchos aspectos de un lenguaje humano. Un código escrito en un lenguaje de programación específico siempre se interpreta de la misma manera (no como los idiomas humanos ambiguos), los errores son mucho más significativos (a tal punto de que un código puede volverse ininterpretable por la computadora), etc.

El código fuente es el conjunto de instrucciones que conforman un programa (o subprograma o módulo). El código fuente debe ser compilado para poder ser interpretado y ejecutado por la computadora. La compilación traduce el código fuente (que depende del lenguaje de programación) a un lenguaje máquina (que depende del sistema de la máquina).

Existen lenguajes del tipo script que son directamente ejecutados por un intérprete y no necesitan compilación.

Los lenguajes de programación pueden clasificarse según el paradigma que usan en: procedimentales, orientados a objetos, funcionales, lógicos, híbridos, etc., clasificación que depende de motivos que escapan al alcance de este artículo.

Son ejemplos de lenguajes de programación: php, prolog, asp, actionscript, ada, python, pascal, c, basic, java, etc. 

CARACTERÍSTICAS : 

  • Abstracción: Cada objeto en el sistema sirve como modelo de un “agente” abstracto que puede realizar trabajo, informar y cambiar su estado, y “comunicarse” con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.
  • Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.
  • Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.
  • Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en “tiempo de ejecución”, esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en “tiempo de compilación”) de polimorfismo, tales como las plantillas y lasobrecarga de operadores de C++.
  • Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementar su comportamiento. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple; esta característica no está soportada por algunos lenguajes (como Java)

HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN

La historia de los lenguajes de programación comienza según la mayoría de los autores cuando Charles Babbage inventó su computadora en el año 1822. El necesito un lenguaje para poder comunicarse con esta máquina. Estos primeros lenguajes de programación estaban muy unidos a la computadora y fueron creados para cada una de ellas. Este lenguaje era muy rudimentario y consistía en la programación de los diferentes cambios de engranajes que ejecutaban los cálculos.
Mas adelante en el año 1942 se construyó la ENIAC, computadora que se programaba ya con interruptores y era preciso reescribir el sistema entero para cada nuevo programa. Era un lenguaje de programación muy tedioso.
A continuación la Historia de los lenguajes de programación nos lleva a Von Neumann, que en el año 1945 desarrollo una nueva técnica que establecía que las instrucciones complejas se deben utilizar para controlar el hardware simple, permitiendo que se pudiese reprogramar más rápidamente (la técnica del compartir-programa).
La historia de los lenguajes de programación da un gran paso en el año 1957, cuando aparece el primero de los lenguajes de programación más importantes, el FORTRAN (del inglés Formula Translation). Este fue el primero de los lenguajes de programación de alto nivel. En el año 1958 se creo el lenguaje de programación LISP o proceso de lista que fue diseñado para la investigación la inteligencia artificial.
Otro lenguaje de programación importante fue el PASCAL, que apareció en el año 1968. Este lenguaje de programación se uso como uno de los mejores lenguajes para enseñar programación a los alumnos.

HISTORIA DE VISUAL C#:
Este Lenguaje, desarrollado por Microsoft por un equipo dirigido por Andres Helsberj y Scott Wiltamuth, se diseño en específico para la plataforma .Net como un lenguaje que permitiera a los programadores migrar con facilidad hacia .Net. Tiene sus raíces en Java, C y C++; adapta las mejores características de cada uno de estos lenguajes y agrega características propias. C# está orientado a objetos y contiene una poderosa bibiloteca de clases (FCL por sus siglas en Ingles; FrameWork Class Library), mejor conocida como Biblioteca de Clases de Framework, que consta de componentes preconstruidos que permiten a los programadores desarrollar aplicaciones con rapidez, además este lenguaje es apropiado para desarrollar apliaciones de escritorio (Windows Forms), asi como Smart Clients, Aplicaciones Web (ASP .Net), Aplicaciones Móviles, entre otras.

C# es un lenguaje de programación visual controlado por eventos, en el cual se crean programas mediante el uso de un Entorno de Desarrollo Integrado (IDE Por sus siglas en Inglés; Integrated Development Environment). Con un IDE un programador puede crear, ejecutar, probar y depurar programas en C#, con lo cual se reduce el tiempo requerido para producir  un programa funcional en una fracción del tiempo que llevaría sin utilizar el IDE. La plataforma .Net permite la interoperabilidad de los lenguajes: los componentes de software de distintos lenguajes pueden interactuar  como nunca antes se habia hecho. Los desarrolladores pueden empaquetar incluso hasta el software antiguo para que trabaje con nuevos programas en C#. Además, las aplicaciones en C# pueden  interactuar a través de Internet mediante el uso de estándares industriales de comunicación como XML (eXtensible Markup Language) o el SOAP (Simple Object Access Protocol).

El lenguaje de programación C# original se estandarizó através de la Ecma International  En Diciembre del 2002 como Estándar ECMA-334: Especificación del Lenguaje C#  Desde entonces, Microsoft propuso varias extensiones del lenguaje que se han adoptado comparte del estándar Ecma C# revisado. Microsoft hace referencia al lenguaje C# completo (incluyendo las extensiones adoptadas) como C# 2.0



LENGUAJE MAQUINA :
Primer Lenguaje de Programación, el único que entiende directamente la computadora: utiliza el alfabeto binario formado por los símbolos 0 y 1 (apagado / encendido). Son realmente difíciles de aprender y de manejar, ya que no resultan nada cercanos al ser humano, pero son muy rápidos, ya que se ahorra mucho tiempo en la respuesta, puesto que se evitan las traducciones intermedias. A este lenguaje también se le considera un Lenguaje de Bajo nivel.
Una serie de lenguaje maquina son:
0010 0000 0000 1001
1001 0001 1001 1110

como se puede observar, estas instrucciones serán fáciles de leer por la computadora y difíciles por un programador, y viceversa. Esta razón hace difícil de escribir programas en código o lenguaje maquina y requiere buscar otro lenguaje para comunicarse con la computadora, pero que sea más fácil de escribir y leer por el programador.
Para evitar la tediosa tarea de escribir programas en lenguaje máquina se han diseñado otros lenguajes de programación que facilitan la escritura y posterior ejecución de los programas.
LENGUAJE DE BAJO NIVEL (ENSAMBLADOR).

Surge con la evolución del Lenguaje Maquina, sustituye las cadenas de símbolos binarios por nemotécnicos: ADD, SUB, DIV.
Dependen de las características de cada maquina y sólo son comprensibles por especialistas. Aparecieron durante la primera generación de computadoras.
0110 1001 1010 1011
ADD M, N, P
ADD suma DIV dividir
SUB resta LDA cargar acumulador
MPY multiplicar STO..almacenar
Una instrucción típica en ensamblador puede ser:
ADD x, y, z
Esta instrucción significa que se debe sumar los números almacenados en las direcciones x, y, y almacenar el resultado en la dirección z. El programa ensamblador traducirá.
Programa en código maquina programa en ensamblador
Después que un programa ha sido escrito en lenguaje ensamblador se necesita un programa -llamado ensamblador- que lo traduzca a código máquina.
LENGUAJE DE ALTO NIVEL.
Son desarrollados para el usuario de la computadora, permiten que los procedimientos se expresen con un estilo comprensible; sin embargo, la computadora no los entiende directamente. Algunos de estos lenguajes fueron desarrollados durante la Segunda Generación de computadoras y la mayoría durante la Tercera Generación, por ejemplo: Pascal, BASIC, Ada, FORTRAN, etc.
Usan traductores (compiladores o interpretes), son independientes de la máquina, las instrucciones no dependen del diseño de la maquina, los programas son portables o transportables, pueden ejecutarse en diferentes máquinas.
Por ejemplo, las líneas siguientes son: una línea de un programa en Turbo Pascal y su línea equivalente en pseudo código.
IF (x=y) AND (z=w) THEN WRITE (`esto es una prueba');
si (x=y) y (z=w) entonces ESCRIBIR (`esto es una prueba');
Estas líneas se pueden comprender fácilmente conociendo la traducción de las palabras inglesas IF(si), THEN (entonces), WRITE(escribir / imprimir), AND(y) y sin necesidad de mucha explicación.
Es posible escribir también operaciones como:
Z := x + y la suma x + y se asigna a la variable z.

COMPILADORES E INTERPRETES:
El código generado a través de los Lenguajes de Programación (Código Fuente) debe ser convertido en una aplicación que pueda ser ejecutada y utilizada. Los compiladores e interpretes son una especie de traductores o conversores del lenguaje de programación (comprensible para el ser humano) a un lenguaje comprensible por la computadora (cercano a la maquina).
TIPOS DE PROGRAMA:
Una vez escrito un programa éste puede estar en código fuente, código objeto o código ejecutable.
  • Código Fuente: recibe este nombre el conjunto de instrucciones tal y como fueron escritos por el programador en el lenguaje de alto nivel (también se le conoce como programa fuente).
  • Código Objeto: son las instrucciones de un programa cuando ya han sido traducidas al lenguaje máquina (también se le conoce como programa objeto).
  • Código Ejecutable: es un código objeto que puede ser ejecutado por la computadora de inmediato (no todos los códigos objeto son ejecutables).

LOS INTERPRETES:
Traduce a lenguaje máquina, cada línea del programa fuente y la ejecuta de inmediato.
Traducen en Lenguaje de Alto Nivel a Lenguaje Maquina, se encargan de traducir cada instrucción, una por una (o cada línea de instrucciones) contenida en un programa escrito en cualquier lenguaje de alto nivel a instrucciones en código binario, comprensible por las computadoras.
Los interpretes no producen código objeto, por ello la ejecución de un programa requiere forzosamente del código fuente. Además, los programas en lenguaje interpretado se ejecutan con mas lentitud que aquellos en lenguaje compilado.
LOS COMPILADORES:
A diferencia de los intérpretes que traducen instrucción por instrucción o línea por línea, los compiladores traducen todo el programa entero y luego lo integran generando un programa ejecutable por si solo. Con esto se consigue mas eficacia e independencia , ya que una vez compilado el programa, el compilador no tiene por qué estar presente, pudiendo ser transportado el programa ejecutable a cualquier computadora, sin ver el listado de ordenes, ni manejar el compilador.
El compilador es un lenguaje especial que traduce a un programa fuente (escrito en lenguaje de alto nivel) a un código objeto.
El código o programa fuente es el conjunto de instrucciones en lenguaje de alto nivel.
Un compilador analiza las líneas del programa e identifica ciertas estructuras para traducirlas adecuadamente a lenguaje maquina. Una vez que se ha efectuado la compilación puede prescindirse del programa fuente.
El proceso de compilación del Programa Fuente se verifica en cuatro etapas:
  • Análisis de léxico: durante esta etapa se verifica que las palabras utilizadas en el programa fuente pertenezcan al lenguaje.
  • Análisis de sintaxis: esta parte de la compilación examina cada instrucción del programa fuente para que las instrucciones estén organizadas correctamente.
  • Generación de código intermedio: este produce un código simbólico que permitirá efectuar la equivalencia con el lenguaje maquina.
  • Generación de código maquina: en esta ultima etapa se elabora el programa objeto.
El código o programa objeto son las instrucciones de un programa que ya han sido traducidas a lenguaje maquina.
El código ejecutable es un código objeto que puede ser ejecutado por la computadora de inmediato.
A modo de resumen podemos decir que los compiladores producen programas que, una vez depurados y puestos a punto, son ejecutables directamente y los intérpretes, aunque tienen unas necesidades menores de memoria a la hora de traducir los programas fuente, nos hipotecan para siempre en cuanto al tiempo de ejecución de los programas.
Existen en el mercado compiladores para todos los lenguajes de alto nivel; los intérpretes en cambio sólo se han desarrollado para algunos lenguajes de programación siendo los más conocidos los de BASIC.


No hay comentarios:

Publicar un comentario