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?
Lenguajes Formales Volumen II – Año 2015 Contenido EDITORIAL 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
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.
Conseguir Pharo en tres pasos……..….16 Conclusiones…………………………...18 Bibliografía……………………………..19
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.
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.
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
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.
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:
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”.
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.
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 completamente 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.
* ¿Por qué debería interesarme Pharo, o incluso dedicar algo de tiempo a aprenderlo?
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.
Porque Pharo es el nuevo lenguaje "cool" en el campo de los lenguajes orientados a objetos.
* Un momento, pero ¿no está Pharo basado en Smalltalk, un lenguaje viejuno y muerto?
Tips de Pharo
* ¿Qué lo hace un lenguaje tan especial? Pharo es un lenguaje potente y elegante. Sin constructores, ni
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://pharoproject.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. 2015https://gist.github.com/luque/2dd83f8c815619df1ef1 [Consulta: Sábado, 11 de abril del 2015]
Pharo.
Wikipedia. Pharo. 2015http://uqbarwiki.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