Pharo

Embed Size (px)

DESCRIPTION

Breve introducción a Pharo

Citation preview

UNIVERSIDAD DE ORIENTENCLEO MONAGASESCUELA DE INGENIERA Y CIENCIAS APLICADASCURSO ESPECIAL DE GRADOCIENCIAS DE LA COMPUTACIN

PHARO

Profesor: Jonathan Vsquez Bachilleres: Centeno G., Renny J. C.I.21.350.253 Fernndez G., Ana B. C.I.21.329.313

Maturn, Abril del 2015ndice1.INTRODUCCIN32. MARCO TERICO41.1 Qu es Pharo?41.2Cules son las ventajas de Pharo?41.3Historia de Pharo41.4Caractersticas de Pharo51.5Comenzando a usar Pharo61.5.1El men mundial61.5.2El navegador de clases. Encontrar clases y mtodos61.6Quines usan Pharo?73.DESARROLLO84.CONCLUSIN105.BIBLIOGRAFA11

1. INTRODUCCIN Los seres humanos siempre han tenido la necesidad de mejorar. A lo largo de la historia, cada estudio y cada nuevo avance tecnolgico ha surgido en base a mejorar una situacin que el ser humano consideraba un problema. Las primeras computadoras, por ejemplo, surgieron de la necesidad de agilizar y automatizar cmputos que a los seres humanos se les hacan muy rutinarios y extensos. La computadora, entonces, naci para llevar a cabo en minutos o incluso segundos, procesos que el ser humano tardaba das y meses en lograr. Por supuesto, las primeras preocupaciones se orientaban ms hacia los aspectos fsicos de las computadoras. Era necesario que estos dispositivos dejaran de ocupar cuartos enteros. Sin embargo, con el avance de las pocas, tambin fue necesario mejorar la parte lgica de las computadoras, esa que es intangible y que comnmente denominamos como software. Es entonces como comienzan a surgir paradigmas en torno a las reglas que aceptaba lo comunidad cientfica de determinado momento acerca de cmo deba realizarse la programacin y el estilo de lenguaje que deba emplearse. Esto es especialmente importante ya que, para que puedan darse los avances tecnolgicos en este mbito, es necesario lograr una efectiva comunicacin entre el programador y la mquina. 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 especficamente a la computadora las rdenes lgicas y que la computadora pueda entenderlas tambin. En funcin a esto, los lenguajes de programacin fueron evolucionando en base al paradigma de programacin de su poca especfica. As tambin los paradigmas fueron cambiando hasta llegar al que hoy en da es el ms comnmente usado: el paradigma orientado a objetos. Fundamentados en este paradigma, se han desarrollado numerosos lenguajes de programacin. 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 caractersticas y funciones propias y que pueden tener relacin con otros objetos. Estos objetos entonces pueden representarse en cdigos a travs de los lenguajes de programacin 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 dinmico. Es entonces como, buscando realizar una mejora del lenguaje de programacin Smalltalk, surgi Pharo. Este lenguaje de programacin es bastante reciente, y no es tan conocido. Sin embargo, ya ha destacado como una excelente opcin al momento de llevar a cabo alguna investigacin para desarrollar nuevos software. A pesar de que este lenguaje conserva caractersticas de Smalltalk, llega para innovar completamente lo ya conocido de los lenguajes de programacin orientados a objetos, implementando caractersticas como la programacin en vivo.

2. MARCO TERICO1.1 Qu es Pharo? Los autores Black et al. (2010) definen a Pharo como una implementacin moderna, de cdigo abierto y completamente funcional del lenguaje de programacin Smalltak y su entorno. Pharo es una derivacin de Squeak, una reimplementacin del clsico sistema smalltalk-80. Por otra parte, los autores Bergel, Cassou, Ducasse y Laval (2013) indican que Pharo es un:Lenguaje de programacin orientado a objetos, fuertemente influenciado por Smalltak. Pharo es ms que el uso de sintaxis y de un conjunto de reglas semnticas, como lo son la mayora de los lenguajes de programacin. Pharo cuenta con un entorno de desarrollo expandible y adaptable. Gracias a que posee numerosas libreras 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, segn Wikipedia (2015):Muchas personas creen que el nombre de Pharo hace referencia al famoso Pharos de la antigua Alejandra. 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 Cules son las ventajas de Pharo? Entre las ventajas que ofrece Pharo, los mismos autores Black et al. (2009) sealan que Pharo busca ofrecer una plataforma de cdigo abierto y de soporte que permita el desarrollo de software profesional, y una plataforma robusta y estable para la investigacin y desarrollo de lenguajes dinmicos y entornos de programacin. Por otra parte, Wikipedia (2015) seala tambin entre las ventajas que ofrece Pharo tambin se encuentra el hecho de que ofrece un fuerte conjunto de caractersticas de la programacin en vivo como lo son la manipulacin de objetos inmediata, actualizaciones en vivo, reordenacin de datos. Pharo adems soporta desarrollos web avanzados tales como Seaside y Tide. Por otra parte, la misma web Wikipedia (2015) seala como una de las ventajas principales de Pharo que:Como cualquier implementacin de Smalltalk, no es obligatorio compilar todo el cdigo en caso de que se quiera modificar algn mtodo. Por ejemplo, es posible crear o editar un nuevo mtodo 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) sealan 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 cdigos cuya contribucin se ha realizado bajo la licencia MIT. El proyecto Pharo comenz en Marzo del 2008, como una extensin de Squeak 3.9, y la primera versin beta fue lanzada el 31 de Julio del 2009. Complementando un poco la informacin histrica, Wikipedia (2015) seala que el desarrollo de Pharo se:Centr en ingeniera moderna de software y tcnicas de desarrollo. El proyecto Pharo buscaba desarrollar un Smalltak moderno para las compaas y para las investigaciones de ingeniera de software. Pharo tambin sirve como la plataforma de referencia de Seaside, un marco de aplicacin web que desarrolla aplicaciones web a travs de Smalltalk. Actualmente, Pharo se rige por el consorcio Pharo (para compaas) y por la asociacin 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 caractersticas que son slo opcionales en Squeak. Tambin sealan que las interfaces han sido simplificadas y revisadas. Adems, estos ltimos autores tambin sealan con respecto a los aspectos importantes del origen de Pharo que:Pharo no debera ser una copia del pasado Smalltak, sino una completa reinvencin de este. Pharo realmente favorecer evoluciones y cambios incrementales. Queremos ser capaces de experimentar con nuevas e importantes caractersticas y libreras. La evolucin significa que Pharo acepta errores, no se est buscando que sea la nueva y perfecta solucin a todos los problemas en un solo paso (aunque eso nos encantara). Pharo favorecer pequeos cambios incrementales, pero multitudes de ellos. El xito de Pharo depende de las contribuciones de su comunidad 1.4 Caractersticas de Pharo Con respecto a las caractersticas de Pharo, Wikipedia (2015) seala que Pharo posee las mismas caractersticas principales de Smalltalk: La misma web Wikipedia (2015) indica que estas caractersticas principales anteriormente mencionadas son: En primer lugar, todo es un objeto, en el sentido de la programacin 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 dinmicamente tipado, en contraste con los lenguajes estticamente tipados. La herencia es bastante sencilla. Por ltimo, la gestin de la memoria es automtica. Como es el caso de muchos lenguajes de programacin modernos, Pharo utiliza un recolector de basura. Una caracterstica a resaltar, est sealada por los autores Black et al. (2009) en donde explican que Pharo:Es bastante porttil. Incluso su mquina virtual est completamente escrita en Smalltalk, facilitando la depuracin, el anlisis y en cambio. Pharo es el vehculo para un rango muy amplio de proyectos innovadores con respecto a aplicaciones multimedia y plataformas educacionales diseadas para el desarrollo de entornos comerciales web. Por otra parte, Bergel et al. (2013) sealan 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 sensacin 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 mquina virtual, que es la nica parte del sistema que es distinta para cada sistema operativo y procesador. Mquinas virtuales pre-compiladas estn disponibles para la mayora de los entornos de desarrollo de computacin. Otra de las partes est constituida por los archivos fuente, que contienen los cdigos 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 ejecutndose. Esta ltima parte contiene dos elementos: una imagen que muestra el estado de todos los objetos en el sistema (incluyendo clases y mtodos, ya que se habla de objetos) y otro archivo que muestra todos los cambios al cdigo fuente del sistema. Es importante destacar que, segn los mismos autores Black et al. (2009): Smalltalk fue diseado 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 trminos: Click: este es el botn ms utilizado. Generalmente equivale a oprimir una vez el botn del mouse, sin hacer ninguna configuracin especial. Click de accin: este es el segundo botn ms usado. Por lo general se usa para mostrar un men contextual. Esto es, un men que ofrezca la posibilidad de realizar distintos tipos de accin, dependiendo de lo que est sealando 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 Segn 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 mayora de las herramientas esenciales de Pharo, como el navegador y el espacio de trabajo. 1.5.2 El navegador de clases. Encontrar clases y mtodos El navegador de clases, segn los autores Black et al. (2009) es una de las herramientas clave usadas en la programacin en Pharo. Hay muchos navegadores interesantes disponibles para Pharo, pero el navegador de clases es el ms bsico 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 categora se encuentra y navegar hasta dicha clase utilizando el navegador. Una segunda forma es enviar un mensaje desde el navegador hasta la clase, pidindole a la clase que se abra en el navegador. Por otra parte, con respecto a encontrar un mtodo Black et al.(2009) explican que:Algunas veces se pueden adivinar los nombres de los mtodos, o al menos parte del nombre, incluso ms fcilmente que el nombre de una clase. Por ejemplo, si ests interesado en el tiempo actual, debes esperar que exista un mtodo llamado ahora. Pero dnde puede estar dicho mtodo? El buscador de mtodos puede ser bastante til en este caso. El buscador de mtodos, muestra una lista con de todos los nombres de mtodos que contengan la palabra que se est buscando. Incluso este buscador puede ayudar a encontrar mtodos segn la funcin que cumplan los mismos. 1.6 Quines usan Pharo?Segn las fuentes de Wikipedia (2015) hoy en da ms de veinte compaas usan Pharo para sus proyectos de desarrollo. En particular, usan:- Seaside, para desarrollo de webs dinmicas.- Zinc, para arquitecturas de servidor.- Moose, para analizar datos y software de cualquier tipo de lenguajes de programacin. - Libreras grficas para evolucionadas interfaces de usuario. - Roassal para visualizar datos.La mayora de las compaas que hoy en da usan Pharo son pequeas o de mediano tamao. El proyecto Pharo es apoyado por importantes compaas como Inria o VMWare.

3.DESARROLLO Como qued evidenciado en el marco terico Pharo es un lenguaje de programacin bastante nuevo. Para respaldar esta afirmacin se encuentra el hecho de que an no existen grandes cantidades de bibliografas al respecto de este tema, y ms an, las existentes no estn disponibles an en espaol. Pharo se basa en el paradigma orientado a objetos, tomando en cuenta a los objetos como entidades provistas de mtodos y atributos y que pueden interactuar con otros objetos. A raz de esto se puede concluir, por otra parte, que el lenguaje de programacin Pharo entonces cuenta con todas las caractersticas de la programacin orientada a objetos. Cabe destacar con respecto a esto, que la principal caracterstica es la abstraccin. En las bibliografas consultadas siempre se daba la recomendacin 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 cmo funciona alguna parte de su cdigo. Olvidando que lo maravilloso de la abstraccin es saber que el cdigo lo hace, ms no cmo lo hace. Est dems decir que Pharo tambin cumple con las caractersticas de la herencia, el polimorfismo, el principio de ocultamiento, el encapsulamiento y la recoleccin de basura. Esta ltima caracterstica resulta muy importante al hablar de la gestin automtica de memoria. Muchos lenguajes modernos cuentan con ella, y esta les permite eliminar o borrar objetos que no hayan sido usados en mucho tiempo, dndole espacio a la creacin de otros objetos. Ahora bien, ya se ha dicho que Pharo es un lenguaje de programacin que se basa en el paradigma orientado a objetos, pero porque es una derivacin del clsico Smalltalk. De hecho, comenz como slo una extensin de otro lenguaje de programacin por el hecho de que haba que resolver problemas con licencias y derechos de autor de algunos cdigos. Ahora, qu es lo que hace a Pharo especial? Teniendo en cuenta que existen muchos otros lenguajes de programacin orientados a objetos y que estos ltimos, adems, son muchsimo ms conocidos que Pharo. La respuesta es la cantidad de innovaciones que Pharo trae consigo. Posee numerosas libreras y una buena cantidad de aplicaciones que favorecen los entornos de desarrollo de software. Ya hoy en da Pharo es parte de las ctedras de muchas universidades alrededor de todo el mundo. Y, adems, a pesar de que no son muchas las compaas que han empleado Pharo para desarrollar sus aplicaciones, pues son poco ms 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 solucin global a cualquier problema que desee resolverse, pero s permitir cambios favorables para la evolucin del software que, aunque sean cambios pequeos, al ser numerosos, soportarn el desarrollo de la programacin. Este lenguaje tambin toma ventaja, ya que el software Pharo es un software de cdigo abierto y est disponible en la web sin el menor costo. Pharo es un lenguaje sencillo de usar ideal para operaciones como la visualizacin y modificacin de datos, la creacin de mtodos, la creacin de redes, entre otros. Adems, cuenta con la gran ventaja que podra denominarse como una especie de programacin en vivo. Qu quiere decir programacin en vivo? Este trmino se refiere a que las actualizaciones de Pharo ocurren en tiempo real. Eventos como la reordenacin de datos y la manipulacin de objetos de forma automtica tambin ocurren gracias a la programacin en vivo. De hecho, se dice que Pharo ha creado un nuevo paradigma. Y esto se debe a que Pharo permite modificar algn mtodo del cdigo sin tener que volver a compilar todo el cdigo nuevamente. Esto, por supuesto, supone una gran ventaja para los programadores ya que es un gran modo de ahorrar tiempo, y facilita la correccin de errores en el cdigo. Pharo ha servido de soporte e impulso a proyectos muy innovadores de distintos tipos. Entre estos estn la investigacin y desarrollo de nuevas aplicaciones de software, aplicaciones educacionales y aplicaciones multimedia. Como cualquier lenguaje de programacin orientado a objetos, Pharo tambin consiste en ver un poco ms all. En que el programador busque las formas de adaptarse a la visin de que todo es un objeto, y no que simplemente busque apegarse a las normas de sintxis y a las reglas semnticas bajo las que se rige Pharo. Con respecto a las caractersticas de este lenguaje de programacin, no est dems destacar que al ser una extensin de este, Pharo hered todas las facultades de Smalltalk. Sin embargo, contar con algunas distinciones respecto a algunas libreras que antes podan 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 mquina 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 quizs en Pharo se hagan distinciones respecto a trminos a que el programador de otros lenguajes est acostumbrado. Por ejemplo, en Pharo en lugar de llamar a un mtodo suele utilizarse con ms 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 diseado 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 especfica y es necesario para usar Pharo. Adems de esto cuenta con un men principal bastante til al momento de navegar dentro del mismo Pharo. Por otra parte, cuenta con navegadores de bsqueda especiales cuando se quiere encontrar alguna clase dentro del cdigo o un mtodo en especfico.

4.CONCLUSIN

Pharo es un lenguaje de programacin innovador y bastante sencillo de usar tanto como para programadores sin experiencia como para profesionales. Es un lenguaje de programacin que ya est protagonizando las listas de herramientas tiles para la investigacin y desarrollo de software, tal como aplicaciones multimedia o aplicaciones educacionales. Como es un lenguaje de programacin desarrollado a partir de Smalltalk, se considera como un lenguaje de programacin 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 caractersticas bsicas de la programacin orientada a objetos. Tal y como lo son la abstraccin, el encapsulamiento, la herencia, el principio de ocultacin y la recoleccin 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 mtodos que deban cumplir con una funcin, as el usuario no sepa exactamente como lo hace. Adems de esto, este innovador lenguaje de programacin incluye una serie de caractersticas relacionadas con la programacin en vivo. Estas caractersticas permiten reordenar datos, realizar actualizaciones y trabajar con objetos en tiempo real. Este lenguaje de programacin invita a los programadores que hagan uso de l a adaptarse a la visin orientada a objetos. A tratar de concebir la realidad tal y como se busca programarla en lugar de slo limitarse a conocer los smbolos y las reglas de un lenguaje de programacin. Es de destacar que Pharo an no es un lenguaje muy conocido, de hecho es relativamente nuevo en cuanto a lenguajes de programacin se refiere. Pues a pesar de ser una extensin de Smalltalk se busc que fuera una completa reinvencin de dicho lenguaje de programacin. Por ello, es natural que muchas personas desconozcan de su existencia y de la vala de su uso. Sin embargo, an en medio de este desconocimiento, Pharo apunta a ser un lenguaje de programacin tan adecuado para el desarrollo de software, gracias a sus numerosas herramientas que facilitan y hacen ms cmodo su uso, que ya varias compaas estn usndolo para el desarrollo de sus entornos y sus aplicaciones. As como tambin, muchas universidades alrededor del mundo le han dado un lugar a Pharo entre sus centros de investigacin y enseanza.

5.BIBLIOGRAFA

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]