EI Unidad43

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

Universidad Nacional de la Patagonia San Juan Bosco

Facultad de Ingeniería

UNIDAD 4: Lenguajes de programación

Para comenzar a estudiar esta unidad es importante tener en claro el concepto de algoritmo. Un
algoritmo es un conjunto de instrucciones o reglas bien definidas, ordenadas y finitas que permite
llevar a cabo una actividad mediante pasos sucesivos que no generen dudas a quien deba hacer
dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un
estado final y se obtiene una solución.
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 patrón.
 Algunos ejemplos en matemática son el algoritmo de multiplicación, para calcular el
producto, el algoritmo de la división para calcular el cociente de dos números

Los algoritmos pueden ser expresados de muchas maneras, incluyendo el lenguaje natural,
pseudocódigo, diagramas de flujo y lenguajes de programación entre otros. El pseudocódigo y
diagramas de flujo son formas más estructuradas para representar algoritmos; y además, se
mantienen independientes de un lenguaje de programación específico.
La descripción de un algoritmo usualmente se hace en tres niveles:
1. Descripción de alto nivel. Se establece el problema, se desglosa para poder entenderse
en detalle y se explica el algoritmo de manera verbal, posiblemente con diagramas de flujo.
2. Descripción formal. Se usa pseudocódigo para describir la secuencia de pasos que
encuentran la solución.
3. Implementación. Se muestra el algoritmo expresado en un lenguaje de programación
específico.

En el nivel de implementación es cuando aparece el concepto de lenguaje de programación.


Un lenguaje es un medio de comunicación capaz de contener e intercambiar información. Pueden
clasificarse según su propósito particular en:
 Naturales: Español, Inglés, Francés, etc.
 Simbólicos: Morse, Braille, etc.
 De programación: Ada, Pascal, Java, C, etc.

Elementos de Informática 2024 Pág. 1


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Un lenguaje de programación es un lenguaje formal diseñado para realizar algoritmos que


pueden ser llevados a cabo por máquinas como las computadoras.
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.

Existe una gran diversidad de lenguajes de programación y permanentemente nacen mejoras a los
ya existentes o se crean nuevos lenguajes.

Clasificación
Los lenguajes de programación se pueden clasificar de acuerdo con diversos criterios:

 Según proximidad al lenguaje de máquina o al natural

o Los de alto nivel según paradigma

 Según criterio histórico

1) Según proximidad al lenguaje de máquina o al natural

Uno de los criterios más típicos y que mencionan la gran mayoría de los autores es la clasificación
según su proximidad al lenguaje de máquina o al natural.
De acuerdo con este criterio, existen tres niveles de lenguajes:
• Lenguajes de bajo nivel: propio de los circuitos electrónicos, expresado con ceros y unos.

• Lenguajes ensambladores.
• Lenguajes de alto nivel: más cercano al lenguaje natural. Se pueden clasificar atendiendo
a los estilos de programación, en varios grupos.
Lenguajes de bajo nivel
El lenguaje de bajo nivel (también llamado lenguaje de máquina) es aquel en el que sus
instrucciones ejercen un control directo sobre el hardware y están condicionadas por la
estructura física de las computadoras. El uso de la palabra bajo en su denominación no
implica que el lenguaje sea menos potente que un lenguaje de alto nivel, sino que se refiere
a la reducida abstracción entre el lenguaje y el hardware.

Elementos de Informática 2024 Pág. 2


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Utiliza el sistema binario, que consta de los dos únicos símbolos 0 y 1, denominados bits.
Fue el primer lenguaje utilizado en la programación de computadoras y aunque su velocidad
de ejecución era muy alta, dejó de utilizarse por su complejidad.
Las instrucciones escritas en lenguaje de máquina son muy complejas en cuanto a
redacción y legibilidad.
Un ejemplo de una instrucción escrita en lenguaje de bajo nivel sería:
0011 1010 0000 0000 1110 1111
Lenguajes ensambladores
Un lenguaje ensamblador consiste en un conjunto de mnemónicos que representan
instrucciones básicas para las computadoras, microprocesadores, microcontroladores y
otros circuitos integrados programables. Constituye la representación más directa del código
máquina específico para cada arquitectura, legible por un programador.
Cada arquitectura de procesador tiene su propio lenguaje ensamblador que usualmente es
definida por el fabricante de hardware, y está basada en los mnemónicos que simbolizan los
pasos de procesamiento, los registros del procesador, las posiciones de memoria y otras
características del lenguaje. Un lenguaje ensamblador es por lo tanto específico de cierta
arquitectura de computadora.
Cabe destacar que un programa escrito en lenguaje ensamblador no es directamente
ejecutable por la computadora, por lo que requiere de una traducción que permita
representar esos nombres simbólicos o mnemónicos en lenguaje de máquina, esto lo realiza
un ensamblador.

Un ejemplo de una instrucción escrita en lenguaje ensamblador (procesador Intel 8085)


sería: ADD nro1
Si quisiéramos por ejemplo sumar dos números:
IN PE
STA, nro1
IN PE
ADD n ro1
OUT PS
HL T

Lenguajes de alto nivel


Un lenguaje de alto nivel se caracteriza por expresar el algoritmo de una manera adecuada
a la capacidad cognitiva humana, en lugar de la capacidad ejecutora de las máquinas.

Elementos de Informática 2024 Pág. 3


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Las principales características de los lenguajes de alto nivel son:


 son independientes de la arquitectura de la computadora
 una sentencia da lugar, al ser traducida, a varias instrucciones en lenguaje de
máquina
 expresan las operaciones en un lenguaje cercano al matemático y al natural
 permiten crear programas complejos en relativamente menos líneas de código.
 La legibilidad de un programa escrito con un lenguaje de alto nivel es mucho mayor
que la de un programa escrito en lenguaje de máquina o ensamblador.

Un ejemplo de algunas instrucciones escritas en lenguaje de alto nivel sería:


get (nro1);
get (nro2);
suma:= nro1 + nro2;
put (suma);

2) Según paradigma

Un paradigma de programación representa un enfoque particular o filosofía para diseñar


soluciones. Los paradigmas difieren unos de otros, en los conceptos y la forma de abstraer los
elementos involucrados en un problema, así como en los pasos que integran su solución del
problema, en otras palabras, el cómputo. Es un estilo de programación empleado.

Los lenguajes de alto nivel, según el paradigma de programación utilizado, se pueden


clasificar en:
 Procedural o imperativo (Ej: C – Pascal - Ada)
 Lógico (Ej: Prolog)
 Funcional (Ej: LISP - Scheme)
 Orientado a objetos (Ej: Smalltalk)

Hay lenguajes que soportan más de un paradigma.

Elementos de Informática 2024 Pág. 4


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Procedural o imperativo
La programación imperativa es uno de los paradigmas de programación de
computadoras más generales, que describe la programación en términos del estado del
programa y sentencias que cambian dicho estado. Los programas escritos en lenguajes
de programación imperativos son un conjunto de instrucciones que le indican a la
computadora cómo realizar una tarea. Lenguajes imperativos muy utilizados son Ada, C,
entre otros.

Lógico
En la programación lógica, el enfoque es expresar programas de manera lógica simbólica
y utilizar un proceso de inferencia lógica para producir resultados. Los programas lógicos
son declarativos, no de procedimiento, lo que significa que sólo se expresan las
especificaciones de los resultados deseados en vez de detallar los procedimientos para
producirlos.
Los programas escritos en lenguajes de programación lógica son colecciones de hechos y
reglas. Dicho programa es utilizado para realizar preguntas, a las que se intenta dar
respuesta mediante la consulta de los hechos y reglas. Son llamados lenguajes de
programación lógica, o lenguajes declarativos.
La sintaxis de los lenguajes de programación lógica es notablemente diferente a la de los
lenguajes imperativos y funcionales. La semántica de los programas lógicos también tiene
poco parecido al de los programas de lenguaje imperativo.
Prolog fue el primer lenguaje de programación lógica y se utiliza en muchas áreas de
conocimiento.

Funcional
El paradigma de programación funcional se basa en funciones matemáticas. No tienen
efectos secundarios.
En los programas escritos en lenguaje imperativo, una de las características
fundamentales es el estado que tienen, lo que cambia a lo largo de la ejecución. Este
estado está representado por las variables del programa. El autor y todos los lectores del
programa deben entender los usos de sus variables y cómo el estado del programa
cambia a través de la ejecución. Para un programa amplio, esto es una tarea
desalentadora. Este es un problema con los programas escritos en un lenguaje imperativo

Elementos de Informática 2024 Pág. 5


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

que no está presente en un programa escrito en un lenguaje funcional puro, ya que no


tienen ni variables ni estado.
LISP comenzó como un lenguaje funcional puro, pero pronto adquirió cierta importancia
con características imperativas con el fin de aumentar su eficiencia en la ejecución. Es
aún el más importante de los lenguajes funcionales, al menos en el sentido de que es el
único que ha alcanzado un uso generalizado.
Domina en las áreas de la representación del conocimiento, aprendizaje de las máquinas,
los sistemas de formación inteligentes, y el modelado de habla.
Scheme es un pequeño dialecto de LISP. Scheme ha sido ampliamente utilizado para
enseñar programación funcional.

POO
La programación orientada a objetos incorpora el concepto de objeto, de forma similar a
un objeto del mundo real. Un objeto tiene ciertas propiedades y cierta capacidad para
reaccionar ante eventos o sucesos.
El concepto de programación orientada a objetos tiene sus raíces en Simula 67, pero no
se desarrolló plenamente hasta 1980 con Smalltalk 80. Smalltalk fue el primer lenguaje
que ofreció soporte completo para la programación orientada a objetos.

3) Según criterio histórico

Esta clasificación según criterio histórico da lugar a las generaciones de lenguajes, que no
necesariamente coinciden con las generaciones de computadoras que trabajamos en la unidad
1. Hay diferencias en cuánto a las generaciones de lenguajes según distintos autores, sobre
todo para definir la cuarta y quinta generación.

Las tres primeras generaciones están directamente relacionadas con el gran avance que hubo
en el tiempo para comenzar programando con un lenguaje de programación de bajo nivel,
continuar con el ensamblador y luego con los de alto nivel.

Además, cabe aclarar que al estar los lenguajes de programación en permanente crecimiento,
podrían haber modificaciones o agregado de nuevas generaciones.

Elementos de Informática 2024 Pág. 6


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

La clasificación sobre la que trabajaremos en la asignatura según el criterio histórico es:

1° generación Lenguaje de máquina


2° generación Lenguaje ensamblador
3° generación Lenguajes de alto nivel
4° generación Manejo de bases de datos
5° generación Inteligencia artificial

Proceso de traducción
Cualquier programa escrito en lenguaje de alto nivel posee un programa fuente asociado, el cuál no
puede ser ejecutado directamente por la PC. Por eso mismo el programa fuente debe ser traducido
a lenguaje de máquina. Esta conversión de código la realiza el traductor de lenguaje, y el resultado
obtenido se denomina programa objeto.
Existen básicamente dos maneras de implementar un lenguaje:
 Interpretación
 Compilación

Los sistemas de aplicación de los primeros lenguajes de programación de alto nivel, construidos a
finales de 1950, se encontraban entre el software más complejo de la época. En la década de
1960, se realizaron intensos esfuerzos de investigación para entender y formalizar el proceso de
construcción e implementación de estos lenguajes de alto nivel. El mayor éxito de estos esfuerzos
fue en el área del análisis sintáctico.

Interpretación

Elementos de Informática 2024 Pág. 7


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

La interpretación se encuentra en el extremo opuesto de la compilación.


Los programas son interpretados por otro programa llamado intérprete. El programa intérprete lee,
analiza, decodifica y ejecuta cada una de las sentencias de un programa fuente escrito en un
lenguaje de programación.

Aunque algunos lenguajes simples de principios de la década de 1960 (APL, SNOBOL, y LISP)
fueron puramente intérpretes, por la década de 1980, el enfoque se utiliza muy poco en lenguajes
de alto nivel. Sin embargo, en los últimos años, la interpretación ha hecho una reaparición
significativa con algunos lenguajes de scripting web, como JavaScript y PHP, que son ahora
ampliamente utilizados.

Proceso de interpretación:

Compilación

Es el proceso que traduce un programa escrito en un lenguaje de programación de alto nivel a otro
lenguaje de programación, pero este de bajo nivel o de máquina, generando un programa
equivalente que la máquina será capaz de interpretar. Los programas traductores que pueden
realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores
avanzados, pueden generar muchas líneas de código de máquina por cada proposición del
programa fuente.

La construcción de un compilador involucra la división del proceso en una serie de fases que
variará con su complejidad. Generalmente estas fases se agrupan en dos tareas: el análisis del
programa fuente y la síntesis del programa objeto.

 Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las


fases correspondientes al Análisis léxico (que consiste en la descomposición del programa
fuente en componentes léxicos), análisis sintáctico (agrupación de los componentes léxicos

Elementos de Informática 2024 Pág. 8


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

en frases gramaticales ) y análisis semántico (comprobación de la validez semántica de las


sentencias aceptadas en la fase de análisis sintáctico).
 Síntesis: Su objetivo es la generación de la salida expresada en el código objeto y suele
estar formado por una o varias combinaciones de fases de generación de código
(normalmente se trata de código intermedio o de código objeto) y de optimización de código
(en las que se busca obtener un código lo más eficiente posible).

Compilador vs. Intérprete


Compilador Intérprete
 Se compila una vez, pero puede  Es más fácil de construir que un
ejecutarse n veces compilador
 Mayor velocidad de ejecución  Facilita la depuración de errores en
 El código compilado ocupa menos el programa
espacio en memoria.  Provee independencia de la
plataforma

Debido a que el compilador cada vez que precisa ejecutarse, no se vuelve a compilar, sino que lo
hace una sola vez, insume menos tiempo en ejecución.
El intérprete debe analizar, convertir y ejecutar cada instrucción cada vez que se ejecute el
programa ejecutable, por lo tanto consume mucho tiempo en ejecución.
Elementos de Informática 2024 Pág. 9
Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

El mapa de memoria central se vería así:

Programa Programa
Intérprete SO Memoria libre
traductor Fuente

Programa
Programa Fuente →
SO Memoria libre Traducción
traductor Programa
Compilador ejecutable
Programa
SO Ejecución
ejecutable

Híbridos

Existe también una tercera opción, que es la combinación entre la interpretación y la compilación,
estas implementaciones se denominan sistemas híbridos. Estos traducen programas en lenguaje
de alto nivel en un lenguaje intermedio diseñado para permitir una interpretación fácil. Luego este
código intermedio puede ser interpretado en distintos entornos.
Este método es más rápido que la interpretación pura porque se decodifican las instrucciones del
lenguaje fuente sólo una vez.

Elementos de Informática 2024 Pág. 10


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Sistemas Operativos

En cualquier sistema informático para que el hardware realice el trabajo para el que ha sido
construido es necesario contar con el software necesario, que posee una serie de normas y
órdenes que coordinan los distintos procesos que se desarrollan en el sistema. A través del
software, que puede estar integrado por un gran número de programas que interactúan unos con
otros, pueden ser manejados todos los recursos de un sistema informático, logrando de esta forma
resolver problemas.

El software es el enlace de comunicación entre el usuario y la computadora, se almacena en


memoria, y no permanentemente en los circuitos, por lo cual puede modificarse fácilmente para
satisfacer las necesidades del usuario.

Todos los programas que conforman el software pueden dividirse en dos grupos:

 Software de base o de sistemas: compuesto por el conjunto de programas imprescindibles


para el funcionamiento del hardware, más un conjunto de programas, llamados programas
de utilería, cuya misión es la de facilitar el uso del sistema, y optimizar sus recursos, como
los editores, interprete de comandos, traductores, etc.

 Software de aplicación: es el conjunto de programas que se desarrollan para que una


computadora resuelva un problema del usuario. Ej.: Sistema bancario, reservas en líneas
aéreas, juegos de video.

Elementos de Informática 2024 Pág. 11


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Los sistemas operativos (SO) forman parte del software de base.

Los SO poseen dos funciones básicas, ellas son:

 "Presentar al usuario una máquina ampliada o máquina virtual más fácil de programar
que el hardware implícito"

Los programadores se manejan con abstracciones; por ejemplo, podemos ver la lista de
archivos almacenados en un disco como una abstracción de la realidad física (el disco: con
sus sectores, pistas y cabezas de lectura y escritura). Al usuario le interesa poder leer,
escribir y consultar el archivo fácilmente sin tener que considerar, entre otros aspectos, en
qué posición del disco (en qué sector, en qué pista) está almacenada esa información.
El SO es un programa que actúa como intermediario, oculta la verdad del hardware, facilita
el manejo de los dispositivos de almacenamiento al programador y presenta una vista

Elementos de Informática 2024 Pág. 12


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

simple y agradable de los archivos nominados, archivos identificados por el usuario a través
de un nombre.
A través del ejemplo dado, hemos podido observar que el SO presenta una interfaz simple
orientada a la manipulación de archivos de un disco y resguarda al usuario y al programador
de todos los aspectos relacionados con el manejo o acceso al hardware del disco.
Además de facilitar el acceso a discos, el SO también presenta abstracciones para el
manejo de interrupciones, de relojes, de memoria, etc. abstracciones más fáciles, sencillas y
simples de utilizar que el hardware implícito.

 "Manejar los recursos del sistema informático, llevar el control de quien utiliza cual
recurso, conceder requerimientos de recursos, explicar el uso e interceder en
solicitudes conflictivas de diferentes programas y usuarios"

En una computadora con múltiples usuarios se necesita compartir los recursos costosos: el
procesador central, la memoria, los dispositivos de E/S, etc., estos elementos compartidos
deben ser racionalmente distribuidos para mejorar el rendimiento de todo el sistema y
asegurar una manipulación adecuada y segura de los mismos.

Un sistema operativo puede definirse como un conjunto de programas que controlan el


funcionamiento del hardware ocultando sus detalles, ofreciendo al usuario una vía sencilla y
flexible de acceso a la computadora; actúa como administrador de los recursos ofrecidos
por el hardware para alcanzar un eficaz rendimiento de los mismos.

La estructura básica de un sistema operativo es:

Elementos de Informática 2024 Pág. 13


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Kernel
El núcleo o kernel es un software que constituye una parte fundamental del sistema
operativo. Es el principal responsable de facilitar a los distintos programas acceso seguro al
hardware de la computadora en forma básica, es el encargado de gestionar recursos, a
través de servicios de llamada al sistema. Como hay muchos programas y el acceso al
hardware es limitado, también se encarga de decidir qué programa podrá usar un dispositivo
de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al
hardware directamente puede ser realmente complejo, por lo que los núcleos suelen
implementar una serie de abstracciones del hardware. Esto permite esconder la
complejidad, y proporcionar una interfaz limpia y uniforme al hardware subyacente, lo que
facilita su uso al programador.
En algunos sistemas operativos, no existe un núcleo como tal debido a que en ciertas
arquitecturas no hay distintos modos de ejecución.

Gestor de recursos
Como gestor de recursos, el sistema operativo administra:
 La unidad central de procesamiento.
 Los dispositivos de entrada y salida.
 La memoria principal y memoria secundaria (discos).
 Los procesos (o programas en ejecución).
 Y en general todos los recursos del sistema.

Gestión de memoria
La memoria es una gran tabla de palabras o bytes a las cuales se referencia
mediante una dirección única. Este almacén de datos de rápido acceso es
compartido por la CPU y los dispositivos de E/S, es volátil y pierde su contenido ante
ausencia de energía eléctrica o por fallas del sistema. El SO es el responsable de:
 Conocer qué partes de la memoria están siendo utilizadas y por quién.
 Decidir qué procesos se cargarán en memoria cuando haya espacio disponible.
 Asignar y reclamar espacio de memoria cuando sea necesario.

Elementos de Informática 2024 Pág. 14


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Gestión de procesos
Un proceso es un programa en ejecución que necesita recursos para realizar su
tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el
responsable de lo siguiente:
 Crear y destruir procesos.
 Parar y reanudar procesos.
 Ofrecer mecanismos para que los procesos puedan comunicarse y se
sincronicen.
La gestión de procesos podría ser similar al trabajo de oficina. Se puede tener una
lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo.
Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se
terminen seguir con las de prioridad media y después las de baja. Una vez realizada
la tarea se tacha.
Esto puede traer un problema: que las tareas de baja prioridad puede que nunca
lleguen a ejecutarse y permanezcan en la lista para siempre. Para solucionar esto,
se puede asignar alta prioridad a las tareas más antiguas.

Gestión de E/S
Consiste en un sistema de almacenamiento temporal, una interfaz de manejadores
de dispositivos y otra para dispositivos concretos. El sistema operativo debe
gestionar el almacenamiento temporal de E/S y servir las interrupciones de los
dispositivos de E/S.

Gestión de archivos
Los archivos son colecciones de información relacionada. Estos almacenan
programas (en código fuente y objeto) y datos tales como imágenes, textos,
información de bases de datos, etc. El SO es responsable de:
 Construir, eliminar archivos y directorios.
 Ofrecer funciones para manipular archivos y directorios.
 Establecer la correspondencia entre archivos y unidades de almacenamiento.
 Realizar copias de seguridad de archivos.
Existen diferentes sistemas de archivos, es decir, existen diferentes formas de
organizar la información que se almacena en las memorias (normalmente discos) de

Elementos de Informática 2024 Pág. 15


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

las computadoras. Por ejemplo, existen los sistemas de archivos FAT, FAT32, ext3,
NTFS, XFS, etc.

Shell
El shell o intérprete de órdenes o intérprete de comandos es el programa informático
que provee una interfaz de usuario para acceder a los servicios del sistema operativo.
Dependiendo del tipo de interfaz que empleen, los shells pueden ser:
 De líneas texto (CLI, Command-Line Interface, interfaz de línea de comandos),
 Gráficos (GUI, Graphical User Interface, interfaz gráfica de usuario),

Los shell son necesarios para invocar o ejecutar los distintos programas disponibles en la
computadora.

Ejemplo interfaz CLI Ejemplo interfaz GUI

Los SO varían mucho en propósito y diseño. Algunos son muy simples planeados para dar servicio
a un solo usuario en una computadora personal (SO monousuario), en tanto que otros son muy
complejos, atienden a muchos usuarios a la vez y administran recursos de hardware y software de
gran complejidad (SO multiusuario).

Elementos de Informática 2024 Pág. 16


Universidad Nacional de la Patagonia San Juan Bosco
Facultad de Ingeniería

Elementos de Informática 2024 Pág. 17

También podría gustarte