2010-04-01 1 views

risposta

13

Se dovessi tornare a Java ecco cosa mi mancherebbe di più: chiusure, funzioni di ordine superiore, abbinamento di modelli, classi di casi e enfasi sull'immutabilità.

Sono stato su 2.8 per un po '. Se dovessi tornare a 2.7, la cosa principale che mi mancherebbe è la coerenza, la pulizia e la ricchezza dell'API delle raccolte 2.8. È waaaaaay meglio le cose 2.7. Ma mi mancheranno anche gli argomenti di nome e di default.

+2

+1. Proprio l'altro giorno stavo rivedendo le collezioni Java, ed ero sopraffatto dalla sensazione che fosse intenzionalmente progettato per essere la peggiore API di sempre. –

+4

Daniel, penso che devi dare un'occhiata alle classi di raccolta di MFC;). Penso che le collezioni Java non siano poi così male considerando che non ci sono funzioni anonime in Java. – Alexey

11

L'inferenza di tipo consente di risparmiare una digitazione inutile. map e foreach e simili sulle raccolte sono fantastici, specialmente in combinazione con iteratori di default-pigro e sintassi di funzione davvero semplice.

Ma, come qualcuno che fa un sacco di calcolo scientifico, quello che mi mancherebbe di più è essere in grado di scrivere codice ad alte prestazioni, avvolgerlo in classi efficienti e quindi utilizzare mappe e operatori matematici (+, *, qualunque cosa sia) per manipolare quei costrutti di alto livello nel modo in cui effettivamente penso a loro.

Per quanto riguarda 2,8 vs 2,7 - il miglioramento è piuttosto incrementale dal mio punto di vista. È un po 'meglio in molte aree; c'è poco da dire e dire "Oh wow, quello!". Mi aspetto che la nuova annotazione specializzata mi aiuterà molto, ma non l'ho ancora visto completamente in azione in biblioteca, quindi sto trattenendo il giudizio.

8

Penso che non sia una caratteristica ma la concisione che Scala realizza è ciò che mi piace di più.

Questo è ovviamente possibile solo a causa dell'inferenza di tipo, delle chiusure, di un sistema di tipo eccezionale ecc. Non penso proprio di poterlo suddividere in una o due funzioni. Lavorano insieme e il risultato, codice conciso, è quello che definirei la caratteristica killer.

10

Mi piace scrivere in Scala. Questa è la funzione # 1 nel mio libro :)

posso solo andare avanti con quello che voglio invece di ballare attraverso i cerchi di Java:

  • val/var significa che non devo scrivere il tipo di due volte
  • Chiusure significa che non devo scrivere un sacco di interfacce anonimi e può riutilizzare molto altro codice
  • parametri Named significa che io non devo ricordare la posizione di ciascun argomento - grande sia per la lettura e la scrittura
  • Le classi di casi significano che ottengo toString e equivale gratis ... rende il debug molto più facile!
  • Un'API decente per le collezioni (per esempio carta, piegare) significa che posso dire quello che voglio fare, invece di ballare la danza di iterazione

Quanto a 2.8 vs 2.7 ... Ho sempre e solo veramente trascorso tempo di qualità con 2.8 ;-)