1. 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
2. Índice
1. 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
3. 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.
4. 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
5. 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
6. 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”.
7. 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.
8. 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.
9. 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.
10. 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.
11. 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]