jueves, 1 de agosto de 2013

Lázaro, levantate y anda!!

Hace muchos años que utilizo en mis desarrollos personales una combinación de lenguajes; no hay un único lenguaje que cubra todas las posibilidades y problemas. Para proyectos de bajo nivel o de procesamiento de señales suelo utilizar Assembler del procesador en cuestión. Para los proyectos de tipo Web o basadas en Linux uso distintas variantes de Java, aunque para Linux también uso Bash o Perl y para los proyectos de tipo aplicaciones Windows personales utilizo distintas variantes de Pascal. Incluso hice alguna incursión reciente en utilizar Pascal para PIC (mikroPascal) con cuyo resultado quedé muy conforme aún desarrollando en una plataforma tan diminuta como el PIC 12F675. En particular sobre Pascal me quedé "prendado" con el desde que lo aprendí a comienzos de la década del 80 como parte de un postgrado en ciencias de computación que hice en ese entonces en USA. Aprendí con el los fundamentos de la ingeniería de software y la ideología de Niklaus Wirth (autor de otros lenguajes de programación como PL/1, Modula-2 y Oberón) sobre como debía ser un lenguaje asi como el concepto de algoritmos y patrones que desde ese entonces forma parte de mi acervo técnico como desarrollador. Desde ese entonces vengo arrastrando una larga tradición de código escrito, que se remonta tan lejos como la década del '80 donde comencé a utilizar intensivamente el Borland Turbo Pascal para mayormente aplicaciones tipo consola para DOS, pequeños utilitarios que daban performance similares a las que se podían obtener con lenguaje Assembler pero con mucha mejor capacidad de manipular textos y procesar tareas con matemática de alguna complejidad; de hecho fue por esa época que reduje el uso de Assembler en las plataformas Wintel mayormente a segmentos aislados de código que requería optimización o algunas librerías muy específicas, todo el resto comencé a programarlo en Turbo Pascal. Algunas librerias muy básicas que fui construyendo con el tiempo datan desde esa época. Luego en su momento abracé Borland Delphi como ambiente IDE para desarrollar aplicaciones GUI de Windows. Fui saltando desde la versión 2 hasta la 7 que fué la última que tenía versiones públicas o "personales" con la estrategia de dar desarrolladores una herramienta básica sin cargo o con un cargo muy nominal, cobrando por las versiones y librería de mayor escalas mas asociadas al trabajo en ambientes comerciales. Esto contribuyó a que se desarrollara una gigantesca base de componentes Delphi/Pascal disponibles como freeware, algunos incluso que proveyendo código fuente permitían tomarlo como punto de partida para componentes mas complejos.
Luego Borland se transformó en Embarcadero y cambió completamente su estrategia. Retiraron el soporte a versiones previas de Delphi y lanzaron Delphi XE cuya caracteristica es que no tiene versiones "personales" sin costo ni licencias académicas, con un costo prohibitivo (estamos hablando de USD 4000 para arriba).
Seguí trabajando con la última versión Delphi Personal 7 en la que hice desarrollos recientes de integración entre N1MM y utilitarios para integrar OmniRig en mi configuración concursera; pero lo inevitable llegó, en uno de los últimos updates de Windows 7 el IDE de Delphi 7 dejó de funcionar, y como producto no soportado no es mucho lo que se puede hacer al respecto.
Asi que empujado por los hechos no puedo mas que saltar de plataforma para mis desarrollos personales; he considerado distintas variantes de C++ (empezando por Visual C++) pero si bien puedo programar C/C++ con fluidez no es un lenguaje que me guste; he descartado también Visual Basic porque si bien con los años se ha transformado en un lenguaje potente para desarrollar aplicaciones personales tiene algunas limitaciones para desarrollar aplicaciones cuando se aproximan a la máquina o se requieren integraciones complejas que en ocasiones implica desarrollar dynamic linked libraries (dll).
En mi búsqueda tropecé, en realidad recordé porque lo había revisado sin mucha profundidad hace un par de años, el esfuerzo Open Source denominado Lazarus.
El concepto de este proyecto es ambicioso, y ha superado las etapas iniciales donde su oferta era promisoria pero su implementación muy pobre hasta el presente donde si bien es un proyecto en sus etapas iniciales ya tiene una masa crítica de actividad que hace lucir promisorio su futuro.
Básicamente el proyecto apunta a desarrollar una plataforma Pascal totalmente Open Source, que sea compatible en la mayor medida posible con las librerías utilizadas por Delphi con tan poca modificación como las restricciones de copyright lo hagan posible.
Ese objetivo es de por si ambicioso, pero también el proyecto se propone proveer un ambiente en el que sea posible compilar un mismo código fuente (idealmente sin modificación alguna) para que funcione tanto en Windows como en Linux, con el objetivo implícito que en el futuro pueda ser portado a otras plataformas (Android y MacOS entre otras), lo que es de una tremenda importancia para un desarrollador cuando es cada día mas atractivo pararse en una plataforma Linux para ciertos desarrollos gracias a dispositivos como el Raspberri Pi.
Si bien se proveen algunas herramientas para migrar aplicaciones originalmente escritas en Delphi el proceso no es totalmente automática ni transparente (ni indoloro, agregaría); pero las primeras evaluaciones me muestran que el tiempo para realizar los ajustes que permitan que la aplicación resulte finalmente compilada bajo Lazarus/Free Pascal son accesibles y solo requieren algo de paciencia. Los puntos mas pastosos son como ir migrando componentes que a su vez tienen dependencias hacia otros componentes que hay que ir identificando de a una; sea porque el compilador no las encuentra o porque no las puede procesar como lo hacía Delphi.
En algunos casos es mas directo y rápido migrar la aplicación creando un proyecto Lazarus nuevo e ir integrando código viejo con componentes nuevos con las adaptaciones del caso.
Por ahora estoy utilizando el programa HZVox descripto en este blog como caso para aprender el nuevo ambiente y comprender que diferencias tiene con el anterior.

3 comentarios:

  1. Todo muy lindo, ya lo baje e instale en winchot y en Debian.... ¿donde cuernos aprendo Pascal?, hace 30 años que lo ando esquivando y ahora resulta que sirve... :-)

    Rick

    ResponderEliminar
    Respuestas
    1. Es religioso, rezale a don Nicklaus que se te aparezca en un sueño y te convierta. Si eso no ocurre es igual que C solo que mas elegante.

      Eliminar
  2. Excelente Pedro. No tiene sentido usar el IDE de Embarcadero. Free Pascal y Lazarus son una combinación potente. Muy maduros y bien mantenidos ambos. Toda la potencia y las cosas lindas de pascal (performance, in-line assembler, etc) + componentes para conexión a datos de todo tipo, multi plataforma. Se viene un contest logger con FPC??

    ResponderEliminar

Buscar este blog

Vistas de página en total