1.1 Revison del modelo de Von Newman
Componentes de una computadora
John Von Newman observo que la torpeza de la aritmetica decimal utilizada en la computadora ENIAC podia remplazarse utilizando la arítmetica binaria. Realizo un diseño básico llamado la máquina de Von Newman y se utilizo en la computadora EDVAC, que fue la primera computadora que almacenaba el programa.
La máquina de Von Newman tenia cinco partes principales las cuales son:
1.- Memoria. Constaba de 4096 palabras cada una de 40 bits, y cada palabra podia contener dos instruccíones de 20 bits cada una o un número entero de 39 bits y su signo que puede ser positivo o negativo.
2.-Unidad de control. Es la que supervisaba la transferencia de información y le indicava a la unidad arítmetica logica cual es la operación que devia ejecutar.
3.-Unidad arítmetica logica. Es aquella que se encarga de realizar las operaciones arítmeticas y logicas necesarias para la ejecución de una instrucción.
4.-Entrada. Es cualquier dispositivo por el que se introduce información a la computadora.
Dispositivos de entrada: Mause, Teclado, Lector de codigo de barras.
5.-Salida. Es cualquier dispositivo que recibe información de la computadora para ser utilizadas por los usuarios en los primeros tiempos de los ordenadores, con sistemas de numeración decímal, una electronica sumamente complicada muy suseptible a fallas y un sistema de programación cableado o medinte fichas, Von Newman propuso dos conseptos básicos que revolucionarian la incipiente informática.
Conseptos básicos que revolucionarian la insipiente informática:
a) La utilizacion del sistema de numeración binaria, simplificada enormemente los problemas de la implementación eléctrica de las operaciones y funciones logicas que se planteanban y a la vez proporcinaban una mayor inmunidad a los fallos eléctricos digitales.
b)Almacenamiento de la secuencia de instrucciones de que consta el programa en una mamoria interna facílmente accesible junto con los datos que hacen referencia, de esta forma la velocidad de proceso experimenta un considerable incremento
Memorias internas:
RAM
ROM
Tomando como modelo las computadoras que aparecieron incorporando las anteriores características el ordenador se puede considerar compuesto por las siguientes partes:
1.-UCP (Unidad Central de Proceso) o CPU
2.-Memoria interna (Memoria RAM)
3.-Unidad de entrada y salida (Dispositivos)
4.-Memoria masiva externa
La tarjeta madre esta constituida por diferentes partes que conforman un CPU completo, en la computadora de Von Newman se encuentra estructurada por un Bus principal que es un conjunto de lineas que enlazan los distintos componentes del ordenador, para realizar la transferencia de datos entre todos sus elementos que la integran. Se distinguen tres tipos de Bus: Bus de datos, Bus de dirección y Bus de control.
Bus de Control: Forman parte de el las lineas que seleccionan desde donde y hacia donde va dirigida la información, támbien las que marcan la secuencia de los pasos a seguir para dicha transferencia.
Bus de Datos: Por él, de forma bidireccional, fluyen los datos entre las distintas partes del ordenador.
Bus de Direcciones: Cosnta de un conjunto de lineas que permiten seleccionar de que posición de la memoria se quiere leer su contenido, tambien direccina los puertos de entrada/salida.
1.2 Del problema al programa cargado
Al cargar los programas en una computadora, la máquina actuar como si recibiera una educación instantánea que le permite saber, pensar y operar todos los programas.
El proceso de reducción de un problema con una computadora conduce a la escritura de un programa y a su ejecución en l misma, aunque el proceso de diseñar programa es estrictamente un proceso creativo, que se puede considerar una serie de faces a pasos que deben seguir los programadores para el diseño de un programa.
Los programas deben seguir una tabla de contenidos que les sirve para solucionar los planteamientos de problemas que se tengan estos son los siguientes:
1.-Definición del problema
2.-Analisís del problema
3.-Selección de la mejor alternativa
4.-Diagramación
5.-Prueva de escritorio
6.-Codigicación
7.-Transcripción
8.-Compilación
9.-Pruebas de computador
10.-Documentación externa
1.3 Lenguajes formales
En matemáticas, lógica y ciencias de la computación, un lenguaje formal es un lenguaje cuyos símbolos y reglas para unir esos símbolos están formalmente especificados, al conjunto de los símbolos se le llama alfabeto del lenguaje y al conjunto de las reglas se le llama la gramática formal, a una cadena de símbolos formada de acuerdo a la gramática se le llama como una fórmula definida por un lenguaje formal que es idéntico al conjunto de todas sus fórmulas.
1.-Alfanúmericos
2.-Númericos
3.-Funciones
Los lenguajes se encuentran constituidos por medio del medio alfabeto utilizando el símbolo
Σ sigma que nos representa todo el conjunto del alfabeto.
Los lenguajes se pueden considerar como un lenguaje finito de lo cual quiere decir que tiene un fin o un límite de de determinados caracteres.
El lenguaje constituido como infinito representa un bucle que no tiene fin, solamente cuando existe un desbordamiento de pila.
Un problema inicial que se nos presenta es como definir con precesión las cadenas que pertenecen a un lenguaje, de aquellas que no pertenecen.
1.4 Editores
Los editores permiten la escritura de una estructura de lenguaje de programación que se desea utilizar y a su vez permitir la traducción de un lenguaje formal. Existe un sin fin de software de propósito general papa efectuar el programa fuente de un lenguaje que se desee utilizar; los editores más conocidos son:
Bloc de Notas, Word pack, Word pack Plus y entre otros software libres.
Dentro de los editores también lo contemplan los mismos lenguajes de programación para escribir el código fuente y poder traducir a un lenguaje que la computadora pueda reconocer y mostrar el resultado ante el usuario.
Los editores que se encuentran integrados en los lenguajes de programación son:
Lenguaje C, Turbo Basic, Iunix, Cobol, C++, Visual Basic entre otros.
1.4.1 Carácter
Estos editores permiten utilizar caracteres de texto, por lo que no se requiere el uso del mouse y se tendrá que teclear cada una de los comandos que se requiera para su ejecución estos editores son los que utilizan el modo consola y podemos mencionar los siguientes:
Cobol, Dibasic, Iunix, Ensamblador y MS DOS.
1.4.2 De línea
Son aquéllos editores que traducen línea por línea y a su vez la ejecución de programa por lo que se muestra el resultado cuando no existen errores de sintaxis; los editores que manejas este tipo de traducción son HTML, Java, Turbo Basic, Dibasic III Plus, RPG y Ensamblador.
1.4.3 De pantalla
Los editores que utilizan la forma de compilar o traducir el código fuente lo primero realizan un chequeo de todas las líneas para certificar que no existan errores de síntesis y posteriormente mostrar el resultado en pantalla. Los más conocidos son: Lenguaje C, Visual Basic, C# todo lo relacionado a Visual Estudio.
1.5 Lenguajes de programación
Son aquellos utilizados para escribir programas de computadoras que puedan ser entendidos por un lenguaje de programación. Los lenguajes permiten obtener resultados de manera lógica en base al tiempo del lenguaje que la computadora pueda utilizar; los cuales podemos mencionar los siguientes: C++, Visual Basic, Java escrip, HTML y entre otros.
1.5.1 Niveles
Los lenguajes de programación se clasifican en tres grandes categorías en nivel bajo, intermedio y alto nivel.
El lenguaje de bajo nivel es conocido como lenguaje máquina y son aquellos que utilizan instrucciones directamente a la computadora por lo que es entendido por UCP y utilizan expresiones de memoria más pequeña conocido como bit que representa 0 o 1.
En la siguiente imagen se mostrara la ejecución de este lenguaje:
Lenguaje intermedio
La programación en lenguaje intermedio es poco complicado en realizar los procesos y a su vez sin instrucciones en código de palabra en ingles; el lenguaje que se encuentra en este nivel se llama lenguaje ensamblador por ejemplo líneas de código es:
ADD-SUMA MPY-MULTPLICICION
SUB-RESTA DIV-DIVISION
MOVE A,B 010100111100
ADD C,A 001001000110
COMP C,P 101000010010
MOVE E,P 010010101111
ADD 100010000101
. .
. .
. .
etc. etc.
Ensamblador Máquina
Lenguajes de alto nivel
Lenguajes de alto niveles lenguajes logran la independencia de tiempo del lenguaje máquina y se aproximan al lenguaje natural.
Los lenguajes de alto nivel también denominados lenguajes evolucionados y tienen los siguientes objetivos:
a) Pueden utilizar un mismo programa en diferentes equipos con la única condición de disponer del programa compilador.
b) El código de programa puede escribirse y leerse de una forma mas cansilla y comprensible
c) Incluye rutinas de entrada/salida ya que contiene funciones especificas incluidas como libreras.
Se puede decir que el principal problema que presentan los lenguajes es la cantidad que actualmente esta existiendo, y podemos mencionar los siguientes:
*Fortran
*Lisp
*Algol
*Cobol
*ASP
*Prolog
*Modula
*Pascal
*Basic
*Ada
*C++
*Visual Basic
*Java
*Php
Los lenguajes utilizan el siguiente es que de compilación:
1.5.2 Tipos (intérprete y compiladores)
Existen dos tipos principales de traductores de los lenguajes de programación de alto nivel: Compilador e intérprete.
Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro lenguaje (por ejemplo, en el lenguaje de máquina). Su acción equivale a la de un traductor humano, que toma un libro y produce otro equivalente escrito en otra lengua.
Existen diversas fases de compilación o también llamadas estepas de la compilación que ilustraran en la siguiente imagen:
*El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un compilador tiene los siguientes pasos:
1.-Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo similar a una máquina de escribir electrónica) y guardarlo en un dispositivo de almacenamiento por ejemplo, un disco.
2.-Introducir el programa fuente en memoria.
3.-Compilar el programa con el compilador.
4.-Verificar y corregir errores de compilación (listado de errores).
5.-Obtención del programa objeto.
6.-El enlazador (liker) obtiene el programa ejecutable.
7.-Se ejecuta el programa y si no existen errores, se tendrá la salida del programa.
8.- Y el proceso de ejecución se ilustra en la siguiente imagen:
1.5.3 Comparación de interprete y Compilador
Interpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios:
· un intérprete facilita la búsqueda de errores, pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables, etc.).
Además, el programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la ejecución.
· un compilador suele generar programas más rápidos y eficientes ya que el análisis del lenguaje fuente se hace una sola vez, durante la generación del programa equivalente. En cambio, un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces).
· un intérprete permite utilizar funciones y operadores más potentes, como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. Usualmente, este tipo de instrucciones es imposible de tratar por medio de compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto, exigen un intérprete, se llaman interpretativos. Los lenguajes compilativos, que permiten el uso de un compilador, prescinden de este tipo de operadores.
Son aquellos utilizados para escribir programas de computadoras que puedan ser entendidos por un lenguaje de programación. Los lenguajes permiten obtener resultados de manera lógica en base al tiempo del lenguaje que la computadora pueda utilizar; los cuales podemos mencionar los siguientes: C++, Visual Basic, Java escrip, HTML y entre otros.