Tuesday, October 29, 2013

Lazarus, un cuasi-clon de Delphi



Por razones meramente académicas tuve que incursionar en Lazarus, una herramienta de aplicación rápida (RAD, por sus siglas en inglés), que permite programar en un ambiente muy similar a Delphi 7. La filosofía es la misma y Lazarus empezó precisamente como un esfuerzo comunitario para dotar de una herramienta al mejor estilo Delphi pero de código abierto y gratuita.

Hoy en día, me da la impresión, Lazaus es lo suficiente estable y maduro para realizar una buena cantidad de programas en un ambiente verdaderamente poderoso y amigable. Desde luego, no tiene la miriada de componentes que ya Delphi tiene (ver por ejemplo el sitio Torry.net), pero sin duda se ha hecho un estupendo esfuerzo por tener una herramienta funcional de verdad.

Mucha de la documentación de Lazarus puede verse en los diferentes sitios wiki que explican -muchas veces con lujo de detalles- todo lo que hacen las diferentes bibliotecas y componentes. Es a veces incluso abrumador cuando uno busca una información particular. No obstante esto, es siempre mejor en estos casos pecar por exceso.

Dos cosas son diferentes a Delphi. Una de ellas es que evidentemente, compila mucho más lentamente (porque es claro que es difícil vencer a los compiladores turbo de la empresa original, Borland), pero eso no es demasiado grave. Con respecto a los programas de Delphi, para convertirlos a Lazarus, hay poco que convertir en algunos casos (dependerá de la complejidad del software), pero aún así, muchas veces hay instrucciones parecidas, que no iguales, entre una plataforma como Lazarus y la comercial, Delphi.

Por ejemplo, tenemos que en Delphi, puedo mandar pintar un pixel con el color que quiera con la siguiente instrucción:

Image2.Canvas.Pixels[i,j] := RGBToColor(B,G,R);

Mientras que en Delphi 7 se hace así:

Image2.Canvas.Pixels[i,j] := RGB(B,G,R);

No es la gran diferencia, pero hay que saber que existe esata instrucción en Lazarus (RGBToColor) para poderla aplicar y que el sistema no marque error.

Lazarus tiene otras ventajas aparentes sobre Delphi, sin embargo. Una de ellas es ese sueño de crear código en una plataforma y poder correrlo en todas las demás plataformas y sistemas operativos. En principio al menos, código fuente de Lazarus escrito para Windows puede copiarse a Mac o Linux, y recompilar con las reespectivas versiones de Lazarus para generar programas ejecutables en esas plataformas. Eso simplemente no lo puede hacer Delphi.


Quizás la gran diferencia entre Delphi y Lazarus es que la calidad del software comercial, amén que es un esfuerzo que se está haciendo desde 1994, hacen a Delphi aún superior a Lazarus si se trata de crear aplicaciones robustas y de usar la enorme cantidad de componentes y código de terceros. Aún así, Lazarus es un muy buen esfuerzo y claramente con el tiempo será mucho mejor. Es una estupenda opción si se usa Linux (donde Kilyx, la versión de Delphi para Linux se malogró) o Mac OS X, aunque aún con algunas limitaciones.

5 comments:

yeyo said...

Delphi ya va por la versión XE5. Actualmente genera código nativo para Win32, Win64, OSX, iOs y Android. Está muy por delante de Lazarus, aunque eso sí, hay que pagarlo.

Morsa said...

Cierto, yeyo, nomás que el costo es alto. La versión enterprise de embarcadero cuesta unos 3000 dólares... Tú dirás

Jonacito said...

Muy interesante, pero no veo documentación, sabes donde se encuentra? o hay algún libro?

Morsa said...

Empieza por http://www.lazarus.freepascal.org/

saludos

El Cid said...

También habría que reflexionar al respecto de este muy interesante lenguaje de programación, específicamente sobre su enseñanza en las universidades o carreras técnicas informáticas.

Este es y será un tema muy polémico, ya que sabemos que en POO Java fue el ganón y atráz de él C# le viene pisando los talones desde hace tiempo.

Ahora la pregunta aquí es: ¿Por qué en los centros de estudios en programación nunca se optó por enseñar POO en un lenguaje de programación con una sintaxis más sencilla como Delphi (específicamente pascal orientado a objetos)?

Un día cuestioné en clase a un profesor al respecto y me salió con la misma cantaleta de siempre: "Por que en las universidades debemos preparar a los estudiantes para que afronten el mercado laboral, y allá afuera hay más trabajo en Java (o los populares)"

En fin, si la cosa es que pagar la licencia de delphi es cara, se puede usar este tipo de alternativas creo yo. Pero bueno, a veces hacer entender a las personas sobre esto es complicado...