Nuova funzionalità su Delphi

di il
17 risposte

Nuova funzionalità su Delphi

Non ho creato questo topic per chiedere aiuto ma per segnalare per gli amanti di Delphi un articolo (in inglese) che spoilera una delle nuove funzionalità sulla nuova versione di Delphi (Delphi 13 - Florence) in uscita prossimamente:

https://blogs.embarcadero.com/coming-in-rad-studio-13-a-conditional-ternary-operator-for-the-delphi-language/

E' un collegamento alla pagina ufficiale di Embarcadero, società che detiene i diritti sullo sviluppo di Delphi.

17 Risposte

  • Re: Nuova funzionalità su Delphi

    Ho dato una rapida guardata, l'operatore ternario non mi sembra cosi fondamentale. 

      // classic if statement
      if Left < 100 then X := 22 else X := 45;
     
      // assignment with if operator
      X := if Left < 100 then 22 else 45;
    

    mi sembra un copiare un pezzo del C, Il pascal in genere è sempre stato molto più statico del C, magari mi sbaglio ma stona.

    le altre novità vorrei vederle. 

  • Re: Nuova funzionalità su Delphi

    01/08/2025 - dobby ha scritto:

    .........

    mi sembra un copiare un pezzo del C, Il pascal in genere è sempre stato molto più statico del C, magari mi sbaglio ma stona.

    le altre novità vorrei vederle. 

    In effetti la sintassi stona parecchio e la funzionalità non è dissimile da quella di un IF standard, è solo un modo per compensare le molte richieste che sono pervenute negli anni dagli sviluppatori Delphi (e non solo, Pascal in generale) per avere la funzionalità copia del C.

    Ciò aiuta indubbiamente eventuali porting di codice.

    Da tenere presente anche che si dovrebbe sposare bene con le var inline (anche queste presente da relativamente poco tempo) e risolve la scritura di codice aggiuntivo non necessario (è una mia valutazione, non è detto che funzioni così):

    var X := if Left < 100 then 22 else 45;

    Le altre novità purtroppo non sono disponibili pubblicamente, 

  • Re: Nuova funzionalità su Delphi

    01/08/2025 - dobby ha scritto:

    Ho dato una rapida guardata, l'operatore ternario non mi sembra cosi fondamentale. 

    Si tratta di "zucchero sintattico": non è fondamentale, non lo è mai stato, non solo per questo linguaggio, ma per certi versi può essere una aggiunta interessante, finché il codice rimane leggibile.

    01/08/2025 - dobby ha scritto:

    mi sembra un copiare un pezzo del C

    L'operatore ternario è ormai presente su una vasta scala di linguaggi se non la quasi totalità: al netto della sua provenienza, non rappresenta più una novità, qualunque sia il linguaggio nel quale viene introdotto dall'inizio o in seguito, secondo me.

    01/08/2025 - dobby ha scritto:

    Il pascal in genere è sempre stato molto più statico del C, magari mi sbaglio ma stona

    Non capisco cosa si intende con "statico", o meglio non capisco come questo cambi la natura del linguaggio attuale.

    02/08/2025 - Delphinium ha scritto:

    In effetti la sintassi stona parecchio e la funzionalità non è dissimile da quella di un IF standard [...]

    Queste due affermazioni, per me, sono in contraddizione tra loro: proprio perché non è dissimile da un normale if...then, direi che la sintassi non stona affatto, per tanti buoni motivi tutti tecnici: è facilmente memorizzabile anche per gli sviluppatori di lunga data, non usa parole chiave nuove (quindi non rischia di rompere codice esistente), rimane comunque leggibile e chiaro (evitando quindi di snaturare un'ottima qualità del linguaggio, forse la più incisiva tra tutte), mantiene la caratteristica dell'essere "type safe" e usabile con qualunque tipo di valore (purché siano "convertibili tra loro"), cosa che era meno formale con l'esistente IfThen() di cui esistono diversi overload.

    02/08/2025 - Delphinium ha scritto:

    è solo un modo per compensare le molte richieste che sono pervenute negli anni dagli sviluppatori Delphi (e non solo, Pascal in generale)

    Non è cosa da poco, credo. Anzi, direi finalmente! :)

    02/08/2025 - Delphinium ha scritto:

    Da tenere presente anche che si dovrebbe sposare bene con le var inline (anche queste presente da relativamente poco tempo) e risolve la scritura di codice aggiuntivo non necessario (è una mia valutazione, non è detto che funzioni così)

    Esattamente! La cosa importante, e che credo venga rispettata da questa piccola novità, è non snaturare il linguaggio.

    P.S.: terrei buono questo thread per discutere le novità che verranno man mano annunciate su Delphi 13, secondo me potrebbe essere interessante. O almeno, per me lo è. :D

  • Re: Nuova funzionalità su Delphi

    05/08/2025 - Alka ha scritto:

    mantiene la caratteristica dell'essere "type safe" e usabile con qualunque tipo di valore (purché siano "convertibili tra loro"), cosa che era meno formale con l'esistente IfThen() di cui esistono diversi overload

    In effetti, a questo aspetto non avevo pensato. Rispetto all'uso di due (tenendo conto della funzionalità equivalente) "istruzioni" autonome e non correlate all'interno del classico IF ... THEN ... ELSE, questo nuovo modo riporta esclusivamente due espressioni quindi semplificando e rendendo più immune da errori il codice.

    RIspetto alla "sintassi stona" è perchè, per chi come me non usa le varianti già presenti del classico IF,  vedere un

    x := if ....

    è una novità assoluta e all'occhio ormai allenato risulta come un pugno.

    Inoltre le funzioni ternarie non le ho mai usate neanche dove esistono già da tempo (sono uno che scrive le "IF" assolutamente con il "begin / end", identato e su più righe):

    if a = b then
      begin
        //Ecco qui si eseguono le attività
        a := b div 2;
      end;
  • Re: Nuova funzionalità su Delphi

    05/08/2025 - Delphinium ha scritto:

    è una novità assoluta e all'occhio ormai allenato risulta come un pugno.

    Che possa apparire strano all'inizio ci sta. Per come è stato implementato (riprendendo l'elenco degli aspetti elencati nel messaggio precedente), secondo me ci si fa comunque l'abitudine in pochissimo tempo.

    05/08/2025 - Delphinium ha scritto:

    Inoltre le funzioni ternarie non le ho mai usate neanche dove esistono già da tempo

    Non le usavo neanche io, ma ultimamente ho iniziato a usarle sempre di più, laddove svolge una funzione "chiarificatrice" del codice.

    Per esemplificare, preferisco di gran lunga

    var LMessage := IfThen(AFlag, 'Device is enabled', 'Device is disabled')

    rispetto a

    var LMessage: string;
    if AFlag then
      LMessage := 'Device is enabled'
    else
      LMessage := 'Device is disabled';

    soprattutto se si considera l'aggiunta di begin...end, che io in questo contesto trovo superfluo.

    In questi ambiti, il nuovo operatore ternario sicuramente semplifica ancora di più il codice rendendolo sintatticamente comprensibile e rimuovendo tutte le informazioni ridondanti, che potrebbero risultare anche fuorvianti, senza cambiare la sostanza e la leggibilità:

    var LMessage := if AFlag then 'Device is enabled' else 'Device is disabled';

    Che poi va detto che qualunque "innovazione sintattica", soprattutto quelle di questa tipologia, sono un "nice to have" ma non è obbligatorio utilizzarle, soprattutto quando portano solamente confuzione e svantaggi; ad esempio, non farei mai uso di questi operatori combinandoli tra loro (più if...else concatenati), che poi sono le stesse regole che si applicano anche agli altri linguaggi dove esiste un operatore di questo tipo.

    05/08/2025 - Delphinium ha scritto:

    sono uno che scrive le "IF" assolutamente con il "begin / end", identato e su più righe

    Io qui mantengo lo standard di codifica generalmente condiviso:

    if a = b then
    begin
      // ...
    end
    else begin
      // ...
    end;

    ossia tenendo il begin al di sotto dell'if a cui appartiene il blocco. :)

  • Re: Nuova funzionalità su Delphi

    Il 10 Settembre Embarcadero terrà un Webinar gratuito sull'usicta di Rad Studio 13 Florence.

    Ciò è presente nella varie mailing list pubbliche, la pagina di annuncio ufficiale di Embarcadero non è ancora stata pubblicata.

    Ciò detto quindi sarà imminente la nuova uscita ove ci si aspetta diverse novità, novità che come già citato nei post precedenti mirano ad aiutare il programmatore e non sono certo obbligatoriamente da usare.

    Non appena pubblicheranno un link ufficiale aggiorneremo questo thread.

  • Re: Nuova funzionalità su Delphi

    07/08/2025 - Delphinium ha scritto:

    Il 10 Settembre Embarcadero terrà un Webinar gratuito sull'usicta di Rad Studio 13 Florence.

    Ciò è presente nella varie mailing list pubbliche, la pagina di annuncio ufficiale di Embarcadero non è ancora stata pubblicata.

    Generalmente viene annunciato all'incirca nel momento in cui diventa disponibile.

    Di solito, dalle esperienze passate, il rilascio della nuova versione è contemporaneo al webinar di presentazione (appare scaricabile nel portale dei prodotti poco prima o poco dopo, a seconda dei casi e della "time zone"), quindi è ipotizzabile che il 10 settembre sia anche il giorno in cui la nuova versione viene ufficialmente rilasciata. :)

  • Re: Nuova funzionalità su Delphi

    E' uscito l'annuncio ufficiale con la possibilità di iscrizione al webinar “See What’s Coming in RAD Studio 13 Florence” del 10 Settembre.

    Questo il link al blog, dove si può anche curiosare in anteprima sulle novità che verranno introdotte in "Webstencil".

    https://blogs.embarcadero.com/rad-studio-13-update-what-we-know-so-far-and-whats-coming/?utm_source=Eloqua&utm_medium=email&utm_content=Article-250814-Multicontent

    Alla prossima.

  • Re: Nuova funzionalità su Delphi

    14/08/2025 - Delphinium ha scritto:

    E' uscito l'annuncio ufficiale con la possibilità di iscrizione al webinar “See What’s Coming in RAD Studio 13 Florence” del 10 Settembre.

    Oggi è il "grande giorno": alle 17 scopriremo con quali nuovi bug... ehm... feature dovremo cimentarci. :D

  • Re: Nuova funzionalità su Delphi

    10/09/2025 - Alka ha scritto:

    Oggi è il "grande giorno": alle 17 scopriremo con quali nuovi bug... ehm... feature dovremo cimentarci. :D

    Ecco, la parola bug mi intimidisce un poco ... spero che la fase BETA abbia prodotto sufficienti informazioni per limitare i danni ...

    E che magari tutto se non molto del passato sia stato risolto.

    Ci aggiorniamo dopo il webinar, anzi dopo l'installazione del nuovo prodotto.

  • Re: Nuova funzionalità su Delphi

    Per chi ha partecipato, che pareri sul webinar e novita' della Florence ?

  • Re: Nuova funzionalità su Delphi

    Il webinar sinceramente lo ricordo a malapena (è di due mesi fà) quindi non ti sò fare un resoconto.

    Sulle novità della versione 13 di Rad Studio (parliamo di Delphi in questo caso), diciamo che le novità migliori sono:

    • la stabilizzazione dell'IDE sia a 32 bit che a 64 (da due mesi mai un crash, anche aggiungendo una sbarcata di componenti di terze parti);

    • IDE a 64 bit quasi terminato (in questo momento lo stò usando quasi principalmente;

    • LSP (il nuovo "codeinsight di fatto") decisamente più stabile;

    E fino a qui la parte di miglioramento.

    Sulle altra novità, ossia nuove funzionalità e implementazioni del linguaggio:

    • non ho ancora usato le nuove funzionalità (vado a memoria) "noreturn", "is not", "{$PUSHOPT}", "NameOf", ...;

    • ho usato invece il nuovo IF "ternario" e in effetti è utile, rende il codice più leggibile e stringato;

    • ci sono un sacco di migliorie in risoluzione ai bug già segnalati soprattutto sui componenti, ma sinceramente non li ho verificati (nelle mie applicazioni principalmente VCL non ho avuto problemi di sorta nel passato);

    • alcune migliorie nelle RTL, tra cui la possibilità di fare il cast di un risultato di tipo generico (anche questo per ora mai usato, ma in passato sarebbe stato utile);

    In sintesi, varrebbe la pena di aggiornare ? Non ne sono convintissimo anche se la mia risposta è SI.

    P.S.: bhè, hanno migliorato e sembra puntino tanto sull'AI come ausilio all'interno dell'IDE con il potenziamento di SmartInsight e addon di terze parti per l'interfacciamento sia dell'IDE che delle applicazioni ai motori AI (per creare chatbot ad esempio).

    Questo a me per adesso non interessa e quindi non l'ho neanche preso in considerazione (me ne ero completamente dimenticato).

  • Re: Nuova funzionalità su Delphi

    09/11/2025 - amorosik ha scritto:

    Per chi ha partecipato, che pareri sul webinar e novita' della Florence ?

    Una delle novità più apprezzate che ho raccolto da feedback di sviluppatori vari durante una conferenza la scorsa settimana è l'aggancio del Display Link Service in FireMonkey.

    Non ho ancora avuto modo di provarlo, perché servirebbe un progetto che sfrutti in modo particolare il precedente "difetto", però pare che una delle problematiche principali di FireMonkey fosse l'aggiornamento dell'interfaccia utente gestito in autonomia con "timer" dedicati, che dava luogo a qualche artefatto o comunque rendeva meno responsivo il refresh di UI con elementi che dovevano essere veloci e più brucianti.

    Agganciandosi a questo servizio, adesso la libreria sfrutta il servizio preposto al display nella piattaforma di riferimento, quindi tramite VSync e altri espedienti, l'esperienza utente dovrebbe essere drasticamente migliorata.

    A parte le novità sul linguaggio, secondo me anche il lavoro che stanno facendo su WebBroker/WebStencils è importante: finalmente una tecnologia che alla sua nascita era avantissimo (non esistevano ancora le alternative ASP.NET, vari MVC e simili, o comunque non avevano le stesse feature) viene aggiornata per adeguarsi agli standard moderni, soprattutto accoppiandosi con l'accesso ai dati praticamente universale di FireDAC, gestendo tutto quello che serve al web moderno ma abbracciando gli strumenti emergenti e maggiormente orientate alle "hypermedia apps" (tipo HTMX), che si stanno ritagliando sempre più un ruolo come validissima alternativa alle blasonate e onnipresenti librerie/framework JavaScript e approccio SPA.

  • Re: Nuova funzionalità su Delphi

    Molte grazie

Devi accedere o registrarti per scrivere nel forum
17 risposte