DEFINE LAS CARACTERSTICAS DE UN LENGUAJE Un lenguaje de programacin es un lenguaje formal diseado para expresar procesos que pueden ser llevados a cabo por mquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento fsico y lgico de una mquina, para expresar algoritmos con precisin, o como modo de comunicacin humana El lenguaje de programacin tiene la capacidad de especificar, de forma precisa, cules son los datos que debe trabajar un equipo informtico, de qu modo deben ser conservados o transferidos dichos datos y qu instrucciones debe poner en marcha la computadora ante ciertas circunstancia. MENCIONA LOS COMPONENTES BSICOS DE UN LENGUAJE Variables y vectores Las variables podran calificarse como contenedores de datos y por ello se diferencian segn el tipo de dato que es capaz de almacenar. En la mayora de lenguajes de programacin se requiere especificar un tipo de variable concreto para guardar un dato concreto. Por ejemplo, en Java, si deseamos guardar una cadena de texto deberemos especificar que la variable es del tipo String. Por otra parte, en lenguajes como el PHP este tipo de especificacin de variables no es necesario. Adems, existen variables compuestas por varias variables llamadas vectores. Un vector no es ms que un conjunto de variables consecutivas en memoria y del mismo tipo guardadas dentro de un variable contenedor. A continuacin, un listado con los tipos de variables y vectores ms comunes: Variables tipo Char: Estas variables contienen un nico carcter, es decir, una letra, un signo o un nmero. Variables tipo Int: Contienen un nmero entero. Variables tipo float: Contienen un nmero decimal. Variables tipo String: Contienen cadenas de texto, o lo que es lo mismo, es un vector con varias variables del tipo Char.
EJEMPLO DE LENGUAJE
CARACTERSTICAS DE UN EDITOR DE TEXTOS Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos nicamente por un texto sin formato, conocidos comnmente como archivos de texto o texto plano. Los editores de texto son incluidos en el sistema operativo o en algn paquete de software instalado y se usan cuando se deben crear o modificar archivos de texto como archivos de configuracin, scripts o el cdigo fuente de algn programa. ACTIVIDAD REALIZADA CON EL EDITOR DE TEXTOS Crear y modificar archivos digitales compuestos nicamente por un texto sin formato, conocidos comnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes ledos segn el cdigo de caracteres que usa el editor. Hoy en da es comnmente de 7- u 8-bits en ASCII o UTF-8, rara vez EBCDIC. RELACIN ENTRE UN EDITOR DE TEXTOS Y LA PROGRAMACIN La programacin informtica, a menudo acortada como programacin, es el proceso de disear, codificar, depurar y mantener el cdigo fuente de programas computacionales. El cdigo fuente es escrito en un lenguaje de programacin. El propsito de la programacin es crear programas que exhiban un comportamiento deseado. El proceso de escribir cdigo requiere frecuentemente conocimientos en varias reas distintas, adems del dominio del lenguaje a utilizar, algoritmos especializados y lgica formal. Programar no involucra necesariamente otras tareas tales como el anlisis y diseo de la aplicacin (pero s el diseo del cdigo), aunque s suelen estar fusionadas en el desarrollo de pequeas aplicaciones. DEFINE UN LENGUAJE DE PROGRAMACIN Un lenguaje de programacin es un lenguaje formal diseado para expresar procesos que pueden ser llevados a cabo por mquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento fsico y lgico de una mquina, para expresar algoritmos con precisin, o como modo de comunicacin humana. 1
Est formado por un conjunto de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el cdigo fuente de un programa informtico se le llama programacin CLASIFICACIN DE LENGUAJES DE PROGRAMACIN Existen diferentes clases o tipos de lenguajes de programacin: 1 El Lenguaje Mquina: es el lenguaje de programacin que entiende directamente la computadora o mquina. Este lenguaje de programacin utiliza el alfabeto binario, es decir, el 0 y el 1. Con estos dos nicos dgitos, conocidos como bits, forma las cadenas binarias (combinaciones de ceros y unos) son con las que se escriben las instrucciones que el microprocesador de la computadora entiende nuestra peticiones. El lenguaje mquina fue el primer lenguaje de programacin. Dejo de usarse por su gran dificultad y por la facilidad para cometer errores. 2 Lenguajes de Programacin de Bajo Nivel: Son mucho ms fciles de utilizar que el lenguaje mquina, pero dependen mucho de la computadora como suceda con el lenguaje mquina. El lenguaje ensamblador fue el primer lenguaje de programacin de bajo nivel que trato de sustituir el lenguaje mquina por otro mucho ms parecido al de los seres humanos. El programa fuente es un conjunto de instrucciones escrito en lenguaje ensamblador, y cuyo objeto es la traduccin a lenguaje mquina del programa fuente. Los lenguajes de este tipo son agiles, difciles de usar, especficos de cada procesador, si nos llevamos el programa a otro computador ser preciso reescribir el programa desde el comienzo. 3 Lenguajes de Programacin de Alto Nivel: Este lenguaje es independientes de la mquina, lo podemos usar en cualquier computador con muy pocas modificaciones o sin ellas, son muy similares al lenguaje humano. Necesitan un programa intrprete o compilador que lo traduzca uno de bajo nivel, como el lenguaje de mquina para que la computadora pueda entenderlo. Este tipo de lenguaje es ms fciles de aprender porque se usan palabras o comandos del lenguaje natural, como por ejemplo: palabras en ingls. Este es el caso del BASIC, el lenguaje de programacin ms conocido. Existen muchos lenguajes de programacin de alto nivel con sus diferentes versiones. Por esta razn es difcil su tipificacin, pero una clasificacin muy extendida desde el punto de vista de su forma de trabajar y la filosofa de su creacin es la siguiente: Lenguajes de programacin imperativos: entre ellos tenemos el Cobol, Pascal, C y Ada. Lenguajes de programacin declarativos: el Lisp y el Prolog. Lenguajes de programacin orientados a objetos: el Smalltalk y el C++. Lenguajes de programacin orientados al problema: son aquellos lenguajes especficos para gestin. Lenguajes de programacin naturales: son los nuevos lenguajes que pretender aproximar el diseo y la construccin de programas al lenguaje de las personas. Otra clasificacin de los lenguajes de programacin de alto nivel, es teniendo en cuenta el desarrollo de las computadoras segn sus diferentes generaciones: Lenguajes de programacin de primera generacin: el lenguaje mquina y el ensamblador. Lenguajes de programacin de segunda generacin: los primeros lenguajes de programacin de alto nivel imperativo (FROTRAN, COBOL). Lenguajes de programacin de tercera generacin: son lenguajes de programacin de alto nivel imperativo pero mucho ms utilizados y vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA). Lenguajes de programacin de cuarta generacin: usados en aplicaciones de gestin y manejo de bases de datos (NATURAL, SQL). Lenguajes de programacin de quinta generacin: creados para la inteligencia artificial y para el procesamiento de lenguajes naturales (LISP, PROLOG). RELACIN ENTRE LOS LENGUAJES DE ALTO NIVEL Y EL CDIGO DE MQUINA Los lenguajes de programacin de computadoras de alto y de bajo nivel estn diseados para permitir la comunicacin entre un humano y una computadora a distintos niveles de abstraccin. Un lenguaje de muy bajo nivel requiere que un humano proporcione instrucciones directamente al hardware de la computadora, usando el lenguaje y la estructura de dicho hardware; en el caso de los lenguajes de alto nivel, los humanos trabajan con herramientas lgicas complejas y abstractas para escribir instrucciones que un programa determinado debe traducir para que la computadora comprenda. Generalmente es ms fcil para los humanos usar estas herramientas. PROCESAMIENTO DE PROGRAMAS La programacin es ms que solamente escribir cdigo. El software tiene su ciclo de vida. Nace, crece, madura y finalmente muere, solamente para ser reemplazado por un producto nuevo. El entendimiento del ciclo de vida de un programa es importante, ya que, como programador, se pasar solamente poco tiempo en escribir cdigo. La mayora de las veces la mayor parte del tiempo se invierte al modificar y revisar cdigo existente. Un cdigo debe ser documentado, se le debe dar mantenimiento, debe ser mejorado y vendido. Los principales pasos que se deben seguir al elaborar un programa son: Requerimientos: Los programas empiezan cuando alguien tiene la idea de hacer algo y comienza a implementarlo. El documento con los requerimientos del sistema describen, en trminos generales, qu es lo que se quiere hacer. Especificacin del programa: La especificacin es una breve descripcin de qu es lo que el programa hace. En un principio, una especificacin preliminar describe qu es lo que va a hacer el programa. Despus, mientras el programa se va refinando, de la misma manera se va refinando la especificacin del mismo. Diseo del cdigo: El programador tiene que llevar a cabo un diseo del cdigo a implementar. En l se deben incluir los algoritmos utilizados, las definiciones de los mdulos a utilizar, archivos utilizados y estructuras de datos usadas en el programa. Es aqu en donde se desarrolla el pseudocdigo del programa. El uso de diagramas de flujo tambin nos permitir obtener una abstraccin sobre el problema, tanto en entradas, salidas, flujo y procesamiento de la informacin. Codificacin: El siguiente paso es empezar a escribir el programa. Este primer paso involucra primero escribir un prototipo y despus irlo puliendo para crear el programa final. Pruebas: El programador debe disear un plan de pruebas para posteriormente utilizarlo para probar su programa. Cuando es posible, debe existir un equipo de pruebas, diferente del equipo de programadores. Debugging: Desafortunadamente, pocos son los programas que funcionan a la primera. Los programas deben ser corregidos y probados nuevamente. Release: El programa es empaquetado, documentado y mandado al mundo a ser usado. Mantenimiento: Los programas rara vez, o nunca son perfectos. Los errores o bugs se encontrarn y necesitarn ser corregidos. Esta etapa es la etapa de mantenimiento de la programacin. Revisin y mejora: Despus de que un programa ha sido usado, los usuarios querrn realizarle algn cambio al funcionamiento del programa, tal como alguna nueva funcionalidad o un cambio DESCRIBE LA COMPILACIN DE UN PROGRAMA Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. TIPOS DE COMPILACIN Esta taxonoma de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categoras: Compiladores cruzados: generan cdigo para un sistema distinto del que estn funcionando. Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original. Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura del cdigo fuente. Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de poder producir el cdigo mquina. Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo segn se necesitan. FASES DE UN COMPILADOR Las fases de un compilador son: Anlisis Lxico: Esta fase se encarga de verificar si todas las cadenas pertenecen o no al lenguaje. Es decir realiza un anlisis smbolo por smbolo indicando el token por cada uno de los elementos reconocidos o el error en caso de no reconocer. Este anlisis no logra detectar muchos errores por su caracterstica. Ejemplo: Total=valor*5 Luego del anlisis lxico: Id = id * nm.
Anlisis Sintctico: En esta fase se analiza la estructura de las expresiones en base a gramticas. Aqu ya se puede determinar si una estructura por ejemplo una expresin matemtica mal formada. El anlisis que se realiza es jerarquice es decir en base a arboles de derivacin que se obtienen de las mismas gramticas. Ejemplo: position:=initial + rate*60
Anlisis Semntico: Este anlisis es ms difcil de formalizar, determina el tipo de los resultados intermedios, comprobar que los argumentos que tienen un operador pertenecen al conjunto de operadores posible, y si son compatibles entre s.
Generacin de Cdigo Intermedio: El cdigo intermedio es una representacin en base a elementos de 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimizacin de cdigo. a=b+c 1: + b c T1 2: = a T1 Optimizacin de Cdigo: Consiste en realizar una mejora en el cdigo intermedio, para reducir el nmero de lneas y hacer que la ejecucin sea ms rpida a=b+c 1: + b c a Generacin de Cdigo: Llegamos a la generacin de cdigo ensamblador o cdigo mquina del procesador que nos interese por ejemplo: a: = b + c LOAD B ADD C STORE A FUNCIONAMIENTO DE UN INTRPRETE El funcionamiento de un intrprete se caracteriza por traducir y ejecutar, de una en una, las instrucciones del cdigo fuente de un programa, pero, sin generar como salida cdigo objeto. El proceso que realiza un intrprete es el siguiente: lee la primera instruccin del cdigo fuente, la traduce a cdigo objeto y la ejecuta; a continuacin, hace lo mismo con la segunda instruccin; y as sucesivamente, hasta llegar a la ltima instruccin del programa, siempre y cuando, no se produzca ningn error que detenga el proceso. ETAPA INICIAL DE UN COMPILADOR El compilador estara dividido en dos secciones, con la representacin intermedia como el medio de comunicacin entre ellas: Esta estructura es importante por la portabilidad del compilador, en la que el compilador est diseado con un enfoque hacia la modificacin, ya sea del cdigo fuente o del cdigo objetivo.