32 votes

Dois-je étudier Scala ?

Je suis expérimenté programmeur C++ avec une moyenne de Python compétences. Les raisons que j'ai étudié Python, en premier lieu, ont été:

  • d'un point de vue différent sur la programmation (statique vs dynamique, interprété vs compilé, etc.)
  • pour augmenter la largeur des projets que je peux travailler sur (Python me permet de faire du développement web, de développer pour les téléphones Symbian ou un coup rapide des scripts d'administration système)
  • en complément de mes C++ compétences.

Je pense que Python est très bien et je crois que j'ai atteint les objectifs ci-dessus. Je vais continuer à l'utiliser pour de petits projets, scripts et de développement web.

Je doute que je puisse l'utiliser pour les moyennes et les grands projets si. Alors que le typage dynamique est pratique, il permet une certaine classe de bugs que je trouve dérangeant. Les tests unitaires et pelucheuses peut remédier à ce problème, mais le typage statique supprime complètement.

Après avoir regardé certains langages de programmation, je pense que la Scala ressemble à un bon candidat: J'aime l'inférence de type et il tourne sur la JVM de sorte qu'il devrait être disponible là où la JVM est disponible. Je peux aussi en apprendre plus sur la programmation fonctionnelle en l'utilisant.

Mais... j'ai aussi quelques doutes, et c'est là que j'espère que le Débordement de la Pile de la communauté peut aider:

  • Portabilité: Windows et Linux au moins je l'espère. Que sur les téléphones mobiles, est-il possible de l'avoir à courir là-bas?
  • C++ compatibilité: puis-je mélanger à du code C++ avec Scala? (JNI?)
  • Paradigme de programmation: je ne me sens pas à l'aise avec le passage à la programmation fonctionnelle (FP) à ce moment. Puis-je utiliser orienté objet et procédural avec certains FP au premier abord et ensuite changer les proportions que j'ai appris?
  • Outil de la chaîne d'échéance: quelle est votre expérience avec des IDEs et des débogueurs? Je suis à l'aide d'Eclipse en ce moment et il semble OK.
  • Vitesse d'apprentissage: compte tenu de mon expérience, à quelle vitesse pensez-vous que je peux arriver à un résultat convenable niveau avec Scala?
  • Déploiement: comment déployer un Scala programme? Est-ce un pot, c'est un exécutable?

Enfin, que pensez-vous que certains de Scalas inconvénients?

29voto

Daniel C. Sobral Points 159554
  • Portabilité: Windows et Linux au moins je l'espère. Que sur les téléphones mobiles, quelqu'un at-il réussir à le faire fonctionner il?

Oui. Il est tout à fait un peu de mouvement sur Scala sur Android. Comme pour J2ME, j'ai vu quelque chose à cet égard, mais pas beaucoup. Il y a un peu de code concernant J2ME sur le référentiel de code source. Je ne suis pas sûr de la façon viable c'est, mais il me semble qu'il n'y a pas beaucoup de demande pour cela.

Je vais aussi mentionner qu'il y a/avait une piscine sur Scala-Lang sur la cible désirée plates-formes, et J2ME était l'un d'eux, très faible sur le totem.

  • C++ compatibilité: puis-je mélanger à du code C++ avec Scala? (JNI?)

Ainsi que vous pouvez mélanger le C++ et Java, pour tout ce qui vaut la peine. Si vous n'avez pas d'expérience avec, vous pouvez tout simplement lire la Java des ressources, en tant que quelque chose sera applicable à la Scala, avec aucun changement (à côté de la Scala de syntaxe).

  • Paradigme de programmation: je ne me sens pas à l'aise avec le passage de FP en ce moment. Puis-je utiliser OO et de procédure avec certains FP au premier abord et ensuite changer les proportions que j'ai appris?

Certainement, oui. Scala va sortir de sa façon de vous assurer que vous n'avez pas besoin de programme dans un style fonctionnel. C'est la principale critique de la Scala à partir de la fonctionnelle de gens, comme une question de fait: certains ne considèrent pas un langage fonctionnel, à moins qu'il force le programmeur à écrire en style fonctionnel.

De toute façon, vous pouvez aller à droite sur le fait de faire les choses à votre façon. Mon pari, c'est que vous allez ramasser habitudes fonctionnelles sans même se rendre compte qu'ils sont fonctionnels.

Peut-être que vous pouvez regarder les Matrices de la série dans mon propre blog sur l'écriture d'une classe Matrix. Même si elle ressemble à la norme OO code, il est, en fait, très fonctionnelle.

  • Outil de la chaîne d'échéance: quelle est votre expérience avec des IDEs et des débogueurs? Je suis à l'aide d'Eclipse en ce moment et il semble ok.

IDÉE (Ide), NetBeans et Eclipse ont tous une bonne prise en charge de la Scala. Il semble que l'IDÉE est la meilleure, et NetBeans/Eclipse garder de la grenouille de sauter les uns des autres, bien que NetBeans a certainement été plus stable que l'Éclipse de la fin. D'autre part, l'appui sur Eclipse est prendre un très bel itinéraire qui devrait produire des résultats dans les 6 prochains mois ou alors, c'est juste que c'est un cogner à la route. :-)

Certains des signes intéressants de la Scala de l'outillage de ces environnements est le fait que le plugin Eclipse dans le développement des utilisations de l'AOP à la fusion de plus de façon transparente avec l'ensemble de l'IDE, que le plugin NetBeans est d'être complètement réécrit en Scala, et qu'il y a un Scala bloc d'Alimentation sur une IDÉE qui prend en charge, entre autres choses, la traduction du code Java dans Scala code.

EMACS gens ont un grand nombre d'outils pour Scala en tant que bien, et beaucoup de petits éditeurs ont le soutien pour elle aussi. Je suis très à l'aise avec jEdit de soutien pour les petits programmes et des scripts, par exemple.

Il est également bon de Maven de soutien-en fait, la méthode standard pour installer l'Ascenseur est à installer maven, puis de construire un Ascenseur archétype. Qui va tirer dans un Scala version. Il y a un scala:cc de la cible qui ne déclenché la recompilation ainsi.

En parlant de recompilation, ni de Maven, et en particulier, ni de Fourmi de faire un bon travail lors de l'identification de ce qui doit être recompilé. À partir de ce problème surgi de SBT (Simple Outil de construction), écrit en Scala, qui résout ce problème grâce à l'utilisation de la Scala de compilateur plugin. SBT utilise le même projet de mise en page comme Maven, ainsi que Maven/Ivy référentiels, mais les configurations de projet sont fait en Scala de code au lieu de XML -- avec l'aide de Maven/Ivy les fichiers de configuration.

  • Vitesse d'apprentissage: compte tenu de mon expérience, à quelle vitesse pensez-vous que je peux arriver à un résultat convenable niveau avec Scala?

Très rapide. Comme purement langage OO, Scala déjà introduit quelques fonctionnalités intéressantes, comparable à certains trucs qui sont présents en C++ mais pas en Java, bien qu'ils travaillent dans différents mode. À cet égard, une fois que vous vous rendez compte de ce que ces caractéristiques sont pour et de les relier à C++ choses, vous serez beaucoup plus en avance de programmeurs Java, comme vous le savez quoi faire avec eux.

  • Déploiement: comment déployer un Scala programme? Est-ce un pot, c'est un exécutable?

La même chose que Java. Vous pouvez déployer des Bocaux, des Guerres, ou de toute autre de Java objectifs, parce que le compilateur scala de générer des fichiers de classe. En fait, vous utilisez Java jar pour générer un Scala fichier JAR à partir de la classe de fichiers, et le Maven cibles pour un soutien bâtiment de GUERRE de fichiers.

Il existe une alternative pour les fichiers de script, cependant. Vous pouvez appeler "la scala" à exécuter Scala de code source directement, semblable à une interface de script Shell. Il peut également être fait sur Windows. Cependant, même avec l'utilisation d'une compilation démon pour accélérer l'exécution, au démarrage les temps sont assez lent pour permettre une utilisation efficace de la Scala dans un lourd script environnement a besoin de quelque chose comme le Nailgun.

Comme pour Scala inconvénients, prendre un coup d'oeil à ma réponse (et d'autres) dans ce Débordement de Pile question.

16voto

kgiannakakis Points 62727

Scala est une évolution de la langue bien la peine d'investir dans, surtout si vous venez du monde Java. Scala est largement couvert à Artima. Voir cet article de Bill Venners et lire aussi à propos de Twitter et de l'Exerciced'une.

Concernant vos questions:

  • Java peut exécuter partout où il y a une JVM. Pas de chance avec les téléphones mobiles, cependant. Vous avez besoin d'un plein JRE, pas le sous-ensemble y est disponible.
  • Cela est possible avec la JNI. Si quelque chose est possible avec Java, il est possible avec Scala. Scala peut appeler des classes Java.
  • La programmation fonctionnelle est un point fort de la Scala - vous avez besoin de l'apprendre. Cependant, vous pourriez aussi commencer à l'utiliser sans prendre le plein avantage de cela et de travailler votre chemin avec elle.
  • Il y a un plug-in d'Eclipse. Il n'est pas le meilleur, mais il va faire le travail. Plus de détails ici.
  • Si vous avez de l'expérience, je dirais que c'est vraiment rapide. Je vous recommande de trouver un livre pour commencer.
  • Voir cette faq entrée pour le déploiement.

6voto

Adrian Panasiuk Points 3863

Paradigme de programmation: je ne me sens pas à l'aise avec le passage de FP en ce moment. Puis-je utiliser OO et de procédure avec certains FP au premier abord et ensuite changer les proportions que j'ai appris?

Scala possède un support complet pour la programmation impérative, d'écrire des programmes sans FP éléments est un jeu d'enfant (toutefois, FP est utile et vaut la peine d'apprendre de toute façon).

Vitesse d'apprentissage: compte tenu de mon expérience, à quelle vitesse pensez-vous que je peux arriver à un résultat convenable niveau avec Scala?

Rapidement. Il y a un certain nombre de caractéristiques intéressantes en Scala qui peut-être ne connaissez pas les gens à venir à partir d'un C++, Java, environnement, comme, par exemple, certaines des fonctionnalités du système de typage. Certains font valoir que le fait qu'il y a beaucoup à apprendre dans Scala avant de vous le savez tous, il est un problème avec la langue, je suis en désaccord. La présence de ces caractéristique est un avantage de la langue. Les fonctions les plus on est de fous. Après tout, vous n'avez pas à utiliser tout à la fois, tout comme vous n'avez pas à acheter tout ce qui est vendu dans le magasin.

5voto

ilan berci Points 1556
<blockquote> <p>Vitesse d'apprentissage: compte tenu de mon expérience, à quelle vitesse pensez-vous que je peux atteindre un niveau réalisable avec Scala?</p> </blockquote> <p>Je viens aussi d'un fond de C, une chose que j'ai remarqué, c'est que puisque vous allez écrire beaucoup moins de code par rapport à C pour une tâche comparable, votre apprentissage sera accéléré que vous obtiendrez plus fait dans la même période de temps. C'est le même phénomène que j'ai vécu avec Ruby.</p>

3voto

Tobias Langner Points 6354

En fait - si j'étais vous, je ferais étude paradigmes de programmation plutôt que de langues. Bien sûr, vous avez à l'étude d'une langue, d'étudier le paradigme. Connaître les inconvénients et les avantages de différents paradigmes vous permet de visualiser vos problèmes d'un autre côté et fait de vous un meilleur programmeur (même dans les langues que vous connaissez déjà).

Ramasser une langue d'un paradigme déjà connu est un en tâche facile en cas de besoin. Depuis la Scala est FP (au moins vous avez mentionné qu'il) et C++/Python est de la POO, c'est un bon langage pour vous, je dirais.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X