Quels sont les meilleurs des cas d'utilisation pour l'utilisation de Scala pour le nouveau développement?
Pourquoi devrais-je choisir Scala au cours d'une autre langue pour un nouveau projet? Dans quels domaines est-il excel dans?
Note
Il y avait quelques belles réponses, malheureusement je ne pouvais que la marque de celui que l'on a accepté la réponse. Cependant, dans l'ensemble ça ressemble Scala appel vient de deux choses:
- Un Excellent soutien à la simultanéité
- Attirer les meilleurs talents en génie
- Je ne me souviens pas où je l'ai lu, mais il ya un dicton que la Scala est la seconde langue dans tous les domaines de la programmation. En d'autres mots, si vous vous concentrez seulement sur un domaine particulier, dire prototypage rapide des site web, il y a toujours une autre langue qui a un meilleur cadre (RoR dans cet exemple).
Vous devez vous connecter pour publier un commentaire.
Lisez d'abord ceci: Le déjeuner libre est Plus
De simultanéité est en train de devenir de plus en plus important. Nous avons déjà 1000 processeurs à cœur d'être démontré, et ce que l'ordinateur de nos jours n'est pas déjà venu avec un GPU capable de très-opérations parallèles?
Afin de profiter des futures machines, votre logiciel doit être en mesure de faire usage de tout cela à la simultanéité, et Java actuel de filetage primitives ne sont pas utiles ici. Avouons-le, la programmation simultanée en vertu de l'actuel intégrer les paradigmes est fou-dur.
Scala est un langage fonctionnel. En tant que tel, il adhère pleinement à des concepts tels que l'immutabilité, des compréhensions, des fermetures, etc. Il dispose également de 4 native acteur de bibliothèques disponibles (au dernier décompte). Tout cela est parfaitement adaptée à la prochaine génération de programmation simultanée. Vous ne pouvez pas enterrer votre tête dans le sable et prétendre que rien de tout cela existe - qui serait comme l'écriture d'un programme, en 1995, seulement des magasins à 2 chiffres des années - impératif boucles simplement ne va pas le couper plus!
Scala 2.9, sortira début 2011, sera en charge parallèle des opérations telles que:
Sur le dessus de tout cela, Scala peut faire tout ce que Java n', avec généralement un beaucoup plus propre syntaxe. Il est également beaucoup plus orientées objet de Java (avec ses primitives et des méthodes statiques), un fait qui est souvent négligé dans la fausse croyance que l'orientation de l'objet et de la programmation fonctionnelle sont mutuellement exclusifs.
Dans ce domaine ne Scala excel? Je suppose que la zone devrait être "l'avenir"...
Scala
, l'un d'un côté, peut optimiser la création de générique / données typées-strucutres avec les types de données primitifs (via@specialized
).Java
toujours besoin d'unObject
ici. Voir comment Apache Mahout a utiliser veolcity modèle pour obtenir le même pour les types primitifs: github.com/apache/mahout/blob/trunk/math/src/main/... . Et de l'autre côté de la Scala permet de mieux tapé fonctions, type de limites, la variance et les types de construction. Scala est certainement mieux de chaque côté de la pièce.Mon propre commentaire sur Landei réponse a suggéré une raison puissante pour utiliser Scala: si vous souhaitez que votre projet/équipe/entreprise de faire appel à la prospective, ingénieurs talentueux, à la place du gars qui a réussi à ramasser un peu de Java à partir d'un CS élective au Roseau, ou quelque part et ont écrit des pages JSP pour Visa International interne des systèmes de RH pour les huit dernières années, alors vous aurez besoin d'un plus intéressant de choix de la langue.
Scala tourne sur la JVM et est entièrement compatible avec Java. En fait, il est presque identique à Java en termes de ce que vous pouvez faire et comment il fonctionne, vous pouvez utiliser Scala pour n'importe quoi Java serait un bon choix pour ainsi (notamment: les environnements d'entreprise et des applications multiplate-forme). Selon le Introduction à Scala il est idéal pour les web-services.
Que pour ce qu'il fait de mieux/pire que Java pour une tâche donnée, eh bien, je vais laisser cet article faire parler de lui.
Scala est clairement le meilleur usage de l'arme sur la JVM. Scala peut tout faire en Java peut faire, et presque toujours Scala peut faire mieux (avec une très bonne interopérabilité Java), donc à mon humble avis il n'y a pas de bonne raison pour envisager de Java à tous pour un nouveau projet.
Il y a quelques cas où le typage dynamique (JRuby, Python, Groovy) ou méta-programmation des fonctions (Clojure) peut vous donner un bord initial, mais il n'y a rien d'autre que des échelles aussi bon que Scala, et qui vous donne la liberté de mélanger les paradigmes que vous en avez besoin, de sorte que plus grand, car un projet se, plus grand, plus obtient l'avantage de l'utilisation de Scala.
[Mise à jour]
En réponse aux questions:
Scala fait deux choses:
Bon cas d'utilisation de la Scala de développement? Tout ce qui traite de XML, applications simultanées, ou des situations où la programmation fonctionnelle est préférable (de nombreux cas).
Pourquoi devriez-vous préférez Scala sur les autres langues? Vous ne devriez pas nécessairement. Je pense que c'est un excellent choix pour un projet qui pourrait autrement être implémenté en Java, car il a des avantages concrets sur Java.
Un gars de Twitter effectivement mis ensemble un diaporama sur pourquoi ils ont choisi Scala, et il fait beaucoup des mêmes points que j'ai (un peu plus).
Scala est le meilleur typé statiquement sur la JVM.
Qui est le résultat de la Scala avancé type de système, l'orthogonalité des fonctions, la façon dont elle est écrite, de sorte qu'il pourrait être étendu de façon transparente à travers les bibliothèques, et sa facilité d'intégration avec l'existant du code Java.
Je pourrais faire une liste de ces fonctionnalités, mais il n'aurait pas de sens sans la connaissance de la langue. Je pourrais dire à la Scala a définition-site de la déclaration de la variance de l'application correcte, mais comment mesurer que, sans en avoir fait l'expérience?
Le résultat, cependant, est que le code écrit en Scala est rapide, compact, fiable et indicative du domaine du problème. C'est valable sur tous les niveaux, Scala bibliothèques sont aussi comme ça.
Nous allons discuter un peu sur les alternatives ici, de faire la distinction claire.
Il y a des non-JVM langues, mais la décision sur l'opportunité d'aller pour une JVM de langue ou pas est presque entièrement distincte de la décision à propos de la langue elle-même. C'est un choix technologique qui doit être fait avant de choisir une langue. À cause de cela, je suis de la comparaison de Scala à d'autres JVM langues.
La plupart des autres JVM langues sont typées dynamiquement. Bien qu'il existe des facteurs à considérer lors du choix entre typées dynamiquement et statiquement typé langues, qui a vraiment fait une différence dans la fin est de préférence personnelle. Sinon, il suffit de se référer à l'une des nombreuses ressources sur typées dynamiquement et statiquement typé langues.
Autant que les langages statiquement typés sur la JVM va, Scala est le type le plus avancé du système. En fait, pour autant que je sais qu'il est presque seul1 en ayant un système de type qui est inspirée par réels de type théorie des systèmes au lieu d'être piraté ensemble basée sur les préférences et l'expérience de la langue réalisateur.
Java, par exemple, n'a pas sûre de la variance. D'autres langages de faire le chemin inverse de la Scala, en fournissant les communes les plus" structures de données dans le langage lui-même, et de le rendre impossible pour quiconque d'écrire d'autres structures de données complexes comme les bibliothèques.
Donc, si vous choisissez de la JVM et statiquement typé, et vous avez la possibilité de choisir une langue, puis Scala est le meilleur langage pour ce projet, quel que soit le projet peut être.
Notes de bas de page
Pour mes propres projets privés, je l'ai déjà adopté Scala comme le successeur naturel de Java (pour les raisons évoquées dans d'autres réponses). Mais je suis très hésitant à suggérer que la Scala outils de développement (en particulier Ide) sont aptes à grande échelle de projets commerciaux. À savoir les IDEs prise en charge du refactoring, qui à mon avis est obligatoire pour le développement agile, n'est pas à la Java normes, et pourtant (à l'aide de l'IDÉE courante 10, nightly build plugin).
En outre, je pense que c'est assez difficile pour les entreprises de trouver de la Mêlée de la taille des équipes de décent Scala développeurs. Voir aussi la vidéo "se Faufiler Scala Dans Votre Organisation" par David Copeland: http://days2010.scala-lang.org/node/138/169
Pour le moment, je ne peux imaginer de mélange dans les petits Scala modules dans les grands projets Java.