From 5cc81b2b666a383a57c30286dd0a9082d0718f66 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Thu, 25 Jan 2007 15:55:18 +0000 Subject: [PATCH] =?utf8?q?Correcci=C3=B3n=20de=20ortograf=C3=ADa=20y=20de?= =?utf8?q?=20redacci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- propuesta.rst | 43 ++++++++++++++++++++----------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/propuesta.rst b/propuesta.rst index df0cd71..a56b63c 100644 --- a/propuesta.rst +++ b/propuesta.rst @@ -1,5 +1,4 @@ - ========================== Recolección de basura en D ========================== @@ -15,7 +14,7 @@ Propuesta de Tesis :Organización: Departamento de Computación, Facultad de Ingeniería :Organización: Universidad de Buenos Aires :Fecha: |date| -:Revisión: 1 +:Revisión: 2 :Estado: Borrador @@ -24,21 +23,19 @@ Propuesta de Tesis Introducción ============ -.. FIXME No me gusta como están redactados estos dos párrafos :S - -Los lenguajes modernos tienen una tendencia cada vez más marcada a -adoptar técnicas cada vez más sofisticadas, haciéndolos más ricos y +Los lenguajes modernos tienen una tendencia cada vez más marcada +a adoptar técnicas más sofisticadas, haciéndolos más ricos y convirtiéndolos realmente en lenguajes, no en meros preprocesadores que -convierten de una forma muy directa el código en assembly, permitiendo +convierten de una forma muy directa el código en *assembly*, permitiendo construcciones semánticamente más ricas y permitiendo al programar una mayor expresividad para plasmar algoritmos sin detenerse en los detalles del *hardware*. Estos conceptos supuestamente avanzados provienen, en general, de -lenguajes académicos (muchos de ellos funcionales) que implementan -estas funcionalidades hace mucho tiempo, pero que para su época o bien -no tuvieron suficiente difusión en el ambiente empresarial o bien eran -muy lentos por la baja capacidad de procesamiento de la época o eran +lenguajes académicos (muchos de ellos funcionales) que implementan estas +funcionalidades hace mucho tiempo, pero que para su época, o bien no +tuvieron suficiente difusión en el ambiente empresarial, o bien eran +muy lentos por la baja capacidad de procesamiento de la época o incluso demasiado *revolucionarios* para ser adoptados por programadores que no podían ver las ventajas que esos nuevos conceptos proveen. @@ -47,10 +44,10 @@ es uno de los más representativos. Lisp_ introdujo a principio de los '60 el concepto de recolección de basura como un mecanismo para alocar y liberar recursos de forma automática, pero no fue hasta avanzados los '90 que esta técnica se empezó a utilizar en lenguajes de programación -de uso comercial, cuando fue popularizado por Java_. Incluso luego -de más de 30 años para Java_ era costosa la recolección de basura, -lo que sumado a la presencia de una máquina virtual para ejecutar los -programas producidos condujo a que estos sean notablemente lentos. Aún +de uso comercial, cuando fue popularizado por Java_. Incluso luego de +más de 30 años para Java_ era costosa la recolección de basura, lo que +sumado a la presencia de una máquina virtual para ejecutar los programas +producidos condujo a que estos lenguajes sean notablemente lentos. Aún así Java_ creció y entre las mejoras introducidas hubieron mejoras en la recolección de basura. Otros lenguaje de programación populares que utilizan alguna forma de recolección de basura son Python_, Ruby_, PHP_ @@ -79,7 +76,7 @@ Lo que podría traducirse como: y web. Tal vez es hora de que nazca un nuevo lenguaje de la experiencia práctica implementando compiladores. -D_ es un lenguaje de programación con sintáxis tipo C, multiparadigma, +D_ es un lenguaje de programación con sintaxis tipo C, multiparadigma, compilado, con tipado fuerte y estático, con buenas capacidades tanto de programación de bajo nivel (*system programming*) como de alto nivel. Y este es tal vez el punto más fuerte de D, brindar lo mejor de los 2 @@ -124,7 +121,7 @@ Programación Genérica .. [#dtypeof] ``typeof`` permite especificar un tipo inferido de una expresión. Más información en http://www.digitalmars.com/d/declaration.html#typeof -.. [#difexpr] Las *expresiones ``if``* permiten la compilación condicinal +.. [#difexpr] Las *expresiones ``if``* permiten la compilación condicional basada en las características de un tipo. Esto se realiza en favor a una técnica utilizada en C++ de realizar *pattern matching* sobre los parámetros de las plantillas. Más información en @@ -194,7 +191,7 @@ Programación de Alto Nivel Programación Orientada a Objetos ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -- Obejetos *pesadas* (polimórficos). +- Objetos *pesadas* (polimórficos). - Interfaces. - Sobrecarga de operadores (con tipos de retorno covariantes [#dcovariant]_). - Clases anidadas. @@ -260,7 +257,7 @@ de los algoritmos a representar y como tal, nos impide desarrollar una mayor abstracción. Muchas veces se aduce también que la recolección de basura impide -el desarrollo de programas eficientes. Si bien es inegable que la +el desarrollo de programas eficientes. Si bien es innegable que la recolección de basura impone una carga extra, ésta es, en la mayoría de los casos, imperceptible. Incluso algunos algoritmos de recolección de basura pueden aumentar la eficiencia en casos determinados, como @@ -286,7 +283,7 @@ difícil la búsqueda de errores. Problema ======== Como se ha visto, D_ es un lenguaje de programación muy completo, -pero aún tiene algúnos aspectos inconclusos. Su recolector de basura +pero aún tiene algunos aspectos inconclusos. Su recolector de basura está en un estado de evolución muy temprana. Se trata de un marcado y barrido (*mark and sweep*) conservativo que, en ciertas circunstancias, no se comporta como es debido, ya que revisa toda la memoria del programa @@ -373,7 +370,7 @@ será: - Elegir un conjunto de las mejores soluciones halladas e implementarlas. Las soluciones que necesiten modificaciones en el lenguaje serán implementadas modificando el compilador libre de D_ GDC_, que - también será utilizado como plataforma principal de desarollo y + también será utilizado como plataforma principal de desarrollo y prueba (debido a la disponibilidad completa del código fuente y la libertad de usarlo y modificarlo libremente). De todas formas, siempre se priorizarán las modificaciones al *frontend* [#frontend]_ @@ -382,7 +379,7 @@ será: el *frontend* publicado por DigitalMars_, como DMD_. - Realizar pruebas sobre aplicaciones lo más variadas y reales posible sobre todas las soluciones implementadas, de manera de determinar de - forma fehasible las ventajas de unas y otras en cuanto a latencia, + forma fehaciente las ventajas de unas y otras en cuanto a latencia, consumo de memoria, consumo de procesador, tiempos de pausa, etc. - Presentar las conclusiones obtenidas del análisis y las pruebas realizadas, tanto en el ámbito académico de la facultad como a la @@ -399,7 +396,7 @@ será: Alcance ------- -Las ténicas de recolección de basura que se analizarán en este trabajo +Las técnicas de recolección de basura que se analizarán en este trabajo incluirán, pero no se limitarán a: - Conteo de referencia (*reference counting*). -- 2.43.0