Dicotomía de ousterhout es científico de la computación John Ousterhout categorización 's [1] que los lenguajes de programación de alto nivel tienden a caer en dos grupos, cada uno con distintas propiedades y usos: programación del sistema lenguas y lenguajes de scripting - comparar la programación en el grande y programación en el intestino . Esta distinción subyace en el diseño de su lenguaje Tcl .
Los lenguajes de programación del sistema (o lenguajes de aplicaciones ) suelen tener las siguientes propiedades:
- Están escritos estáticamente
- Apoyan la creación de estructuras de datos complejas
- Los programas en ellos se compilan en código de máquina
- Los programas incluidos en ellos están destinados a funcionar en gran medida independientemente de otros programas
Los lenguajes de programación de sistemas tienden a utilizarse para componentes y aplicaciones con una gran cantidad de funciones internas, como sistemas operativos, servidores de bases de datos y navegadores web. Estas aplicaciones suelen emplear algoritmos y estructuras de datos complejos y requieren un alto rendimiento. Los ejemplos prototípicos de lenguajes de programación de sistemas incluyen C y Modula-2 .
Por el contrario, los lenguajes de secuencias de comandos (o lenguajes de pegamento ) tienden a tener las siguientes propiedades:
- Se escriben dinámicamente
- Tienen poca o ninguna provisión para estructuras de datos complejas
- Los programas en ellos ( scripts ) se interpretan
Los lenguajes de scripting tienden a usarse para aplicaciones donde la mayor parte de la funcionalidad proviene de otros programas (a menudo implementados en lenguajes de programación del sistema); las secuencias de comandos se utilizan para pegar juntos otros programas o añadir capas adicionales de funcionalidad en la parte superior de los programas existentes. Ousterhout afirma que los scripts tienden a ser cortos y a menudo están escritos por programadores menos sofisticados, por lo que la eficiencia de ejecución es menos importante que la simplicidad y facilidad de interacción con otros programas. Las aplicaciones comunes para la creación de scripts incluyen la generación de páginas web, la generación de informes, las interfaces gráficas de usuario y la administración del sistema. Los ejemplos prototípicos de lenguajes de secuencias de comandos incluyen AppleScript , C shell , archivos por lotes de DOS y Tcl .
Historia
La dicotomía se estableció completamente en Ousterhout (1998) , aunque Ousterhout había establecido esta distinción desde al menos el diseño de Tcl (1988), y la había declarado públicamente en varias ocasiones. Un episodio temprano fue " The Tcl War " de finales de septiembre y octubre de 1994, donde Richard Stallman publicó un artículo crítico de Tcl, titulado "Por qué no debería usar Tcl", [2] a lo que Ousterhout respondió con una articulación de su dicotomía: [3]
Creo que las objeciones de Stallman a Tcl pueden deberse en gran parte a un aspecto del diseño de Tcl que no comprende o con el que no está de acuerdo. Esta es la propuesta de que debe usar * dos * lenguajes para un sistema de software grande: uno, como C o C ++, para manipular las complejas estructuras de datos internas donde el rendimiento es clave, y otro, como Tcl, para escribir en formato pequeño. scripts que unen las piezas de C y se utilizan para extensiones.
Crítica
Los críticos creen que la dicotomía es muy arbitraria y se refieren a ella como la falacia de Ousterhout o la falsa dicotomía de Ousterhout . [4] Si bien se puede decir que la tipificación estática versus dinámica, la complejidad de la estructura de datos e independiente versus autónoma son características no relacionadas, la crítica habitual a la dicotomía de Ousterhout es su distinción entre compilar versus interpretar. Ni la semántica ni la sintaxis dependen significativamente de si una implementación de lenguaje se compila en lenguaje de máquina, interpreta, tokeniza o compila por bytes al comienzo de cada ejecución, o cualquier combinación de estos. Además, básicamente ningún lenguaje de uso generalizado se interpreta puramente sin un compilador; esto hace que la compilación frente a la interpretación sea un parámetro dudoso en una taxonomía de lenguajes de programación.
Referencias
- ^ Ousterhout, John (marzo de 1998). "Scripting: programación de nivel superior para el siglo XXI" (PDF) . Revista IEEE Computer . Consultado el 27 de marzo de 2020 .
- ^ Stallman, Richard (23 de septiembre de 1994). "Por qué no debería usar Tcl" . Grupo de noticias : comp.lang.tcl . Usenet: [email protected] . Consultado el 13 de septiembre de 2015 .
- ^ Ousterhout, John (26 de septiembre de 1994). "Re: Por qué no debería usar Tcl" . Grupo de noticias : comp.lang.tcl . Usenet: [email protected] . Consultado el 13 de septiembre de 2015 .
- ^ Stuart Halloway. La dicotomía de Osterhout no lo es .
- Este artículo se basa en material extraído del Diccionario gratuito de informática en línea antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de licencias" de la GFDL , versión 1.3 o posterior.
Otras lecturas
- Kumar, Deepak (septiembre de 2010). "Reflexiones: guerras de idiomas y falsas dicotomías" . Inroads ACM . 1 (3).
- Grover, Andy. "Conviértete en un mejor programador al tender un puente sobre la dicotomía de Ousterhout" . Puente de código abierto .
enlaces externos
- La dicotomía de Ousterhout en la wiki de Tcl