Está en la página 1de 15

GENERACION DE COMPUTADORAS.

Historia En 1928 la empresa Fairchild y Texas Instruments produjeron los primeros circuitos integrados basados en semiconductores. Las primeras computadoras, incluyeron a la ENIAC, el Electronic Numerical Integrator and Computer, que en 1943 comenzaron a construir John W. Mauchly y John P. Eckert en la universidad de Pensilvania (EE.UU.). Esta enorme mquina meda ms de 30 metros de largo y pesaba 32 toneladas, estaba compuesta por 17.468 vlvulas. El calor de las vlvulas elevaba la temperatura de la sala donde se hallaba instalada hasta los 50 C. y para que llevase a cabo las operaciones para las que se haba diseado. Cuando la ENIAC se termin en 1946, la II Guerra Mundial ya haba terminado. El fin de la contienda hizo que los esfuerzos hasta entonces dedicados principalmente a objetivos militares, se destinaran tambin a otro tipo de investigacin cientfica ms relacionada con las necesidades de la empresa privada. Los esfuerzos mltiples dieron resultados en 1945 Mauchly y Eckert comenzaron a trabajar en una sucesora de la ENIAC, el EDVAC (Electronic Discrete Variable Automatic Computer) y Aiken inici el diseo de la Mark II. En 1951, el que est considerado como la primera computadora que se llamo saly ampliamente comercializada, la UNIVAC I, comenz a funcionar con xito. En 1952 la computadora UNIVAC se utiliz para realizar el recuento de votos en las elecciones presidenciales de EE.UU. El resultado victoria (Eisenhower sobre Adlai Stevenson) se conoci 45 minutos despus de que se cerraran los colegios electorales. En 1952 entra en funcionamiento la primera de las llamadas IAS machines, diseadas por John von Neumann y que incorporaban notables mejoras respecto a sus predecesoras y en 1962, Steven Russell cre el primer juego para computadoras, Spacewar. Primera Generacin (1940 - 1954) En esta poca las computadoras funcionaban con vlvulas, usaban tarjetas perforadas para entrar los datos y los programas, utilizaban cilindros magnticos para almacenar informacin e instrucciones internas y se utilizaban exclusivamente en el mbito cientfico o militar. La programacin implicaba la modificacin directa de los cartuchos y eran sumamente grandes, utilizaban gran cantidad de electricidad, generaban gran cantidad de calor y eran sumamente lentas. La comunicacin es breve. Segunda Generacin (1955 - 1963) Caractersticas de est generacin: Usaban transistores para procesar informacin. Los transistores eran ms rpidos, pequeos y ms confiables que los tubos al vaco. 200 transistores podan acomodarse en la misma cantidad de espacio que un tubo al vaco. Usaban pequeos anillos magnticos para almacenar informacin e instrucciones. Producian gran cantidad de calor y eran sumamente lentas. Se mejoraron los programas de computadoras que fueron desarrollados durante la primera generacin. Se desarrollaron nuevos lenguajes de programacin como COBOL y FORTRAN, los cuales eran comercialmente accesibles. Se usaban en

aplicaciones de sistemas de reservaciones de lneas areas, control del trfico areo y simulaciones de propsito general. La marina de los Estados Unidos desarrolla el primer simulador de vuelo, "Whirlwind I". Surgieron las minicomputadoras y los terminales a distancia. Se comenz a disminuir el tamao de las computadoras. Aparecen muchas compaas y las computadoras eran bastante avanzadas para su poca como la serie 5000 de Burroughs y la ATLAS de la Universidad de Manchester. Algunas computadoras se programaban con cinta perforadas y otras por medio de cableado en un tablero. Tercera Generacin (1964 - 1970) Comienza a utilizarse los circuitos integrados, lo cual permiti abaratar costos al tiempo que se aumentaba la capacidad de procesamiento y se reduca el tamao de las mquinas. La tercera generacin de computadoras emergi con el desarrollo de circuitos integrados (pastillas de silicio) en las que se colocan miles de componentes electrnicos en una integracin en miniatura. El PDP-8 de la Digital Equipment Corporation fue el primer miniordenador. Cuarta Generacin (1971 - 1983) Fase caracterizada por la integracin de los componentes electrnicos, lo que propici la aparicin del microprocesador, es decir, un nico circuito integrado en el que se renen los elementos bsicos de la mquina. Se desarroll el microprocesador. Se colocan ms circuitos dentro de un "chip". "LSI - Large Scale Integration circuit". "VLSI - Very Large Scale Integration circuit". Cada "chip" puede hacer diferentes tareas. Un "chip" sencillo actualmente contiene la unidad de control y la unidad de aritmtica/lgica. El tercer componente, la memoria primaria, es operado por otros "chips". Se reemplaza la memoria de anillos magnticos por la memoria de "chips" de silicio. Se desarrollan las microcomputadoras, o sea, computadoras personales o PC. Se desarrollan las supercomputadoras Caractersticas de est generacin: Se desarrollaron circuitos integrados para procesar informacin. Se desarrollaron los "chips" para almacenar y procesar la informacin. Un "chip" es una pieza de silicio que contiene los componentes electrnicos en miniatura llamados semiconductores. Los circuitos integrados recuerdan los datos, ya que almacenan la informacin como cargas elctricas. Surge la multiprogramacin. Las computadoras pueden llevar a cabo ambas tareas de procesamiento o anlisis matemticos. Emerge la industria del "software". Se desarrollan las minicomputadoras IBM 360 y DEC PDP-1. Otra vez las computadoras se tornan ms pequeas, ms ligeras y ms eficientes. Consuman menos electricidad, por lo tanto, generaban menos calor. Quinta Generacin (1984 - 1989) Surge la PC tal cual como la conocemos en la actualidad. IBM presenta su primera computadora personal y revoluciona el sector informativo.En vista de la acelerada marcha de la microelectrnica, la sociedad industrial se ha dado a la tarea de poner

tambin a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. En la quinta generacin se emplearon sistemas de complejidad interior y compatibilidad con equipo mayor. Sexta Generacin (1990 - presente) Como supuestamente la sexta generacin de computadoras est en marcha desde principios de los aos noventas, debemos por lo menos, esbozar las caractersticas que deben tener las computadoras de esta generacin. Tambin se mencionan algunos de los avances tecnolgicos de la ltima dcada del siglo XX y lo que se espera lograr en el siglo XXI. Las computadoras de esta generacin cuentan con arquitecturas combinadas Paralelo / Vectorial, con cientos de microprocesadores vectoriales trabajando al mismo tiempo; se han creado computadoras capaces de realizar ms de un milln de millones de operaciones aritmticas de punto flotante por segundo (teraflops); las redes de rea mundial (Wide Area Network, WAN) seguirn creciendo desorbitadamente utilizando medios de comunicacin a travs de fibras pticas y satlites, con anchos de banda impresionantes. Las tecnologas de esta generacin ya han sido desarrolla das o estn en ese proceso. Algunas de ellas son: inteligencia / artificial distribuida; teora del caos, sistemas difusos, holografa, transistores pticos, etctera. Computadoras personales La historia de las computadoras personales se remonta a algunas dcadas mas atrs y normalmente suele indicarse 1976 como el ao de partida. John von Neumann que adems de cmo consultor en el diseo de la ENIAC, colabor en la fabricacin de la bomba atmica durante la II Guerra Mundial recibiendo un premio de manos del presidente Eisenhower. La IBM PC fue la primera computadora personal de IBM. Se basaba en el procesador Intel 8086 de 16 bits a 4,7 MHz Y lleg a ser una computadora muy popular. Su precio era de 3285 dlares de la poca. Hoy una computadora con infinitas prestaciones cuesta 10 veces menos.

DIAGRAMA DE FLUJO.
El diagrama de flujo o diagrama de actividades es la representacin grfica del algoritmo o proceso. Se utiliza en disciplinas como programacin, economa, procesos industriales y psicologa cognitiva. En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa los flujos de trabajo paso a paso de negocio y operacionales de los componentes en un sistema. Un diagrama de actividades muestra el flujo de control general. En SysML el diagrama de actividades ha sido extendido para indicar flujos entre pasos que mueven elementos fsicos (e.g., gasolina) o energa (e.g., presin). Los cambios adicionales permiten al diagrama soportar mejor flujos de comportamiento y datos continuos.

Estos diagramas utilizan smbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecucin mediante flechas que conectan los puntos de inicio y de fin de proceso.

Diagrama de flujo

Diagrama de flujo sencillo con los pasos a seguir si una lmpara no funciona.

Diagrama de actividades para un loop (bucle).

Caractersticas Un diagrama de flujo siempre tiene un nico punto de inicio y un nico punto de trmino. Las siguientes son acciones previas a la realizacin del diagrama de flujo:

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o responsable del proceso, los autores o

responsables del proceso anterior y posterior y de otros procesos interrelacionados, as como las terceras partes interesadas. Definir qu se espera obtener del diagrama de flujo. Identificar quin lo emplear y cmo. Establecer el nivel de detalle requerido. Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

Establecer el alcance del proceso a describir. De esta manera quedar fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente. Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso a describir y su orden cronolgico. Si el nivel de detalle definido incluye actividades menores, listarlas tambin. Identificar y listar los puntos de decisin. Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes smbolos. Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso elegido.

Descripcin En UML 1.x, un diagrama de actividades es una variacin del diagrama de estado UML donde los "estados" representan operaciones, y las transiciones representan las actividades que ocurren cuando la operacin es completa. El diagrama de actividades UML 2.0, mientras que es similar en aspecto al diagrama de actividades UML 1.x, ahora tiene semnticas basadas en redes de Petri. En UML 2.0, el diagrama general de interaccin est basado en el diagrama de actividades. El diagrama de actividad es una forma especial de diagrama de estado usado para modelar una secuencia de acciones y condiciones tomadas dentro de un proceso. La especificacin del Lenguaje de Modelado Unificado (UML) define un diagrama de actividad como: una variacin de una mquina estados, lo cual los estados representan el rendimiento de las acciones o subactividades y las transiciones se provocan por la realizacin de las acciones o subactividades.1 El propsito del diagrama de actividad es modelar un proceso de flujo de trabajo (workflow) y/o modelar operaciones. Una Operacin es un servicio proporcionado por un objeto, que est disponible a travs de una interfaz. Una Interfaz es un grupo de operaciones relacionadas con la semntica. Tipos de diagramas de flujo

Formato vertical: En l, el flujo o la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la informacin que se considere necesaria, segn su propsito. Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda a derecha. Formato panormico: El proceso entero est representado en una sola carta y puede apreciarse de una sola mirada mucho ms rpido que leyendo el texto, lo que facilita su comprensin, an para personas no familiarizadas. Registra no solo en lnea vertical, sino tambin horizontal, distintas acciones simultneas y la participacin de ms de un puesto o departamento que el formato vertical no registra. Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre el plano arquitectnico del rea de trabajo. El primero de los flujogramas es eminentemente descriptivo, mientras que los utilizados son fundamentalmente representativos.

Simbologa y significado

valo o Elipse: Inicio y trmino (Abre y/o cierra el diagrama). Rectngulo: Actividad (Representa la ejecucin de una o ms actividades o procedimientos). Rombo: Decisin (Formula una pregunta o cuestin). Crculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento). Tringulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente). Tringulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

Cursograma Se trata de la ms comn y prctica entre todas las clases de flujogramas. Describe el flujo de informacin en un ente u organizacin, sus procesos, sistemas administrativos y de control. Permite la impresin visual de los procedimientos y una clara y lgica interpretacin.

Cuadrado: Proceso de control. Lnea ininterrumpida: Flujo de informacin va formulario o documentacin en soporte de papel escrito. Lnea interrumpida: Flujo de informacin va formulario digital. Rectngulo: Formulario o documentacin. Se grafica con un doble de ancho que su altura. Rectngulo Pequeo: Valor o medio de pago (cheque, pagar, etctera). Se grafica con un cudruple de ancho que su altura, siendo su ancho igual al de los formularios. Tringulo (base inferior): Archivo definitivo. Tringulo Invertido (base superior): Archivo Transitorio. Semi-valo: Demora. Rombo: Divisin entre opciones. Trapezoide: Carga de datos al sistema.

Elipsoide: Acceso por pantalla. Hexgono: Proceso no representado. Pentgono: Conector. Cruz de Diagonales: Destruccin de Formularios.

Segn la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha.

ALGORITMO.
En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del griego y latn, dixit algorithmus y este a su vez del matemtico persa Al-Juarismi1 ) es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solucin. Los algoritmos son el objeto de estudio de la algoritmia. En la vida cotidiana, se emplean algoritmos frecuentemente para resolver problemas. Algunos ejemplos son los manuales de usuario, que muestran algoritmos para usar un aparato, o las instrucciones que recibe un trabajador por parte de su patrn. Algunos ejemplos en matemtica son el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para obtener el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un sistema lineal de ecuaciones. Definicin formal En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo. Muchos autores los sealan como listas de instrucciones para resolver un problema abstracto, es decir, que un nmero finito de pasos convierten los datos de un problema (entrada) en una solucin (salida).1 2 3 4 5 6 Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versin modificada de la criba de Eratstenes que nunca termine de calcular nmeros primos no deja de ser un algoritmo.7 A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos matemticos como mquinas de Turing entre otros.8 9 Sin embargo, estos modelos estn sujetos a un tipo particular de datos como son nmeros, smbolos o grficas mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de datos.3 1 En general, la parte comn en todas las definiciones se puede resumir en las siguientes tres propiedades siempre y cuando no consideremos algoritmos paralelos:7 Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso, definiendo as una secuencia de estados "computacionales" por cada

entrada vlida (la entrada son los datos que se le suministran al algoritmo antes de comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de primer orden y cada algoritmo es independiente de su implementacin (los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploracin acotada. La transicin de un estado al siguiente queda completamente determinada por una descripcin fija y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y limitada de trminos del estado actual. En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso. Esta amplia definicin abarca tanto a algoritmos prcticos como aquellos que solo funcionan en teora, por ejemplo el mtodo de Newton y la eliminacin de Gauss-Jordan funcionan, al menos en principio, con nmeros de precisin infinita; sin embargo no es posible programar la precisin infinita en una computadora, y no por ello dejan de ser algoritmos.10 En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis de Church-Turing de que toda funcin calculable se puede programar en una mquina de Turing (o equivalentemente, en un lenguaje de programacin suficientemente general):10 Aritmetizabilidad. Solamente operaciones innegablemente calculables estn disponibles en el paso inicial. Medios de expresin de un algoritmo Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, diagramas de flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin especfico. La descripcin de un algoritmo usualmente se hace en tres niveles: 1. Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2. Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran la solucin. 3. Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin especfico o algn objeto capaz de llevar a cabo instrucciones. Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un anlisis de complejidad o ambos.

LENGUAJE DE PROGRAMACION.
Un lenguaje de programacin es un idioma artificial diseado para expresar procesos que pueden ser llevadas 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 y se mantiene el cdigo fuente de un programa informtico se le llama programacin. Tambin la palabra programacin se define como el proceso de creacin de un programa de computadora, mediante la aplicacin de procedimientos lgicos, a travs de los siguientes pasos:

El desarrollo lgico del programa para resolver un problema en particular. Escritura de la lgica del programa empleando un lenguaje de programacin especfico (codificacin del programa). Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina. Prueba y depuracin del programa. Desarrollo de la documentacin.

Existe un error comn que trata por sinnimos los trminos 'lenguaje de programacin' y 'lenguaje informtico'. Los lenguajes informticos engloban a los lenguajes de programacin y a otros ms, como por ejemplo HTML (lenguaje para el marcado de pginas web que no es propiamente un lenguaje de programacin, sino un conjunto de instrucciones que permiten disear el contenido de los documentos). Permite especificar de manera precisa sobre qu datos debe operar una computadora, cmo deben ser almacenados o transmitidos y qu acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al lenguaje humano o natural. Una caracterstica relevante de los lenguajes de programacin es precisamente que ms de un programador pueda usar un conjunto comn de instrucciones que sean comprendidas entre ellos para realizar la construccin de un programa de forma colaborativa. Elementos Variables y Vectores Las variables podran calificarse como contenedores de datos y por ello se diferencian segn el tipo de dato que son capaces 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 contra en

otros lenguajes como PHP, este tipo de especificacin de variables no es necesario. Adems tambin 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 una variable contenedor. A continuacin aadimos 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. -Variables del tipo Boolean: Solo pueden contener un 0 o un 1. El cero es considerado para muchos lenguajes como el literal "False" mientras que el 1 se considera "True". Condicionantes Los condicionantes son estructuras de cdigo que indican que para que cierta parte del programa se ejecute, deben cumplirse ciertas premisas, como por ejemplo, que dos valores sean iguales, que un valor exista, que un valor sea mayor que otro y similares. Estos condicionantes por lo general solo se ejecutan una vez a lo largo del programa. Los condicionantes ms conocidos y empleados en programacin son:

If: Indica una condicin para que se ejecute una parte del programa. Else if: Siempre va precedido de un "If" e indica una condicin para que se ejecute una parte del programa siempre que no cumpla la condicin del if previo y si se cumpla con la que el "else if" especifique. Else: Siempre precedido de "If" y en ocasiones de "Else If". Indica que debe ejecutarse cuando no se cumplan las condiciones prvias.

Bucles Los bucles son parientes cercanos de los condicionantes, pero ejecutan constantemente un cdigo mientras se cumpla una determinada condicin. Los ms frecuentes son:

For: Ejecuta un cdigo mientras una variable se encuentre entre 2 determinados parmetros. While: Ejecuta un cdigo mientras se cumpla la condicin que solicita.

Hay que decir que a pesar de que existan distintos tipos de bucles, ambos son capaces de realizar exactamente las mismas funciones. El empleo de uno u otro depende, por lo general, del gusto del programador. Funciones Las funciones se crearon para evitar tener que repetir constantemente fragmentos de cdigo. Una funcin podra considerarse como una variable que encierra cdigo dentro de si. Por lo tanto cuando accedemos a dicha variable (la funcin) en realidad lo que estamos es diciendo al programa que ejecute un determinado cdigo predefinido anteriormente. Todos los lenguajes de programacin tienen algunos elementos de formacin primitivos para la descripcin de los datos y de los procesos o transformaciones aplicadas a estos datos (tal como la suma de dos nmeros o la seleccin de un elemento que forma parte de una coleccin). Estos elementos primitivos son definidos por reglas sintcticas y semnticas que describen su estructura y significado respectivamente.

A la forma visible de un lenguaje de programacin se le conoce como sintaxis. La mayora de los lenguajes de programacin son puramente textuales, es decir, utilizan secuencias de texto que incluyen palabras, nmeros y puntuacin, de manera similar a los lenguajes naturales escritos. Por otra parte, hay algunos lenguajes de programacin que son ms grficos en su naturaleza, utilizando relaciones visuales entre smbolos para especificar un programa. La sintaxis de un lenguaje de programacin describe las combinaciones posibles de los smbolos que forman un programa sintcticamente correcto. El significado que se le da a una combinacin de smbolos es manejado por su semntica (ya sea formal o como parte del cdigo duro de la referencia de implementacin). Dado que la mayora de los lenguajes son textuales, este artculo trata de la sintaxis textual. La sintaxis de los lenguajes de programacin es definida generalmente utilizando una combinacin de expresiones regulares (para la estructura lxica) y la Notacin de Backus-Naur (para la estructura gramtica). ESTE ES UN EJEMPLO

COMPILADORES.
Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este proceso de traduccin se conoce como compilacin.1 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 como piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora. Partes de un compilador La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto.

Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e incluye las fases correspondientes al Anlisis Lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis Sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y Anlisis Semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico). Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible).

Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar en Front-end y Back-end:

Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio. Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End.

Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de varios lenguajes de programacin distintos y que el mismo Front End que sirve para analizar el cdigo fuente de un lenguaje de programacin concreto sirva para generar cdigo mquina en varias plataformas distintas. Suele incluir la generacin y optimizacin del cdigo dependiente de la mquina. El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker) Proceso de compilacin Es el proceso por el cual se traducen las instrucciones escritas en un determinado lenguaje de programacin a lenguaje mquina. Adems de un traductor, se pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa fuente se puede dividir en mdulos almacenados en archivos distintos. La tarea de reunir el programa fuente a menudo se confa a un programa distinto, llamado preprocesador. El preprocesador tambin puede expandir abreviaturas, llamadas a macros, a proposiciones del lenguaje fuente. Normalmente la creacin de un programa ejecutable (un tpico.exe para Microsoft Windows o DOS) conlleva dos pasos. El primer paso se llama compilacin (propiamente dicho) y traduce el cdigo fuente escrito en un lenguaje de programacin almacenado en un archivo a cdigo en bajo nivel (normalmente en cdigo objeto, no directamente a lenguaje mquina). El segundo paso se llama enlazado en el cual se enlaza el cdigo de bajo nivel generado de todos los ficheros y subprogramas que se han mandado compilar y se aade el cdigo de las funciones que hay en las bibliotecas del compilador para que el ejecutable pueda comunicarse directamente con el sistema operativo, traduciendo as finalmente el cdigo objeto a cdigo mquina, y generando un mdulo ejecutable. Estos dos pasos se pueden hacer por separado, almacenando el resultado de la fase de compilacin en archivos objetos (un tpico.obj para Microsoft Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear directamente el ejecutable; con lo que la fase de compilacin se almacena slo temporalmente. Un programa podra tener partes escritas en varios lenguajes (por ejemplo C, C++ y Asm), que se podran compilar de forma independiente y luego enlazar juntas para formar un nico mdulo ejecutable.

TIPOS DE SOFTWARE.
El trmino software (partes suaves o blandas en castellano) hace alusin a la sumatoria de aquellas reglas, programas, datos, documentacin e instrucciones que permiten la ejecucin de mltiples tareas en un ordenador. Es su parte lgica e intangible y acta como nexo entre el usuario y el hardware (partes duras), es decir, la parte tangible de la computadora. A grandes rasgos, se puede decir que existen tres tipos de software: Software de Aplicacin: aqu se incluyen todos aquellos programas que permiten al usuario realizar una o varias tareas especficas. Aqu se encuentran aquellos programas que los individuos usan de manera cotidiana como: procesadores de texto, hojas de clculo, editores, telecomunicaciones, software de clculo numrico y simblico, videojuegos, entre otros.

Software de Programacin: son aquellas herramientas que un programador utiliza para poder desarrollar programas informticos. Para esto, el programador se vale de distintos lenguajes de programacin. Como ejemplo se pueden tomar compiladores, programas de diseo asistido por computador, paquetes integrados, editores de texto, enlazadores, depuradores, intrpretes, entre otros. Software de Sistema: es aquel que permite a los usuarios interactuar con el sistema operativo as como tambin controlarlo. Este sistema est compuesto por una serie de programas que tienen como objetivo administrar los recursos del hardware y, al mismo tiempo, le otorgan al usuario una interfaz. El sistema operativo permite facilitar la utilizacin del ordenador a sus usuarios ya que es el que le da la posibilidad de asignar y administrar los recursos del sistema, como ejemplo de esta clase de software se puede mencionar a Windows, Linux y Mac OS X, entre otros. Adems de los sistemas operativos, dentro del software de sistema se ubican las herramientas de diagnstico, los servidores, las utilidades, los controladores de dispositivos y las herramientas de correccin y optimizacin, etctera.

Clasificacin del software Si bien esta distincin es, en cierto modo, arbitraria, y a veces confusa, a los fines prcticos se puede clasificar al software en tres grandes tipos:

Software de sistema: Su objetivo es desvincular adecuadamente al usuario y al programador de los detalles del sistema informtico en particular que se use, aislndolo especialmente del procesamiento referido a las caractersticas internas de: memoria, discos, puertos y dispositivos de comunicaciones, impresoras, pantallas, teclados, etc. El software de sistema le procura al usuario y programador adecuadas interfaces de alto nivel, controladores, herramientas y utilidades de apoyo que permiten el mantenimiento del sistema global. Incluye entre otros:

Sistemas operativos Controladores de dispositivos Herramientas de diagnstico Herramientas de Correccin y Optimizacin Servidores Utilidades Software de programacin: Es el conjunto de herramientas que permiten al programador desarrollar programas informticos, usando diferentes alternativas y lenguajes de programacin, de una manera prctica. Incluyen bsicamente: o Editores de texto o Compiladores o Intrpretes o Enlazadores o Depuradores o Entornos de Desarrollo Integrados (IDE): Agrupan las anteriores herramientas, usualmente en un entorno visual, de forma tal que el programador no necesite introducir mltiples comandos para compilar, interpretar, depurar, etc. Habitualmente cuentan con una avanzada interfaz grfica de usuario (GUI). Software de aplicacin: Es aquel que permite a los usuarios llevar a cabo una o varias tareas especficas, en cualquier campo de actividad susceptible de ser automatizado o asistido, con especial nfasis en los negocios. Incluye entre muchos otros: o Aplicaciones para Control de sistemas y automatizacin industrial o Aplicaciones ofimticas o Software educativo o Software empresarial o Bases de datos o Telecomunicaciones (por ejemplo Internet y toda su estructura lgica) o Videojuegos o Software mdico o Software de clculo Numrico y simblico. o Software de diseo asistido (CAD) o Software de control numrico (CAM)

o o o o o o

También podría gustarte