|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
[Scala] Chi l'ha provato?
Come da topic. Impressioni? Io trovo il linguaggio estremamente sollazzante con la gratificazione ulteriore del poter usare tutte le librerie esistenti per la piattaforma Java.
Sono un po' perplesso di fronte ad alcune sue librerie ( a:::b non mi sembra il massimo per dire crea una lista che inizia con a e finisce con b), il plug-in per Netbeans è poco più di un coloratore di sintassi e quello per Eclipse mi crasha l'IDE ma nel complesso Scala mi da quella sensazione di arrapamento che mi mancava dai tempi di Java 1.1 Chi ha provato il linguaggio - non l'arrapamento - cosa ne pensa? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Mai provato. Aspetto che sia qualcun altro a farlo e fornire qualche utile informazione.
![]() P.S. ::: è veramente orrido.
__________________
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 |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Nemmeno io l'ho provato ma ho visto diversi esempi di codice e mi andava di condividere una sciocchezza, scusa l'OT. Ps. Anche io amo Python =D |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Il codice che ho visto in rete tende ad essere piuttosto strambo, probabilmente per via del fatto che chi lo prova tende a guardare alle caratteristiche diverse da quelle a cui è abituato. Ad esempio si vedono molto case-class ma nessuno che dica: occhio che non c'è l'invocazione di supercostruttore alternativo - che magari per chi viene da Java è un po' più interessante come cosa da sapere.
Essendo poi un linguaggio anche funzionale si vede molto il for: for(val i <- 0 to 1000) ma nessuno che vada a puntualizzare: occhio che questo crea una lista di 1000 elementi quindi non è la controparte del for imperativo. [Edit]: in realtà non crea alcuna lista. Il degrado delle prestazione comparate al corrispondente while, nello stesso linguaggio, sembra essere dovuto all'overhead dell'invocazione di funzione che costituisce il corpo del for funzionale. Comunque a grandi linee è un normalissimo linguaggio OO in cui le funzioni sono altrettanto normalissime istanzae di classi (scala.FunctionXYZ) Si tratta di un linguaggio staticamente tipato con una certa propensione all'inferenza dei tipi, nello stile "se a destra dell'uguale ci va una stringa, be', direi che a la variabile a sinistra è una stringa". Ha i generici che sono volendo anche più complessi di quelli di Java ma non essendogli stati ficcati dentro a treno in corsa danno complessivamente l'idea di trovarsi a casa loro. Ha un limitato supporto alla ricorsione in coda che permette a funzioni ricorsive di particolare fattura di non incorrere nel penalty dello stack overflow. Nel complesso è un linguaggio piuttosto sofisticato ma, ripeto, a me fa un'ottima impressione. Sfortunatamente ha una community a cui se chiedi come si fa un while ti risponde sull'aria del "non capisci un ca##o, il while è paleolitico, devi scrivere: funz hk => abz (1 to TuaNonna)(){}(){}?=>!! +- __ 3 tre ciapel chel ghe' { goto affancul' } def." oppure ti dicono che già nel '300 il matematico russo de puttanienko aveva scritto un saggio di trentadue volumi sulla ricorsione in coda alla tangenziale cioè intorno al linguaggio c'è un po' di spocchia a là "grandi scienziati dell'infomatica che se complessivamente fa schifo è perchè non la faccio io" ma non è nulla a cui non si possa rimediare con un bel "hai ragione ma vaff... lo stesso". Ultima modifica di PGI-Bis : 22-08-2009 alle 17:12. |
|
|
|
|
|
#5 | |||
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Ma già l'esempio Hello World sul sito ufficiale, mi intimidisce con la seguente riga: Codice:
def main(args: Array[String]) {
Quote:
Quote:
![]() ![]() PS. grazie per la chiara introduzione al linguaggio. |
|||
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Mi attacco a voi perchè siete gli unici che al momento si sono fatti sotto. Ahivoi!
Il "main" è carenza di marketing. Poste le differenze esistenziali tra un linguaggio a tipi precotti come Scala rispetto al sushi del genere Python il fatto che sul sito sparino subito la cartuccia della classe su file è emblematico. C'è anche un interprete - che è un barbatrucco ma l'abito conta come il monaco anche perchè il monaco nudo fa sempre un po' impressione. Nulla vieta di dire, ad esempio: println("Hello World") salvarlo in un file script.sc (l'estensione è ad libitum) e lanciare il tutto con scala script.sc Dopo un venti-trenta minuti compare la scritta "Hello World". Ma si può anche lanciare l'interprete dinamico e digitare i comandi sul prompt del dos che fa tanto anni '80 (1880 ma va di moda). Una cosa che non mi è la mancanza delle eccezioni controllate di cui sono un particolare adoratore. Ah, dimenticavo. La documentazione rivaluta il concetto di schifo. Ho già detto che Scala mi piace, vero? Non vorrei che sembrasse il contrario... |
|
|
|
|
|
#7 | |||||||
|
Member
Iscritto dal: Jul 2009
Messaggi: 210
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Quote:
Comunque capisco pienamente cosa passi... te lo dice uno che ha lavorato con twisted (un network engine scritto in python), bellissimo davvero, ma la documentazinoe è veramente nulla. Copre solo le basi e le varie funzioni - molte delle quali nemmeno documentate nel codice - Ma almeno è Python - chiaro -. Si, dovresti averlo detto - che ti piace- pochi post più sopra Byz! |
|||||||
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Niente, non riesco proprio a farmela digerire la sintassi di questo linguaggio: è troppo lontana dai canoni di leggibilità a cui sono abituato.
Comunque debbo dire che è di gran lunga meno verboso rispetto a Java, anche se mi sembra una sorta di rielaborazione di questo linguaggio in chiave funzionale. La domanda, però, sorge spontanea: come può un "purista" delle prospettive apprezzare un linguaggio che ne fonde due (per giunta così diverse)?
__________________
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 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Anche a Rossum non aggrada ma se non ho capito male per ragioni di sintassi vale a dire che il fatto di poter scrivere ad esempio:
Codice:
package combinator
object Grammar {
def letter = Terminal("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") any
def digit = Terminal("1234567890") any
def identifier = letter and (letter or digit) zeroOrMoreTimes
def intLiteral = (digit and digit) zeroOrMoreTimes
def kwWhile = Terminal("while")
}
Circa l'aspetto funzionale pur apprezzandone la riassuntività in certe occasioni, resto dell'idea che sia una grandissima stupidata. Dubito tuttavia che questo ne limiterà la diffusione. In fondo ho sempre ritenuto Java EE una corbelleria. Direi di essere un pessimo profeta. Apprezzo la parte di Scala che permette di creare definizioni e convivo con la restante. |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Il problema di Scala è che ci sono davvero troppe regole di cui tener conto, che portano ad aumentare la complessità del linguaggio rendendolo anche meno leggibile e più suscettibile a commettere errori (vedi l'esempio degli effetti delle parentesi graffe e tonde).
E' il nocciolo della questione e ciò che condivido delle opinioni espresse da Guido su questo linguaggio.
__________________
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 |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Messina
Messaggi: 561
|
Quote:
nel senso quali potrebbero essere i suoi utilizzi? general-purpose? fa cagare a quanto vedo dalle vostre impressioni
__________________
Bill Gates: "Noi siamo la MicroSoft. Voi sarete assimilati. La resistenza è inutile." Kenneth Olson (fondatore della Digital Equipment Corporation) : "Ma che bisogno avrebbe una persona di tenersi un computer in casa?"
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Io lo trovo magnifico, di gran lunga superiore a qualsiasi altra alternativa oggi disponibile nel campo dei linguaggio orientati agli oggetti.
Mira a diventare il linguaggio di punta della JVM in sostituzione di Java (che io adoro ma il peso degli anni un po' lo sente). E lo fa... "puttaneggiando" (un po' come Java fece a suo tempo con C e C++): se uno conosce Java o C# o C++ il passaggio a Scala è immediato, si tratta semplicemente di scrivere il tipo dopo il nome delle variabili e giusto uno zic sui costruttori delle classi. Il vantaggio è poi quello di trovarsi per le mani uno strumento che sa essere dannatamente sofisticato. E' probabilmente vero che non si tratti di uno strumento da "bimbominchia" perchè la presenza di una caratteristica implica necessariamente la sua conoscenza - puoi decidere di non usarla ma non puoi decidere che non ti capiti di manutenere del codice che la usa. Ma è tutto così "omogeneo", così chiaramente integrato che ha quasi una sua estetica. Io pur vedendo la programmazione funzionale come fumo negli occhi a volte con Scala ci cado dentro senza accorgermene, perchè "non sembra funzionale". Poi appena riguadagnata un po' di lucidità cerco di cavarmene fuori al volo ma intanto, quasi quasi... Comunque, giusto per dare un'idea della lingua, se questa è una classe Java: Codice:
public class Classe {
private String message = "hello world";
public void sayHello() {
System.out.println("hello world");
}
}
Codice:
class Classe {
private var message : String = "hello world";
def sayHello() : Unit = {
System.out.println("hello world");
}
}
Ultima modifica di PGI-Bis : 21-08-2009 alle 22:52. |
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Quote:
![]() No, Scala è un linguaggio estremamente versatile e condivido l'opinione di PGI. Semplicemente, come per tutte le cose, c'è a chi piace e chi lo trova indigesto. Questione di gusti, insomma. Pensa che c'è perfino gente che adora Perl o PHP...
__________________
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 |
||
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Sep 2005
Città: Messina
Messaggi: 561
|
Quote:
__________________
Bill Gates: "Noi siamo la MicroSoft. Voi sarete assimilati. La resistenza è inutile." Kenneth Olson (fondatore della Digital Equipment Corporation) : "Ma che bisogno avrebbe una persona di tenersi un computer in casa?"
|
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Direi che non è usato. Non entro i confini nazionali che io sappia. E non è che all'estero lo stiano consumando.
Sul sito di scala: www.scala-lang.org aprono in prima pagina con grandi testimonianze d'affetto. Sony usa Scala, Twitter usa Scala, SAP usa Scala ma si sa che - Twitter a parte che c'ha scommesso su e via - più sono grossi e più tendono a diversificare, magari per progetti minori. Basta vedere Google che ormai raccatta tutto quello che trova. E' pur sempre una new entry, la prima versione è del 2003 ma quella stabile è di due anni e mezzo fa. Al momento comunque risulto l'unico sfigato del forum che l'abbia provato. ANTICHI!!!! |
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
Ho appena lanciato un hello world su eclipse. posso dire di averlo provato?
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
![]() Ma scusa... possibile che non ci sia niente del tipo di xrange di python o di Enumerable.Range di LINQ che creano una lista generata dinamicamente e quindi non ti caricano 1000 elementi in memoria ma solo uno?
__________________
|
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
MMMhhhhh... sai che forse ho detto una stronzata? (tanto per cambiare).
Non che il for(i <- 0 to MAX) abbia prestazioni migiori ma dai sorgenti di Range ( "to" è un metodo di Int che prende come argomento un Int e restituisce un Range) è chiaro che non c'è alcuna lista: l'iterazione è in effetti realizzata con un while. Ciònondimeno l'iterazione è circa 8 volte più lenta del corrispondente while. Dev'essere l'invocazione che fa precipitare le cose... Cioè il corpo del for funzionale è una funzione la cui invocazione è chiaramente più costosa rispetto all'esecuzione delle istruzioni contenute nel corpo del while. Insomma fa schifo ma non per via della creazione della lista. Devo aggiornare l'altro post... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:51.























