Anda di halaman 1dari 11

IFE-0436 SOFTWARE DE SISTEMAS

LICENCIATURA EN INFORMATICA PLAN 2004

Febrero 2011
Contenido
Unidad I. Introducción........................................................................................................................1
1.1 Revisión de modelo Von Neumann..........................................................................................1
Origen............................................................................................................................................1
Organización..................................................................................................................................2
1.2 Del problema al programa cargado..........................................................................................2
1.3 Lenguajes formales...................................................................................................................4
Ejemplos de lenguajes formales.................................................................................................4
Especificación de lenguajes formales.........................................................................................4
1.4 Editores....................................................................................................................................5
1.4.1 De carácter........................................................................................................................5
1.4.2 De línea.............................................................................................................................5
1.4.3 De pantalla........................................................................................................................5
1.5 Lenguajes de programación.....................................................................................................6
1.5.1 Niveles (bajo, intermedio y alto).......................................................................................6
1.5.2 Tipos (intérpretes y compiladores)....................................................................................8
1.5.3 Comparación entre intérpretes y compiladores................................................................8
Bibliografía.........................................................................................................................................9

Índice de Figuras
Figura 1 Arquitectura de Von Neumann.............................................................................................1
Figura 2 Fases para la creación de un programa................................................................................3
IFE-0436 SOFTWARE DE SISTEMAS

Unidad I. Introducción

(Unidad I – Recopilación de las exposiciones de alumnos de 4° LI generación 2009)

1.1 Revisión de modelo Von Neumann


La arquitectura de von Neumann es una familia de arquitecturas de computadoras que
utilizan el mismo dispositivo de almacenamiento tanto para las instrucciones como para los datos
(a diferencia de la arquitectura Harvard).
La mayoría de computadoras modernas están basadas en esta arquitectura, aunque
pueden incluir otros dispositivos adicionales, (por ejemplo, para gestionar las interrupciones de
dispositivos externos como ratón, teclado, etc).

Figura 1 Arquitectura de Von Neumann

Origen
El nacimiento u origen de la arquitectura Von Neumann surge a raíz de una colaboración
en el proyecto ENIAC del matemático de origen húngaro, John Von Neumann. Este trabajaba en
1945 en el Laboratorio Nacional Los Álamos cuando se encontró con uno de los constructores de

1
IFE-0436 SOFTWARE DE SISTEMAS

la ENIAC. Compañero de Albert Einstein, Kurt Gödel y Alan Turing en Princeton, Von Neumann se
interesó por el problema de la necesidad de recablear la máquina para cada nueva tarea.
En 1949 había encontrado y desarrollado la solución a este problema, consistente en
poner la información sobre las operaciones a realizar en la misma memoria utilizada para los
datos, escribiéndola de la misma forma, es decir en código binario. Su "EDVAC" fue el modelo de
las computadoras de este tipo construidas a continuación. Se habla desde entonces de la
arquitectura de Von Neumann, aunque también diseñó otras formas de construcción. El primer
computador comercial construido en esta forma fue el UNIVAC I, fabricado en 1951 por la Sperry-
Rand Corporation y comprado por la Oficina del Censo de Estados Unidos.

Organización
Los ordenadores con esta arquitectura constan de cinco partes: La unidad aritmético-
lógica o ALU, la unidad de control, la memoria, un dispositivo de entrada/salida y el bus de datos
que proporciona un medio de transporte de los datos entre las distintas partes.
Un ordenador con esta arquitectura realiza o emula los siguientes pasos secuencialmente:
 Enciende el ordenado y obtiene la siguiente instrucción desde la memoria en la dirección
indicada por el contador de programa y la guarda en el registro de instrucción.
 Aumenta el contador de programa en la longitud de la instrucción para apuntar a la
siguiente.
 Decodifica la instrucción mediante la unidad de control. Ésta se encarga de coordinar el
resto de componentes del ordenador para realizar una función determinada.
 Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa,
permitiendo así operaciones repetitivas. El contador puede cambiar también cuando se
cumpla una cierta condición aritmética, haciendo que el ordenador pueda 'tomar
decisiones', que pueden alcanzar cualquier grado de complejidad, mediante la aritmética y
lógica anteriores.
 Vuelve al paso 1.

1.2 Del problema al programa cargado


Generalmente hay varias etapas para llegar desde el código fuente hasta el programa
ejecutable.
Generación del algoritmo. Planteo del problema, desglose en subproblemas y solución de
estos en términos abstractos (pseudocódigo o diagramas de flujo).
Generación del código fuente (pueden ser más de uno para la generación de un único
ejecutable). El programa fuente (o código fuente) es una secuencia de sentencias escritas en la
sintaxis del lenguaje que se ingresan utilizando un editor de textos.
Compilación a objeto. Este paso se lleva a cabo a través del uso de un compilador. Este se
encarga de traducir el programa fuente en códigos que el computador pueda entender
directamente (código de máquina, también llamado código objeto). En esta traducción se
transforman todas sentencias en sintaxis de C a código de máquina, pero las llamadas a funciones

2
IFE-0436 SOFTWARE DE SISTEMAS

externas o de biblioteca no quedan resueltas, por lo que todavía, el código objeto no puede ser
ejecutado.
Ligar las llamadas a funciones no resueltas. Este paso se realiza a través de un ligador
(linker), el que se encarga de: a partir de los códigos objeto y de las bibliotecas de rutinas
(conjunto de códigos objetos de las funciones de biblioteca) generar un módulo ejecutable
directamente por el computador (programa ejecutable).
Dependiendo del entorno de trabajo y de las herramientas de desarrollo que se estén
utilizando para la generación de programas, algunos de los pasos anteriores pueden quedar
ocultos a la vista del desarrollador.

Figura 2 Fases para la creación de un programa

3
IFE-0436 SOFTWARE DE SISTEMAS

1.3 Lenguajes formales


En matemáticas, lógica, y ciencias de la computación, un lenguaje formal es un lenguaje
cuyos símbolos primitivos y reglas para unir esos símbolos están formalmente especificados.1 2 Al
conjunto de los símbolos primitivos se le llama el alfabeto (o vocabulario) del lenguaje, y al
conjunto de las reglas se lo llama la gramática formal (o sintaxis). A una cadena de símbolos
formada de acuerdo a la gramática se la llama una fórmula bien formada (o palabra) del lenguaje.
Estrictamente hablando, un lenguaje formal es idéntico al conjunto de todas sus fórmulas bien
formadas. A diferencia de lo que ocurre con el alfabeto (que debe ser un conjunto finito) y con
cada fórmula bien formada (que debe tener una longitud también finita), un lenguaje formal
puede estar compuesto por un número infinito de fórmulas bien formadas.
Por ejemplo, un alfabeto podría ser el conjunto {a,b}, y una gramática podría definir a las
fórmulas bien formadas como aquellas que tienen el mismo número de símbolos a que b.
Entonces, algunas fórmulas bien formadas del lenguaje serían: ab, ba, abab, ababba, etc.; y el
lenguaje formal sería el conjunto de todas esas fórmulas bien formadas.
Para algunos lenguajes formales existe una semántica formal que puede interpretar y dar
significado a las fórmulas bien formadas del lenguaje. Sin embargo, una semántica formal no es
condición necesaria para definir un lenguaje formal, y eso es una diferencia esencial con los
lenguajes naturales.
En algunos lenguajes formales, la palabra vacía (esto es, la cadena de símbolos de longitud
cero) está permitida, notándose frecuentemente mediante ϵ.

Ejemplos de lenguajes formales


 Un conjunto de todas las palabras sobre {a,b}.
 El conjunto {an : n} es un número primo.
 El conjunto de todos los programas sintácticamente válidos en un determinado lenguaje
de programación.
 El conjunto de todas las fórmulas bien formadas en la lógica de primer orden.

Especificación de lenguajes formales


Los lenguajes formales se pueden especificar de una amplia variedad de formas, como por
ejemplo:
 Cadenas producidas por una gramática formal (véase la jerarquía de Chomsky).
 Cadenas producidas por una expresión regular.
 Cadenas aceptadas por un autómata, tal como una máquina de Turing.

Las cadenas están formadas por un conjunto de símbolos que pertenecen a un mismo
lenguaje, existen dos formas de componer una sentencia o función con los símbolos:
 Sintaxis
 Semántica

4
IFE-0436 SOFTWARE DE SISTEMAS

1.4 Editores
Los editores son aplicaciones de software que permiten a los programadores escribir el
texto de los programas en la computadora. A diferencia de los procesadores de palabras, los
editores no permiten algunas características de formato, es decir, no permiten justificar, centrar
texto, ni tipos de letras ni otras características de formato de texto.

1.4.1 De carácter
Editor de Caracteres Privados
Situación: El uso de logos u otros ítems para ser usados en cualquier documento se puede
volver engorroso con los métodos tradicionales.
Recomendación: Windows XP tiene una característica que permite personalizar logos o
cualquier otro ítem para ser utilizado en cualquier documento. El Editor de Caracteres Privados
(Private Character Editor) se puede acceder en digitando “Eudcedit” sin las comillas en la ruta
Inicio/Ejecutar.
Una vez haya construido y guardado el diseño de su selección, puede accederlo a través
del Mapa de Caracteres, al cual se llega por la ruta Inicio/Todos los programas/Accesorios/Mapa
de caracteres
En el tipo de letra se selecciona Todas las Fuentes (caracteres privados) y aparecerán sus
adiciones. Las podrá copiar y pegar en cualquier documento.

1.4.2 De línea
Esta clase de editores fueron los precursores de los editores de pantalla completa.
Permitían al programador editar una sola línea a la vez. El programador debe especificar qué línea
se debe editar.
Hay aún dos editores de líneas que son populares:
 vi Es una abreviación para visual. vi es un editor basado en UNIX.
 Edlin Es una contracción de Edit lines. Edlin se puede utilizar en una plataforma de MS-
DOS.

1.4.3 De pantalla
Son más fáciles de usar que los editores de líneas, porque los programadores editan
cualquier línea en cualquier momento. Los editores de pantalla completa pueden proporcionar
varias herramientas útiles para los programadores, por ejemplo:
 Menús de cortina. En los editores de pantalla completa pueden haber comandos para
hacer alguna tarea específica, estos comandos suelen ordenarse y agruparse en menús
que se despliegan hacia abajo (como una cortina), de modo que el programador no tiene
que aprenderlos de memoria.
 Integración con compiladores e intérpretes. La integración de los programas compiladores
e intérpretes con editores, ofrece muchas ventajas para los programadores. Esto significa
que el código puede ser escrito, editado, compilado o interpretado, y ejecutado desde el
mismo programa. Esto difiere de los editores de líneas, donde un programa por separado
desarrolla cada función.

5
IFE-0436 SOFTWARE DE SISTEMAS

 Texto coloreado. Algunos editores pueden mostrar palabras específicas en un color


particular para distinguirlas del resto del código. Estas palabras se llaman palabras
reservadas, por ejemplo begin en Pascal. Así mismo, otro texto se puede colorear, por
ejemplo los números, las cadenas de caracteres y los comentarios, frecuentemente se
identifican con otro color.
 Números de línea y de columna. Para los programadores es muy útil saber el número de
línea y de columna en cada momento de la edición, porque cuando el código es revisado
por el compilador, este devuelve una lista de errores (si los hubiera, y frecuentemente los
hay) junto con el número de línea en que se ha detectado.
 Texto autocompletado. Es una característica que permite al programador empezar a
escribir un comando, y el editor "se da cuenta" de qué comando se pretende escribir,
entonces completa el comando y lo muestra marcado. Por ejemplo, si el programador
escribe be, el editor puede completarlo con begin. Si la palabra no es el comando
requerido, el programador sigue escribiendo sobre la zona marcada.

1.5 Lenguajes de programación


Un lenguaje de programación es un idioma artificial diseñado para expresar
computaciones que pueden ser llevadas a cabo por máquinas como las computadoras. Pueden
usarse para crear programas que controlen el comportamiento físico y lógico de una máquina,
para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por
un conjunto de símbolos y reglas sintácticas y semánticas 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 código fuente de un programa informático se le llama programación.

1.5.1 Niveles (bajo, intermedio y alto)


Lenguaje de bajo nivel
Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna
abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a
lenguaje de máquina.
La palabra “bajo” no implica que el lenguaje sea inferior a un lenguaje de alto nivel; se
refiere a la reducida abstracción entre el lenguaje y el hardware. Uso: ventajas e inconvenientes.
En general se utiliza este tipo de lenguaje para programar controladores (drivers).
La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje
simbólico tiene ciertas ventajas:
 Mayor adaptación al equipo.
 Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Pero también tiene importantes inconvenientes:
 Imposibilidad de escribir código independiente de la máquina.
 Mayor dificultad en la programación y en la comprensión de los programas.

Primera generación

6
IFE-0436 SOFTWARE DE SISTEMAS

El lenguaje de programación de primera generación (por sus siglas en inglés, 1GL), es el


lenguaje de código máquina. Es el único lenguaje que un microprocesador entiende de forma
nativa. El lenguaje máquina no puede ser escrito o leído usando un editor de texto, y por lo tanto
es raro que una persona lo use directamente.

Segunda generación
El lenguaje de programación de segunda generación (por sus siglas en inglés, 2GL), es el
lenguaje ensamblador. Se considera de segunda generación porque, aunque no es lenguaje nativo
del microprocesador, un programador de lenguaje ensamblador debe entender la arquitectura del
microprocesador (cosas como sus registros e instrucciones).

Lenguaje de medio nivel


Se dice que lenguajes de programación como C, que se encuentran entre los lenguajes de
alto nivel y los lenguajes de bajo nivel. Estos lenguajes son clasificados muchas veces de alto nivel,
pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la
creación de sistemas operativos, ya que permiten un manejo abstracto (independiente de la
máquina, a diferencia del ensamblador), pero sin perder mucho del poder y eficiencia que tienen
los lenguajes de bajo nivel.
Una característica distintiva, por ejemplo, que convierte a C en un lenguaje de medio nivel
y al Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si
fueran números (en Pascal no), y por el contrario en Pascal es posible concatenar las cadenas de
caracteres con el operador suma y copiarlas con la asignación (en C es el usuario el responsable de
llamar a las funciones correspondientes).

Lenguaje de alto nivel


La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje
simbólico tiene ciertas ventajas:
 Mayor adaptación al equipo.
 Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.
Pero también tiene importantes inconvenientes:
 Imposibilidad de escribir código independiente de la máquina.
 Mayor dificultad en la programación y en la comprensión de los programas.

Por esta razón, a finales de los años 1950 surgió un nuevo tipo de lenguaje que evitaba los
inconvenientes, a costa de ceder un poco en las ventajas.
Estos lenguajes se llaman “de tercera generación” o “de alto nivel”, en contraposición a los
“de bajo nivel” o “de nivel próximo a la máquina”.
Principales lenguajes de alto nivel: Ada, ALGOL, Basic, C (en realidad es un lenguaje de
medio nivel), C++, CT, Clipper, Cobol, Fortran, Java, Lexico, Logo, Object Pascal, Pascal, Perl, PHP,
PL/SQL, Python, Modula-2, Lenguajes funcionales o Haskell o Lisp.

7
IFE-0436 SOFTWARE DE SISTEMAS

1.5.2 Tipos (intérpretes y compiladores)


Un archivo fuente es el que contiene el texto del código del programa que ha sido escrito
por el equipo de programadores. Las computadoras solamente pueden ejecutar instrucciones que
estén en código máquina, así que los programas en código fuente no se pueden ejecutar
directamente en la computadora. Un compilador debe, en primer lugar, convertir el archivo
fuente en un archivo intermedio que se llama archivo objeto o archivo código objeto. El archivo
objeto contiene una traducción del código del programa en lenguaje máquina, pero aún no se
considera un programa ejecutable.
Un intérprete traduce un código fuente en lenguaje máquina también. El intérprete difiere
del compilador en que ejecuta cada orden una vez que se traduce. Este proceso puede hacer más
lenta la ejecución del programa, así que los intérpretes se utilizan menos que los compiladores. Un
intérprete es otra manera de implementar un lenguaje de programación. La interpretación
comparte muchos aspectos con el compilador. Los análisis léxico, sintáctico y verificación de tipos
son exactamente los mismos que en un compilador.
Pero en lugar de generar código del árbol sintáctico, el árbol sintáctico se procesa
directamente para evaluar expresiones y ejecutar sentencias, y así hasta terminar. Un intérprete
puede necesitar evaluar la misma parte del árbol sintáctico varias veces (por ejemplo cuando se
hacen ciclos), por eso la interpretación puede ser más lenta que la ejecución de un programa
compilado. Pero escribir un intérprete es más fácil de mover a una máquina diferente, así que para
aplicaciones donde la velocidad no importa, lo mejor es utilizar un intérprete.
Es muy útil sabe cómo se hace un intérprete o un compilador, porque esto permite a los
programadores tener una idea de lo que hacen los programas de alto nivel, lo que a su vez,
ayudará a los programadores para crear código más eficiente. Otras razones. Los errores que
devuelven los compiladores proporcionan una manera fácil de entender el código fuente; además,
se conoce la diferencia entre errores léxicos, sintácticos, errores de tipos, y así.
Ejemplo de intérpretes: HTML, JavaScript, PHP.
Ejemplo de compiladores: Java, C, C++, Basic

1.5.3 Comparación entre intérpretes y compiladores


INTERPRETE: Es un programa que lee línea a línea un programa escrito en un lenguaje; en
lenguaje fuente y lo va traduciendo a un código intermedio, para ejecutarlo.
COMPILADOR: Es un programa que lee totalmente un programa escrito en un lenguaje; el
lenguaje fuente, y lo traduce a un programa equivalente a otro lenguaje, lenguaje objeto.
A grandes rasgos un compilador es un programa que lee un programa escrito es un
lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje
objeto. Como parte importante de este proceso de traducción, el compilador informa a su usuario
de la presencia de errores en el programa fuente.

8
IFE-0436 SOFTWARE DE SISTEMAS

Bibliografía
Aviles, J. I. (10 de Octubre de 2007). Mi Tecnológico. Obtenido de
http://www.mitecnologico.com/Main/EditoresDeCaracter

González, A. C. (10 de Julio de 2009). mailxmail.com. Obtenido de


http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/desarrollo-
programas-editores

González, A. C. (10 de Julio de 2009). mailxmail.com. Obtenido de


http://www.mailxmail.com/curso-informatica-ordenador-cientifico-desarrollo/compiladores-
interpretes-programas

Instituto Balseiro. (s.f.). Instituto Balseiro. Obtenido de


http://www.ib.cnea.gov.ar/~icom/web/pasos.htm

Wikipedia, La Enciclopedia Libre. (21 de Noviembre de 2010). Wikipedia. Obtenido de


http://es.wikipedia.org/wiki/Lenguaje_formal

Wikipedia, La Enciclopedia Libre. (22 de Enero de 2011). Wikipedia. Obtenido de


http://es.wikipedia.org/wiki/Arquitectura_de_von_Neumann

Wikipedia, La Enciclopedia Libre. (2 de Febrero de 2011). Wikipedia. Obtenido de


http://es.wikipedia.org/wiki/Lenguaje_de_programaci%C3%B3n

Wikipedia, La Enciclopedia Libre. (22 de enero de 2011). Wikipedia. Obtenido de


http://es.wikipedia.org/wiki/Arquitectura_de_von_Neumann

Anda mungkin juga menyukai