lenguaje de programación pharo
Post on 21-Jul-2016
232 Views
Preview:
DESCRIPTION
TRANSCRIPT
Revista de Ingeniería de Sistemas
LENGUAJE DE
PROGRAMACIÓN PHARO
INSTALA PHARO
EN 3 PASOS
¡DESCUBRELO
AQUÍ!
CONOCE LAS
VENTAJAS DEL
LENGUAJE
PHARO
¿Por Qué
usar
Pharo?
Contenido
Introducción……………………………..3
¿Qué es Pharo…….. ……………………4
Ventajas de Pharo...……………………..4
Historia de Pharo………………………..5
Características de Pharo………………...5
Comenzando a usar Pharo….…………...6
¿Quiénes usan Pharo………………...…8
Tips sobre Pharo……………………….8
Ejemplo de Pharo………………….…...10
Conseguir Pharo en tres pasos……..….16
Conclusiones…………………………...18
Bibliografía……………………………..19
Volumen II – Año 2015
Lenguajes Formales
EDITORIAL
El desarrollo de la revista de
ingeniería de sistemas está basado en un
método de investigación científico, el cual
permite el desarrollo del aprendizaje en
forma dinámica, ofreciendo la oportunidad
de compartir recursos, ideas, criterios, y
experiencias. Esta segunda edición se
desarrolla en función de un tema en
específico, el lenguaje de programación
Pharo, el tema ha sido desarrollado por un
equipo de estudiantes de la Universidad de
Oriente, Núcleo de Monagas, cursantes de
áreas de grado en la modalidad curso
especial de grado.
Queremos expresar agradecimientos
por la oportunidad brindada, y esperamos
que la revista resulte de provecho para
futuros investigadores y la adquisición de
conocimientos.
INTRODUCCIÓN
El lenguaje de programación se remonta a épocas atrás, en las cuales el
hombre en la búsqueda de dar solución a diferentes tipos de problemas de gran
complejidad desarrollo la teoría de la computación, dando origen a las ciencias
de la computación basados en principios teóricos y lógicos, los cuales están
basados en lenguajes naturales, formales y artificiales. Los lenguajes de
programación se encuentran entre los lenguajes artificiales, teniendo su origen
por la necesidad de establecer un lenguaje bajo reglas sintácticas, semánticas y
lógicas que permitieran la comunicación entre el hombre y la máquina, es
decir el software y el hardware.
Caracterizado al origen de los lenguajes de programación ha surgido
diversidad de lenguajes de programación basados en distintos paradigmas y a
su vez algunos teniendo paradigmas en común, en esta segunda edición de la
revista de ingeniería de sistema estará orientada al lenguaje de programación
Pharo, tomemos una pequeña visión de Pharo, es una implementación
completa, moderna y de código abierto, del lenguaje y ambiente de
programación Smalltalk. Pharo es un derivado de Squeak, una
reimplementación del clásico sistema Smalltalk-80. Mientras que Squeak fue
desarrollado principalmente como una plataforma para desarrollo
experimental de software educacional, Pharo se esfuerza en ofrecer una
plataforma limpia y de código abierto para desarrollo profesional de software
y una plataforma robusta y estable para investigación y desarrollo en lenguajes
y ambientes dinámicos. Pharo sirve como la implementación de referencia
para el framework Seaside de desarrollo web. Estableciendo esta pequeña
visión podemos adentrarnos un poco más en el tema en una forma más amplia.
3
¿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.
¿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”.
4
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 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
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
5
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 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.
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.
6
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.
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”.
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”.
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.
7
¿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.
Tips de Pharo * ¿Por qué debería interesarme Pharo,
o incluso dedicar algo de tiempo a
aprenderlo?
Porque Pharo es el nuevo lenguaje
"cool" en el campo de los lenguajes
orientados a objetos.
* ¿Qué lo hace un lenguaje tan
especial?
Pharo es un lenguaje potente y
elegante. Sin constructores, ni
declaraciones de tipos, ni tipos
primitivos. Es un lenguaje orientado a
objetos puro, dinámico y sencillo, cuya
sintaxis se puede escribir en una
servilleta. Pharo consiste completa-
mente en objetos y paso de mensajes,
pero sobre todo en un entorno de
programación vivo que coloca a los
objetos en su centro.
* ¿Qué ventajas tiene programar en un
entorno de objetos vivos?
Una característica única de Pharo
es que mientras se programa, el
desarrollador se encuentra inmerso en
un mundo de objetos vivos, en lugar de
archivos de texto estáticos. Esto hace
posible obtener un feedback inmediato
de los objetos de tu aplicación, lo que
convierte la programación en una
experiencia única, mucho más
productiva y divertida que en los
lenguajes basados en archivos de texto
muertos a los que estás acostumbrado.
Además, Pharo está escrito en sí
mismo y consiste en un mundo de
objetos directamente accesibles por el
programador. Imagina un entorno en el
que puedes modificar el compilador,
personalizar las herramientas de
desarrollo o incluso crear un entorno
de desarrollo específico para cada
dominio.
* Un momento, pero ¿no está Pharo
basado en Smalltalk, un lenguaje
viejuno y muerto?
Pharo está inspirado en Smalltalk.
Concretamente, es un fork de Squeak,
un entorno Smalltalk open source
creado por el equipo original de
Smalltalk-80 (Dan Ingalls y Alan
Kay).
8
Smalltalk siempre tuvo el
inconveniente de adelantarse
demasiado a su tiempo. Por ejemplo,
fue un lenguaje de programación
orientado a objetos antes de que la
orientación a objetos se pusiera de
moda, de hecho, antes de que el
concepto orientado a objetos ni
siquiera se hubiera acuñado. También
fue un lenguaje dinámico antes de que
los lenguajes dinámicos estuvieran de
moda.
Actualmente, la mayoría de los
impedimentos para que Smalltalk
triunfara se han superado y por otro
lado, Smalltalk todavía está en muchos
aspectos por delante de sus sucesores,
especialmente en su visión de un
entorno en el que todo es un objeto y
cualquier cosa puede modificarse en
tiempo de ejecución.
Pharo está inspirado en Smalltalk,
pero es un Smalltalk moderno y open
source.
"Normal" Considered Harmful --
We aren't like frogs... are we? by Alan
Kay. 2009.
9
Un ejemplo Paso a Paso
Para poder mostrar cómo se usa Pharo, vamos a implementar el siguiente ejemplo.
Vamos a tener que construir un sistema para administrar camiones en una empresa de
logística. De cada camión vamos a saber su capacidad en kilos y su carga actual, y además
podemos saber si el camión está lleno o no.
Al analizar y plantear una solución al problema, identificamos que todos los objetos
camiones tienen el mismo comportamiento; por lo que extrajimos la siguiente clase:
Tenemos que recordar que la solución se da con los objetos que representan los
camiones, las clases sirven para crear muchos camiones iguales, o sea se comportan todos
juntos.
Recordemos un poquito la forma de comunicación con los diagramas de clase. Este
rectángulo que representa la clase tiene 3 secciones. En la superior va el nombre de la clase.
En la del medio los distintos atributos que tienen los objetos creados con esta clase. Y en la
inferior los mensajes que entienden los objetos creados con la clase.
Creación de Paquetes
Para comenzar tenemos que crear un paquete nuevo dentro de Pharo. Todas las clases
de Pharo están definidas dentro de un paquete, es muy recomendable que creemos un
paquete para cada uno de los ejercicios o problemas o sistemas que creemos.
Para crear un paquete tenemos que hacer click derecho sobre el sector de paquetes del
System Browser y elegir la opción Add Package. Esta opción nos va a preguntar el nombre
del nuevo Paquete.
10
Podemos ponerle el nombre que queramos, pero existe una convención que se usa en
todos lados y que Pharo va a usar para presentarnos la información. Esta convención es
separar las palabras con guión del medio.
En este caso vamos a crear el paquete Logistica.
Cuando creamos el paquete nos debería quedar algo así:
Creación de Clases
Ya tenemos nuestro paquete creado, por ahora esta vació y triste y solo; por lo que
vamos a comenzar creando la clase Camión.
Para crear una clase tenemos que hacer las siguientes operaciones:
1. Hacer click sobre el paquete donde va a vivir nuestra nueva clase.
2. Ingresar la definición de la clase en el Área de Edición de Código, ahora vamos a
hablar de que hay que escribir ahí.
3. Aceptar la definición, ya sea haciendo Ctrl+S o haciendo botón derecho y darle la
opción Accept.
Definición de una Clase
Las clases en cualquier ambiente de Smalltalk se definen a partir de un envió de
mensaje. Al hacer click sobre un paquete la herramienta ya nos propone un template:
11
Object subclass: #NameOfSubclass
instanceVariableNames:
classVariableNames:
category: 'Logistica'
La definición de nuestra clase Camion es la siguiente:
Object subclass: #LgCamion
instanceVariableNames: 'capacidad carga'
classVariableNames:
category: 'Logistica'
Las cosas que se modificarán son:
El nombre de la clase, es eso que esta después del numeral
Las variables de instancia, acá se agrega dentro del string cada uno de los nombres
de las variables de instancia separados por un espacio.
En este caso se tienen dos variables de instancia, capacidad y carga.
Nombre de la categoría donde esta clase, acá ya coloca la que corresponde al
paquete donde nos encontramos parados, pero siempre lo puede cambiar.
Después de crear la clase nos debería quedar algo así:
12
Definición de Métodos
Ya definimos nuestra clase ahora debemos agregarle métodos.
Para poder agregar un método a una clase, tenemos que tener seleccionada la clase
donde lo vamos a definir y hacer click sobre la categoría del método que vamos a generar;
si no tenemos la categoría, la podemos crear o hacer click en no messages que es la que se
tiene cuando está vacía o en -- all -- si ya tiene alguna.
Cuando hacemos esto la sección de edición de código nos va a ofrecer el template, esto
no es solo necesario para que nos muestre el template, sino que lo tiene que hacer para que
Pharo sepa dónde vamos a meter el método.
Entonces vamos a escribir el código de nuestro primer método, lo que vamos a hacer es
un mensaje para que el camión nos devuelva su capacidad:
capacidad
^ capacidad
Para guardar el método creado, tenemos que hacer CTRL+s o botón derecho y elegir la
opción Accept.
Cuando hacemos esto, nos queda el siguiente resultado.
13
Probando nuestros Objetos
Ya tenemos creada nuestra clase, ahora probemos los objetos que creamos. Para poder
crear objetos y mandarles mensajes necesitamos usar un workspace.
En un nuevo workspace vamos a escribir el siguiente código.
unCamion := LgCamion new.
unCamion capacidad.
Podemos ir ejecutando línea a línea. La primera nos conviene ejecutarla con un Do-It (o
haciendo Ctrl+d), ya que es una línea que tiene efecto de lado. Esta línea crea un nuevo
objeto a partir de la clase LgCamion y lo asigna a la variable local unCamion.
La 2da línea la vamos a ejecutar con un Print-It (o haciendo Ctrl+p), ya que es una
expresión que va a devolver la capacidad del camión.
Dando como resultado lo siguiente:
14
Pero porque cuando evaluamos la segunda expresión nos devuelve nil? Bueno, porque
todas los atributos de un objeto arrancan en nil.
Por eso debemos agregarle el método para poder establecer los valores de los objetos.
Vamos a agregar los siguientes métodos a la clase LgCamion:
capacidad: unValor.
capacidad := unValor.
carga
^ carga.
carga: unValor
carga:=unValor.
Además vamos a definir el método para responder al mensaje estasLleno.
estasLleno.
^ capacidad = carga.
Entonces una vez que tenemos este mensaje podemos hacer una prueba más interesante
con el siguiente workspace.
unCamion := LgCamion new.
unCamion capacidad:1000.
unCamion carga:1000. unCamion estasLleno.
Este workspace ya nos permite probar una variante, que podemos ir modificando para
probar nuestros objetos. Una alternativa interesante para esto, es poder crear tests unitarios.
Como guardar mis programas
En Pharo, los programas se guardan dentro de la imagen, o sea tengo que ir guardando la imagen con el código y los objetos de mis programas.
15
Pharo está disponible de forma gratuita para descargar en http://pharo-
project.org. Hay tres partes que necesitas descargar, que consisten en cuatro archivos (ver Figure1.1).
La máquina virtual (VM) es la única parte del sistema que
es diferente para cada sistema operativo y procesador. Hay
disponibles máquinas virtuales precompiladas para la mayor
parte de los ambientes. En la Figure1.1 vemos la máquina
virtual para la plataforma seleccionada, su nombre es
Pharo.exe
El archivo sources contiene el código fuente de todas las
partes de Pharo que no cambian muy frecuentemente. En la
Figure 1.1 su nombre es SqueakV39.- sources
La imagen de sistema actual es un snapshot de un
sistema Pharo cor- riendo, congelado en el tiempo.
Consiste de dos archivos: un archivo.image, que contiene el
estado de todos los objetos en el sistema (incluidos clases y
métodos, dado que son objetos también), y un
archivo.changes, que contiene un log de todos los
cambios en el código fuente del sistema. En la Figure
1.1, sus nombres son pharo.image y pharo.changes.
16
Al finalizar le debe aparecerle una ventana como se presenta a continuación y
felicitaciones ya ha instalado Pharo.
17
CONCLUSIONES
Pharo es un lenguaje de programación que ha venido evolucionando y
tomando fuerza, es un lenguaje potente y netamente orientado a objetos se
pueden llegar a las siguientes conclusiones.
Los lenguajes programación en la actualidad tienen una gran relevancia
para lograr desarrolla piezas de software que soluciones problemas en
específicos.
Pharo ofrece una plataforma de código abierto y de soporte.
Pharo está diseñado para trabajar con un ratón de tres botones para
hacer click, hacer action-click o hacer meta-click. Si no tienes un ratón
de tres botones, puede usar las teclas modificadoras para obtener el
mismo efecto.
Puedes usar atajos de teclado en el texto del workspace, o en cualquier
otra herramienta, para evaluar código. Los más importante de estos son
do it (CMD–d), print it (CMD–p), inspect it (CMD–i), explore it
(CMD–I) y browse it (CMD–b).
18
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]
Wikipedia. Pharo. 2015. http://www.paradigmasdelta.com/pharo
[Consulta: Sábado, 11 de abril del 2015]
Wikipedia. Pharo.
2015https://gist.github.com/luque/2dd83f8c815619df1ef1
[Consulta: Sábado, 11 de abril del 2015]
Wikipedia. Pharo. 2015http://uqbar-
wiki.org/index.php?title=Tutorial_de_Squeak_y_Pharo [Consulta:
Sábado, 11 de abril del 2015]
http://www.pharo-project.org es el sitio principal de Pharo.
Ejemplo extraído el 12/04/2015 de la página web:
http://uqbarwiki.org/index.php?title=Pharo_para_programadores_Ozo
nosos
19
REVISTA DE INGENIERÍA DE SISTEMAS.
VOL. 2 .Año 2015
Universidad de Oriente, Núcleo de Monagas.
Curso Especial de Grado.
Maturín, Monagas Venezuela.
Editores.
Br. José Vásquez.
Br. Argenis Gil.
Grupo PYTHON
Diseño Gráfico.
Br. José Vásquez.
Contacto:
josegvasquezg@gmail.com
argenisgilmarval@gmail.com
top related