2010-04-01 5 views

Répondre

13

Si je devais retourner à Java, voici ce qui me manquerait le plus: les fermetures, les fonctions d'ordre supérieur, la correspondance de formes, les classes de cas et l'insistance sur l'immuabilité.

J'ai été sur 2.8 pendant un moment. Si je devais revenir à 2.7, la chose principale que je manquerais est la cohérence, la propreté et la richesse de l'API 2.8 collections. C'est waaaaaay mieux les choses 2.7. Mais les arguments nommés et par défaut me manquent aussi beaucoup.

+2

+1. Je passais en revue les collections Java l'autre jour, et j'ai été submergé par le sentiment que c'était intentionnellement conçu pour être la pire API de tous les temps. –

+4

Daniel, je pense que vous devez jeter un coup d'oeil aux classes de collection de MFC;). Je pense que les collections de Java ne sont pas si mauvaises étant donné qu'il n'y a pas de fonctions anonymes en Java. – Alexey

11

L'inférence de type économise tellement de frappe inutile. map et foreach et similaires sur les collections sont grands, en particulier en combinaison avec les itérateurs par défaut paresseux et la syntaxe de fonction très facile. Mais, en tant que personne qui fait beaucoup d'informatique scientifique, ce qui me manque le plus, c'est de pouvoir écrire du code très performant, de l'intégrer dans des classes efficaces, puis d'utiliser des cartes et des opérateurs mathématiques (+, *, peu importe) pour manipuler ces constructions de haut niveau de la façon dont je pense réellement à leur sujet. Comme pour 2,8 contre 2,7 - l'amélioration est assez progressive de mon point de vue. C'est un peu mieux dans de nombreux domaines; Il y a peu à dire et à dire, "Oh wow, ça!". Je m'attends à ce que la nouvelle annotation spécialisée m'aide beaucoup, mais je ne l'ai pas encore vu en action dans la bibliothèque, alors je refuse de juger.

8

Je pense que ce n'est pas une caractéristique mais la concision que Scala réalise est ce que j'aime le plus.

Ceci est bien sûr uniquement possible en raison de l'inférence de type, des fermetures, d'un système de grand type, etc. Je ne pense pas que vous puissiez le décomposer en une ou deux fonctions. Ils travaillent ensemble et le résultat, un code concis, est ce que j'appellerais la fonction de tueur.

10

J'aime écrire dans Scala. C'est le # 1 fonction dans mon livre :)

Je peux obtenir avec ce que je veux au lieu de danser à travers les cerceaux de Java:

  • val/var signifie que je ne dois pas écrire le type deux fois
  • Closures signifie que je ne dois pas écrire beaucoup d'interfaces anonymes et peut réutiliser beaucoup plus de code
  • les paramètres nommés signifie que je n'ai pas de se rappeler la position de chaque argument - grand pour la lecture et l'écriture
  • Les classes de cas signifient que je reçois toString et est égal à gratuitement ... rend le débogage ging beaucoup plus facile!
  • Une API décent pour les collections (par exemple carte, pli) signifie que je peux dire ce que je veux faire au lieu de danser la danse itération

En ce qui concerne 2,8 vs 2,7 ... Je n'ai jamais vraiment passé le temps de qualité avec 2.8 ;-)

Questions connexes