Delphi XE2

La parola Delphi è portatrice di tanti notti insonni passate a divertirmi programmando. Delphi 1 è stata la classica manna discesa dal cielo. Eseguibili piccoli, facilità di sviluppo, insomma nessun pentimento (era il 1995).
La prima conferenza/presentazione Delphi a cui partecipai fu quella di Delphi 4 a Milano, era il 1998. Speaker un noto punto di riferimento nostrano, tante risate e ironia sulla concorrenza targata Microsoft. Vennero presentate le novità, CORBA, DCOM programmazione distribuita… una favola! I punti focali erano i nuovi componenti, l’help, ricordo ancora le parole dell’esperto, per la prima volta sarebbe stato completo perché scritto in contemporanea alla libreria dei componenti.
Riuscii a convincere la mia azienda a comprare la versione enterprise (3.600.000 lire a licenza) e far partire un nuovo sviluppo interno abbandonando Visual Basic. Ad anni di distanza da quella scelta non posso che ammettere che sia stata quella giusta (basta ricordare che da VB versione 3 alla 5 sono cambiate con ogni release le tecnologie per l’accesso alle basi dati Jet, DAO, ADO, OleDB faccio fatica a ricordarle tutte). Però… la strada fu tutta in salita!!!
Ebbene si, lo sviluppo non fu facile. Dovetti installare l’help di delphi 3 perché il nuovo help era inguardabile 😦 poi lo sviluppo procedette a rilento fino a quando con la patch 1 (grande come l’intera installazione base) non vennero risolti la maggior parte dei problemi.
Venne poi dichiarato in un’altra conferenza (a cui non ero presente) che il rilascio di Delphi 4 era stato anticipato (quindi Borland sapeva che il software non era pronto) per motivi legati al valore delle azioni.
La partenza fu quindi burrascosa, ma poi il mare divenne calmo e le correnti favorevoli 🙂 Il progetto venne convertito da Delphi 4 a delphi 2006 senza quasi modifiche!

Infine a settembre 2011 viene presentato Delphi XE2 che promette di farci scrivere codice portabile anche sui dispositivi Apple! Preso dalla curiosità mi iscrivo all’avento di Milano, sala piena e nel momento in cui salgono sul palco i conferenzieri ho come un dejavu… c’era nuovamente l’esperto nostrano, invecchiato come me 🙂 per fortuna. Gli interventi e le domande furono molto tecnici. Risultato, con molte paure (la conferenza del 1998 mi brucia ancora) decisi di mettere mano al portafoglio e comprarne una copia, la curiosità era grande.
La prima scoperta… fu negativa e riguardò l’aumento dei costi di licenza… con quello che avevo speso per il Rad Studio 2010 compravo solo più Delphi dovevo rinunciare al mio caro C++… ma superato il trauma economico mi sono lanciato sul pezzo forte la libreria FireMonkey
Questa libreria permette di scrivere applicativi multipiattaforma, visto che le form e tutti i componenti visuali sono “disegnati” usando i motori grafici dei sistemi su cui funziona l’eseguibile. Nel caso di windows DirectX per OSX invece OpenGL. Il dettaglio del funzionamento lo lascio ai vari siti 🙂 quello che mi premeva vedere è se potevo realizzare le mie applicazioni desktop e vederle funzionare sul mac. Il CDA mi chiedeva giusto giusto un’applicazione per l’IPhone…

Non riporto il codice che sarebbe troppo lungo e pressoché inutilizzabile perché memorizzato nel file descrittivo della form (cioè tutto fatto a design time senza scrivere nulla). In pochi minuti realizzo il mio applicativo VCL (quindi quello che funziona solo sotto windows) che si collega al mio Db postgres e mi fa vedere la mia bella griglia 🙂 come in figura.

Griglia in versione VCL

Notate che il campo des_titolo che è un campo di lookup (quindi una scelta di voci da una tabella elenco) mi fa comparire una tendina sulla griglia con 0 righe di codice.
Provo a fare le stesse cose con la libreria firemonkey. Scopro che il legame tra i componenti visuali e la base dati avviene in modo diverso, più evoluto secondo molti, molto meno intuitivo secondo me 🙂 per cui devo aggiungere i componenti di bind. Il primo demo prevedeva di fare vedere nomi e cognomi in una lista, dopodiche ho pensato che non era bello mostrare anche i cognomi e così ho fatto quello che ho sempre fatto dal 1998 ad oggi, cioè ho rimosso la colonna dalla griglia. In figura vedete il mio ambiente a design time:

Comportamento a design time

Qui invece il mio eseguibile in funzione (è la finestra sotto quella di design time).

Confronto tra design e runtime

Rimango perplesso c’è una colonna che non esiste… Per curiosità provo a rendere invisibile un’altra colonna… il risultato non cambia!!! Provo a guardare l’help e ottengo questa bellissima schermata 😦

Help di firemonkey

Dove la riga dell’help riporta “Embarcadero Technologies does not currently have any additional information. Please help us document this topic by using the Discussion page!”. Mi cadono le braccia 😦 La nuova tecnologia non è supportata neanche da un help e devo dire che un po’ mi innervosisco pensando ai soldi spesi. Non demordo e tolgo dai campi del DB la colonna incriminata 🙂 dicendomi se non la trova più non la farà vedere… il risultato è riportato in figura.

Griglia in Firemonkey

E come potete vedere il comodo campo di lookup che nella VCL funziona in automatico non esiste più.

Il mio giudizio non può che essere negativo, un programmatore VCL con esperienza si trova ad aver a che fare con componenti profondamente diversi da quelli VCL, ma se il cambiamento non spaventa i risultati che si ottengono si. Da settembre data del rilascio siamo già al terzo aggiornamento e i problemi rimangono enormi. L’help non è minimale bensì incompleto e beffardamente mi chiedono di aiutarli a documentare le funzionalità. Mi faranno uno sconto sul prossimo acquisto?
Delphi continua ad essere un ottimo strumento, ma firemonkey non è una libreria ancora matura. Inoltre mi chiedo perché la VCL per l’accesso ai DB fosse intuitiva e semplice mentre Firemonkey non lo possa essere.
Quello che noto è che purtroppo pur rimanendo vero e giustissimo quello che dice il mio amico Juhan:

1) tutti possono sbagliare;
2) intestardirsi a sostenere una posizione insostenibile è –come dire– ecco;
3) per fortuna ci sono gli aggiornamenti; o, anche meglio
4) riscrivi quel pezzo di codice, fai prima.

Lo sviluppo del software sta diventando sempre più “leggero” dove con leggero intendo fatto in maniera superficiale, si tagliano figure importanti come quelle che facevano le analisi e i test funzionali (le persone mica possono essere sostituite da una junit). Si rilasciano versioni per non essere da meno della concorrenza non perché si porta una vera innovazione. Se delphi 1 fosse stato come XE2 adesso non avremmo XE2 e non avremmo avuto neanche Delphi 2.
Sarò un po’ all’antica ma sono certo che il vero valore aggiunto in uno sviluppo software non sia il linguaggio ma la testa del programmatore che sta dinnanzi al monitor… In realtà il valore aggiunto in qualche cosa è sempre la persona (da molti anni leggo le notizie online, avete notato anche voi quanti errori si vedono nei vari siti delle testate più prestigiose?).

La prossima volta vi esporrò i risultati dei miei test cross platform 🙂

Ricordo che durante la conferenza il nome firemonkey è stato legato all’oroscopo cinese, l’anno della scimmia sarà il 2016, spero di non dover aspettare così tanto per un prodotto stabile 😦

Posta un commento o usa questo indirizzo per il trackback.

Commenti

  • juhan  Il 13 gennaio 2012 alle 14:37

    Delphi (“delfai”) è arrivato come risposta al VB3 che è comunque stato una pietra miliare, non solo perché piaceva al nostro amico Giorgio 😉
    Ma veniva da una lunga evoluzione: il Pascal è sempre stato un linguaggio “pistino”, non per niente piace a Knuth. Diverso il caso del Turbo Pascal che io ho scoperto con la versione 3.0, una copia proveniente dalla scuola (no, non dalla tua). Superbellissimissimo e performantissimo. E c’erano gli overlay!. Poi il 4, il 5.5 con gli oggetti e via a seguire. A quei tempi il C++ 3.1 di Borland era dominante, alla faccia di M$. Ma è arrivato Windows 3.0 e il Turbo Pascal è diventato Borland Pascal e la Borland è diventata Imprise. Poi l’Imprise è tornata Borland e è nato Delphi, la prima versione a 16 bit e le altre a 32. C’è stata anche una versione per Linux, Kylix. Poi mi sono perso. E si è persa anche la Borland.
    Tanto lo so: prima o poi mi toccherà tornare al Fortran!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: