Alessandro


Questa pagina ha una gerarchia - Pagine discendenti: 12′ Campionato Italiano, Faqs, Engine Testing, Engines alternativi, Engine Testing – All games

Risposte al Forum Create

Stai vedendo 15 articoli - dal 1 a 15 (di 85 totali)
  • Autore
    Articoli
  • in risposta a: Torniamo ai tabi? #12237

    Alessandro
    Membro

    AdaChess legge i fen, ci metto un istante ad implementare il comando setboard. Lo metto in lista di implementazione per il prossimo rilascio 🙂

    in risposta a: IGT 2018: sede e data #12236

    Alessandro
    Membro

    Se le partite sono brevi non c’è modo di chiacchierare mentre i motori “pensano”, e di commentare le mosse che fanno, gli algoritmi, etc. io preferisco partite da 15bo 20 min, con un +10s per mossa. Meno di così sono brevi, più di così non c’è tanto tempo.

    in risposta a: consiglio per libri!! #12219

    Alessandro
    Membro

    Effective C++ non l’ho letto, grazie al cielo non mi occupo di C++ lavorativamente! 😉 ma ne ho sentito parlare bene.

    Io di lavoro mi occupo di design ed implementazione del software, quindi metto in pratica proprio questi concetti. I software su cui lavoro io hanno requisiti tipicamente molto stringenti tra cui quello di garantire un elevatissimo livello di affidabilità. Ovvero, il software una volta consegnato è previsto che funzioni per decine di anni senza subire alcun intervento di manutenzione. Per rispettare questo – ed altri – requisiti, è indispensabile un utilizzo corretto di tutta una serie di pratiche di sviluppo, ovvero occorre un design efficace.

    L’idea di utilizzare il motore di scacchi come “scusa” per mettere in pratica i concetti dell’ingegneria del software è senza dubbio molto carina. Tuttavia… Il guaio dei motori di scacchi è che non si prestano molto ad un buon design e sono invece molto proni allo spaghetti-code.
    Il motore-tipo contiene una serie di oscenità ed orrori che sono semplicemente inaccettabili in un ambiente di lavoro soggetto a budget. Il motivo è chiarissimo (plausibile): il requisito della velocità di un motore incide considerevolmente sulle caratteristiche, al punto da sacrificare tutto il resto e piegarlo al suo cospetto!
    Nella vita reale non è mai necessario fare scelte così drastiche ed anzi i requisiti si modellano tenendo conto che le scelte implementative hanno un impatto sula velocità di esecuzione e non il viceversa. L’ottimizzazione avviene quindi unicamente a livello di design e mai (o comunque in modo minimale) a livello di implementazione.

    A titolo persaonle, dopo aver letto un po’ di sorgenti di altri motori ho capito che non volevo assolutamente che AdaChess diventasse una cosa del genere – e lo dico con il massimo rispetto e stima parlando.
    Personalmente, invece, vorrei che chi legge il sorgente del mio motore lo possa capire al volo o con uno sforzo minimo, a patto ovviamente di conoscere un po’ di Ada. Con la versione di AdaChess in fase di rilascio, la imminente 3.0, sto lavorando duramente a questo. Certo ho dovuto accettare acuni compromessi ma il sorgente ora è sensibilmente più pulito e finamente scrivo codice di cui non mi devo più vergognare! 😀

    Però, se hai pazienza e ti ci metti con buona volontà e motivazione ti stupirai di quanto è piacevole e soddisfacente un sorgente chiaro, pulito e scritto bene!

    in risposta a: consiglio per libri!! #12217

    Alessandro
    Membro

    Ciao, ho letto alcuni dei libri che citi ti dico la mia opinione. Ma prima una premessa doverosa, che ti chiedo di leggere pazientemente.

    Quasi tutti i testi sono indirizzati alle accademie (i testi universitari) oppure a sviluppatori che lavorano quotidianamente in team; esclusi i “for dummies” ma questi non ci interessano.
    Il motivo per cui esiste una vagonata di libri rivolti a team-developer è che l’esperienza ha mostrato che i costi di sviluppo del software e del suo mantenimento sono molto maggiori in assenza di metodologie appropriate di lavoro in team. Ovvero, un team coordinato in modo adeguato e sviluppatori consci delle dinamiche di gioco di squadra sono più efficienti e producono software di maggior qualità rispetto ai colleghi “impreparati” – ovvero, costa meno all’impresa. Tali metodologie sono oggi praticamente le stesse per tutte le aziende e si rifanno alla metodo Agile. Quindi conoscere Agile, e Scrum, e simili è molto utile in contesti aziendali o di lavoro di squadra, soprattutto se la produzione del software è governata da un budget limitato.
    La cosa non è (o non necessariamente) tale per i motori di scacchi, e questo tienilo sempre presente finché il tuo obiettivo è e resta quello di scrivere un motore migliore, qualsiasi cosa significhi “migliore”.
    Se invece il tuo obiettivo è quello di migliorare le tue skills personali a prescindere da tutto il resto allora il discorso è molto diverso. Troverai utili quei testi, ma dovrai cercare anche altri metodi (che ti elenco in breve dopo).

    Clean Code è assolutamente da leggere e comprendere per essere al passo coi tempi. Oggi le aziende utilizzano fortemente il metodo Agile, e Clean Code ti aiuta a sviluppare con una metodologia Agile in modo ordinato. Clean Code è indubbiamente utile anche se il tuo obiettivo è solo quello di migliorare il codice del tuo motore e le tue skill personali.

    TDD by example, se è quello che ho io, è scritto per programmatoryi Python e se usi Python è il più semplice dei testi che troverai. Consigliato!

    Agile Software Development: Principles, Patterns and Practices è un libro che ho mollato in breve tempo, non è all’altezza di Clean Code e francamente l’ho trovato noioso.

    Se, come anticipavo sopra, il tuo obiettivo è quello di sviluppare skills la cosa è più interessante. Provo a dirti cosa ne penso, senza la pretesa di essere completo ma sperando di contribuire costruttivamente.

    Prima di tutto devi chiederti che cosa rende un codice “migliore” rispetto ad un altro.
    L’esperienza mostra che alcune caratteristiche del software sono semplicemente molto desiderabili poiché, nel ciclo di vita del software, la loro assenza limita in modo più o meno marcato il ciclo di vita del software stesso. Queste caratteristiche sono ad esempio l’astrazione, l’incapsulamento, la modularità etc. Casomai posso farti un elenco più completo se la cosa ti interessa.
    Una volta che hai in mente quali skills vuoi sviluppatre per migliorare la qualità del tuo software, allora puoi dirigerti su testi e documenti più specifici.
    Io suggerisco di praticare al punto di diventare fighi nel testing del software (non solo nel TDD) e nel debugging. Di riflesso, il codice che scriverai sarà qualitativamente migliore. Io sono un grande amante della leggibilità del codice. A tal fine, il design del software dev’essere pulito, chiaro e completo. Un buon design ti permette di scrivere codice ottimizzato senza sacrificare alcuna caratteristica implementativa, rende il debug semplice e consente un testing più accurato e di conseguenza misurabile.

    Cioè, è un mondo immenso. Scusate se mi sono dilungato troppo.

    in risposta a: Riconoscimento dei pedoni passati #12207

    Alessandro
    Membro

    Scusa ma perché non usare tabelle con valori pre-calcolati? Con le bitboard ti serve solo la maschera delle case in cui vuoi guardare la presenza di pedobi avversari, che puoi calcolare facilmente all’avvio del programma, casa per casa. Con quella il controllo è un attimo poi da fare. O è computazionalmebte più oneroso?

    in risposta a: Perft #12206

    Alessandro
    Membro

    Lo sono eccome! Sto scrivendo il parser per testarle. Arriveranno anche i risultati di AdaChess 🙂

    in risposta a: Perft #12178

    Alessandro
    Membro

    Ah dimenticavo: come implementazione prevedo di generare uno script python che parsa il file e, linea dopo linea, lancia il motore passandogli la fen come parametro e catturando l’output del perft. Se volete, quando ho finito di implementarlo vi giro il codice volentieri.

    in risposta a: Perft #12177

    Alessandro
    Membro

    Grazie mille Marco! Implemento una routine per lavorarci sopra e poi ti condivido con tutti i risultati 🙂

    in risposta a: Perft #12169

    Alessandro
    Membro

    Secondo me è una buona idea. È comunque una misura che fa da punto di riferimento.
    Stefano qual è su Sabrina il comando per lanciare un perft? Ho provato l’intuitivo “perft” ma sembra non accettarlo

    in risposta a: Hyper-V o non Hyper-V #12168

    Alessandro
    Membro

    Alla fine che soluzione hai scelto? Come ti trovi?

    Vorrei installare Linux CentOS sul mio Surface in macchina virtuale. Con VirtualBox andava troppo lento per i miei gusti. Chi ha esperienza in macchine virtuali ?

    in risposta a: Perft #12166

    Alessandro
    Membro

    Accettissimo! File molto utile direi! Certo AdaChess impiegherà leggermente di più di stocjfish (sarà l’hardware?) ma almeno potrò ragionevolmente dire di avere un perft che funziona sempre comunque e dovunque.
    Lo pubblichi qui sul g-sei da qualche parte?

    in risposta a: Perft #12163

    Alessandro
    Membro

    Mi ricollego all’argomento (se ne parlava anche nel post relativo agli step di Neurone). Casomai vogliate testare il generatore di mosse sappiate che AdaChess oltre a raccogliere le statistiche ha anche la funzione divide. Casomai qualcuno volesse dirmi che sono un figo fare dei test, credo di avere un generatore bug-free…

    in risposta a: Usare GIT #12147

    Alessandro
    Membro

    Dimenticavo: nel mio caso il repository l’ho creato come bare

    git init -bare

    Credo che sia una configurazione più appropriata anche nel tuo caso se condividi i sorgenti su più computer

    in risposta a: Usare GIT #12146

    Alessandro
    Membro

    Ciao Stefano, hai aperto un gran bel topic.

    Io uso regolarmente Git per AdaChess. Su Windows esiste un tool che si chiama TortoiseGit che fa da interfaccia grafica per Git, è semplice da usare e funziona benissimo (per chi non sa i comandi). Consigliatissimo.

    La mia configurazione è basilare e semplice: il repository è su una cartella Dropbox da cui quindi accedo da ogni dispositivo. Nel repository ho due branch: development e release. Essendo io l’unico sviluppatore di AdaChess uso il repository di sviluppo per tutto il tempo, mentre il release solo per i rilasci definitivi che poi finiscono su internet sul mio sito.

    Quando testo funzionalità nuove di solito faccio un commit prima ed uno dopo così da poter sempre confrontare le due versioni. Per funzionalità più grosse creo un branch nuovo che poi fondo (merge) con il branch di development.

    Il mio .gitignore contiene i dati per escludere le directory dove vanno i file compilati (i file oggetto ad esempio ed i file .ali che genera Ada) e l’eseguibile.
    Il mio progetto ha una architettura che aiuta Git a trovare ed escludere facilmente quel che serve o non serve. I sorgenti sono in una cartella src, i compilati in obi E la documentazione (inesistente) nella cartella doc.
    Così facendo facilito il lavoro a me ed a Git.

    Keep it simple 🙂

    Git o Svn sono fondamentalmente intercambiabili a mio avviso, per progetti di questo tipo. Il tutto sta secondo me a trovare un metodo per fare dei commit realmente utili. Su questo punto, ho un file dove per ogni funzionalità assegno un codice mnemonico e nel commit uso quel codice per sapere a cosa ho lavorato. L’idea è che se le cose vanno bene non c’è bisogno di sistemi di controllo di versione ma SE qualcosa non funziona diventano eccellenti per isolare il codice corrotto e di conseguenza per fare un debug rapito ed efficace.

    E poi sono un backup 🙂

    in risposta a: Perft #12130

    Alessandro
    Membro

    TSCP va modificato per avere un perft, scusate mi ero dimenticato di dirlo (è una cosa molto veloce per fortuna). Faile credo lo abbia già integrato nel motore rilasciato.

    Comunque visto i valori ed i consigli vari credo che il generatore sia a posto così com’è ora 🙂 grazie!

Stai vedendo 15 articoli - dal 1 a 15 (di 85 totali)
© 2018 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