Delphi o Lazarous, che scegliereste?

di il
23 risposte

23 Risposte - Pagina 2

  • Re: Delphi o Lazarous, che scegliereste?

    02/01/2023 - paoloholzl ha scritto:


    Speravo nella tua risposta in quanto l'ultimo post era rimasto zoppo per via della chiusura del Thread proprio sulla parte che mi interessava di più.

    In riferimento al tema principale e alla risposta che ho fornito io, sono stato largamente e volutamente sintetico correggendo solo alcune imprecisioni di partenza.

    Lavoro quotidianamente sia con i linguaggi .NET sia con Delphi, per scopi e progetti differenti, e questo a partire sin dalla nascita di entrambi i prodotti, quindi ho più che presente quali sono le differenze (e le somiglianze) tra i due, i punti di forza dell'uno e dell'altro (in base a ciò che si deve realizzare), e facendo corsi di formazione su entrambi sono conscio di quali sono le modalità con cui vengono utilizzati da coloro che provengono da altri linguaggi o che iniziano da zero.

    Questo per dire che la mia risposta è da considerarsi per nulla esaustiva, ma il problema di questo tipo di quesiti sta proprio qui: una risposta non può essere tanto articolata quanto la si vorrebbe, a meno di non avere una intera giornata per fare un elenco completo di tutto quello che vale la pena sapere e descriverlo minuziosamente, un compito decisamente troppo oneroso da sostenere.

    Questo a maggior ragione per il fatto che, una volta completato il compito, il thread si evolve con altre domande e richieste di precisazioni e, una volta concluso, ecco che ne spunta un altro thread di analogo tenore, magari chiedendo una comparazione con altri linguaggi, oppure questo “filone” potrebbe svilupparsi addirittura all'interno dello stesso thread.

    Questa fatica l'ho fatta una volta, parlando di due linguaggi, e alla fine l'autore - come poi è anche giusto che sia - ha scelto il terzo perché “gli piaceva di più” (pur non avendo familiarità con linguaggi simili e non essendo il più adatto a realizzare le soluzioni di cui aveva bisogno).

    Altre volte ancora, è accaduto che durante la scrittura della risposta, il thread venisse chiuso per tutti i motivi descritti sopra, portando inesorabilmente a una perdita immane di tempo che alla fine si rivela totalmente inutile.

    Dal mio punto di vista, se si devono fare comparazioni, queste vanno fatte bene, quindi almeno che la domanda non sia estremamente circostanziata, con requisiti ben definiti e premesse che facciano “pendere l'ago” dall'una o dall'altra parte e ciò possa essere senza ombra di dubbio stabilito con una motivazione tecnica (quasi) inoppugnabile, e quindi molto sintetica, in genere ribalto l'onere della cosa all'autore della discussione, che si deve prendere la briga di installarsi ciò che vuole confrontare, leggersi qualcosa per muovere quantomeno i primi passi e chiarirsi autonomamente le idee (o chiederle sul forum ma in riferimento, appunto, ad ambiti molto molto specifici).

    Un saluto! :)

  • Re: Delphi o Lazarous, che scegliereste?

    02/01/2023 - Alka ha scritto:

    … oppure ancora un favoreggiamento verso il linguaggio trattato nell'area in cui si pone la domanda.

    E' proprio quello che mi aspetto ,e mi va bene.

    … In realtà, nella pratica diventano indirizzati a target simili, sono partecipati dagli stessi utenti e comunque all'origine sono ovviamente (e dichiaratamente) destinati al medesimo scopo e finalità. :)

    La probabilità di uno che segua i messaggi di due aree così diverse è davvero minima.
    C'è da dire che chi lavora probabilmente frequenta più l'area tematica del tema che interessa che il ‘bar’.

    Per intenderci questo thread che si è formato all'interno di un altro è estremamente più fuori luogo rispetto a quello originario e questo sì andrebbe spostato nel ‘bar’.

    Stessa cosa dove si parla del comportamento del cursore.

    Ovviamente anche chi modera ha il suo bel daffare e non può stare dietro a tutti i dettagli o spostare un thread ogni volta che si sposta un po.
    Se sai che uno non è lì a farsi pubblicità, a sparare messaggi a destra e a manca per altri fini, a prendere lo stesso messaggio e spararlo da tutte le parti senza una logica tranne quello di far casino.
    Diciamo che si guarda più al comportamento nel suo insieme con un po di tolleranza e partendo dal presupposto della buona fede.

  • Re: Delphi o Lazarous, che scegliereste?

    Lavoro quotidianamente sia con i linguaggi .NET sia con Delphi, per scopi e progetti differenti, e questo a partire sin dalla nascita di entrambi i prodotti, quindi ho più che presente quali sono le differenze (e le somiglianze) tra i due, i punti di forza dell'uno e dell'altro (in base a ciò che si deve realizzare), e facendo corsi di formazione su entrambi sono conscio di quali sono le modalità con cui vengono utilizzati da coloro che provengono da altri linguaggi o che iniziano da zero.

    Questo per dire che la mia risposta è da considerarsi per nulla esaustiva, ma il problema di questo tipo di quesiti sta proprio qui: una risposta non può essere tanto articolata quanto la si vorrebbe, a meno di non avere una intera giornata per fare un elenco completo di tutto quello che vale la pena sapere e descriverlo minuziosamente, un compito decisamente troppo oneroso da sostenere.

    La cosa mi fa davvero piacere perchè probabilmente sei la persona più giusta per darmi un consiglio.
    Poi è chiaro che nessuna risposta è esaustiva ‘il meglio è nemico del bene’ e nessuno ha le certezze in tasca, ma ad un certo punto una decisione va presa.

    Ribadisco cosa mi interessa:
    Scopo: scrivere (come scrivo da anni) dei ‘classici gestionali’, tanto per fare un esempio un CRM (nell'esempio, senza mail automatici, sms o altre particolarità).
    Usare un ambiente stabile, documentato, con un buon numero di sviluppatori e forum di supporto.
    Usare strumenti più open source possibile.
    Usare fintanto che è possibile versioni Community anche per sviluppare programmi da vendere.
    Sviluppo Stand-Alone, i programmi devono girare in rete indipendentemente dal collegamento Internet.
    Possibilmente il codice risultante deve girare indifferentemente su Win o Linux, al limite anche su Android.
    La programmazione deve essere più RAD possibile, devo dedicare tempo al codice, meno possibile alle interfacce e alle impaginazioni dei reports.
    Deve poter usare database server (ma questo lo fanno un po tutti),  in lan.
    Più è monolitico meglio è (dal mio punto di vista), in pratica per sviluppare un gestionale ‘classico’ , dai forms ai report, devo fare meno uso possibile di componenti aggiuntivi.
    Il codice risultante deve essere più chiaro possibile.
    Grazie

  • Re: Delphi o Lazarous, che scegliereste?

    02/01/2023 - paoloholzl ha scritto:


    Scopo: scrivere (come scrivo da anni) dei ‘classici gestionali’, tanto per fare un esempio un CRM (nell'esempio, senza mail automatici, sms o altre particolarità).

    Lo scopo è abbastanza chiaro: se non è variato, prendo come riferimento il tipo di applicativo che già stai creando con Access.

    02/01/2023 - paoloholzl ha scritto:


    Usare un ambiente stabile, documentato, con un buon numero di sviluppatori e forum di supporto.

    Parliamo di linguaggi e ambienti abbastanza diffusi, ma dal punto di vista della documentazione disponibile e della vastità della community, sicuramente le tecnologie Microsoft hanno maggiore supporto poiché godono di un maggiore investimento.

    Bisogna comunque prendere in considerazione anche tanti altri fattori a mio avviso non secondari in questo contesto (e forse rilevanti anche per te): la compatibilità all'indietro e il supporto continuativo.

    Mi spiego: Microsoft avrà senz'altro community e supporto più ampio per i propri strumenti, ma a differenza di altri produttori, i tool di sviluppo non rappresentano il suo “core business” quanto più un trampolino di lancio verso quei prodotti che realmente vuole vendere, quali Azure, SQL Server e altri servizi.

    Questo per dire che, come accaduto con tecnologie quali Visual Fox Pro, J#, VB6, lo stesso VBA (non vede aggiornamenti da anni, pur continuando a esistere), oppure ancora Silverlight, Windows Phone, Microsoft Store Apps e altri casi affini, il supporto sarà pure ampio ma quando Microsoft decide di interromperlo, fossero anche tecnologie utilizzate da milioni di sviluppatori, non c'è petizione che tenga e bisogna trovare una alternativa, quindi reinvestire su formazione nelle “nuove proposte” e potenzialmente riscrivere il codice, il tutto solo per decisione del fornitore e non per una reale necessità o vantaggio.

    02/01/2023 - paoloholzl ha scritto:


    Usare strumenti più open source possibile.

    E' un requisito piuttosto insolito, soprattutto se proveniente da chi parte da Access, che proprio opensource non è, ad ogni modo… :)

    Fatto salvo Visual Studio Code (che non è RAD), direi che in termini di ambienti di sviluppo ve ne sono pochi opensource tra quelli citati.

    Certo, Lazarus ad esempio lo è, mentre Visual Studio, Delphi e tanti altri non lo sono, o non sono affatto ambienti RAD.

    Tuttavia, nella maggior parte dei casi sono disponibili i sorgenti dei framework utilizzati, come vale per la BCL di .NET, ma anche VCL/FireMonkey su Delphi sono distribuiti assieme al loro sorgente (per me è una risorsa fondamentale).

    Qui bisogna chiarire il motivo per cui si pone l'opensource come requisito: dal mio punto di vista, il sorgente è fondamentale perché - in caso di problemi - posso esaminare del codice, capire come è stato realizzato, sfruttarlo per apprendimento e per addurre dei “workaround” se qualcosa non funziona… ci sono invece tanti altri sviluppatori che ricercano l'opensource in virtù del legame spesso presente (ma non sempre) “opensource=gratis”.

    Qui bisogna quindi chiarire: si vuole l'opensource perché si è interessati ad avere il sorgente, o perché di solito chi fornisce il sorgente non richiede un pagamento? Esistono software opensource anche con licenze commerciali, magari pure molto costose, quindi è fondamentale chiarire.

    02/01/2023 - paoloholzl ha scritto:


    Usare fintanto che è possibile versioni Community anche per sviluppare programmi da vendere.

    Qui parlano i contratti di licenza, che definiscono per filo e per segno i limiti dell'uso commerciale delle licenze.

    Da parte mia, essendo uno sviluppatore software, quando esamino la fattura del commercialista, o pago l'affitto dell'ufficio, o il carburante per gli spostamenti, oppure se osservo delle semplici bollette, mi rendo conto che non è senz'altro il costo dello strumento con cui realizzo direttamente i prodotti che vendo a essere la spesa più iniqua fra tutte… ma sembra esserci una tendenza abbastanza diffusa a concentrare su questa voce di costo le considerazioni più “critiche”, spesso perché qualcuno fornisce tali soluzioni gratuitamente (laddove quel “gratis” nasconde poi ben altre insidie legate al fatto che l'introito arriva magari da qualche altra parte che non necessariamente può fare piacere).

    In breve, anche su questo aspetto, così come sul punto dell'opensource, ci vedo un “voglio usare un software buono, stabile, diffuso, supportato per realizzare i miei prodotti da vendere, ma senza pagarlo”.

    Non dico che sia pretenziosetto, non dico che sia sbagliato, ma in genere questa tipologia di visione - soprattutto a oggi - io la vedo estremamente miope.

    02/01/2023 - paoloholzl ha scritto:


    Sviluppo Stand-Alone, i programmi devono girare in rete indipendentemente dal collegamento Internet.

    Il collegamento a Internet serve se una applicazione vuole sfruttarlo per comunicare con l'esterno.

    Non esiste linguaggio o tecnologia, che io sappia, che impone di essere collegati per sviluppare o far girare una applicazione, a meno che non sia un'applicazione Web, ovvio.

    02/01/2023 - paoloholzl ha scritto:


    Possibilmente il codice risultante deve girare indifferentemente su Win o Linux, al limite anche su Android.

    Discorso complesso ed enunciato in modo troppo superficiale.

    Per dire, Delphi dispone di una libreria per applicazioni multi-device e multi-OS denominata FireMonkey. Modificando il target della piattaforma, con lo stesso sorgente è possibile compilare la stessa identica applicazione sia per Windows (32/64 bit) che per Mac OS che per Linux. Potenzialmente, la stessa app può approdare su Android o su iOS.

    MA attenzione… sarà molto difficile che una applicazione gestionale progettata per Windows possa andare bene anche su Android, e questo non per problemi del compilatore, ma perché su Windows abbiamo a disposizione schermi di una certa grandezza, abbiamo il mouse e un tipo di esperienza utente, mentre su Android siamo di fronte a un device e a un ambiente completamente differente.

    Sarà quindi preferibile fare due app, ma al netto di questo è vero che, grazie alla RTL in comune tra le piattaforme e grazie al supporto di FireMonkey, con Delphi si possono sviluppare entrambi gli applicativi condividendo e riusando la quasi totalità del codice scritto per la logica di business.

    02/01/2023 - paoloholzl ha scritto:


    La programmazione deve essere più RAD possibile, devo dedicare tempo al codice, meno possibile alle interfacce e alle impaginazioni dei reports.

    La definizione di RAD in genere implica il dedicare pochissimo tempo al codice e maggiormente alla progettazione visuale.

    Progettare un report e una UI è un compito prettamente prototipale, quindi uno strumento RAD deve consentirti di farlo visualmente, e non obbligarti a scrivere tutto il codice, che è un processo più lento.

    Possibilmente, anche la progettazione visuale deve essere coadiuvata da strumenti che rendano il processo il più rapido possibile.

    02/01/2023 - paoloholzl ha scritto:


    Deve poter usare database server (ma questo lo fanno un po tutti),  in lan.

    Delphi include i componenti FireDAC: sono una libreria molto completa che, oltre al collegamento con i database server più diffusi tramite driver nativi (compilabili nell'eseguibile), offrono anche tante altre funzionalità collegate (caching, espedienti visuali, uso di SQL “locale” su dati scaricati, ecc.) che sono fruibili indipendentemente dal database server utilizzato.

    Questi driver però non sono presenti nell'edizione Community, per quanto ne so.

    Visual Studio o .NET in generale si basa principalmente su ADO.NET e sulle librerie che creano sovrastrutture su questa architettura.

    02/01/2023 - paoloholzl ha scritto:


    Più è monolitico meglio è (dal mio punto di vista), in pratica per sviluppare un gestionale ‘classico’ , dai forms ai report, devo fare meno uso possibile di componenti aggiuntivi.

    Delphi compila eseguibili nativi per la piattaforma target selezionata.

    Questo significa che il risultato della compilazione produce un eseguibile monolitico, un file .exe su Windows ad esempio, che contiene codice macchina per la CPU di riferimento (no runtime, no VM).

    Lo stesso vale per tutte le altre piattaforme supportate.

    02/01/2023 - paoloholzl ha scritto:


    Il codice risultante deve essere più chiaro possibile.

    Io ritengo il Pascal uno dei linguaggi più leggibili, ma qui siamo di fronte a qualcosa che va molto a gusti, ed è anche soggiogato a ciò che lo sviluppatore considera “chiaro”.

    Io ad esempio, per molti colleghi non scrivo codice “chiaro”: pur aderendo a degli standard di codifica globalmente condivisi, ho clienti che faticano a leggere il mio codice perché nel loro vocabolario “chiaro” ha un significato e un aspetto differente da ciò che viene considerato “chiaro” dal resto della community.

    In breve, è a malapena un requisito tecnico: il codice è chiaro in qualsiasi linguaggio, o c'è modo di renderlo tale, se lo sviluppatore è in grado di  scriverlo.

    Certo, magari Objective-C ha una sintassi meno accomodante di quella di tanti altri linguaggi concorrenti, ma c'è chi lo usa ancora in modo proficuo e legge benissimo ciò che scrive, o che hanno scritto altri. :)

  • Re: Delphi o Lazarous, che scegliereste?

    02/01/2023 - Alka ha scritto:


    02/01/2023 - paoloholzl ha scritto:


    Scopo: scrivere (come scrivo da anni) dei ‘classici gestionali’, tanto per fare un esempio un CRM (nell'esempio, senza mail automatici, sms o altre particolarità).

    Intanto ti ringrazio perchè sei sempre chiaro ed esaustivo nelle tue spiegazioni.

    Lo scopo è abbastanza chiaro: se non è variato, prendo come riferimento il tipo di applicativo che già stai creando con Access.

    02/01/2023 - paoloholzl ha scritto:


    Usare un ambiente stabile, documentato, con un buon numero di sviluppatori e forum di supporto.

    Parliamo di linguaggi e ambienti abbastanza diffusi, ma dal punto di vista della documentazione disponibile e della vastità della community, sicuramente le tecnologie Microsoft hanno maggiore supporto poiché godono di un maggiore investimento.

    Senza dubbio.

    quando Microsoft decide di interromperlo, fossero anche tecnologie utilizzate da milioni di sviluppatori, non c'è petizione che tenga e bisogna trovare una alternativa, quindi reinvestire su formazione nelle “nuove proposte” e potenzialmente riscrivere il codice, il tutto solo per decisione del fornitore e non per una reale necessità o vantaggio.

    Concordo ma con un ma, più la tecnologia è diffusa e meno di possono permettere di dismetterla.
    Un esempio è il passaggio da DAO a ADO le hanno provate tutte, ma non si sono potuti permettere di non far sopravvivere DAO. 
    Ovviamente Microsoft fa di tutto per imporre e legare alla sue piattaforme, non è un ente benefico, ma la dismissione di adp è avvenuta perché chi programma l'aveva scartata rendendosi conto delle costrizioni conseguenti, hanno semplicemente preso atto che ‘gli è andata male’.

    02/01/2023 - paoloholzl ha scritto:


    Usare strumenti più open source possibile.

    E' un requisito piuttosto insolito, soprattutto se proveniente da chi parte da Access, che proprio opensource non è, ad ogni modo… :)

    Chiunque ama Linux il concetto di Open Source e la differenza tra software gratis e software libero la deve avere ben chiara.
    Quando ho cominciato con Access neanche esisteva Linux figurarsi l'Open Source, infatti l'ho sempre comprato.
    Poi certe scelte le porti avanti finchè nascono delle alternative e finchè funzionano e sono aggiornabili.
    Comunque Entity Framework è un Open Source di Microsoft.
    Certamente qualcuno può obiettare non non lo è quanto Lazarous in quanto dipende da livelli inferiori closed,  ma al momento sulla maggiornaza dei desktop prima o poi su qualcosa di closed ci si arena, quello che conta e quanto open ci si può permettere.

    Qui bisogna chiarire il motivo per cui si pone l'opensource come requisito: dal mio punto di vista, il sorgente è fondamentale perché - in caso di problemi - posso esaminare del codice, capire come è stato realizzato, sfruttarlo per apprendimento e per addurre dei “workaround” se qualcosa non funziona… ci sono invece tanti altri sviluppatori che ricercano l'opensource in virtù del legame spesso presente (ma non sempre) “opensource=gratis”.

    In questo caso è una questione etica, di trasparenza, ed anche una relativa garanzia di continuità.
    E comunque non è mai una certezza, anche la gestione dei file a indici del Turbo Pascal (Toolbox Database) era fornita come include in formato sorgente, poi è stata dismessa.

    In breve, anche su questo aspetto, così come sul punto dell'opensource, ci vedo un “voglio usare un software buono, stabile, diffuso, supportato per realizzare i miei prodotti da vendere, ma senza pagarlo”.

    Non dico che sia pretenziosetto, non dico che sia sbagliato, ma in genere questa tipologia di visione - soprattutto a oggi - io la vedo estremamente miope

    Più che ‘senza pagarlo’ direi ‘pagandolo se ne vale la pena’.

     

    Delphi compila eseguibili nativi per la piattaforma target selezionata.

    Questo significa che il risultato della compilazione produce un eseguibile monolitico, un file .exe su Windows ad esempio, che contiene codice macchina per la CPU di riferimento (no runtime, no VM).

    Lo stesso vale per tutte le altre piattaforme supportate.

    Il problema del runtime così come anche di un interprete per programmi gestionali non lo trovo così rilevante.

    02/01/2023 - paoloholzl ha scritto:


    Il codice risultante deve essere più chiaro possibile.

    Io ritengo il Pascal uno dei linguaggi più leggibili, ma qui siamo di fronte a qualcosa che va molto a gusti, ed è anche soggiogato a ciò che lo sviluppatore considera “chiaro”.

    Parlo di prolissità del codice.
    Comunque una idea me la sono già fatta e ho comiciato a vedere C# con Identity Framework.
    Potrei partire da VB6 ma per come uso io VB non é un gran problema spostarsi a C# e penso ne valga la pena.

    Grazie dei consigli

  • Re: Delphi o Lazarous, che scegliereste?

    02/01/2023 - paoloholzl ha scritto:


    Concordo ma con un ma, più la tecnologia è diffusa e meno di possono permettere di dismetterla.

    Non è assolutamente così, tant'è vero che il caso più eclatante lo rappresenta proprio VB6: era fra i linguaggi Microsoft più utilizzati, tuttavia nel passaggio alla piattaforma .NET non è stato previsto alcun percorso di migrazione del codice sorgente esistente scritto in VB6, nonostante le pesanti richieste e petizioni fatte da numerosi sviluppatori a suo tempo e nel corso dei primi anni. Stessa sorte hanno avuto altre tecnologie, come Silverlight, portato come la panacea di tutti i mali che doveva coniugare e annullare lo sviluppo desktop e Web con una sola piattaforma.

    02/01/2023 - paoloholzl ha scritto:


    Un esempio è il passaggio da DAO a ADO le hanno provate tutte, ma non si sono potuti permettere di non far sopravvivere DAO. 

    E infatti, né DAO ma nemmeno ADO “sopravvivono”, poiché sono entrambi dichiaratamente oltre il “legacy” e fuori supporto da decine di anni.

    Il fatto che si possano installare è irrilevante: anche VB6 a oggi può essere installato, anche se con qualche “calcio” di incoraggiamento, ma il supporto vuol dire che il prodotto evolve, si adegua, si migliora. Nè VB6 né DAO né ADO a oggi sono tecnologie strategiche supportate dal produttore. Non subiscono bug fixing quindi le installi a tuo rischio e pericolo e potrebbero essere inficiati da bug di sicurezza. Non ti viene data assistenza. Non escono nuove versioni. In poche parole, sono prodotti assolutamente morti.

    Certo, sono codice macchina per Windows e per Intel CPU, quindi se li installi la CPU non si schifa e ti esegue i programmi richiesti, ma è tutto un altro discorso. :)

    02/01/2023 - paoloholzl ha scritto:


    Quando ho cominciato con Access neanche esisteva Linux figurarsi l'Open Source, infatti l'ho sempre comprato.

    Sono contemporanei e l'ascesa dell'uno o dell'altro è databile più o meno negli stessi anni (da metà anni '90 in poi).

    02/01/2023 - paoloholzl ha scritto:


    Più che ‘senza pagarlo’ direi ‘pagandolo se ne vale la pena’.

    Mmm… sottigliezza: basta dire che non vale la pena pagare, invece di direi di non volerlo pagare.

    02/01/2023 - paoloholzl ha scritto:


    Il problema del runtime così come anche di un interprete per programmi gestionali non lo trovo così rilevante.

    Io sì. Il runtime è spesso voluminoso, da installare separatamente, può appartenere a una versione diversa da quella richiesta, occupa risorse preziose (vedi RAM e CPU saturate letteralmente da tecnologie tipo Electron), in determinati casi e per applicazioni specifiche (vedi Python) la differenza di prestazioni è palpabile. Se poi parliamo di device mobili…

    02/01/2023 - paoloholzl ha scritto:


    Parlo di prolissità del codice.

    Al massimo, si parla di verbosità del codice.

    Detto questo, hai usato il linguaggio tra i più “verbosi” esistenti al mondo, ossia VBA, quindi dovresti aver acquisito una tolleranza tale che qualunque linguaggio più “scarno” deve andare bene in ogni caso. Salvo VB.NET, forse. :)

    02/01/2023 - paoloholzl ha scritto:


    Comunque una idea me la sono già fatta e ho comiciato a vedere C# con Identity Framework.

    E qui arriviamo a quello che dicevo questa mattina riguardo questa tipologia di discussioni, e questa non fa eccezione.

    Qualunque sia la domanda che viene posta, io posso sforzarmi di essere il più preciso, referenziato, motivato e puntuale possibile nelle risposte che fornisco, e ciò sarà totalmente irrilevante.

    Come si vede nella dinamica di svolgimento, questo succede perché tanto chi pone le suddette domande ha già deciso in base a canoni e convinzioni proprie, e pertanto qualunque risposta andrà nel senso prospettato verrà accettata, qualunque risposta andrà in senso contrario verrà contestata o porterà alla riformulazione della domanda originale con un'altra sfumatura.

    Questo perché chi pone le domande in realtà ha già dato delle risposte ed è convinto di esse a prescindere, e pertanto non sta in realtà chiedendo, ma sta “discutendo”, e ogni replica porterà solamente nuovi punti verso i quali scontrarsi su un mezzo assolutamente inappropriato e troppo “time consuming” per discutere in modo diretto di certe cose.

    Se hai scelto di usare C#, non vedo perché perdere tempo nel cercare inutili confronti e trovare differenze che se sono irrilevanti non spostano la questione, e se invece lo sono vengono banalmente confutate o spostate di priorità in quanto vanno incontro a una scelta che hai già compiuto e che deve comunque alla fine “risultare”. Procedi così e buona fortuna!

  • Re: Delphi o Lazarous, che scegliereste?

    Qualunque sia la domanda che viene posta, io posso sforzarmi di essere il più preciso, referenziato, motivato e puntuale possibile nelle risposte che fornisco, e ciò sarà totalmente irrilevante.

    Tutt'altro.
    Dalle risposte sui forum (molti dei quali tuoi), ho deciso gli strumenti da approfondire. Non parlo solo dei forum che trovi qui.
    Poi ho cominciato a guardarmi un po di tutorial su Youtube.
    Mi sono da subito reso conto che era molto più facile trovare materiale su .NET,  Entity Framework.
    Ma soprattutto l'approccio sul codice nella gestione del DB del Framework mi è piaciuto decisamente di più.
    Comunque fino alla tua ultima risposta non avevo ancora deciso, ho aspettato l'ultima replica che ha semplicemente confermato l'idea che mi ero già fatto.

    Se avessi avuto una idea già decisa non avrei perso tempo a scrivere, provare, chiedere chiarimenti, replicare.
    Dato che come ti ho già scritto è una scelta senza dubbio estremamente condizionante non l'ho certo valutata alla leggera.
    Ho le mie convinzioni che difendo, ma sono sempre disposto a metterle in dubbio e cambiarle quando trovo argomentazioni convincenti.

    Ecco perché ho anche aggiornato il documento principale.
    Grazie dei consigli.

  • Re: Delphi o Lazarous, che scegliereste?

    02/01/2023 - paoloholzl ha scritto:


    Poi ho cominciato a guardarmi un po di tutorial su Youtube.
    Mi sono da subito reso conto che era molto più facile trovare materiale su .NET,  Identity Framework.

    Innanzitutto, è Entity Framework.

    02/01/2023 - paoloholzl ha scritto:


    Ma soprattutto l'approccio sul codice nella gestione del DB del Framework mi è piaciuto decisamente di più.

    Mi sperticherò di nuovo in dettagli inutili e insignificanti, poiché - come ho già avuto modo di evidenziare - da un lato ci sono delle osservazioni tecniche e comparative che si contrappongono ad analisi legate al “mi piace di più” e peraltro riferite a un aspetto molto particolare e specifico dello sviluppo, ovvero l'accesso ai dati. Tuttavia, buttiamo via qualche altro minuto a spiegare ciò che - pure svelasse anche la totale inadeguatezza e inconsistenza di una scelta - sono convinto troverebbe comunque una motivazione nascosta o una ragione d'essere che non era emersa prima e che comunque giustificherebbe la scelta, a dimostrare la tesi di cui parlavo.

    Riguardo Entity Framework nello specifico, è una delle modalità di accesso ai dati ma non è quella predefinita e soprattutto non è valida per tutti gli approcci, soprattutto quelli che presuppongono l'uso di una modalità di sviluppo RAD, e questo per alcuni semplici motivi:

    • Entity Framework è un tool ORM, che trasforma strutture dati non OOP in classi e oggetti, allo scopo di adattarle a questo paradigma;
    • l'approccio ORM non è adatto a tutte le tipologie di applicazioni in particolare allo sviluppo RAD delle applicazioni;
    • le prestazioni di EF non sono sempre al top, a meno di non utilizzare espedienti ad hoc per velocizzare l'accesso ai dati;
    • EF possiede solo pochi driver per accesso al database, praticamente solo SQL Server, poiché gli altri sono affidati a terze parti che non curano particolarmente la compatibilità con questo framework o non lo testano a fondo, con problematiche di varia natura;
    • l'uso di EF presuppone l'adozione di una modalità a scelta tra “Code First”, “Database First” e altri approcci che richiedono l'uso di Migration che possono risultare particolarmente ostiche e controintuitive per chi non le conosce a fondo, di certo ben lontane dalle modalità di Access a cui sei abituato;
    • rispetto all'approccio adottato con Access, il “binding” di Delphi è senz'altro più simile rispetto a quello adottato da Entity Framework o anche dai semplici componenti che fanno parte di ADO.NET.

    Detto questo, posso anche ammettere che Entity Framework piaccia così tanto, se non altro perché sono disposto a scommettere che tu non abbia minimamente approfondito le modalità con cui si esegue il binding con i dati all'interno di una qualsiasi applicazione Delphi tradizionale. :)

    Siamo onesti.

    02/01/2023 - paoloholzl ha scritto:


    Ho le mie convinzioni che difendo, ma sono sempre disposto a metterle in dubbio e cambiarle quando trovo argomentazioni convincenti.

    Sarà, ma fino ad ora questo non é MAI avvenuto. Quello che invece si nota è che tu sia sempre disposto a fare di tutto per trovare una motivazione “contro” da opporre puntualmente a qualunque argomentazione convincente venga posta.

  • Re: Delphi o Lazarous, che scegliereste?

    02/01/2023 - paoloholzl ha scritto:


    Ribadisco cosa mi interessa:
    Scopo: scrivere (come scrivo da anni) dei ‘classici gestionali’, tanto per fare un esempio un CRM (nell'esempio, senza mail automatici, sms o altre particolarità).
    Usare un ambiente stabile, documentato, con un buon numero di sviluppatori e forum di supporto.
    Usare strumenti più open source possibile.
    Usare fintanto che è possibile versioni Community anche per sviluppare programmi da vendere.
    Sviluppo Stand-Alone, i programmi devono girare in rete indipendentemente dal collegamento Internet.
    Possibilmente il codice risultante deve girare indifferentemente su Win o Linux, al limite anche su Android.
    La programmazione deve essere più RAD possibile, devo dedicare tempo al codice, meno possibile alle interfacce e alle impaginazioni dei reports.
    Deve poter usare database server (ma questo lo fanno un po tutti),  in lan.
    Più è monolitico meglio è (dal mio punto di vista), in pratica per sviluppare un gestionale ‘classico’ , dai forms ai report, devo fare meno uso possibile di componenti aggiuntivi.
    Il codice risultante deve essere più chiaro possibile.

    Riprendo questo messaggio solo per un post conclusivo di questo thread, perché non ho intenzione di dedicarvi altro tempo per i motivi già espressi, ossia che la decisione in realtà è stata già presa e qualsiasi precisazione risulta perfettamente inutile pur se andasse a dimostrare la totale inadeguatezza di tale scelta.

    Per chiunque altro invece non abbia già scelto, elenco di nuovo tutti i motivi per cui - riguardo i requisiti esposti sopra - senz'altro Delphi costituisce una delle migliori alternative disponibili in questo senso:

    • L'approccio dello sviluppo è RAD: questo vuol dire che ogni passaggio della realizzazione dell'app - sia desktop ma anche soprattutto mobile - compreso l'aggancio a una base dati può avvenire tramite progettazione visuale, con la possibilità di vedere anche i dati a designtime e non solo a runtime (feature non disponibile in ambiente .NET, ad esempio).
    • La creazione di gestionali è forse una delle prerogative principali per cui viene usato Delphi; esiste addirittura un gestionale ERP completamente opensource - ERP OS1 - che viene gestito da un consorzio e a cui è possibile associarsi per la rivendita del prodotto o delle proprie customizzazioni.
    • L'ambiente Delphi è un ambiente completo di tutti i tool necessari allo sviluppo, con editor integrato e scrittura rapida del codice, snippet, template, completamento automatico, refactoring e include client per l'accesso a Git e altri sistemi di controllo di versione, tool per unit testing e svariate integrazioni con altri linguaggi (es. Python, con cui è stato realizzato un IDE intero come PyScripter).
    • Il linguaggio e tutti i componenti presenti in Delphi, che si tratti di librerie, funzioni, controlli o procedure guidate, sono ampiamente documentati.
    • La community Delphi è presente e viva: lo scorso anno si sono tenuti due eventi come il Delphi Day (free, 500+ sviluppatori) e ITDevCon (a pagamento, 50+ sviluppatori) , per citarne un paio, con una buona frequenza; esistono inoltre gruppi Facebook, forum e tante altre risorse a supporto, soprattutto nell'ambito italiano (che non guasta mai)… anche il Product Manager di Delphi è italiano!
    • In merito al rapporto con l'opensource, sono molteplici i progetti a sorgente aperto di framework e librerie usate in Delphi per qualsiasi ambito: basta cercare su GitHub. Inoltre, sono molti i progetti supportati finanziariamente dalla stessa casa produttrice (Embarcadero) oppure donati alla comunità opensource da privati (es. il sistema di VivaTicket è basato su un framework MVC realizzato in Delphi e ha recentemente donato codice inizialmente ad hoc al progetto pubblico). Delphi stesso viene fornito con i sorgenti delle librerie di base (RTL+VCL+FMX).
    • Versione Community e sue limitazioni: sebbene rivolta a hobbisti e curatori di progetti opensource in primis, la versione Community di Delphi non è particolarmente limitata (es. a una piattaforma, o in numero di componenti) - come avveniva in passato - ma supporta tutte le piattaforme disponibili nella versione completa, da Windows a Mac OS, da Android a iOS. La richiesta è quella di acquistare una licenza quando il fatturato è tale da dimostrare un introito derivante dal software prodotto usando lo stesso ambiente di sviluppo. Rimanendo comunque sotto una certa soglia, è ammesso anche l'uso commerciale. Questo senz'altro può costituire uno svantaggio in merito a prodotti per lo sviluppo più generosi e/o aperti commercialmente, anche se bisogna porre l'accento sul fatto che quando un produttore di tool di sviluppo non campa dei propri tool, significa che campa d'altro, e questo strategicamente può influire sulla roadmap dei tool di sviluppo a discapito delle reali necessità dello sviluppatore, che non può nemmeno dire nulla a riguardo visto che non finanzia nemmeno il software che utilizza (e questo si è già visto in passato nei casi di VB6 vs VB.NET, Silverlight, UWP, Windows Phone e altri tool e linguaggi Microsoft - ma non solo - che sono andati a morire e non hanno un percorso di sbocco se non quello di riscrivere il codice). Anche in Delphi vengono deprecate alcune librerie, ovvio, ma a oggi è il tool con la maggior compatibilità all'indietro (sempre sottolineando che si tratta di un ambiente RAD).
    • Sviluppo stand-alone e programmi "monolitici": non esiste eseguibile più monolitico di quelli prodotti con Delphi, tutti nativi e inclusivi di tutto il codice necessario per girare, senza runtime e senza dipendenze. Tuttavia, all'occorrenza, è possibile fare anche uso di package distinti e alleggerire l'eseguibile usando librerie esterne e deployandole separatamente. Questa scelta non è un “tutto o niente”, ma può essere graduale (alcune unit di codice sì, altre no) a seconda della granularità da ottenere o degli obiettivi. Per decidere la modalità di deploy, basta un clic.
    • Sviluppo su Linux e su altre piattaforme. Sin dal 2012, Delphi include più compilatori nel prodotto affinché lo stesso identico sorgente possa essere compilato su più piattaforme e sistemi operativi, anche molto diversi tra loro, come Windows, Mac OS, Android e Linux. Grazie alla libreria FireMonkey, si possono realizzare app multi-device che sono performanti (sfruttano la scheda grafica) ma si adattano completamente (e automaticamente) alla piattaforma di riferimento (es. i pulsanti vengono mostrati con diversi stili su Android e iOS). La progettazione avviene sempre in modo visuale e RAD (non esiste alcun bisogno di “hot reload”, poiché il risultato è immediatamente visibile a video durante la progettazione) e questo esclude anche la necessità di acquistare separatamente un tool specifico per la prototipazione.
    • Accessibilità ai dati. Grazie alla libreria FireDAC, ma anche alla presenza di librerie alternative (es. dbExpress, InterBase Express, dbGo for ADO), NON ESISTE un singolo database a cui Delphi non possa collegarsi, che sia “file based” o database server, che sia vecchio o nuovo, compresi anche i più recenti e di tipo eterogeneo es. NoSQL (MariaDB, MongoDB). I driver sono ad alte prestazioni e possono essere incorporati all'occorrenza nell'eseguibile. Tramite l'uso della tecnologia LiveBindings, i controlli possono essere ancorati ai campi delle tabelle così come avviene nella maggior parte degli ambienti RAD, oppure usando specifici “data controls” appositamente progettati a questo scopo (a prescindere dalla base dati di riferimento).
    • Approccio low/zero-code. L'impronta dell'ambiente è quello di estremizzare l'approccio low/zero code grazie alle funzionalità RAD e consentire il maggiore riuso possibile di package, componenti e controlli, nonché la scrittura di tool ed estensioni dell'IDE usando lo stesso linguaggio adottato per scrivere i programmi; tuttavia, se è necessario, l'approccio “grafico” non esclude la possibilità di scrivere codice a basso livello, integrando routine in ASM oppure gestendo direttamente messaggi Windows o interrupt Linux tramite apposite parole chiave del linguaggio, unendo così il livello di sviluppo più alto a quello che in gergo si dice “tocca il metallo” ovvero si pone a livello più basso. Si possono inoltre importare tutte le principali API di librerie di qualsiasi OS supportato, se non sono già presenti nei file sorgenti delle librerie di base (e spesso lo sono già).
    • Linguaggio Object Pascal: a proposito del linguaggio, non deve far pensare al Pascal del passato ma a un moderno derivato che include tutte le feature presenti nella maggior parte dei linguaggi di oggi quali C#, Java e altri, in grado quindi di supportare Closure, Generics, metodi anonimi, Attributes/Decorators, scripting dinamico con interfacce virtuali, record avanzati, helper, variabili inline e tante altre feature. Il codice rimane sempre leggibile (da qui anche l'uso frequente del Pascal come ideale per chi inizia) ed è un buon compromesso tra l'eccessiva sinteticità dei linguaggi C-like e la troppa verbosità di Visual Basic e suoi derivati. Il supporto completo alla programmazione procedurale ma anche all'OOP, senza forzare né l'una né l'altra, aumenta la compatibilità con il codice eventualmente già scritto per versioni più vecchie ed espone paradigmi con cui è possibile scrivere applicazioni dando maggiore precedenza al codice invece che al RAD, sebbene quest'ultimo dia il meglio di sé più alto è il livello dell'applicazione da realizzare.
    • In attività sin dal 1995: nonostante si dica ripetutamente che “è morto”, dalla sua nascita nel 1995 vengono periodicamente rilasciate (due volte all'anno, al momento) versioni aggiornate e migliorate di Delphi, soprattutto per il rispetto di alcuni requisiti stringenti nell'area delle piattaforme “mobile”.

    Questo per dire che, conti alla mano, allo stato attuale Delphi rispetta tutti i requisiti menzionati nel messaggio sopra citato, nessuno escluso.

    Se poi per gusti personali o altre motivazioni si preferisce altro, ciascuno è ovviamente libero di decidere come vuole, l'importante però è che nella comparazione delle caratteristiche non vengano uno dopo l'altro sminuiti di volta in volta tutti i “paletti” posti, altrimenti significa che stiamo cambiando le carte in tavola, e in quel caso è ovvio che le scelte non possono essere più legate alle carte che sono state giocate in precedenza.

Devi accedere o registrarti per scrivere nel forum
23 risposte