|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Ruby ?
Ruby , cosa ne pensate ?
Su le riviste dedicate si trova un po' tutto . Ma questo Ruby da dove esce ?
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Quote:
Ideato da Yakuiro Matsumoto, in arte Matz, è un linguaggio di scripting fondamentalmente orientato agli oggetti ma che è possibile usare anche in maniera imperativa e funzionale. Inizialmente poco diffuso deve un forte salto di popolarità al framework Rails che permette di utilizzare Ruby per la costruzione di applicazioni web. E' di facile apprendimento (a mio avviso qualche spigoletto nascosto c'è ma niente di insuperabile), potente e in forte crescita. Punto critico sono sostanzialmente le prestazioni e una certa lentezza nello sviluppo (questo può anche essere un bene) dipendente in massima parte dal suo ideatore e come tutti i linguaggi dipendenti da una sola figura centrale ci sono delle limitazioni. Interessanti le sue varianti JRuby (che gira sulla Java VM) e IronRuby legata al framework .Net.
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
|
#3 |
|
Registered User
Iscritto dal: May 2005
Città: far away from home
Messaggi: 1038
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
-
Ultima modifica di Albitexm : 30-10-2008 alle 22:07. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
[quote=atragon;24785549]http://www.ruby-lang.org/en/
Ideato da Yakuiro Matsumoto, in arte Matz, è un linguaggio ... QUOTE] Grazie per le informazioni. Avevo questa curiosità perchè in una rivista dedicata alla programmazione è abbastanza "spinto" . Tra l'altro c'è un'interessante codice per il Sodokan , che con le opportune modifiche mi servirebbe per gli scacchi. Alt! Lo so che in Python e C e altro, ci sono decine di codici open source per gli scacchi , ma io voglio scrivere un programma didattico che mi aiuti a capire la struttura findamentale di questi tipi di gioco . Il C e C++ non mi entrano in testa , (sarà l'età ?) cerco qualcosa di più intuitivo . |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Mmmm.... gli scacchi sono un po' particolari, secondo me. Ci sono degli algoritmi standard che i programmi più famosi usano più o meno tutti (la parte tattica che alla fin fine è solo calcolo) poi c'è l'engine di valutazione della posizione e un po' devi esserci dentro, nel senso devi sapere un po' giocare, altrimenti, piano piano, caschi dentro o vicino al classico brute-force. Ovviamente se ti basta un programma che giochi alla va là che vai bene la seconda parte puoi tralasciarla. Se studi un po' i sorgenti di Crafty secondo me hai tutto da guadagnare.
Qui trovi un po' di materiale utile al caso.
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
#7 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
Si tratta di YARV (Yet Another Ruby Virtual Machine) ed è molto più efficiente rispetto alla precedente. Questo è un benchmark fatto da Antonio Cangiano nel 2007: Ruby 1.8.6: 158.869 secondi Python 2.5.1: 31.507s secondi Ruby 1.9.0: 11.934s secondi È basato su un piccolo programma ricorsivo per il calcolo dei primi n valori della serie di Fibonacci. |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Non è che prendendo UN solo test si possa decidere sulla bontà o meno dell'implementazione di un linguaggio rispetto ad un altro.
Ecco qui: http://shootout.alioth.debian.org/gp...v&lang2=python Se poi mettiamo anche Psyco sul piatto, non c'è storia: http://shootout.alioth.debian.org/gp...rv&lang2=psyco P.S. La virtual machine di Python ha ancora parecchio da essere ottimizzata.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Per carità di Dio,
non voglio scatenare una polemica su quale dei due linguaggi sia il migliore. Non so nemmeno chi sia Antonio Cangiano. I dati li ho presi da qui: http://ruby.html.it/articoli/leggi/2...ual-machine/2/ Mi pare che Ruby, già dalla prossima release la 1.9(o dalla successiva, la 2.0), implementerà un compilatore Just in Time. E questo mi sembra un vantaggio: con un solo programma hai virtual machine e JIT; con Python devi scaricare e installare a parte Psyco. E poi, di Python, non mi piace la gestione dei blocchi di codice. Per qualcuno potrà anche essere un vantaggio(so che tu lo consideri tale) ma personalmente non mi piace dover strutturare i blocchi a colpi di tabulazioni o spazi(e con questo non intendo certo dire che chi programma non debba usare l'indentazione del codice nel modo più appropriato). Se sei d'accordo potremmo farlo noi, qui, un piccolo confronto: implementiamo(anzi, implementate. Io debbo chiedere l'intervento di qualcuno che di Ruby se ne intenda: Vicius?) una funzione per il calcolo dei numeri di Fibonacci e prendiamo i tempi. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
fibonacci.rb
Codice:
def fibo(n) return n if (0..1).include? n fibo(n-1) + fibo(n-2) end ![]() ma non credo che un test del genere abbia qualche risultato determinante
__________________
|
|
|
|
|
|
#11 | |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
Si potrebbero fare dei test su una serie di funzioni diverse. edit: Marko scusa, puoi postare il programma completo? (con la funzione main che richiama fibo, in modo da poterne verificare i tempi). Grazie Ultima modifica di Vincenzo1968 : 31-10-2008 alle 16:34. |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jul 2007
Messaggi: 499
|
Codice:
def fibo(n) return n if (0..1).include? n fibo(n-1) + fibo(n-2) end asd=gets.chomp.to_i start=Time.now resu=fibo asd stop=Time.now puts resu puts stop-start
__________________
|
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Ciao Marko,
grazie Volevo chiederti una cosa: col codice che hai postato è possibile calcolare, per esempio, il millesimo numero di Fibonacci? O bisogna utilizzare un tipo di dati particolare? (mi sembra che in Ruby esista il tipo BigInteger o qualcosa del genere). |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
|
|
|
|
|
|
|
#15 |
|
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Quote:
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
|
#17 | |||||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Da notare ciò che il link riporta verso la fine: Rails è infatti compatibile con Ruby 1.9 sin dalla versione 2.0.2 e può quindi essere utilizzato all'interno di questo nuovo interprete beneficiando di un'incremento prestazionale vicino al 15%RoR è un'applicazione decisamente complessa e non banale quale la generazione della successione di Fibonacci, e difatti i miglioramenti prestazionali sono di gran lunga inferiori, ma soprattutto più attendibili. Quote:
Quote:
Un compilatore JIT che funziona sempre, invece, è un interruttore perennemente acceso. Quote:
Ti faccio notare però che gli editor moderni indentano automaticamente il codice per dargli una struttura più omogenea e facilmente leggibile. Con Python un buon editor fa la stessa cosa, con la differenza che a Python serve anche per la sintassi. Poi se ti piacciono gli alberi di natale o usi il blocco note, allora è un altro paio di maniche. Quote:
Non è un caso, invece, che io abbia riportato questo link. Si tratta di una serie di benchmark su applicazioni non banali dove il confronto avviene per una moltitudine di linguaggi, e sono disponibili anche per diverse macchine. Ovviamente sono inclusi i sorgenti (basta clickare sull'apposito) link per vedere l'implementazione, e anche le eventuali opzioni di compilazione. Sia chiaro: stiamo parlando sempre di benchmark sintetici, per cui lasciano il tempo che trovano, ma almeno è qualcosa di meglio del solo calcolo di Fibonacci (che, comunque, è incluso in uno dei test: recursive, e si nota, appunto, che è quello in cui Ruby 1.9 supera Python 2.5).
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|||||
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Sep 2000
Messaggi: 886
|
Ci sono già dei test significativi su Python 3.0?
__________________
1986/2008 - 22 anni di rabbia cancellati in un giorno. Adesso passeranno altri 22 anni.. |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Per Python 3.0 sono previste delle prestazioni inferiori. Qualche tempo fa con una beta era stato rilevato un decadimento del 30% circa, ma gli sviluppatori erano fiduciosi di migliorare la situazione per la versione finale.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
Quote:
Questo oltre a essere un esercizio didattico, avrebbe anche una sua utilità pratica . Spesso giocando per decine di minuti o ore , si focalizza l'attenzione su alcune mosse, trascurandone completamente altre ( che potrebbero essere interessanti). Anche gli engines a volte non considerano mosse interessanti . Anche i più forti come Rybka o Fritz ,certe volte se gli imposti manualmente una mossa , vedono che è buona, ma da soli non la trovano. Quindi un programma che visualizza tutte le mosse possibili (senza valutazione), sarebbe utile per l'analisi. Tutti i programmi di scacchi (crafty,Toga , Strelka ecc..) hanno una classe "GENMOVE" , che appunto genera le mosse possibili. MA io volevo fare una cosa più semplice è originale. Io ho già scritto un programmino in Scilab che genera le mosse possibili dei finali di torre e pedoni . Ho rappresentato la scacchiera come una matrice di 64 numeri. Ho dato un valore per le case vuote , uno alla torre,uno al Re e uno ai pedoni. Eseguendo moltiplicazioni vettoriali della matrice ottengo le posizioni possibili. Il problema è che questo programma sono in grado di usarlo solo io. Nel senso che per impostare la posizione d'analizzare, scrivo una matrice numerica e ottengo dei valori numerici. Ma un qualsiasi scacchista , dovrebbe potere inserire la posizione con un codice FEN (codice per rappresentare i pezzi) e leggere il risultato in PGN (codice di rappresentazione testuale delle games). In pratica manca l'interfaccia utente (input/output grafico). Ho pensato a Ruby perchè nell'articolo sulla rivista ho letto : 1- "per far questo (sudoku player) adopereremo Ruby, implementando metodi euristici e avvantaggiandoci delle strutture propie del linguaggio". 2- "Rappresentazione dello schema: per prima cosa realizzeremo una classe le cui istanze rappresenterrano uno schema di gioco.Ovviamente, ogni istanza dovrà memorizzare lo stato delle caselle: se contengono un valore oppure no e se si di quale valore.Per il nostro scopo andrà benissimo un array che contenga, in corrispondenza di ogni casella, il valore della medesima, oppure 0 per indicare che la casella è vuota". Il punto 2 si avvicina molto a quello che ho ideato in Scilab , e quindi ho pensato che forse Ruby mi poteva servire. Questo è un link interessante sulla struttura di un chess engine : http://www.valocchi.it/lamosca/
Ultima modifica di Albitexm : 01-11-2008 alle 02:22. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:36.





















