Linguaggio Rust


Questa pagina ha una gerarchia - Pagina madre:Programmazione

Home Forum Programmazione Linguaggio Rust

Questo argomento contiene 3 risposte, ha 4 partecipanti, ed è stato aggiornato da Lissandrello Luca Lissandrello Luca 1 anno, 1 mese fa.

Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #10495

    ciao a tutti, incuriosito dal nuovo linguaggio di programmazione Rust (https://www.rust-lang.org) che vanta sicurezza del codice e velocità paragonabile al C ho fatto il porting della funzione perft del mio Cinnamon scritto in C++.

    In effetti è un linguaggio molto veloce ma non quanto il C++, sul mio codice è circa il 15% più lento:

    cinnamon-v2.0-C++ -perft -d7
    Perft moves: 3195901860 in 2 minutes 10 seconds 87 millsec (24000k nodes per seconds)
    
    cinnamon_perft-RUST -d7
    Perft moves: 3195901860 in 153.22460959793534 seconds (20857k nodes per seconds)
    

    Il sorgente è qui https://github.com/gekomad/cinnamon_perft

    A mio parere i punti di forza del linguaggio sono:

    1) ha una gestione evoluta delle dipendenze (come maven di java) e un repository di librerie centralizzato (https://crates.io/)
    ad esempio se si vuole utilizzare la libreria di log basta aggiungere ‘log = “0.3.6”‘ nel file di configurazione e automaticamente tale libreria verrà scaricata compilata e linkata.

    2) non è possibile incappare in dangling pointer o accessi invalidi alla memoria nenache in presenza di più thread – la memoria viene deallocata in automatico ma non tramite garbage collector

    3) usa annotazioni direttamente nel codice per l’esecuzione dei test (come i @Test di java)

    4) è anche un linguaggio funzionale

    Secondo me è un linguaggio molto promettente anche se ancora immaturo

    #10496

    Ciao,

    anche io qualche tempo fa avevo pensato di provare Rust per riscrivere Chexa: cambiando linguaggio sarei stato costretto a fare un vero rewrite, il che mi farebbe un gran bene (me lo dico/ripeto ormai da anni)…

    Però devo dire che mentre lo studiavo la voglia andava scemando: il fatto è che ogni linguaggio di programmazione ha i suoi tradeoff; accetti degli svantaggi per ottenere dei vantaggi. Rust è un linguaggio nato con la programmazione di sistema in mente. Per quello scopo ha tantissimi vantaggi.

    Il dubbio che mi andava crescendo mentre lo studiavo era “ma a conti fatti mi conviene?”.
    Riguardo alla velocità non credevo mi avrebbe dato poi tantissimo: ad esempio non mi è chiaro se i tipi “boxed” impattano sulle performance in maniera significativa…
    Il C è praticamente assembly portabile, con le ovvie difficoltà che ciò causa, ma in cambio ti rende un controllo quasi completo sulla macchina. Devi cedere parte del secondo se vuoi programmare in un linguaggio più moderno, imho. Quindi non è nemmeno (soltanto) una faccenda di prestazioni, per me.

    Detto questo, egoisticamente sono contento che qualcuno stia provando a (ri)scrivere un motore in Rust, che è la cosa che non ho avuto volontà/fegato di fare io, pur essendo curioso di sapere come va a finire 🙂

    Per cui farò il tifo per te 😉

    #10561
    stegemma
    stegemma
    Moderatore

    Ogni tanto ne salta fuori uno “nuovo” ma, alla fine, dopo del C++ non c’è stata molta vera innovazione, nei linguaggi. Il JAVA ha cose simpatiche, come la possibilità di “appiccicare” funzioni ad un oggetto a run-time. il LISP era nato per l’intelligenza artificiale ma non conosco applicazioni serie che lo sfruttino (ed i sorgenti diventano presto illeggibili, se annidi qualche parentesi in più). Il C# non lo conosco ma adottarlo solo per evitare i bachi da allocazione di memoria mi sembra eccessivo. Tutti i linguaggi hanno poi librerie più o meno estese; a meno che non ne serva una particolare, introvabile in altri linguaggi, non mi sembra anche questo un motivo sempre valido, per cambiare linguaggio. Parlo ovviamente dal punto di vista di chi già ne conosce bene uno e non trova in esso limiti insormontabili. Il C++ ha, IMHO, il solo limite del meccanismo dei template, che è non è molto flessibile (a livello di scrittura del codice) ed alcune stranezze che possono accadere, se non si sta attenti, con la conversione automatica dei tipi di dati (a volte il costruttore chiamato non è quello che ci si aspetta).

    Per un programma di scacchi, il C/C++ sono l’ideale. Il VB/Pascal sono alternative altrettanto valide, anche se il primo è più lento. Ciò che fa la differenza sono gli algoritmi usati e la “prova” sono Raffaela (veloce ma “stupido”) e Satana (meno veloce e poco più “intelligente”), che soccombono ad engine forse più lenti ma sicuramente con algoritmi migliori, in fase di ricerca.

    Alla fine comunque è sempre un hobby e sfruttarlo per imparare un nuovo linguaggio ha pienamente senso, anche se non risulterà poi tanto produttivo, in termini di ELO.

    #10591
    Lissandrello Luca
    Lissandrello Luca
    Moderatore

    Qualcuno può passarmi l’exe compilato a 64 bit per windows? Così proviamo a testarlo… 🙂

    Thanks

    LL

Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)

Devi essere loggato per rispondere a questa discussione.

© 2017 G 6 Tutti i diritti riservati - Buon divertimento!

By continuing to use the site, you agree to the use of cookies. more information

Questo sito utilizza i cookie per fonire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o clicchi su "Accetta" permetti al loro utilizzo.

Chiudi