Nuova funzionalità su Delphi

di il
10 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.

10 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.

Devi accedere o registrarti per scrivere nel forum
10 risposte