0% encontró este documento útil (0 votos)
82 vistas17 páginas

Importancia de los Lenguajes de Programación

Cargado por

Alejandro Penayo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
82 vistas17 páginas

Importancia de los Lenguajes de Programación

Cargado por

Alejandro Penayo
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Capítulo 1

Lenguaje de programación: notación formal y rigurosa para describir


computaciones tanto para la máquina como para el ser humano

Computación: cualquier proceso que pueda ser efectuado por una


computadora (todo tipo de procesamiento)
Programar: arte de decirle a otra persona que es lo que deseamos que haga la
computadora
Obs: el lenguaje debe ayudarnos a escribir buenos programas; Un programa es
bueno si es fácil de leer, entender, y modificar

1.1 Razones para estudiar los conceptos de los


lenguajes de programación

Aumenta la capacidad de expresar ideas:

La profundidad del pensamiento está influenciada por el poder


expresivo del lenguaje

Aquellos con el conocimiento limitado del lenguaje natural tienen


dificultades para expresar pensamientos complejos

Es difícil para las personas conceptualizar estructuras que no saben


describir verbalmente o por escrito

Los programadores presentan restricciones similares, el lenguaje en el


que desarrollan establece limites de datos y las abstracciones que se
puede utilizar

Los programadores pueden aumentar su rango de procesos de


pensamiento aprendiendo nuevas construcciones del lenguaje

Simulación de características: Un programador de C que haya


aprendido la estructura y el uso de las matrices asociativas puede
diseñar estructuras similares en Perl

En otras palabras, el estudio de los conceptos de los lenguajes de


programación fomenta una apreciación por las características y

Capítulo 1 1
construcciones valiosas del lenguaje. Esto anima a los programadores a
utilizarlas, incluso cuando el lenguaje que están utilizando no las admite
directamente.

Mejor comprensión para elegir lenguajes apropiados

Los programadores suelen optar por un lenguaje que les sea familiar,
incluso si no es el más adecuado para la tarea

Tener un conocimiento más amplio de los lenguajes de programación


nos ayuda a tomar decisiones más informadas al seleccionar un
lenguaje

Aunque algunas características de un lenguaje pueden simularse en


otro, es preferible utilizar una característica cuyo diseño esté integrado
en un lenguaje en lugar de recurrir a una simulación.

Las soluciones simuladas suelen ser menos elegantes, más engorrosas


y menos seguras

Incrementa la habilidad para aprender nuevos lenguajes:

El aprendizaje de nuevos lenguajes, tanto de programación como


naturales, es fundamental en un campo en constante evolución como el
desarrollo de software. Comprender los conceptos fundamentales de
los lenguajes de programación facilita la adquisición de nuevos
lenguajes, al igual que entender la gramática de tu lengua materna
facilita el aprendizaje de un segundo idioma

La comunidad de programación TIOBE emite un índice que muestra la


popularidad relativa de los lenguajes de programación, lo que destaca
la importancia de estar al tanto de las tendencias en este campo.

Los programadores deben estar preparados para aprender diferentes


lenguajes debido a la naturaleza dinámica del panorama de la
programación. Además, es crucial que los programadores practicantes
conozcan el vocabulario y los conceptos fundamentales de los
lenguajes de programación para poder elegir y aprender un lenguaje de
manera informada.

Mejor comprensión de la implementación:

Esencial para utilizar los lenguajes de forma efectiva

Conocer los problemas de implementación ayuda a comprender por


qué los lenguajes están diseñados de cierta manera, lo que a su vez

Capítulo 1 2
permite utilizarlos de manera más inteligente

Comprender los detalles de la implementación nos permite detectar y


corregir ciertos errores del programa, así como visualizar cómo ejecuta
el ordenador los diferentes constructos del lenguaje

Proporciona pistas sobre la eficiencia relativa de los constructos


alternativos que pueden ser elegidos para un programa

Uso más efectivo de los lenguajes que ya se conocen:

Al estudiar los conceptos de los lenguajes de programación, los


programadores pueden aprender sobre partes previamente
desconocidas o no utilizadas de los lenguajes que ya conocen y
empezar a emplear esas características

Esto permite aprovechar al máximo las capacidades de los lenguajes


con los que ya están familiarizados y mejorar la calidad y eficiencia de
su trabajo

Avance general de la informática:

En retrospectiva, algunos lenguajes ampliamente utilizados podrían no


ser los mejores disponibles

Por ejemplo, se ha sugerido que ALGOL 60 hubiera sido una mejor


opción que Fortran en los años 60 debido a su elegancia y
características superiores de control, entre otras razones. Sin embargo,
la falta de comprensión de los conceptos de diseño de ALGOL 60 por
parte de los programadores y gerentes de desarrollo de software de
esa época contribuyó a su falta de aceptación

Si aquellos que eligen los lenguajes estuvieran mejor informados, es


posible que lenguajes más sólidos desplazaran a los menos adecuados
con el tiempo.

1.2 Dominios de programación


Áreas de aplicación de los ordenadores y sus lenguajes
asociados
1.2.1 Aplicaciones científicas:

Las primeras computadoras se utilizaron en aplicaciones científicas a finales


de los años 40 y principios de los 50, donde se requerían un gran número de

Capítulo 1 3
cálculos aritméticos en punto flotante. Las estructuras de datos más comunes
eran matrices y arrays, mientras que las estructuras de control más utilizadas
eran bucles de conteo y selecciones. Fortran fue el primer lenguaje diseñado
para satisfacer estas necesidades, seguido por ALGOL 60 y otros. Debido a su
eficiencia, Fortran sigue siendo utilizado en aplicaciones científicas donde la
velocidad es crucial.

1.2.2 Aplicaciones de negocios:

El uso de computadoras para aplicaciones comerciales comenzó en la década


de 1950, dando lugar al desarrollo de computadoras y lenguajes
especializados. COBOL (ISO/IEC, 2002) fue el primer lenguaje de alto nivel
exitoso para aplicaciones comerciales, lanzado en 1960 y sigue siendo
ampliamente utilizado hoy en día. Estos lenguajes están diseñados para
producir reportes elaborados, manejar números decimales y datos de
caracteres de manera precisa, y realizar operaciones aritméticas decimales.

1.2.3 Inteligencia Artificial:

Es un área amplia de aplicaciones informáticas caracterizada por el uso de


computaciones simbólicas en lugar de numéricas. Esto significa que se
manipulan símbolos, como nombres en lugar de números. La computación
simbólica se realiza más convenientemente con listas enlazadas de datos en
lugar de arrays. Este tipo de programación a veces requiere más flexibilidad
que otros dominios de programación, como la capacidad de crear y ejecutar
segmentos de código durante la ejecución. El primer lenguaje de programación
ampliamente utilizado desarrollado para aplicaciones de IA fue Lisp, que
apareció en 1959. La mayoría de las aplicaciones de IA desarrolladas antes de
1990 se escribieron en Lisp o en uno de sus parientes cercanos. Sin embargo,
durante principios de la década de 1970, apareció un enfoque alternativo para
algunas de estas aplicaciones: la programación lógica utilizando el lenguaje
Prolog. Más recientemente, algunas aplicaciones de IA se han escrito en
lenguajes de sistemas como C. Scheme

1.2.4 Web Software:

La World Wide Web se apoya en una colección ecléctica de lenguajes, desde


lenguajes de marcado como HTML, que no es un lenguaje de programación,
hasta lenguajes de programación de propósito general como Java. Debido a la
necesidad omnipresente de contenido web dinámico, a menudo se incluye
alguna capacidad de computación en la tecnología de presentación de
contenido. Esta funcionalidad puede ser proporcionada mediante la inserción

Capítulo 1 4
de código de programación en un documento HTML. Este código suele estar
en forma de un lenguaje de scripting, como JavaScript o PHP. También existen
algunos lenguajes similares al marcado que se han extendido para incluir
constructos que controlan el procesamiento de documentos

1.3 Criterios de evaluación de los Lenguajes

1.3.1 Legibilidad:
La legibilidad es uno de los criterios más importantes para juzgar un lenguaje
de programación, ya que se refiere a la facilidad con la que se pueden leer y
entender los programas
Antes de 1970, el desarrollo de software se concebía principalmente en
términos de escribir código, y la eficiencia era la principal característica
positiva de los lenguajes de programación
Sin embargo, en la década de 1970, surgió el concepto del ciclo de vida del
software, donde la codificación pasó a un papel mucho menos importante y el
mantenimiento fue reconocido como una parte importante del ciclo,
especialmente en términos de costos. Dado que la facilidad de mantenimiento
está determinada en gran medida por la legibilidad de los programas, esta se
convirtió en una medida importante de la calidad de los programas y los
lenguajes de programación.
Características que contribuyen a la legibilidad de un lenguaje de
programación:

[Link] Simplicidad general:

La simplicidad de un lenguaje de programación influye en su legibilidad. Un


lenguaje con muchos constructos es más difícil de aprender. La multiplicidad
de características y la sobrecarga de operadores pueden complicar aún más la
comprensión. Sin embargo, la simplicidad extrema puede hacer que los
programas sean difíciles de seguir

[Link] Ortogonalidad:
La ortogonalidad en un lenguaje de programación implica que un conjunto
reducido de constructos básicos puede combinarse de varias maneras para
formar estructuras de control y datos, y que cada combinación posible es

Capítulo 1 5
válida y significativa. Esta característica promueve la simplicidad y consistencia
en el diseño del lenguaje. Sin embargo, un exceso de ortogonalidad puede
conducir a una complejidad innecesaria y a una mayor dificultad para aprender
y comprender el lenguaje.

La simplicidad de un lenguaje también se ve afectada por la cantidad de


excepciones a sus reglas y por la claridad en el significado de sus
características. Los lenguajes funcionales, como Lisp, ofrecen una
combinación atractiva de simplicidad y ortogonalidad al basar las
computaciones en la aplicación de funciones. Aunque la ortogonalidad puede
ser una herramienta poderosa para la claridad y la consistencia en el diseño del
lenguaje, su exceso puede generar complejidad y dificultades adicionales.
[Link] Tipos de datos:

La presencia de caracteristicas adecuadas para definir tipos de datos y


estructuras de datos en un lenguaje es otra ayuda significativa para la
legibilidad. Por ejemplo, supongamos que se utiliza un tipo numérico para una
bandera indicadora porque no hay un tipo booleano en el lenguaje. En tal caso,
podríamos tener una asignación como la siguiente:

timeOut = 1

El significado de esta declaración no está claro, mientras que en un lenguaje


que incluye tipos booleanos, tendríamos lo siguiente:
timeOut = true

El significado de esta declaración es perfectamente claro.

[Link] Diseño de Sintaxis:

Ejemplos de diseños sintácticos que afectan la legibilidad:

Palabras especiales: La elección de palabras especiales en un lenguaje de


programación influye fuertemente en la apariencia y, por ende, en la
legibilidad de los programas. Además, es importante considerar si las
palabras especiales de un lenguaje pueden utilizarse como nombres de
variables, ya que esto puede generar confusión en el programa.

Forma y significado: Es crucial diseñar declaraciones de manera que su


aspecto sugiera su propósito para mejorar la legibilidad. La semántica debe
seguir la sintaxis, evitando confusiones. Por ejemplo, en C, la palabra
"static" tiene diferentes significados según el contexto. En UNIX, algunos
comandos como "grep" pueden resultar confusos para los principiantes
debido a su apariencia no descriptiva.

Capítulo 1 6
1.3.2 Capacidad de Escritura
La "writability" de un lenguaje se refiere a qué tan fácilmente puede ser usado
para crear programas en un dominio de problema específico. Las
características que afectan la legibilidad también impactan la "writability", ya
que escribir un programa implica revisar frecuentemente lo que ya se ha
escrito. Es importante considerar la "writability" en el contexto del dominio de
problema para el que fue diseñado el lenguaje. Por ejemplo, la "writability" de
Visual BASIC y C difiere dramáticamente dependiendo del tipo de aplicación
que se esté desarrollando. Las características más importantes que influyen en
la "writability" de un lenguaje se describen en las siguientes secciones:
[Link] Simplicidad y Ortogonalidad:
La simplicidad y ortogonalidad en un lenguaje de programación son cruciales.
Un conjunto pequeño pero coherente de constructos primitivos facilita el
diseño de soluciones a problemas complejos. Sin embargo, demasiada
ortogonalidad puede dificultar la detección de errores en el código, ya que
cualquier combinación de primitivos podría ser legal, lo que podría llevar a
resultados inesperados.
[Link] Expresividad:

La expresividad en un lenguaje de programación se refiere a cuán conveniente


es escribir instrucciones y realizar operaciones. Por ejemplo, en C, usar
"count++" es más corto que "count = count + 1", lo que hace que el código sea
más fácil de escribir y entender. La inclusión de características como el
operador "and then" en Ada o la instrucción "for" en Java también mejora la
capacidad de escribir código de manera eficiente. En resumen, la expresividad
facilita la escritura de programas.

1.3.3 Fiabilidad:
Se dice que un programa es confiable si cumple con sus especificaciones en
todas las condiciones. En las siguientes subsecciones se describen varias
características del lenguaje que tienen un efecto significativo en la
confiabilidad de los programas en un lenguaje determinado.
[Link] Comprobación de tipo:

La comprobación de tipos es la verificación de errores de tipo en un programa,


realizada por el compilador o durante la ejecución del programa. Es crucial para
la fiabilidad del lenguaje. La comprobación de tipos en tiempo de compilación

Capítulo 1 7
es preferible ya que es menos costosa que en tiempo de ejecución y permite
detectar errores tempranamente.

[Link] Manejo de excepciones:


La capacidad de un programa para interceptar errores en tiempo de ejecución
y otras condiciones inusuales detectables por el programa, tomar medidas
correctivas y luego continuar, es crucial para la fiabilidad del programa
[Link] Aliasing:
En términos simples, el aliasing ocurre cuando dos o más nombres diferentes
en un programa pueden acceder a la misma ubicación de memoria. Esto se
considera peligroso en la programación, ya que puede llevar a errores difíciles
de detectar

[Link] Legibilidad y capacidad de escritura:


En términos simples, el aliasing ocurre cuando dos o más nombres diferentes
en un programa pueden acceder a la misma ubicación de memoria. Esto se
considera peligroso en la programación, ya que puede llevar a errores difíciles
de detectar

1.3.4 Costo
El costo total de un lenguaje de programación es una función de muchas de
sus características.

1. Costo de entrenamiento de programadores: Depende de la simplicidad y


ortogonalidad del lenguaje y la experiencia de los programadores. Los
lenguajes más poderosos pueden ser más difíciles de aprender.

2. Costo de escribir programas: Depende de la facilidad de escritura del


lenguaje, relacionada con su cercanía al propósito de la aplicación
específica.

3. Costo de compilación: Varía según el lenguaje y la eficiencia del


compilador.

4. Costo de ejecución: Depende del diseño del lenguaje y su eficiencia en


tiempo de ejecución.

5. Costo del sistema de implementación del lenguaje: Influencia en la


adopción del lenguaje. Por ejemplo, Ada tuvo problemas debido al alto
costo de sus primeros compiladores.

Capítulo 1 8
6. Costo de la fiabilidad: Los fallos en sistemas críticos pueden ser
extremadamente costosos.

7. Costo de mantenimiento de programas: Depende principalmente de la


legibilidad.

1.4 Influencias en el diseño del Lenguaje


Otros factores importantes que influyen en el diseño de los lenguajes de
programación son la arquitectura de computadores y las metodologías de
diseño de programación

1.4.1 Arquitectura de Computadores:


La arquitectura de von Neumann ha influido en el diseño de lenguajes
imperativos, donde datos y programas comparten memoria y la CPU ejecuta
instrucciones separadas. Esto ha dado lugar a características clave como
variables, asignaciones y repeticiones iterativas. Los lenguajes funcionales,
que se basan en la aplicación de funciones, ofrecen una alternativa, pero aún
no pueden igualar la eficiencia de los lenguajes imperativos en la arquitectura
actual. Aunque se cree que los lenguajes imperativos son más naturales, la
eficiencia sigue siendo un factor dominante en su preferencia.

1.4.2 Metodologías de Diseño de Programación


En las décadas de 1960 y 1970, el análisis del proceso de desarrollo de
software y el diseño de lenguajes se intensificaron debido al cambio de costos
de hardware a software. Surgieron nuevas metodologías como el diseño de
arriba hacia abajo y el refinamiento paso a paso. Se notaron deficiencias en los
lenguajes, como la comprobación incompleta de tipos y el uso excesivo de
gotos. Luego, en los años 80, surgió el diseño orientado a objetos,
enfocándose en la abstracción de datos y la herencia. Aunque los métodos
orientados a datos dominan, los procedimentales aún se usan, especialmente
en la concurrencia. Estos cambios llevaron a nuevos constructos de lenguaje.

1.5 Categoría de Lenguajes


Los lenguajes de programación se dividen en imperativos, funcionales,
lógicos y orientados a objetos. Aunque algunos los consideran categorías
separadas, los lenguajes orientados a objetos generalmente derivan de los
imperativos. Los lenguajes de secuencias de comandos, como Perl y
JavaScript, son esencialmente imperativos. Los lenguajes lógicos, como

Capítulo 1 9
Prolog, se basan en reglas en lugar de algoritmos. También hay lenguajes
híbridos de marcado/programación, como JSTL y XSLT, que agregan
capacidades de programación a lenguajes de marcado como HTML y XML.

1.6 Compensaciones del Diseño del Lenguaje


Diseñar un lenguaje de programación implica compromisos entre criterios
como fiabilidad, costo de ejecución, facilidad de escritura y legibilidad. Por
ejemplo, Java prioriza la fiabilidad al verificar los índices de las matrices, lo que
aumenta el costo de ejecución. En contraste, C++ ofrece flexibilidad con
punteros, pero puede comprometer la fiabilidad. Estos conflictos requieren
decisiones cuidadosas al diseñar un lenguaje.

Otro ejemplo de criterios conflictivos que lleva a compensaciones en el diseño


es el caso de APL. APL tiene un conjunto poderoso de operadores para
operandos de matriz, pero esto resulta en programas con una legibilidad muy
pobre debido a la alta expresividad del lenguaje. El diseñador de APL sacrificó
legibilidad por facilidad de escritura.
Los ejemplos de conflictos entre los criterios de diseño (y evaluación) de
lenguajes son numerosos y variados, lo que demuestra que elegir constructos
y características al diseñar un lenguaje de programación requiere muchos
compromisos y compensaciones.

1.7 Métodos de Implementación


Este fragmento explica cómo funcionan los componentes fundamentales de
una computadora: la memoria y el procesador. La memoria almacena datos y
programas, mientras que el procesador ejecuta instrucciones básicas definidas
en el lenguaje de máquina. Además, se necesitan sistemas de software más
complejos, como los sistemas operativos, para proporcionar funciones más
avanzadas y gestionar recursos del sistema. Estos sistemas interactúan con el
hardware y ofrecen una interfaz para los programas de usuario, creando capas
de abstracción sobre el lenguaje de máquina subyacente.

1.7.1 Compilación:
Este fragmento explica tres métodos generales para implementar lenguajes de
programación: compiladores, analizadores léxicos y sintácticos, y generadores
de código intermedio. Los compiladores traducen programas a lenguaje de
máquina, mientras que los analizadores léxicos y sintácticos estructuran el

Capítulo 1 10
código en árboles de análisis. El generador de código intermedio produce un
programa en un lenguaje intermedio antes de traducirlo al lenguaje de máquina
final. Además, se discute el proceso de optimización y el vínculo entre
programas de usuario y programas del sistema operativo, lo que se conoce
como enlace y carga. El fragmento también menciona el cuello de botella de
von Neumann, que limita la velocidad de las computadoras basadas en esta
arquitectura.

1.7.2 Interpretación Pura:


La interpretación pura es un método donde los programas son ejecutados
directamente por un intérprete, sin necesidad de traducción previa. Aunque
facilita la depuración y permite mensajes de error más claros, es mucho más
lento que la compilación, ya que cada declaración debe decodificarse cada vez
que se ejecuta. Aunque fue común en lenguajes más antiguos, como APL y
Lisp, hoy en día se ha vuelto a utilizar en algunos lenguajes de secuencias de
comandos web, como JavaScript y PHP.

1.7.3 Sistemas de Implementación Híbridos:


Los sistemas de implementación de lenguajes a menudo son híbridos,
combinando compilación e interpretación. Estos traducen programas a un
lenguaje intermedio para facilitar la interpretación. Ejemplos incluyen Perl y las
primeras implementaciones de Java, que utilizan bytecode. También hay
sistemas JIT (Just-in-Time) que traducen a código de máquina durante la
ejecución. En ocasiones se ofrecen tanto compilación como interpretación para
el desarrollo y la depuración.

1.7.4 Preprocesadores:
Un preprocesador es un programa que procesa otro programa justo antes de
ser compilado. Las instrucciones del preprocesador están incrustadas en el
programa y se utilizan comúnmente para incluir código de otros archivos o para
definir símbolos que representan expresiones. Por ejemplo, la instrucción

#include

en C copia el contenido de un archivo especificado en el programa en la


posición de la instrucción. Otras instrucciones se utilizan para definir macros,
como en el caso de

Capítulo 1 11
#define

, que permite crear atajos para expresiones complejas. Sin embargo, el uso de
macros puede causar problemas si las expresiones tienen efectos secundarios,
ya que pueden evaluarse más de una vez durante la expansión de la macro.

1.8 Entornos de Programación


Un entorno de programación es un conjunto de herramientas para desarrollar
software. UNIX ofrece diversas herramientas poderosas, aunque su interfaz
solía ser menos uniforme. Borland JBuilder proporciona un ambiente integrado
para el desarrollo en Java. Microsoft Visual Studio .NET es una colección
amplia y avanzada de herramientas para varios lenguajes. NetBeans es
utilizado principalmente para Java, pero también admite otros lenguajes como
JavaScript, Ruby y PHP. Estos entornos no solo son herramientas, sino también
marcos de trabajo que facilitan el desarrollo de aplicaciones.

Resumen
El estudio de los lenguajes de programación es valioso por varias razones:
mejora nuestra capacidad para utilizar diferentes estructuras al escribir
programas, nos permite elegir lenguajes para proyectos de manera más
inteligente y facilita el aprendizaje de nuevos idiomas.
Los ordenadores se utilizan en una amplia variedad de dominios de resolución
de problemas. El diseño y la evaluación de un lenguaje de programación
particular dependen en gran medida del dominio en el que se va a utilizar.
Entre los criterios más importantes para evaluar los lenguajes se encuentran la
legibilidad, capacidad de escritura, confiabilidad y costo general. Estos serán la
base sobre la cual examinaremos y juzgaremos las diversas características del
lenguaje discutidas en el resto del libro.
Las principales influencias en el diseño de lenguajes han sido la arquitectura de
la máquina y las metodologías de diseño de software.
Diseñar un lenguaje de programación es principalmente una proeza de
ingeniería, en la que se deben hacer numerosos compromisos entre
características, construcciones y capacidades.
Los principales métodos de implementación de lenguajes de programación son
la compilación, la interpretación pura y la implementación híbrida.
Los entornos de programación se han convertido en partes importantes de los

Capítulo 1 12
sistemas de desarrollo de software, en los que el lenguaje es solo uno de los
componentes.

Conceptos Importantes:
“Constructos” en el contexto de la programación, son las unidades básicas o
elementos fundamentales que conforman la estructura y la lógica de un
programa. Estos pueden incluir palabras clave, operadores, estructuras de
control, tipos de datos, funciones y otros elementos que permiten al
programador crear y manipular la lógica y el flujo de un programa.

Preguntas de Repaso
1. ¿Por qué es útil para un programador tener la capacidad de aprender
nuevos lenguajes, incluso si tiene un buen conocimiento de varios
lenguajes de programación?

Es útil porque aumenta la capacidad del programador para adaptarse a


diferentes contextos y requerimientos de proyectos, lo que puede
mejorar la eficiencia y la calidad del software.

2. ¿Por qué es esencial elegir un lenguaje de programación apropiado para


una solución de software específica?

Es esencial porque cada lenguaje de programación tiene sus propias


características, fortalezas y debilidades, y elegir el lenguaje adecuado
puede afectar significativamente el rendimiento, la facilidad de
mantenimiento y la escalabilidad del software.

3. ¿Cuál fue el primer lenguaje de programación para aplicaciones científicas


que se utilizó con éxito?

Fortran fue el primer lenguaje de programación utilizado con éxito para


aplicaciones científicas.

4. ¿Cuál es el primer lenguaje de programación de alto nivel exitoso para


empresas?

COBOL es considerado el primer lenguaje de programación de alto nivel


exitoso para empresas.

5. ¿En qué lenguaje de programación se desarrollaron la mayoría de las


aplicaciones de inteligencia artificial antes de 1990?

Capítulo 1 13
La mayoría de las aplicaciones de inteligencia artificial antes de 1990 se
desarrollaron en Lisp.

6. ¿Cuál es el lenguaje de marcado más popular para el desarrollo web?

HTML es el lenguaje de marcado más popular para el desarrollo web.

7. ¿Por qué es controvertida una lista de criterios de evaluación de lenguajes


de programación para el desarrollo de software?

Es controvertida porque los criterios pueden entrar en conflicto entre sí,


lo que dificulta la evaluación objetiva de un lenguaje de programación.

8. ¿Cómo afecta la simplicidad general de un lenguaje de programación a su


legibilidad?

Una mayor simplicidad general tiende a mejorar la legibilidad de un


lenguaje de programación al hacerlo más fácil de entender y mantener.

9. ¿Por qué se considera ortogonal el diseño de instrucciones de VAX?

Se considera ortogonal porque las instrucciones de VAX están


diseñadas de manera que cualquier instrucción puede usar cualquier
modo de direccionamiento.

10. ¿Por qué demasiada ortogonalidad causa problemas?

Demasiada ortogonalidad puede causar problemas porque puede


aumentar la complejidad y dificultar la comprensión y el uso del
lenguaje.

11. ¿Cómo se utiliza "writability" como medida de qué tan fácilmente un


lenguaje se puede utilizar para crear programas?

La "writability" se utiliza como medida de qué tan fácil es escribir y


mantener programas en un lenguaje determinado.

12. ¿Por qué demasiada ortogonalidad es perjudicial para la "writability"?

Demasiada ortogonalidad puede ser perjudicial para la "writability"


porque puede aumentar la complejidad y la dificultad de escribir
programas de manera clara y concisa.

13. Da un ejemplo de expresividad en un lenguaje.

Un ejemplo de expresividad en un lenguaje es la capacidad de expresar


conceptos y soluciones de manera clara y concisa, sin necesidad de
código redundante o complicado.

Capítulo 1 14
14. ¿Qué es la verificación de tipos?

La verificación de tipos es el proceso de comprobar si los tipos de


datos utilizados en un programa son compatibles según las reglas del
lenguaje de programación.

15. Da un ejemplo de cómo la falta de verificación de tipos, ya sea en tiempo


de compilación o de ejecución, puede conducir a innumerables errores de
programa.

Por ejemplo, si se intenta sumar un número entero con una cadena de


texto en un lenguaje que no verifica tipos en tiempo de compilación,
podría conducir a un error en tiempo de ejecución debido a la
incompatibilidad de tipos.

16. ¿Cómo se calcula el costo total de un lenguaje de programación?

El costo total de un lenguaje de programación se calcula considerando


varios factores, como el costo de desarrollo, mantenimiento,
entrenamiento y ejecución del software.

17. ¿Qué es la portabilidad de un lenguaje?

La portabilidad de un lenguaje se refiere a su capacidad para


ejecutarse en diferentes plataformas de hardware y software sin
modificaciones significativas.

18. ¿Cuál es el uso del criterio de definición bien definido?

El criterio de definición bien definido se utiliza para evaluar si las reglas


y comportamientos de un lenguaje de programación están claramente
definidos y son coherentes.

19. ¿Cómo ocurre la ejecución de un programa de código máquina en una


computadora de arquitectura de von Neumann?

La ejecución de un programa de código máquina en una computadora


de arquitectura de von Neumann sigue un ciclo de buscar-ejecutar,
donde las instrucciones se extraen de la memoria y se ejecutan
secuencialmente por la CPU.

20. ¿Qué dos deficiencias de lenguaje de programación se descubrieron como


resultado de la investigación en desarrollo de software en la década de
1970?

Capítulo 1 15
Las dos deficiencias principales fueron la falta de expresividad y la
dificultad para verificar y mantener grandes programas de software.

21. ¿Cuáles son las tres características fundamentales de un lenguaje de


programación orientado a objetos?

Las tres características fundamentales son encapsulación, herencia y


polimorfismo.

22. ¿Qué lenguaje fue el primero en admitir las tres características


fundamentales de la programación orientada a objetos?

Simula fue el primer lenguaje en admitir las tres características


fundamentales de la programación orientada a objetos.

23. ¿Cuál es un ejemplo de dos criterios de diseño de lenguaje que están en


conflicto directo entre sí?

Un ejemplo es la ortogonalidad versus la simplicidad, donde demasiada


ortogonalidad puede comprometer la simplicidad del lenguaje.

24. ¿Cuáles son los tres métodos generales de implementación de un lenguaje


de programación?

Los tres métodos son la compilación, la interpretación pura y la


implementación híbrida.

25. ¿Qué produce una ejecución más rápida del programa, un compilador o un
intérprete puro?

Un compilador generalmente produce una ejecución más rápida del


programa en comparación con un intérprete puro.

26. ¿Qué papel desempeña la tabla de símbolos en un compilador?

La tabla de símbolos actúa como una base de datos durante el proceso


de compilación, almacenando información sobre los símbolos (como
variables y funciones) utilizados en el programa.

27. ¿Qué hace un enlazador?

Un enlazador es un programa que une diferentes módulos de código y


datos para formar un programa ejecutable.

28. ¿Por qué es importante el cuello de botella de von Neumann?

El cuello de botella de von Neumann es importante porque limita la


velocidad de procesamiento de una computadora al restringir la

Capítulo 1 16
velocidad a la que los datos pueden ser transferidos entre la memoria y
la CPU.

29. ¿Cuáles son las ventajas de implementar un lenguaje con un intérprete


puro?

Las ventajas incluyen una fácil implementación de operaciones de


depuración en tiempo de ejecución y la capacidad de proporcionar
mensajes de error detallados que hacen referencia al código fuente
original.

Capítulo 1 17

También podría gustarte