Вы находитесь на странице: 1из 4

1

Tarea 1 - Resumen Captulo 1


Augusto Amarilla, Marcelo Denis y Sergio Oru

ResumenEn este artculo se muestran un resumen del captulo uno del libro Concepts of Programming Languages del autor
Robert W. Sebesta.
KeywordsResumen, Captulo 1.

I.
I-A.

R AZONES POR LAS CUALES ESTUDIAR LENGUAJES DE


PROGRAMACIN :
Mayor capacidad de expresar ideas:

Es sabido que el pensamiento de una persona, en trminos


de profundidad, complejidad y abstraccin; est fuertemente
determinado por el grado de conocimiento del lenguaje (natural
o artificial: de programacin) que maneja.
I-B. Mejor conocimiento para la eleccin de lenguajes
apropiados:
Es en la variedad donde uno, puede llegar a comprender
las particularidades de cada lenguaje, y mediante esto, obtener
una base ms slida al momento de decidirse por cul lenguaje
usar, en lugar de caer en prejuicios.
I-C.
da:

Habilidad para aprender nuevos lenguajes incrementa-

El anlisis y estudio sistemtico de los lenguajes de programacin, a la larga, predispone al crecimiento de nuestro bagaje
en el rea.
I-D. Entendimiento mejorado del significado de la implementacin
Es importante poder reconocer las relaciones y detalles
entre las implementaciones posibles de ciertos aspectos, y el
concepto a nivel de diseo estructural detrs de estos.
I-E.

Mejor uso de los lenguajes ya conocidos:

Es comn que con el estudio del rea, uno pueda llegar


a descubrir nuevas aplicaciones del lenguaje que manejaba,
o que pueda aprovechar mejor funcionalidades que antes
conoca, pero someramente.
I-F.

Avance general de la computacin:

Finalmente, es obvio que la nica forma de seguir extendiendo las fronteras del rea, es a travs del constante estudio de los
lenguajes de programacin, para as mejorar las condiciones
actuales y/o generar nuevos conocimientos.

II. D OMINIOS DE PROGRAMACIN :


II-A. Aplicaciones cientficas:
mbito pionero en lo relativo a propsitos de desarrollo/implementacin, tanto a nivel investigacin general como a nivel
militar.
II-B. Aplicaciones de negocios:
Una de las ramas ms importantes, por el volumen que ocupa en el mundo actual, enfocndose a caractersticas propias
de ese ramo, tales como la administracin de transacciones,
reportes, etc.
II-C. Inteligencia artificial:
rea caracterizada por el uso de expresiones simblicas en
lugar de numricas, especializada en el uso de listas y a la
vanguardia del desarrollo ltimamente.
II-D. Programacin de sistemas:
Se refiere a los lenguajes que soportan el desarrollo de
sistemas operativos as de como las herramientas de software
relacionadas a los mismos.
II-E. Software web:
Categora un tanto ambigua segn se considere, pero an as
de innegable importancia en nuestro presente, por la magnitud
de alcance de internet y de aplicaciones de esa ndole.
III. C RITERIOS DE EVALUACIN DE LENGUAJES :
III-A. Legibilidad
Facilidad de comprender lo ledo, a grandes rasgos, sin
necesidad de un esfuerzo extra. Es posible descomponerlo en:
1) Simplicidad total: Un lenguaje demasiado grande, suele
resultar complejo, deviniendo en que los programadores no
consiguen dominarlo totalmente.
2) Ortogonalidad: Se refiere a que, tanto las estructuras
u operadores bsicos, como las combinaciones posibles entre
ellos; no se excedan en nmero.
3) Tipos de datos: Comprende la existencia de tipos de datos
adecuados para los propsitos generales, no dando lugar a
aplicaciones que tiendan a complicar la lectura.
4) Diseo de sintaxis: Consiste bsicamente en la definicin de las palabras especiales y la forma/significado de las
sentencias aplicables.
III-B. Facilidad de escritura
Similar a lo implicado en la legibilidad, se compone de
algunos subcriterios como:

1) Simplicidad y ortogonalidad: Propone que a medida que


ms mtodos de escritura existen para una misma funcionalidad, es probable que esto complique o no redunde beneficio
alguno al programador.
2) Soporte de abstraccin: Se encarga de asegurar que las
estructuras brindadas para la implementacin de conceptos
complejos, no se excedan en complejidad.
3) Expresividad: Habla sobre cun fcil o conveniente
resulta en el lenguaje, la implementacin de sistemas de
computacin de diversa ndole, priorizando la sencillez.
III-C. Confiabilidad
Bsicamente, se dice que un programa es confiable si se
desempea de acuerdo a sus especificaciones, en todas las
circunstancias o condiciones.
1) Chequeo de tipo: Controlar o examinar errores de tipos
de datos, sea en tiempo de compilacin o ejecucin.
2) Manejo de excepciones: Engloba la habilidad del lenguaje de manejar errores interceptados en tiempo de ejecucin,
tomando las medidas necesarias que aseguren la continuidad
confiable del programa dado.
3) Aliasing: A grandes rasgos, se define como la capacidad
de que dos o ms nombres, puedan acceder a la misma celda
de memoria.
4) Legibilidad y facilidad de escritura: La facilidad y naturalidad de los mismos, influye de sobremanera en el grado de
confiabilidad percibido hacia el lenguaje de programacin.
III-D. Costo
Dependiente de distintos factores: lo necesario para la capacitacin de los recursos humanos para el dominio del lenguaje
de programacin en cuestin, el coste de la misma escritura
en s de un programa en particular, esto relacionado a su vez a
los costos de compilacin y de ejecucin de dicho programa,
lo cual vara de acuerdo al lenguaje escogido.
Se puede hablar, en trminos de importancia, de otros tres
costos o inversiones a considerar: el de la implementacin,
el de la pobre confiabilidad (de darse el caso) y el del mantenimiento necesario de acuerdo al lenguaje de programacin
evaluado.
Finalmente, otros aspectos a considerar podran ser la
portabilidad ofrecida, la generalidad del mismo, es decir el
espectro de posibles aplicaciones con el que cuenta, y el
grado de definicin y/o precisin que brinda el lenguaje de
programacin dado.
IV. I NFLUENCIAS EN EL D ISEO DE LOS L ENGUAJES
Varios otros factores influyen en el diseo bsico de los
lenguajes de programacin. Estos son la arquitectura del ordenador y las metodologas de diseo de programacin.
IV-A. Arquitectura de Ordenador
La mayor parte de los lenguajes populares de los aos 50
han sido diseados alrededor de la arquitectura de ordenador,
llamada la arquitectura de Von Neumann. Estos lenguajes

son denominados imperativos. En un ordenador de Von Neumann, tanto los datos como programas son almacenados en
la misma memoria. La unidad central (la CPU), que ejecuta
instrucciones, es separada de la memoria. Por lo tanto, las
instrucciones y datos deben ser transmitidos de la memoria a
la CPU. La ejecucin de un programa de cdigo de mquina
sobre un ordenador de arquitectura de Von Neumann ocurre
en un proceso llamado ciclo de traer-ejecutar. La direccin
de la siguiente instruccin para ser ejecutada es mantenida en
un registro llamado el contador de programa. Un Lenguaje
funcional, o aplicativo, es aqul en el cual el medio primario
de cmputo aplica funciones a parmetros dados. El programa
puede estar hecho en un lenguaje funcional sin la clase de
las variables que son usadas en lenguajes imperativos, sin
declaraciones de asignacin, y sin la iteracin. John Backus
(1978), es el diseador principal de la versin original de
Fortran.
IV-B. Metodologas de Diseo de Programa
Finales de los aos 1960 y a principios de los aos 1970
trajo consigo un anlisis intenso, comenzado en gran parte por
el movimiento de programacin-estructurada tanto del proceso
de desarrollo de software como del diseo de los lenguajes de
programacin. Una razn importante de esta investigacin era
el cambio en el coste del hardware al software, como los gastos
de hardware se disminuyeron y los gastos de programador
aumentaron. Los aumentos de la productividad de programador
eran relativamente pequeos. Adems, problemas cada vez
ms grandes y ms complejos estaban siendo solucionados
por ordenadores. Las carencias de lenguaje de programacin
primarias que fueron descubiertas eran la falta de comprobacin de tipo e insuficiencia de declaraciones de control. La
abstraccin de datos para su uso eficaz en el diseo de un
sistema de software, debe ser apoyado por los lenguajes usados
para la implementacin. El primer lenguaje que proporcion el
apoyo an limitado a la abstraccin de datos era SIMULA 67.
La evolucin de desarrollo de software orientado por datos, que
comenz a principios de los aos 1980, es el diseo orientado
a objetos. La metodologa orientada a objetos comienza con la
abstraccin de datos, que encapsula el tratamiento con objetos
de datos y controla el acceso a datos, y aade la herencia y
la encapsulacin dinmica de mtodo. Todas estas evoluciones
que intervinieron en las metodologas de desarrollo de software
condujeron a nuevos lenguajes para apoyarlos.
V. C ATEGORAS DE L ENGUAJES
Los lenguajes de programacin a menudo son clasificados
en cuatro categoras: imperativo, funcional, lgico, y orientado
a objeto. Aunque el paradigma de desarrollo de software orientado a objetos se diferencie considerablemente del paradigma
orientado a procedimiento por lo general son usados como
lenguajes imperativos. Otra clase de lenguaje, el lenguaje
visual, es una subcategora de los lenguajes imperativos. Los
lenguajes visuales ms populares son los lenguajes .NET. Estos
lenguajes incluyen capacidades a la generacin de rastra-y-gota
de segmentos de cdigo. Los lenguajes visuales proporcionan
un modo simple de generar interfaces de usuario grficos a

programas. Algunos autores se refieren a lenguajes scripting


como una categora separada de lenguajes de programacin.
Sin embargo, los lenguajes en esta categora son puestos
juntos por sus mtodos puestos en prctica, la interpretacin
parcial o completa. Los lenguajes que tpicamente se llaman
lenguajes scripting, entre ellos Perl, JavaScript, y el Rub,
son lenguajes imperativos en cada sentido. Un lenguaje de
programacin lgico es un ejemplo de un lenguaje basado en la
regla. En un lenguaje imperativo, un algoritmo es especificado
en gran detalle, y el orden especfico de ejecucin de las
instrucciones o las declaraciones deben ser incluidas. En un
lenguaje basado en la regla, sin embargo, las reglas no son
especificadas en ningn orden en particular, y el sistema del
lenguaje debe escoger un orden en la cual las reglas son usadas
para producir el resultado deseado. En los ltimos aos, una
nueva categora de lenguajes ha surgido, lenguajes hbridos.
Por ejemplo: HTML, XML y otros.
VI.

T RADE - OFF ( COMPROMISOS ) EN EL DISEO DE LOS


LENGUAJES

Los criterios de evaluacin de lenguaje de programacin proporcionan un marco para el diseo de lenguajes.
Lamentablemente, aquel marco es contradictorio. En su papel
sobre el diseo de lenguaje, Hoare (1973) declar que " hay
tantos criterios importantes pero contrarios, que su conciliacin
y satisfaccin son una la tarea de la ingeniera. " Dos criterios
que crean el conflicto son la fiabilidad y costo de ejecucin.
El conflicto entre facilidad de escritura y fiabilidad es comn
en el diseo de lenguaje. Los indicadores de C ++ pueden
ser manipulados de muchas maneras, que apoya la direccin
sumamente flexible de datos. A causa de los problemas de
fiabilidad potenciales con indicadores, ellos no son incluidos
en Java. Los ejemplos de conflictos entre el diseo de lenguaje
y criterios abundan; unos son sutiles, los otros son obvios.
Es por tanto claro que la tarea de escoger el diseo un
lenguaje de programacin requiere muchos compromisos y
compensaciones.
VII. M TODOS DE IMPLEMENTACIN
Las computadoras que usamos todos los das tienen dos
partes importantes, la memoria principal RAM y el procesador
central. La cuestin reside en que los procesadores tienen un
conjunto de instrucciones que pueden interpretar, se llaman
macroinstrucciones al conjunto con el que uno normalmente
usa pero en algunos casos este conjunto de instrucciones
es traducido a un nivel an ms bajo de instrucciones que
se conoce como microinstrucciones, un grupo incluso ms
pequeo y bsico de instrucciones que las macroinstrucciones.
Los lenguajes de programacin deben tener interfaces para
convertir sus sentencias en instrucciones que el procesador
pueda entender, aunque lo ms normal es que se desarrollen
unos programas base que sirven de interface a los lenguajes
de programacin, estos programas constituyen el sistema operativo que es el que trata directamente con el hardware de la
computadora. Esto permite tener varios entornos de desarrollo
en una sola computadora. Con el sistema operativo y sus
herramientas adecuadas uno puede trabajar sobre la misma

mquina con varios lenguajes utilizando el SO como interfaz


para con el hardware. Las interfaces entre los lenguajes y el
SO brindan la posibilidad de tener computadoras virtuales,
una computadora virtual por cada interfaz entre lenguaje y
el sistema operativo.
Existen tres maneras de implementar un lenguaje, la implementacin de compilador, interpretacin pura y los sistemas
de interpretacin hbrida.
VII-A.

Compilacin

Algunos lenguajes de programacin deben pasar por un


proceso de conversin desde el lenguaje en el que fue escrito,
el cdigo fuente, hasta el lenguaje de mquina. Este proceso se
llama compilacin. Los lenguajes compilados son ms rpidos
a la hora de la ejecucin en comparacin con los lenguajes
interpretados. Algunos ejemplos de lenguajes compilados son
C, C++, COBOL, ADA, entre otros. El proceso de compilacin tiene varias fases, en primer lugar est el anlisis
lxico del cdigo fuente identificando unidades lxicas en el
cdigo y descartando los comentarios. Las unidades lxicas
son palabras especiales, identificadores, operadores y signos de
puntuacin. Luego entra en accin el analizador sintctico que
toma las unidades lxicas, las procesa y genera informacin
para construir estructuras llamadas rboles de anlisis(parse
trees), aunque normalmente solo se genera la informacin para
los parse trees y se utiliza directamente. En este momento
de la compilacin, toma el control el generador de cdigo
intermedio y analizador semntico, el cdigo intermedio es
normalmente parecido a cdigo ensamblador, y en algunos
casos es exactamente eso. En esta fase es ms facil realizar
optimizaciones del cdigo que cuando se encuentra en forma
de lenguaje de mquina, tambin es ms simple buscar errores
en el cdigo, como errores de tipo, de este chequeo se encarga
el analizador semntico. Existe un tambin una tabla de
smbolos que ayuda en el proceso de compilacin. Almacena
informacin de atributos y tipos de los nombres definidos por
el usuario, esta tabla es llenada por el analizador lxico y
el analizador sintctico para ser utilizado por el analizador
semntico y el generador de cdigo. Una de las fase finales de
la compilacin es el enlazado con los programas del sistema
y otros programas creados por el usuario, almacenados en
libreras, esto se hace asignando la direccin del punto de
acceso a los programas externos donde las llamadas a estos
aparecen en el programa que se est compilando. Este proceso
es realizado por el enlazador. El cuello de botella de von
Neumann es uno de los principales problemas al utilizar la
arquitectura von Neumann, la velocidad de la computadora
queda determinada por la velocidad de la conexin entre
la memoria de una computadora y su procesador, porque
normalmente una instruccin tarda menos en ejecutarse que
en copiarse al procesador.
VII-B.

Interpretacin Pura

La implementacin de los lenguajes interpretados puros


se realiza a travs de un programa que se llama intrprete,
que recupera y ejecuta las sentencias de alto nivel una por

una proveyendo as una mquina virtual para el programa ya


que en ningn momento se convierte a lenguaje de mquina.
Este mtodo tiene la ventaja de encontrar los errores de
programacin ms facilmente, ya que se interpreta lnea a
lnea. Aunque tiene la dificultad de ser extremadamente lento
en comparacin con los lenguajes compilados ya que cada
sentencia debe ser decodificada cada vez que se ejecuta.
Entonces el cuello de botella en la interpretacin pura reside
en la decodificacin de sentencias en vez de la conexin entre
la memoria y el procesador. Otra desventaja de los lenguajes
interpretados es el espacio que requiere, adems del espacio
de la tabla de smbolos que se debe usar en la interpretacin,
el cdigo de alto nivel debe estar almacenado de una manera
que mejore el acceso a l en vez de un mnimo espacio. Los
lenguajes interpretados puros como APL, SNOBOL o LISP de
principios de los 60 se dejaron de usar hasta que, en el mundo
web, volvi la interpretacin al surgir el lenguaje JavaScript y
el PHP.
VII-C.

Sistemas de interpretacin hbrida

Existen sistemas son una mezcla entre los lenguajes compilados y los puramente interpretados, lo que hacen es traducir
los lenguajes de alto nivel hasta un cdigo intermedio que
sea ms fcil de interpretar. Este mtodo es ms rpido
que los lenguajes interpretados puros. El proceso era as, el
cdigo fuente era la entrada para el analizador lxico, este
entregaba unidades lxicas al analizador sintctico creaba las
informacin para los parse trees, estas estructuras son luego
utilizadas por el generador de cdigo intermedio para por
ltimo interpretar el cdigo intermedio en el intrprete. El
lenguaje Perl es implementado como un sistema hbrido, se
traduce para encontrar errores y para simplificar el intrprete.
Implementaciones iniciales de Java eran hbridas, el cdigo
intermedio o byte code provea portabilidad ya que cualquier
mquina que tenga el intrprete de de byte code y el sistema
de ejecucin asociado poda correr ese cdigo intermedio. El
interprete y el sistema de ejecucin se conocen como JVM o
Java Virtual Machine. Ahora existen sistemas que convierten el
byte code en cdigo de mquina para su ejecucin, esta implementacin se conoce como Justo a tiempo(Just-In-Time). Estos
sistemas JIT traducen el cdigo fuente a cdigo intermedio,
luego al ejecutar el cdigo lo que hace es compilar mtodos
de lenguaje intermedio en cdigo de mquina a medida que
son llamados y estas versiones de cdigo de mquina son almacenadas para futuros usos. Actualmente todos los programas
de Java utilizan sistemas JIT, adems de los lenguajes .NET.
A veces un implementador de un lenguaje provee los dos
mtodos, compilacin e interpretacin. Se utiliza el intrprete
para procesos de desarrollo y depuracin hasta alcanzar un
estado en el que no se encuentran errores en el cdigo y ah
compilarlo para aumentar su velocidad de ejecucin.
VII-D.

Preprocesadores

El preprocesador es un programa que se ejecuta inmediatamente antes que el programa compilador, y su funcin es
expandir las macros que se encuentren en el cdigo fuente.

VIII. E NTORNOS DE P ROGRAMACIN


Un entorno de programacin es la coleccin de herramientas
que permiten desarrollar programas. Lo bsico que puede incluir es un sistema de archivos, un editor de texto, un enlazador
y un compilador, aunque puede incluir otras herramientas ms
avanzadas que, dentro de una sola interfaz uniforme, mejoran
el desarrollo y mantenimiento de los programas.

Вам также может понравиться