trabajo pharo

16
UNIVERSIDAD DE ORIENTE NÚCLEO MONAGAS ESCUELA DE INGENIERÍA Y CIENCIAS APLICADAS CURSO ESPECIAL DE GRADO CIENCIAS DE LA COMPUTACIÓN PHARO Profesor: Jonathan Vásquez Bachilleres: Centeno G., Renny J. C.I.21.350.253

Upload: renny-centeno

Post on 15-Aug-2015

104 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: trabajo pharo

UNIVERSIDAD DE ORIENTE

NÚCLEO MONAGAS

ESCUELA DE INGENIERÍA Y CIENCIAS APLICADAS

CURSO ESPECIAL DE GRADO

CIENCIAS DE LA COMPUTACIÓN

PHARO

Profesor: Jonathan Vásquez

Bachilleres:

Centeno G., Renny J. C.I.21.350.253

Fernández G., Ana B. C.I.21.329.313

Maturín, Abril del 2015

Page 2: trabajo pharo

Índice1. INTRODUCCIÓN.........................................................................................................3

2. MARCO TEÓRICO.........................................................................................................4

1.1 ¿Qué es Pharo?............................................................................................................4

1.2 ¿Cuáles son las ventajas de Pharo?......................................................................4

1.3 Historia de Pharo....................................................................................................4

1.4 Características de Pharo........................................................................................5

1.5 Comenzando a usar Pharo.....................................................................................6

1.5.1 El menú mundial.............................................................................................6

1.5.2 El navegador de clases. Encontrar clases y métodos...................................6

1.6 ¿Quiénes usan Pharo?............................................................................................7

3. DESARROLLO.............................................................................................................8

4. CONCLUSIÓN............................................................................................................10

5. BIBLIOGRAFÍA.........................................................................................................11

Page 3: trabajo pharo

1. INTRODUCCIÓN

Los seres humanos siempre han tenido la necesidad de mejorar. A lo largo de la historia, cada estudio y cada nuevo avance tecnológico ha surgido en base a mejorar una situación que el ser humano consideraba un problema. Las primeras computadoras, por ejemplo, surgieron de la necesidad de agilizar y automatizar cómputos que a los seres humanos se les hacían muy rutinarios y extensos. La computadora, entonces, nació para llevar a cabo en minutos o incluso segundos, procesos que el ser humano tardaba días y meses en lograr. Por supuesto, las primeras preocupaciones se orientaban más hacia los aspectos físicos de las computadoras. Era necesario que estos dispositivos dejaran de ocupar cuartos enteros. Sin embargo, con el avance de las épocas, también fue necesario mejorar la parte lógica de las computadoras, esa que es intangible y que comúnmente denominamos como software.

Es entonces como comienzan a surgir paradigmas en torno a las reglas que aceptaba lo comunidad científica de determinado momento acerca de cómo debía realizarse la programación y el estilo de lenguaje que debía emplearse. Esto es especialmente importante ya que, para que puedan darse los avances tecnológicos en este ámbito, es necesario lograr una efectiva comunicación entre el programador y la máquina. Esto es debido a que es necesario que los desarrolladores cuenten con lenguajes suficientemente sencillos como para llegar a dominarlos al punto de que puedan dictarle específicamente a la computadora las órdenes lógicas y que la computadora pueda entenderlas también.

En función a esto, los lenguajes de programación fueron evolucionando en base al paradigma de programación de su época específica. Así también los paradigmas fueron cambiando hasta llegar al que hoy en día es el más comúnmente usado: el paradigma orientado a objetos. Fundamentados en este paradigma, se han desarrollado numerosos lenguajes de programación. Algunos muy conocidos como Java, C++ y Smalltalk. Este paradigma se basa en que, la realidad está compuesta por objetos. Esos objetos son entidades que poseen características y funciones propias y que pueden tener relación con otros objetos. Estos objetos entonces pueden representarse en códigos a través de los lenguajes de programación orientados a objetos.

A pesar de que estos lenguajes son bastante usados actualmente, siempre se está buscando mejorarlos o actualizarlos para adecuarlos a los cambios en el entorno dinámico. Es entonces como, buscando realizar una mejoría del lenguaje de programación Smalltalk, surgió Pharo. Este lenguaje de programación es bastante reciente, y no es tan conocido. Sin embargo, ya ha destacado como una excelente opción al momento de llevar a cabo alguna investigación para desarrollar nuevos software. A pesar de que este lenguaje conserva características de Smalltalk, llega para innovar completamente lo ya conocido de los lenguajes de programación orientados a objetos, implementando características como la programación en vivo.

Page 4: trabajo pharo

2. MARCO TEÓRICO

1.1 ¿Qué es Pharo? Los autores Black et al. (2010) definen a Pharo como una” implementación moderna, de código abierto y completamente funcional del lenguaje de programación Smalltak y su entorno. Pharo es una derivación de Squeak, una reimplementación del clásico sistema smalltalk-80”. Por otra parte, los autores Bergel, Cassou, Ducasse y Laval (2013) indican que Pharo es un:

Lenguaje de programación orientado a objetos, fuertemente influenciado por Smalltak. Pharo es más que el uso de sintaxis y de un conjunto de reglas semánticas, como lo son la mayoría de los lenguajes de programación. Pharo cuenta con un entorno de desarrollo expandible y adaptable. Gracias a que posee numerosas librerías orientadas a objetos y marcos de trabajo, Pharo brilla al momento de modelar y visualizar datos, scripting, crear redes, y muchas otras aplicaciones.

Como una curiosidad, según Wikipedia (2015):

Muchas personas creen que el nombre de Pharo hace referencia al famoso “Pharos” de la antigua Alejandría. “Pharos” es una palabra griega que significa faro. El logo de Pharo muestra el dibujo de un faro dentro de una “o”, que es la última letra de dicho nombre.

1.2 ¿Cuáles son las ventajas de Pharo?

Entre las ventajas que ofrece Pharo, los mismos autores Black et al. (2009) señalan que Pharo “busca ofrecer una plataforma de código abierto y de soporte que permita el desarrollo de software profesional, y una plataforma robusta y estable para la investigación y desarrollo de lenguajes dinámicos y entornos de programación”. Por otra parte, Wikipedia (2015) señala también entre las ventajas que ofrece Pharo también se encuentra el hecho de que “ofrece un fuerte conjunto de características de la programación en vivo como lo son la manipulación de objetos inmediata, actualizaciones en vivo, reordenación de datos. Pharo además soporta desarrollos web avanzados tales como Seaside y Tide”.

Por otra parte, la misma web Wikipedia (2015) señala como una de las ventajas principales de Pharo que:

Como cualquier implementación de Smalltalk, no es obligatorio compilar todo el código en caso de que se quiera modificar algún método. Por ejemplo, es posible crear o editar un nuevo método dentro del depurador sin tener que reiniciar el proceso. Algunas personas llaman a esta capacidad enfoque de “editar y continuar”, opuesto al enfoque de “editar, compilar y ejecutar”.

1.3 Historia de Pharo

Para conocer un poco la historia de Pharo, Black et al. (2009) señalan que Pharo:

Llega para resolver una serie de problemas de licencia con Squeak. A diferencia de versiones anteriores de Squeak, la esencia de Pharo se basa únicamente en códigos

Page 5: trabajo pharo

cuya contribución se ha realizado bajo la licencia MIT. El proyecto Pharo comenzó en Marzo del 2008, como una extensión de Squeak 3.9, y la primera versión beta fue lanzada el 31 de Julio del 2009.

Complementando un poco la información histórica, Wikipedia (2015) señala que el desarrollo de Pharo se:

Centró en ingeniería moderna de software y técnicas de desarrollo. El proyecto Pharo buscaba desarrollar un Smalltak moderno para las compañías y para las investigaciones de ingeniería de software. Pharo también sirve como la plataforma de referencia de Seaside, un marco de aplicación web que desarrolla aplicaciones web a través de Smalltalk. Actualmente, Pharo se rige por el consorcio Pharo (para compañías) y por la asociación Pharo (para usuarios).

Los mismos autores Black et al. (2009) explican que Pharo “no utiliza muchos de los paquetes de datos de Squeak. Sin embargo, incluye numerosas características que son sólo opcionales en Squeak”. También señalan que “las interfaces han sido simplificadas y revisadas”.

Además, estos últimos autores también señalan con respecto a los aspectos importantes del origen de Pharo que:

Pharo no debería ser una copia del pasado Smalltak, sino una completa reinvención de este. Pharo realmente favorecerá evoluciones y cambios incrementales. Queremos ser capaces de experimentar con nuevas e importantes características y librerías. La evolución significa que Pharo acepta errores, no se está buscando que sea la nueva y perfecta solución a todos los problemas en un solo paso (aunque eso nos encantaría). Pharo favorecerá pequeños cambios incrementales, pero multitudes de ellos. El éxito de Pharo depende de las contribuciones de su comunidad

1.4 Características de Pharo

Con respecto a las características de Pharo, Wikipedia (2015) señala que “Pharo posee las mismas características principales de Smalltalk”: La misma web Wikipedia (2015) indica que estas características principales anteriormente mencionadas son:

En primer lugar, todo es un objeto, en el sentido de la programación orientada a objetos. En segundo lugar, Pharo es reflexivo. Es decir, un programa puede modificar sus propiedades y comportamientos internos en el tiempo. Por otra parte, Pharo es un lenguaje dinámicamente tipado, en contraste con los lenguajes estáticamente tipados. La herencia es bastante sencilla. Por último, la gestión de la memoria es automática. Como es el caso de muchos lenguajes de programación modernos, Pharo utiliza un recolector de basura.

Una característica a resaltar, está señalada por los autores Black et al. (2009) en donde explican que Pharo:

Es bastante portátil. Incluso su máquina virtual está completamente escrita en Smalltalk, facilitando la depuración, el análisis y en cambio. Pharo es el vehículo para un rango muy amplio de proyectos innovadores con respecto a aplicaciones

Page 6: trabajo pharo

multimedia y plataformas educacionales diseñadas para el desarrollo de entornos comerciales web.

Por otra parte, Bergel et al. (2013) señalan que:

La sintaxis tan simple y el modelo de objeto maleable de Pharo son bastante apreciados. Programadores con o sin experiencia disfrutan del paradigma que se basa en que “todo es un objeto”. La simplicidad y expresividad de Pharo, así como los entornos de desarrollo en vivo, brindan a los programadores una sensación única.

1.5 Comenzando a usar Pharo

Para poder hacer uso de Pharo, el usuario deberá descargar tres partes que constan de cuatro archivos cada una. Los autores Black et al. (2009) distinguen estas partes como:

La máquina virtual, que es la única parte del sistema que es distinta para cada sistema operativo y procesador. Máquinas virtuales pre-compiladas están disponibles para la mayoría de los entornos de desarrollo de computación. Otra de las partes está constituida por los archivos fuente, que contienen los códigos fuente de las partes de Pharo que no cambian con frecuencia. Y una imagen actual del sistema, que muestra una captura de pantalla del sistema Pharo ejecutándose. Esta última parte contiene dos elementos: una imagen que muestra el estado de todos los objetos en el sistema (incluyendo clases y métodos, ya que se habla de objetos) y otro archivo que muestra todos los cambios al código fuente del sistema.

Es importante destacar que, según los mismos autores Black et al. (2009):

Smalltalk fue diseñado para ser trabajado con un mouse de tres botones. Estos tres botones, sin embargo pueden ser representados por configuraciones en el teclado, por lo que se usan los siguientes términos:

- Click: este es el botón más utilizado. Generalmente equivale a oprimir una vez el botón del mouse, sin hacer ninguna configuración especial.

- Click de acción: este es el segundo botón más usado. Por lo general se usa para mostrar un menú contextual. Esto es, un menú que ofrezca la posibilidad de realizar distintos tipos de acción, dependiendo de lo que esté señalando el mouse.

- Meta-click: activa una matriz de identificaciones que realiza operaciones en el objeto que esté en la pantalla.

1.5.1 El menú mundial

Según los autores Black et al. (2009) este menú “muestra formas simples de acceder a muchas de las herramientas que Pharo ofrece. Se pueden apreciar la mayoría de las herramientas esenciales de Pharo, como el navegador y el espacio de trabajo”.

1.5.2 El navegador de clases. Encontrar clases y métodos

El navegador de clases, según los autores Black et al. (2009) “es una de las herramientas clave usadas en la programación en Pharo. Hay muchos navegadores interesantes disponibles para Pharo, pero el navegador de clases es el más básico que puede encontrarse”.

Page 7: trabajo pharo

Estos mismos autores, manifiestan que:

Existen distintas formas de encontrar una clase en Pharo. La primera forma, es saber (o suponer) en qué categoría se encuentra y navegar hasta dicha clase utilizando el navegador. Una segunda forma es enviar un mensaje desde el navegador hasta la clase, pidiéndole a la clase que se abra en el navegador.

Por otra parte, con respecto a encontrar un método Black et al.(2009) explican que:

Algunas veces se pueden adivinar los nombres de los métodos, o al menos parte del nombre, incluso más fácilmente que el nombre de una clase. Por ejemplo, si estás interesado en el tiempo actual, debes esperar que exista un método llamado “ahora”. Pero ¿dónde puede estar dicho método? El buscador de métodos puede ser bastante útil en este caso. El buscador de métodos, muestra una lista con de todos los nombres de métodos que contengan la palabra que se está buscando. Incluso este buscador puede ayudar a encontrar métodos según la función que cumplan los mismos.

1.6 ¿Quiénes usan Pharo?

Según las fuentes de Wikipedia (2015) hoy en día más de veinte compañías usan Pharo para sus proyectos de desarrollo. En particular, usan:

- Seaside, para desarrollo de webs dinámicas.

- Zinc, para arquitecturas de servidor.

- Moose, para analizar datos y software de cualquier tipo de lenguajes de programación.

- Librerías gráficas para evolucionadas interfaces de usuario.

- Roassal para visualizar datos.

La mayoría de las compañías que hoy en día usan Pharo son pequeñas o de mediano tamaño. El proyecto Pharo es apoyado por importantes compañías como Inria o VMWare.

Page 8: trabajo pharo

3.DESARROLLO

Como quedó evidenciado en el marco teórico Pharo es un lenguaje de programación bastante nuevo. Para respaldar esta afirmación se encuentra el hecho de que aún no existen grandes cantidades de bibliografías al respecto de este tema, y más aún, las existentes no están disponibles aún en español. Pharo se basa en el paradigma orientado a objetos, tomando en cuenta a los objetos como entidades provistas de métodos y atributos y que pueden interactuar con otros objetos. A raíz de esto se puede concluir, por otra parte, que el lenguaje de programación Pharo entonces cuenta con todas las características de la programación orientada a objetos. Cabe destacar con respecto a esto, que la principal característica es la abstracción. En las bibliografías consultadas siempre se daba la recomendación al programador (tuviera experiencia o no) de que tratara de no tomarle tanta importancia a las cosas. Muchas veces los programadores tienden a sentirse confundidos porque no entienden exactamente cómo funciona alguna parte de su código. Olvidando que lo maravilloso de la abstracción es saber que el código lo hace, más no cómo lo hace.

Está demás decir que Pharo también cumple con las características de la herencia, el polimorfismo, el principio de ocultamiento, el encapsulamiento y la recolección de basura. Esta última característica resulta muy importante al hablar de la gestión automática de memoria. Muchos lenguajes modernos cuentan con ella, y esta les permite eliminar o borrar objetos que no hayan sido usados en mucho tiempo, dándole espacio a la creación de otros objetos. Ahora bien, ya se ha dicho que Pharo es un lenguaje de programación que se basa en el paradigma orientado a objetos, pero porque es una derivación del clásico Smalltalk. De hecho, comenzó como sólo una extensión de otro lenguaje de programación por el hecho de que había que resolver problemas con licencias y derechos de autor de algunos códigos.

Ahora, ¿qué es lo que hace a Pharo especial? Teniendo en cuenta que existen muchos otros lenguajes de programación orientados a objetos y que estos últimos, además, son muchísimo más conocidos que Pharo. La respuesta es la cantidad de innovaciones que Pharo trae consigo. Posee numerosas librerías y una buena cantidad de aplicaciones que favorecen los entornos de desarrollo de software. Ya hoy en día Pharo es parte de las cátedras de muchas universidades alrededor de todo el mundo. Y, además, a pesar de que no son muchas las compañías que han empleado Pharo para desarrollar sus aplicaciones, pues son poco más de veinte empresas, Pharo ha cumplido con las expectativas de los desarrolladores y los programadores.

Pharo no busca distinguirse como el lenguaje perfecto, ya que tal cosa no existe. Como sus mismos creadores mencionaron, Pharo no es una solución global a cualquier problema que desee resolverse, pero sí permitirá cambios favorables para la evolución del software que, aunque sean cambios pequeños, al ser numerosos, soportarán el desarrollo de la programación. Este lenguaje también toma ventaja, ya que el software Pharo es un software de código abierto y está disponible en la web sin el menor costo. Pharo es un lenguaje sencillo de usar ideal para operaciones como la visualización y modificación de datos, la creación de métodos, la creación de redes, entre otros.

Page 9: trabajo pharo

Además, cuenta con la gran ventaja que podría denominarse como una especie de programación en vivo.

¿Qué quiere decir programación en vivo? Este término se refiere a que las actualizaciones de Pharo ocurren en tiempo real. Eventos como la reordenación de datos y la manipulación de objetos de forma automática también ocurren gracias a la programación en vivo. De hecho, se dice que Pharo ha creado un nuevo paradigma. Y esto se debe a que Pharo permite modificar algún método del código sin tener que volver a compilar todo el código nuevamente. Esto, por supuesto, supone una gran ventaja para los programadores ya que es un gran modo de ahorrar tiempo, y facilita la corrección de errores en el código.

Pharo ha servido de soporte e impulso a proyectos muy innovadores de distintos tipos. Entre estos están la investigación y desarrollo de nuevas aplicaciones de software, aplicaciones educacionales y aplicaciones multimedia. Como cualquier lenguaje de programación orientado a objetos, Pharo también consiste en ver un poco más allá. En que el programador busque las formas de adaptarse a la visión de que todo es un objeto, y no que simplemente busque apegarse a las normas de sintáxis y a las reglas semánticas bajo las que se rige Pharo. Con respecto a las características de este lenguaje de programación, no está demás destacar que al ser una extensión de este, Pharo heredó todas las facultades de Smalltalk. Sin embargo, contará con algunas distinciones respecto a algunas librerías que antes podían ser opcionales, entre otros detalles no tan importantes.

Si se habla de Pharo como software para programar en este mismo lenguaje, se debe destacar que la persona que desee comenzar Pharo puede hacerlo cuando desee. Simplemente necesita de acceso a internet para descargar los tres componentes fundamentales para usar Pharo. Estos son, como se mencionó anteriormente, una máquina virtual, archivos fuente y una imagen del sistema. De esta manera, el programador podrá usar Pharo para comenzar a desarrollar proyectos de software de manera sencilla gracias a las numerosas herramientas que ofrece Pharo para facilitar la tarea de programar. Cabe destacar que quizás en Pharo se hagan distinciones respecto a términos a que el programador de otros lenguajes está acostumbrado. Por ejemplo, en Pharo en lugar de “llamar a un método” suele utilizarse con más frecuencia la frase “enviar un mensaje”

Como ya se ha mencionado Pharo cuenta con numerosas herramientas que hacen bastante agradable la experiencia de programar. Por ejemplo, incluso aunque fue diseñado para trabajar con un mouse de tres botones, permite hacer configuraciones en el teclado para que quien posea un mouse con menos botones puedan trabajar sin problemas. Esto es importante puesto que cada uno de esos tres botones tiene su funcionalidad específica y es necesario para usar Pharo. Además de esto cuenta con un menú principal bastante útil al momento de navegar dentro del mismo Pharo. Por otra parte, cuenta con navegadores de búsqueda especiales cuando se quiere encontrar alguna clase dentro del código o un método en específico.

Page 10: trabajo pharo

4.CONCLUSIÓN

Pharo es un lenguaje de programación innovador y bastante sencillo de usar tanto como para programadores sin experiencia como para profesionales. Es un lenguaje de programación que ya está protagonizando las listas de herramientas útiles para la investigación y desarrollo de software, tal como aplicaciones multimedia o aplicaciones educacionales. Como es un lenguaje de programación desarrollado a partir de Smalltalk, se considera como un lenguaje de programación orientado a objetos. Pharo brinda las posibilidades de que los programadores usuarios disfruten de las ventajas del paradigma que se refiere a que “todo es un objeto”. Por otra parte, Pharo permite al programador contar con las características básicas de la programación orientada a objetos. Tal y como lo son la abstracción, el encapsulamiento, la herencia, el principio de ocultación y la recolección de basura. Esto le permite ser bastante eficiente al momento de gestionar la memoria del sistema y al momento en el que el usuario defina métodos que deban cumplir con una función, así el usuario no sepa exactamente como lo hace.

Además de esto, este innovador lenguaje de programación incluye una serie de características relacionadas con la programación en vivo. Estas características permiten reordenar datos, realizar actualizaciones y trabajar con objetos en tiempo real. Este lenguaje de programación invita a los programadores que hagan uso de él a adaptarse a la visión orientada a objetos. A tratar de concebir la realidad tal y como se busca programarla en lugar de sólo limitarse a conocer los símbolos y las reglas de un lenguaje de programación.

Es de destacar que Pharo aún no es un lenguaje muy conocido, de hecho es relativamente nuevo en cuanto a lenguajes de programación se refiere. Pues a pesar de ser una extensión de Smalltalk se buscó que fuera una completa reinvención de dicho lenguaje de programación. Por ello, es natural que muchas personas desconozcan de su existencia y de la valía de su uso. Sin embargo, aún en medio de este desconocimiento, Pharo apunta a ser un lenguaje de programación tan adecuado para el desarrollo de software, gracias a sus numerosas herramientas que facilitan y hacen más cómodo su uso, que ya varias compañías están usándolo para el desarrollo de sus entornos y sus aplicaciones. Así como también, muchas universidades alrededor del mundo le han dado un lugar a Pharo entre sus centros de investigación y enseñanza.

Page 11: trabajo pharo

5.BIBLIOGRAFÍA

- BERGEL, Alexandre; et al. Deep into Pharo. Suiza: Square Bracket Associates, 2013.

- BLACK, Andrew; et al. Pharo by example. Suiza: Square Bracket Associates, 2009.

- Wikipedia. Pharo. 2015. http://en.wikipedia.org/wiki/Pharo [Consulta: Lunes, 06 de abril del 2015. 13:00]