Introduction à Scala
Scala est l'abréviation de Scalable Language et est un langage de programmation multi-paradigmes
Martin Odersky de l'Ecole Polytechnique Fédérale de Lausanne (EPFL) a commencé à concevoir Scala en 2001 sur la base des travaux de Funnel .
Funnel est un langage de programmation qui combine des idées de programmation fonctionnelle avec des réseaux de Petri.
Les travaux précédents d'Odersky portaient sur Generic Java et javac (compilateur Sun Java). Scala pour la plate-forme Java a été publié fin 2003/début 2004. Scala pour la plateforme .NET a été publié en juin 2004. La deuxième version du langage, v2.0, a été publiée en mars 2006.
Depuis septembre 2009, la dernière version est la version 2.7.6. Les fonctionnalités attendues dans Scala 2.8 incluent une bibliothèque de collections Scala remplacée, des paramètres nommés et par défaut pour les méthodes, les objets de package et les continuations.
En avril 2009, Twitter a annoncé avoir migré la plupart de ses programmes backend de Ruby vers Scala et prévoyait de migrer le reste. De plus, Wattzon a annoncé publiquement que l'intégralité de sa plateforme est déjà écrite sur la base de l'infrastructure Scala.
Fonctionnalités Scala
Fonctionnalités orientées objet
Scala est un langage purement orienté objet, et chaque valeur est un objet. Le type de données et le comportement d'un objet sont décrits par des classes et des traits.
Il existe deux manières d'étendre le mécanisme d'abstraction de classe : l'une est l'héritage des sous-classes et l'autre est le mécanisme de mélange flexible. Ces deux approches peuvent éviter les problèmes d'héritage multiple.
Programmation fonctionnelle
Scala est aussi un langage fonctionnel, et ses fonctions peuvent également être utilisées comme valeurs. Scala fournit une syntaxe légère pour définir des fonctions anonymes, prend en charge les fonctions d'ordre supérieur, permet l'imbrication de plusieurs niveaux de fonctions et prend en charge le curry. Les classes de cas de Scala et leur correspondance de modèles intégrée sont équivalentes aux types algébriques couramment utilisés dans les langages de programmation fonctionnels.
De plus, les programmeurs peuvent utiliser la correspondance de modèles de Scala pour écrire du code de type expression régulière afin de traiter les données XML.
Type statique
Scala dispose d'un système de types qui garantit la sécurité et la cohérence du code grâce à une vérification au moment de la compilation. Le système de types prend spécifiquement en charge les fonctionnalités suivantes :
Classes génériques
Covariance et contravariance
Annotation
Contraintes de limites supérieures et inférieures des paramètres de type
Traiter les catégories et les types abstraits en tant que membres d'objet
-
Type composite
Spécifiez explicitement le type lors du référencement lui-même
Vue
Polymorphisme Approche
Extensibilité
Scala est conçu pour adhérer au fait qu'en pratique, le développement d'applications spécifiques à un domaine nécessite souvent une extension de langage spécifique à un domaine. Scala fournit de nombreux mécanismes de langage uniques qui facilitent et simplifient l'ajout de nouvelles constructions de langage sous forme de bibliothèques :
N'importe quelle méthode peut être utilisée comme opérateur de préfixe ou de suffixe
Les fermetures peuvent être automatiquement construites en fonction du type attendu.
Concurrency
Scala utilise Actor comme modèle de concurrence. Actor est une entité semblable à un fil qui envoie et reçoit des messages via des boîtes aux lettres. Les acteurs peuvent réutiliser les threads, de sorte que des millions d'acteurs peuvent être utilisés dans le programme, alors que les threads ne peuvent en créer que des milliers. Dans les versions postérieures à 2.10, Akka est utilisé comme implémentation par défaut d'Actor.
Qui utilise Scala
En avril 2009, Twitter a annoncé avoir migré la plupart de ses programmes backend de Ruby vers Scala et prévoyait de déplacer le reste ainsi À migrer.
De plus, Wattzon a annoncé publiquement que l'ensemble de sa plateforme est déjà écrite sur la base de l'infrastructure Scala.
UBS utilise Scala pour les produits généraux.
Coursera utilise Scala comme langage serveur.
Framework Web Scala
Voici deux frameworks d'applications Web Scala actuellement populaires :
Lift Frame
Jouer au cadre