Nel riesumare il vecchio Turbo Pascal 3 mi sono chiesto a che punto fosse arrivato il suo successore, Delphi. Nella mia ricerca ho scoperto che oltre alla proposta commerciale di Embarcadero (che acquistò Delphi da CodeGear nel 2008) esiste anche una soluzione open source, Lazarus, basata sul compilatore Free Pascal, anch'esso open source.

laz ide1

Sembrerebbe che ci siano state delle versioni di Delphi 7 distribuite in versione "lite", liberamente scaricabili, ma non sono riuscito a trovarle; ci sono state anche delle versioni di Delphi denominate "Turbo Delphi" che ricordo di aver scaricato ma... sono passati più di 10 anni!!! Ad ogni modo a quel tempo ero in possesso di una copia di Delphi 6, fornita nel CD allegato ad una rivista, e quindi Turbo Delphi non mi interessava molto, soprattutto a causa della limitazione nell'uso di componenti di terze parti.

Andando alla ricerca di questi ambienti mi sono imbattuto in Lazarus, un IDE open source per il compilatore Free Pascal, insieme al quale costituisce un vero e proprio ambiente di sviluppo multipiattaforma (Windows, Linux e Mac, 32 e 64 bit).

Ammetto che il titolo di questo articolo potrebbe essere un po' fuorviante perchè Lazarus in realtà non è Delphi: Lazarus è un IDE che utilizza il compilatore Free Pascal mentre Delphi è un linguaggio e anche un ambiente di sviluppo (IDE+compilatore). Se lanciate Lazarus, però, vi sembrerà di aver lanciato Delphi!

Per quanto mi riguarda, Lazarus è interessante per due aspetti:
- per la possibilità di convertire i vecchi progetti Delphi (anche se con la limitazione di utilizzare solo controlli standard);
- per la possibilità di lavorare in Linux (che poi era il desiderio di chi era rimasto deluso da Kylix).

Naturalmente un ambiente si può giudicare solo dopo averci lavorato su diversi progetti; quelle che seguono sono solo le mie prime impressioni.

laz breakInnanzitutto vi consiglio di installare il pacchetto scegliendo la lingua inglese; a me sembra che Lazarus, come molti altri software per la verità, sia tradotto piuttosto male, non considerando che determinati termini "tecnici" siano ormai più immediati in inglese che non in italiano.
Per fare un esempio, nel caso di un'eccezione ho visto che la segnalazione di questo evento propone due possibilità, "Divisione" o "Continua": trovo che se la traduzione fosse stata "Break" e "Continua" sarebbe stato molto meglio!

Dopo aver installato il pacchetto potete cominciare a creare i vostri progetti ex-novo oppure, come ho fatto io, provare ad importare i vecchi progetti Delphi: in quest'ultimo caso esiste un menù apposito che trovate in

Tools->Delphi Conversion

Nel mio caso ho provato ad importare il progetto di risolutore sudoku (che trovate nella sezione Download di questo sito); l'unico problema che ho riscontrato è un punto e virgola di troppo che avevo piazzato prima di un ELSE (ancora adesso mi sto chiedendo come mai Delphi 6 me lo compilasse...).
Lazarus (o forse meglio dovrei dire Free Pascal) mi ha segnalato l'errore "Fatal: Syntax Error, ";" expected but "ELSE" found" nel seguente pezzo di codice, e non si può che dargli ragione:

  if( celle_vuote > 0 ) then
        Risolvi( 1, 1 );
  else
        found_routine( schema );                              

L'eseguibile generato risulta di 15 Mega, contro i 400 k dell'eseguibile generato da Delphi 6. La dimensione esagerata degli eseguibili è un problema noto e illustrato molto bene nelle FAQ; il suggerimento è quello di disattivare le informazioni di debug e, così facendo, arrivo alla dimensione di 1,8 Mega.
Nelle opzioni del progetto è sufficiente disattivare "Generate debugging info for GDB" oppure attivare "Build modes" che permette di definire due tipi di compilazione, "Debug" con informazioni di debug e "Release" senza.

laz nodbg

In conclusione: sono riuscito ad ottenere quello che mi ero prefissato di fare, ovvero ricompilare un vecchio progetto Delphi, e quindi la mia prima impressione è decisamente positiva; certo ci sarebbero ulteriori cose da provare, fra cui l'installazione di controlli custom e l'utilizzo in ambiente Linux ma da quel poco che ho visto sono già molto soddisfatto.

Ho visto inoltre che esiste una comunità italiana di utilizzatori di Lazarus www.lazaruspascal.it/ a cui magari ora mi iscrivo anch'io!

Fonti:
http://www.lazarus-ide.org/
http://www.freepascal.org/
https://it.wikipedia.org/wiki/Embarcadero_Delphi