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

2 Capítulo 1 Preliminares

segundo considerar algunas preliminares. En primer lugar, explicamos algunas razones por las cuales los estudiantes de

informática y desarrolladores de software profesionales


ntes de que deben estudiara los
comencemos conceptos
discutir generales
los conceptos de de diseño de
lenguajes delprogramación,
lenguaje y la debemos

evaluación. Esta discusión es especialmente valioso para aquellos que creen que un conocimiento práctico de uno o dos lenguajes

de programación es suficiente para los informáticos. A continuación, se describen brevemente los principales dominios de

programación. A continuación, porque el libro evalúa las construcciones del lenguaje y características, se presenta una lista de

criterios que pueden servir como base para tales juicios. A continuación, se discuten las dos influencias principales en el diseño de

lenguajes: arquitectura de la máquina y metodologías de diseño del programa. Después de eso, introducimos las distintas

categorías de lenguajes de programación. A continuación, se describen algunas de las principales ventajas y desventajas que

deben ser considerados durante el diseño del lenguaje.

Debido a que este libro es también acerca de la implementación de lenguajes de programación, este capítulo
incluye una descripción general de los enfoques generales más comunes a la aplicación. Por último, describimos
brevemente algunos ejemplos de entornos de programación y se discute su impacto en la producción de software.

1.1 Razones para el estudio de los conceptos de lenguajes de programación

Es natural que los estudiantes se preguntan cómo van a beneficiarse del estudio de los conceptos del lenguaje
programa- ción. Después de todo, muchos otros temas en la informática son dignos de un estudio serio. Lo
siguiente es lo que creemos que es una lista ling compel- de los beneficios potenciales de estudiar conceptos de
lenguajes de programación:

• Aumento de la capacidad de expresar ideas. Se cree ampliamente que la profundidad a la que la gente
puede pensar que está influenciado por la fuerza expresiva de la len- guaje en que se comunican sus
pensamientos. Aquellos con sólo una débil comprensión del lenguaje natural están limitados en la
complejidad de sus pensamientos, sobre todo en la profundidad de la abstracción. En otras palabras, es
difícil para las personas conceptualizan estructuras no pueden describir, verbalmente o por escrito.

Programadores, en el proceso de desarrollo de software, están igualmente con- tensas. El idioma en el que
se desarrollan software coloca límites a los tipos de estructuras de control, estructuras de datos y abstracciones
que pueden utilizar; Por lo tanto, las formas de algoritmos pueden construir son igualmente limitada. El
conocimiento de una variedad más amplia de las características del lenguaje de programación puede reducir
tales limitaciones en el desarrollo de software. Los programadores pueden aumentar el alcance de sus
procesos de pensamiento de desarrollo de software de aprendizaje de nuevas construcciones del lenguaje.

Se podría argumentar que el aprendizaje de las capacidades de otros idiomas no ayuda a un


programador que se ve obligado a utilizar un lenguaje que carece de esas capacidades. Ese argumento
no se sostiene, sin embargo, porque muchas veces, construcciones len- guaje se pueden simular en
otros idiomas que no soportan esas construcciones directamente. Por ejemplo, un programador C que
habían aprendido la estructura y los usos de matrices asociativas en Perl (Wall et al., 2000) podría
diseñar estructuras que simulan matrices asociativas en ese idioma. En otra
1.1 Razones para el estudio de los conceptos de lenguajes de programación 3

Es decir, el estudio de los conceptos del lenguaje de programación construye una apreciación de las
características del lenguaje y valiosas construcciones y anima a los programadores a usarlos, incluso cuando el
idioma que se está utilizando no directamente SUP- portuarias tales características y construcciones.

• Mejora de fondo para la elección de los idiomas apropiados. Muchos programadores profesionales han
tenido poca educación formal en informática; Más bien, han desarrollado sus habilidades de
programación independiente oa través de programas de formación in- casa. Tales programas de
entrenamiento a menudo limitan la instrucción para una o dos lenguas que son directamente
relevantes para los proyectos actuales de la organización. Muchos otros programadores recibieron
hace sus años de formación formales. Los idiomas que aprendieron entonces ya no se utilizan, y
muchas características ahora disponibles en lenguajes de programación no eran ampliamente
conocidos en el momento. El resultado es que muchos programadores, cuando se le da una variedad
de idiomas para un nuevo proyecto, utilizan el lenguaje con el que están más familiarizados, aunque
sea poco adecuado para el proyecto en cuestión. Si estos programadores estaban familiarizados con
una gama más amplia de las lenguas y las construcciones del lenguaje,

Algunas de las características de un idioma a menudo se pueden simular en otro idioma. Sin
embargo, es preferible utilizar una función cuyo diseño se ha integrado en un lenguaje que utilizar una
simulación de esa característica, que a menudo es menos elegante, más engorroso, y menos segura.

• capacidad de aprender nuevos lenguajes aumentado. programación informática sigue siendo una
disciplina joven tivamente relación, y metodologías de diseño, herramientas de desarrollo de software
y lenguajes de programación se encuentran todavía en un estado de evolu- ción continua. Esto hace
que el desarrollo de software una profesión apasionante, pero también significa que el aprendizaje
continuo es esencial. El proceso de aprender un nuevo lenguaje de programación puede ser largo y
difícil, especialmente para alguien que se siente cómodo con sólo uno o dos idiomas y nunca ha
examinado los conceptos del lenguaje de programación en general. Una vez que un conocimiento
profundo de los conceptos fundamentales de idiomas se adquiere, se hace mucho más fácil ver cómo
estos conceptos se incorporan en el diseño de la lengua que se aprende. Por ejemplo, los
programadores que entienden los conceptos de la programación orientada a objetos tendrán un
tiempo mucho más fácil el aprendizaje de Java (Arnold et al.

El mismo fenómeno ocurre en las lenguas naturales. Cuanto más conoces la gramática de
su lengua materna, más fácil es aprender una lengua ond sec. Por otra parte, el aprendizaje de
una segunda lengua tiene la ventaja de enseñar más sobre su lengua materna.

El TIOBE Programación Comunidad emite un índice ( http: // www


. tiobe.com/tiobe_index/index.htm) que es un indicador de la popularidad relativa de los lenguajes
de programación. Por ejemplo, de acuerdo con el índice, Java, C y C ++ fueron los tres idiomas
más populares que se utilizan en agosto de 2011. 1 Sin embargo, decenas de otros idiomas se
utilizan ampliamente en

1. Tenga en cuenta que este índice es sólo una medida de la popularidad de los lenguajes de programación, y su exactitud no es
universalmente aceptada.
4 Capítulo 1 Preliminares

el tiempo. Los datos del índice muestran también que la distribución del uso de lenguajes de programación
siempre está cambiando. El número de lenguas en uso y la naturaleza dinámica de las estadísticas implica
que todos los desarrolladores de software debe estar preparado para aprender diferentes idiomas.

Por último, es esencial que los programadores saben que practican los conceptos fundamentales de
vocabulario y de los lenguajes de programación para que puedan leer y entender las descripciones de
lenguaje de programación y evaluaciones, así como el material de promoción de lenguajes y
compiladores. Estas son las fuentes de información que se necesita con el fin de escoger y aprender un
idioma.

• Una mejor comprensión de la importancia de la aplicación. En el aprendizaje de los conceptos de lenguajes


de programación, es a la vez interesante y necesario para tocar en las cuestiones de aplicación que afectan
a esos conceptos. En algunos casos, la comprensión de las cuestiones de aplicación conduce a una
comprensión de qué idiomas están diseñados como son. A su vez, este conocimiento conduce a la
posibilidad de utilizar un lenguaje de forma más inteligente, ya que fue diseñado para ser utilizado. Podemos
ser mejores programadores mediante la comprensión de las opciones entre las construcciones del lenguaje
de programación y las consecuencias de esas decisiones.

Ciertos tipos de errores en el programa pueden ser encontrados y fijados únicamente por una gramática pro que
conoce algunos detalles de implementación relacionados. Otro benefi- cio de la comprensión de las cuestiones de
aplicación es que nos permite visualizar cómo una computadora ejecuta diversas construcciones del lenguaje. En
algunos casos, un cierto conocimiento de las cuestiones de aplicación proporciona pistas sobre la eficiencia relativa
de efi- construcciones alternativas que se pueden elegir para un programa. Por ejemplo, los programadores que
saben poco acerca de la complejidad de la actividad mental en práctica de las llamadas de subprograma a menudo
no se dan cuenta de que un pequeño subprograma que se llama con frecuencia puede ser una opción de diseño
altamente ineficiente.

Debido a que este libro toca sólo unos pocos de los problemas de ¡Ejecución ción, los dos párrafos
anteriores también sirven así como justificación para el estudio de diseño de compiladores.

• Un mejor uso de las lenguas que ya son conocidos. Muchos lenguajes de progra- ming contemporánea
son grandes y complejos. En consecuencia, es raro que un programador para conocer y utilizar todas las
características de una lengua que él o ella utiliza. Mediante el estudio de los conceptos de lenguajes de
programación, programadores pueden aprender acerca de las piezas previamente desconocidas y sin uso
de las lenguas que ya utilizan y comenzar a usar esas características.

• En general, el avance de la informática. Por último, existe una visión global de ING computa- que pueda
justificar el estudio de los conceptos del lenguaje de programación. Aunque por lo general es posible
determinar por qué un determinado lenguaje de programación se hizo popular, que muchos creen, al menos
en retrospectiva, que los idiomas más populares no son siempre los mejores disponibles. En algunos casos,
se podría concluir que una lengua se convirtió ampliamente utilizado, al menos en parte, porque los que
ocupan posiciones para elegir idiomas no eran lo suficientemente familiarizado con los conceptos del lenguaje
de programación.

Por ejemplo, muchas personas creen que habría sido mejor si ALGOL 60 (Backus et al.,
1963) se había desplazado Fortran (Metcalf et al., 2004) en el
1.2 Dominios de programación 5

principios de 1960, ya que era más elegante y tenía mucho mejores mentos de control estatal, entre
otras razones. Eso no fue así, se debe en parte a los programadores de software y los gerentes de
desarrollo de ese tiempo, muchos de los cuales no entienden claramente el diseño conceptual de
ALGOL 60. Encontraron su descripción difíciles de leer (que era) y aún más difícil de comprender.
Ellos no aprecian las ventajas de la estructura de bloques, la recursividad, y sentencias de control
bien estructurados, por lo que no pudieron ver los beneficios de ALGOL 60 más de Fortran.

Por supuesto, muchos otros factores contribuyeron a la falta de aceptación de ALGOL 60, como
veremos en el capítulo 2. Sin embargo, el hecho de que los usuarios generalmente no tenía
conocimiento de los beneficios de la lengua jugaron un papel sig- sig-.

En general, si los que optan por idiomas estaban bien informados, tal vez mejor lenguas
eventualmente se exprima más pobres.

1.2 Dominios de programación

Las computadoras se han aplicado a una miríada de diferentes áreas, desde la lucha contra las plantas de energía
nuclear para proporcionar juegos de vídeo en teléfonos móviles. Debido a esta gran diversidad en el uso del
ordenador, lenguajes de programación con objetivos muy diferentes se han desarrollado. En esta sección, se
discuten brevemente algunas de las áreas de las aplicaciones informáticas y sus lenguajes asociados.

1.2.1 Aplicaciones Científicas


Los primeros computadores digitales, que apareció a finales de 1940 y principios de 1950, se
inventaron y se utilizan para aplicaciones científicas. Típicamente, las aplica- ciones científicas de
que el tiempo utilizan estructuras de datos relativamente simples, pero requieren grandes números de
punto flotante cálculos aritméticos. Las estructuras de datos más comunes fueron arrays y matrices;
las estructuras de control más comunes fueron operaciones y de selecciones. Los lenguajes de
programación de alto nivel primeros inventados para aplicaciones científicas fueron diseñados para
proporcionar a esas necesidades. Su competencia era el lenguaje ensamblador, por lo que la
eficiencia era una preocupación primordial. El primer idioma para aplicaciones científicas fue Fortran.
ALGOL 60 y la mayoría de sus descendientes también estaban destinados a ser utilizados en esta
área, a pesar de que fueron diseñados para ser utilizados en áreas relacionadas.

1.2.2 Aplicaciones de Negocios

El uso de ordenadores para aplicaciones de negocio se inició en la década de 1950. equipos especiales se
han desarrollado para este propósito, junto con lenguajes especiales. El primer lenguaje de alto nivel de éxito
para el negocio era COBOL (ISO / IEC, 2002),
6 Capítulo 1 Preliminares

la versión inicial de los cuales apareció en 1960. Sigue siendo el idioma más utilizado para estas aplicaciones.
Idiomas del trabajo se caracterizan por las instalaciones para la producción de los informes elaborados, formas
precisas de describir y al almacenarse los números decimales y los datos de caracteres, y la capacidad de
especificar las operaciones aritméticas decimales.

Ha habido pocos avances en idiomas de la aplicación de negocios OUT- lado el desarrollo y la


evolución de COBOL. Por lo tanto, este libro incluye sólo las discusiones limitadas de las estructuras
en COBOL.

1.2.3 Inteligencia Artificial


La inteligencia artificial (AI) es un amplio campo de aplicaciones informáticas caracterizarse por el uso de
más simbólico que los cálculos numéricos. La computación simbólica significa que los símbolos, que
consta de nombres en lugar de números, se manipulan. Además, la computación simbólica es más
conveniente hacer con listas enlazadas de datos en lugar de matrices. Este tipo de programación a
veces requiere más flexibilidad que otros dominios de programación. Por ejemplo, en algunas
aplicaciones de IA la capacidad de crear y ejecutar segmentos de código durante la ejecución es
conveniente.

El primer lenguaje de programación utilizado ampliamente desarrollada para aplicaciones de IA era el


lenguaje LISP funcional (McCarthy et al., 1965), que apareció en 1959. La mayoría de las aplicaciones de
IA desarrollados antes de 1990 fueron escritos en LISP o uno de sus parientes cercanos. Durante la
década de 1970, sin embargo, un enfoque alternativo para algunas de estas aplicaciones apareció en la
lógica de programación utilizando el Prolog (Clocksin y Mellish, 2003) idioma. Más recientemente, algunas
aplicaciones de AI han sido escritos en idiomas sistemas tales como C. Esquema (Dybvig, 2003), un
dialecto de LISP, y Prolog se introducen en los capítulos 15 y 16, respectivamente.

1.2.4 programación de sistemas

El sistema operativo y las herramientas de apoyo a la programación de un sistema informático se conocen


colectivamente como su software de sistemas. sistemas de software se utiliza casi continuamente y así tiene que ser
eficiente. Además, se debe tener características de bajo nivel que permiten a las interfaces de software a los
dispositivos externos que se escriban.
En los años 1960 y 1970, algunos fabricantes de ordenadores, como IBM, Digital, y Burroughs (ahora
UNISYS), desarrollaron lenguajes de alto nivel a pie de máquina especiales para sistemas de software en
sus máquinas. Para los ordenadores IBM marco man-, el idioma era PL / S, un dialecto de PL / I; para
Digital, fue una bendición, un lenguaje a un nivel justo por encima de lenguaje ensamblador; de Burroughs,
se extendió ALGOL. Sin embargo, la mayor parte del software del sistema está escrito en lenguajes de
programación más generales, tales como C y C ++.

El sistema operativo UNIX está escrito casi enteramente en C (ISO, 1999), que ha hecho que sea
relativamente fácil de puerto, o movimiento, a diferentes máquinas. Algunas de las características de C
hacen que sea una buena opción para la programación de sistemas. Es bajo nivel, una ejecución eficiente, y
no carga al usuario con muchas
1.3 Criterios de evaluación lingüística 7

restricciones de seguridad. Programadores de sistemas a menudo son excelentes programadores que creen que no
necesitan este tipo de restricciones. Algunos nonsystems progra- meros, sin embargo, encuentran C a ser demasiado
peligroso para su uso en sistemas de software grandes e importantes.

1.2.5 Software Web


La World Wide Web es apoyado por una ecléctica colección de idiomas, que van desde los lenguajes de
marcas, tales como HTML, que no es un lenguaje de programación, a los lenguajes de programación de
propósito general, como Java. Debido a la necesidad generalizada de contenido Web dinámico, una cierta
capacidad de cálculo se incluye a menudo en la tecnología de la presentación de contenidos. Esta
funcionalidad se puede proporcionar mediante la incorporación de código de programación en un documento
HTML. Dicho código es a menudo en la forma de un lenguaje de script, como JavaScript o PHP. También hay
algunos lenguajes de marcado como que se han ampliado para incluir construcciones que controlan el
procesamiento de documentos, que se discuten en la Sección 1.5 y en el Capítulo 2.

1.3 Criterios de evaluación lingüística

Como se señaló anteriormente, el propósito de este libro es examinar cuidadosamente los conceptos subyacentes de
las diversas construcciones y capacidades de los lenguajes de programación. También vamos a evaluar estas
características, se centra en su impacto en el proceso de desarrollo de software, incluyendo el mantenimiento. Para
ello, necesitamos un conjunto de criterios de evaluación. Dicha lista de criterios es necesariamente polémica, ya que
es difícil conseguir incluso dos científicos de la computación se pongan de acuerdo sobre el valor de alguna
característica determinada lengua en relación con los demás. A pesar de estas diferencias, la mayoría estaría de
acuerdo en que los criterios expuestos en los apartados siguientes son importantes.

Algunas de las características que influyen en tres de los cuatro más impor- tantes de estos
criterios se muestran en la Tabla 1.1, y los mismos criterios se discuten en las siguientes secciones. 2 Tenga
en cuenta que sólo las características más impor- tantes se incluyen en la tabla, lo que refleja la
discusión en las siguientes subsecciones. Posiblemente se podría argumentar que si uno considera las
características menos importantes, prácticamente todas las posiciones de la tabla podrían incluir
“balas”.

Tenga en cuenta que algunas de estas características son amplia y un tanto vaga, tales como la capacidad
de escritura, mientras que otros son construcciones del lenguaje específicos, tales como el manejo de excepciones.
Por otra parte, aunque la discusión podría parecer implicar que los criterios tienen la misma importancia, esa
implicación no se pretende, y está claro que no es el caso.

2. El cuarto criterio principal es el costo, que no está incluido en la tabla, ya que está sólo ligeramente relacionado con
los otros criterios y las características que influyen en ellos.

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