IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Chroniqueur Actualités
    Avatar de Bruno
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    mai 2019
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2019
    Messages : 340
    Points : 5 344
    Points
    5 344
    Par défaut La version 3 de Scala, un langage orienté objet et fonctionnel, est disponible
    La version 3 de Scala, un langage orienté objet et fonctionnel, est disponible,
    elle apporte une nouvelle conception des abstractions contextuelles et améliore le système de types

    Anatolii Kmetiuk, programmeur Scala, a annoncé le 14 mai Scala 3, un langage de programmation polyvalent à typage statique qui prend en charge la programmation orientée objet et la programmation fonctionnelle. Cette version intègre les dernières recherches en théorie des types ainsi que l'expérience industrielle de Scala 2. « Après 8 ans de travail, 28 000 commits, 4 100 problèmes résolus, Scala 3 est enfin disponible », a déclaré Anatolii Kmetiuk. « Nous avons vu ce qui a bien (ou moins bien) fonctionné pour la communauté dans Scala 2. Sur la base de cette expérience, nous avons créé la troisième itération de Scala, facile à utiliser, à apprendre et à adapter », a-t-il ajouté.

    Rappelons que Scala est un langage de programmation polyvalent à typage statique qui prend en charge la programmation orientée objet et la programmation fonctionnelle. Conçu pour être concis, Scala avec ses nombreuses décisions de conception vise à répondre aux critiques de Java. La version 3 du langage est une refonte complète du langage Scala. À la base, de nombreux aspects du système de types ont été modifiés pour être davantage fondés sur des principes. Une chose qui a complètement changé dans Scala 3 par rapport à Scala 2 : ce sont les macros. Le langage comporte également un grand nombre de nouvelles fonctionnalités. Voici, ci-dessous, quelques-unes de ces nouvelles fonctionnalités.

    Nom : scalaBB.png
Affichages : 95730
Taille : 19,4 Ko

    Abstractions contextuelles

    L'un des concepts fondamentaux sous-jacents de Scala était (et est toujours dans une certaine mesure) de fournir aux utilisateurs un petit ensemble de fonctionnalités qui peuvent être combinées à une grande expressivité (et parfois même imprévue). Par exemple, la fonctionnalité des implicites a été utilisée pour modéliser l'abstraction contextuelle, pour exprimer le calcul au niveau du type, pour modéliser les classes de type, pour effectuer des coercitions implicites, pour encoder des méthodes d'extension, et bien plus encore. Tirant les leçons de ces cas d'utilisation, Scala 3 adopte une approche légèrement différente et se concentre sur l'intention plutôt que sur le mécanisme. Au lieu d'offrir une seule fonctionnalité très puissante, Scala 3 propose plusieurs fonctionnalités de langage sur mesure, permettant aux programmeurs d'exprimer directement leur intention :

    • abstraction des informations contextuelles : les clauses d'utilisation permettent aux programmeurs de s'abstraire des informations qui sont disponibles dans le contexte d'appel et qui devraient être transmises implicitement. En tant qu'amélioration par rapport aux implicites de Scala 2, les clauses d'utilisation peuvent être spécifiées par type, ce qui libère les signatures de fonctions des noms de variables qui ne sont jamais explicitement référencés ;
    • fournir des instances de classe de type : les instances données permettent aux programmeurs de définir la valeur canonique d'un certain type. Cela rend la programmation avec les classes de type plus simple sans divulguer les détails d'implémentation ;
    • extension rétroactive des classes : dans Scala 2, les méthodes d'extension devaient être codées à l'aide de conversions implicites ou de classes implicites. En revanche, dans Scala 3, les méthodes d'extension sont désormais directement intégrées au langage, ce qui permet d'améliorer les messages d'erreur et l'inférence de type ;
    • considérer un type comme un autre : les conversions implicites ont été repensées dès le départ comme des instances d'une classe de type Conversion ;
    • abstractions contextuelles d'ordre supérieur : la toute nouvelle fonctionnalité des fonctions contextuelles fait des abstractions contextuelles un citoyen de première classe. Elles constituent un outil important pour les auteurs de bibliothèques et permettent d'exprimer des langages concis spécifiques à un domaine ;
    • retour d'information du compilateur : dans le cas où un paramètre implicite ne peut pas être résolu par le compilateur, il fournit maintenant des suggestions d'importation qui peuvent résoudre le problème.


    Améliorations du système de types

    Outre l'amélioration considérable de l'inférence de type, le système de types de Scala 3 offre également de nombreuses nouvelles fonctionnalités, elle apporte des outils pour exprimer de manière statique des invariants dans les types :

    • énumérations : les énumérations ont été redessinées pour se fondre dans les classes de cas et former le nouveau standard pour exprimer les types de données algébriques ;
    • types opaques : cachez les détails de mise en œuvre derrière des alias de types sans en payer le prix en termes de performances. C'est tout l’intérêt des types opaques qui remplacent les classes de valeurs et permettent de mettre en place une barrière d'abstraction sans causer de surcharge supplémentaire ;
    • types d'intersection et d'union : le fait de baser le système de types sur de nouvelles bases a conduit à l'introduction de nouvelles caractéristiques du système de types : les instances des types d'intersection, comme A & B, sont des instances de A et de B. Les instances des types d'union, comme A | B, sont des instances de A ou de B. Ces deux constructions permettent aux programmeurs d'exprimer de manière flexible les contraintes de type en dehors de la hiérarchie d'héritage ;
    • types de fonctions dépendantes : Scala 2 permettait déjà aux types de retour de dépendre des arguments (valeurs). Dans Scala 3, il est maintenant possible de faire abstraction de ce modèle et d'exprimer des types de fonctions dépendantes. Dans le type F = (e : Entry) => e.Key le type de résultat dépend de l'argument ;
    • types de fonctions polymorphes : comme pour les types de fonctions dépendantes, Scala 2 supportait les méthodes qui autorisent les paramètres de type, mais ne permettait pas aux programmeurs de s'abstraire de ces méthodes. Avec Scala 3, les types de fonctions polymorphes comme [A] => Liste[A] => Liste[A] peuvent s'abstraire des fonctions qui prennent des arguments de type en plus de leurs arguments de valeur ;
    • les lambdas de type : ce qui devait être exprimé à l'aide d'un plugin de compilation dans Scala 2 est maintenant une fonctionnalité de première classe dans Scala 3 : les lambdas de type sont des fonctions de niveau de type qui peuvent être passées comme arguments de type sans nécessiter une définition de type auxiliaire ;
    • correspondance des types : au lieu d’implémenter le calcul au niveau du type en utilisant la résolution implicite, Scala 3 offre un support direct pour la mise en correspondance des types. L'intégration du calcul au niveau du type dans le vérificateur de type permet d'améliorer les messages d'erreur et de supprimer le besoin d'encodages complexe.



    Programmation orientée objet

    Scala a toujours été la frontière entre la programmation fonctionnelle et la programmation orientée objet. Les modifications du système de types mentionnées ci-dessus et la nouvelle conception des abstractions contextuelles rendent la programmation fonctionnelle plus facile qu'auparavant. En même temps, les nouvelles fonctionnalités suivantes permettent des conceptions orientées objet bien structurées et soutiennent les meilleures pratiques.[B]

    • prévoir l'extension : l'extension des classes qui ne sont pas prévues pour l'extension est un problème de longue date dans la conception orientée objet. Pour résoudre ce problème, les classes ouvertes exigent que les concepteurs de bibliothèques marquent explicitement les classes comme étant ouvertes ;
    • cacher les détails d'implémentation : les traits utilitaires qui implémentent un comportement ne devraient parfois pas faire partie des types inférés. Dans Scala 3, ces traits peuvent être marqués comme transparents, cachant l'héritage à l'utilisateur (dans les types inférés) ;
    • la composition au lieu de l'héritage : cette phrase est souvent citée, mais fastidieuse à mettre en œuvre. Avec Scala 3, symétriquement aux importations, les clauses d'exportation permettent à l'utilisateur de définir des alias pour des membres d'un objet sélectionnés.


    Et vous ?

    Avez-vous une expérience avec Scala ?

    Que pensez-vous de Scala ?

    Quelle amélioration vous intéresse le plus dans la version 3 de Scala ?

    Pensez-vous que le langage Scala pourrait répondre aux critiques sur le Java ?

    Voir aussi :

    Feuille de route de Scala 3.0 : il utilisera le compilateur Dotty afin de simplifier la structure du langage, Scala 3.0 est attendu en 2020

    EduTools 2021.2.1 est disponible. Le plugin de JetBrains pour apprendre et enseigner des langages de programmation, apporte de nombreuses nouvelles fonctionnalités et améliorations

    JetBrains lance un tout nouveau guide pour IntelliJ IDEA pour offrir aux développeurs une référence, quel que soit leur niveau d'expérience avec son EDI

    Gradle 7.0 est disponible, il apporte une surveillance du système de fichiers par défaut sur toutes les plateformes prises en charge, Y compris les versions récentes de Windows, Linux et MacOS
    Contribuez au club : corrections, suggestions, critiques, ... Contactez le service news et Rédigez des actualités

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    janvier 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 592
    Points : 654
    Points
    654
    Par défaut
    Scala doit remplacer Java, ça fait dix ans que c'est annoncé.
    Alors il faut utiliser Scala, parce que sinon, il ne remplacera jamais Java, d'accord ?

    Mais Scala pose le problème, justement, de n'être pas interopérable avec Java.
    Oui, Scala peut appeler du Java facilement. Mais la réciproque n'est pas vraie.

    Voici une application volumineuse, écrite en Java sous Spring-boot, avec objets métiers, services, web, des centaines de milliers de lignes de code Java. Elle profiterait peut-être de parcelles de code en Scala, mais c'est compliqué... Attendez, on me souffle : Si, si ! Suffit de faire un stub pour chaque classe, wrapper chaque paramètre et faire gaffe à chaque méthode !

    On doit passer en Scala, mais il ne sait faire que les trois trucs pour lesquels il a été pensé, et surtout le Big Data. Et même lui, il s'y prend de manière compliquée, pas très lisible et parfois discutable.
    Oui, Apache Spark est écrit en Scala et l'on est bien heureux de l'utiliser, lui.
    Mais je suis passé dans deux grandes librairies informatique il y a deux semaines. Savez-vous ce qu'usent à présent tous les ouvrages parlant de Big Data et utilisant Spark ?
    Python.

    Ben oui, c'est normal. Il faut un an ou plus pour devenir un bon développeur Scala. Et ensuite, il ne sert à rien. Datavisualisation avec Scala ? MÊME PAS ! Si, si, je vous jure : il n'a RIEN ! C'est fort, hein ? Mais c'est vrai.
    Scala, c'est le langage prétentieux, complexe, prompt à réduire le champ d'exercice des applications en leur ôtant des capacités à résoudre des sujets variés, tout en décroissant leur maintenabilité.
    Java 17, 18 et plus vont rattraper ses rares apports utiles, et il restera dans sa niche.

    À la niche !

  3. #3
    Membre éclairé
    Inscrit en
    juin 2010
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : juin 2010
    Messages : 744
    Points : 896
    Points
    896
    Par défaut
    Ce machin existe encore

  4. #4
    Expert confirmé
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    avril 2016
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : avril 2016
    Messages : 1 203
    Points : 5 112
    Points
    5 112
    Par défaut
    Citation Envoyé par Bruno Voir le message
    Avez-vous une expérience avec Scala ?
    Pas encore, mais bientôt. Mon prochain poste sera en Scala.

    Citation Envoyé par redcurve Voir le message
    Ce machin existe encore
    Oui. Et, pour la carrière, je pense que ça reste un bon plan. Il est toujours bien classé quand il s'agit de salaire :

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2005
    Messages : 60
    Points : 64
    Points
    64
    Par défaut Hâte de pouvoir migrer
    Un vrai plaisir d'utiliser Scala 2 depuis presque 10 ans maintenant (projets web backend principalement), j'ai hâte de passer sur la nouvelle version!

  6. #6
    Membre actif
    Profil pro
    Développeur Back-End
    Inscrit en
    août 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : août 2003
    Messages : 126
    Points : 223
    Points
    223
    Par défaut
    Pour avoir travaillé un peu en scala sur des projets existants, je me suis rendu compte que certains bouts de code très orientés fonctionnels, peuvent être illisibles pour quelqu'un habitué aux langages procéduraux.
    Et sur d'autres aspects, j'avais trouvé ça très bien pensé et très pratique.

  7. #7
    Membre éclairé

    Profil pro
    Inscrit en
    janvier 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 592
    Points : 654
    Points
    654
    Par défaut
    Citation Envoyé par Pyramidev Voir le message
    Pas encore, mais bientôt. Mon prochain poste sera en Scala.
    Oui. Et, pour la carrière, je pense que ça reste un bon plan. Il est toujours bien classé quand il s'agit de salaire :
    Force est de constater qu'il est quand même en déclin...
    Je ne sais pas si ce forum où nous sommes fait foi, mais il n'a qu'un autre message sur Scala pour 2021, et tous les autres datent de 2019.
    À quoi l'imputer ? Je peux pas le dire avec certitude : je ne le vois qu'au travers d'Apache Spark, qu'il a bloqué sur une de ses versions (la 2.11 et 2.12 ?) très longtemps, imposant Java 8 quand il n'était plus maintenu.
    On poireautait... Ce genre d'expérience, qui semblait montrer que les migrations de versions de Scala étaient laborieuses, et quelques appels à l'aide sur les job boards de sociétés en panique incapables de maintenir leurs logiciels écrits dans ce langage, parce qu'ils leur échappaient, ont certainement refroidit les ardeurs.

    C'est pas forcément malin de tabler sur un langage et un environnement de travail tels que toute personne intervenant dessus doit toujours avoir au moins cinq ans d'expérience professionnelle, dont trois ans en Scala minimum.
    Parce que où fait-on ses premières expérience en Scala, s'il faut d'office être un expert pour entrer dans une entreprise ? Ce langage est si complexe que je le constate : autant l'on prend des débutants, on les forme en Java, ou l'on augmente leur niveau s'ils sont frais sortis de l'école, autant pour Scala, c'est pas possible : le gars qui embauche, il veut le champion direct. Et c'est normal, dans l'écosystème prétentieux du Big Data, le chef de projet se voit l'élite : il veut tout de suite le top, il ne comprendra pas, il ne concèdera pas, il ne supportera pas... Et alors il peine à trouver la ressource qui convient à son caractère de diva.

    Voilà, je vous taille cela à la serpe, mais c'est tout ce que m'évoque Scala.
    Je suis très content, et me félicite tous les jours d'avoir choisi Java pour manipuler Spark.
    D'un point de vue respect des exigences et règles de gestion métier, expérience Utilisateur, c'est sans comparaison. Comment on ouvre une fenêtre graphique pour y mettre un menu et permettre la saisie dans des formulaires en Scala ? Comment on en fait un backend de serveur web ? Pardon, désolé, je retire la question, parce qu'on le fait utiliser des classes Java alors.

    C'est un langage de niche, avec une utilisation de niche.

    EDIT : Loïc, pardon, mais quand on met le sélecteur de Scala Jobs sur France, il n'y en a justement aucun...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2005
    Messages : 60
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par grunt2000 Voir le message
    Comment on en fait un backend de serveur web ? Pardon, désolé, je retire la question, parce qu'on le fait utiliser des classes Java alors.

    C'est un langage de niche, avec une utilisation de niche.
    Il existe de nombreux frameworks Web pour Scala (et écrits en Scala), le plus connu était Play Framework (utilisé chez de nombreuses entreprises dont Linkedin, Apple). Le backend Twitter est également basé sur Scala à travers le framework Finagle. Il y a aussi Akka HTTP , Http4s...
    Je développe en Scala depuis pas mal d'années et je ne pense pas qu'il faille prendre l'experience qu'on l'on peut avoir avec Spark comme référence, c'est assez éloigné de tout ce que font les gens en Scala en dehors du Big Data (qui doit représenter 1/3 de l'utilisation du langage, c'est beaucoup mais pas le plus important).

    L'écosystème autour de ZIO est par exemple beaucou plus intéressant et dynamique : https://zio.dev/
    Un coup d'oeil sur les offres d'emploi peut être intéressant aussi : https://scalajobs.dev/

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par grunt2000 Voir le message
    Je ne sais pas si ce forum où nous sommes fait foi...
    LOL. Heureusement que non... quand on voit certains pleurer parce que scala apporte des concepts qu'il faut apprendre mais qu'il sont contents de les avoir dans java 20 ans plus tard, ou qui viennent pleurer parce qu'on délocalise ou sous-paie des projets java...

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2005
    Messages : 60
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par SimonDecoline Voir le message
    LOL. Heureusement que non... quand on voit certains pleurer parce que scala apporte des concepts qu'il faut apprendre mais qu'il sont contents de les avoir dans java 20 ans plus tard,
    Exactement, depuis Java 8 , beaucoup de fonctionnalités implémentées par Scala auparavent ont été ajoutée à Java (souvent à moitié mais c'est mieux que rien...)

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    janvier 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 592
    Points : 654
    Points
    654
    Par défaut
    Encore heureux qu'il permette à Java de s'enrichir à son contact. Il utilise l'API Java sur la majorité des sujets. Puisqu'il n'a pas réussi à implémenter grand-chose par lui-même...
    Ce n'est pas un langage comme C++, Python ou R dont les concepteurs ont écrit toutes les fonctions qu'ils proposent aux développeurs.
    Ce serait gonflé si, en retour, il ne permettait pas à la communauté Java de profiter de ses avancées. Ce serait ingrat, pour dire les choses...

    Si Java sait les incorporer plus simplement, d'une manière exploitable et claire, c'est parfait.
    Java tient encore la plus grande part des développeurs, même si Python lui est un sérieux concurrent.
    C'est un langage encore robuste qui ne doit pas devenir abscons et envoyer les projets dans le décor régulièrement. Côté Scala, on sent trop l'envie du défi industrieux, du petit plaisir qui produit le truc inexplicable à la C++ 125, mais qui pose. Et qu'après, plus personne ne peut maintenir.

    P.S. : Le site Scala dev jobs est vide, pour la France. C'est sans doute en lien avec le forum Scala, qui est vide aussi.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    décembre 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2005
    Messages : 60
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par grunt2000 Voir le message
    Encore heureux qu'il permette à Java de s'enrichir à son contact. Il utilise l'API Java sur la majorité des sujets. Puisqu'il n'a pas réussi à implémenter grand-chose par lui-même...
    Ce n'est pas un langage comme C++, Python ou R dont les concepteurs ont écrit toutes les fonctions qu'ils proposent aux développeurs.
    Ce serait gonflé si, en retour, il ne permettait pas à la communauté Java de profiter de ses avancées. Ce serait ingrat, pour dire les choses...
    Personne n'a parlé du fait de "permettre d'en profiter", on parlait juste de son influence

    Tu as raison pour le site des offres d'emploi, néanmoins le "remote" peut être une option très intéressante à ne pas néglicier surtout en ce moment, et là il y a du choix.

  13. #13
    Membre éclairé

    Profil pro
    Inscrit en
    janvier 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2007
    Messages : 592
    Points : 654
    Points
    654
    Par défaut
    D'ailleurs, je me posais la question : quand on ne l'utilise pas pour faire du Big Data, pour quel type d'applications va t-on se servir de Scala plutôt que d'un autre langage ?

  14. #14
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2004
    Messages : 4 517
    Points : 10 000
    Points
    10 000
    Par défaut
    Citation Envoyé par grunt2000 Voir le message
    D'ailleurs, je me posais la question : quand on ne l'utilise pas pour faire du Big Data, pour quel type d'applications va t-on se servir de Scala plutôt que d'un autre langage ?
    D'après le Scala Developer Survey 2019, seule une fraction (22.6%) des développeurs Scala l'utilisent pour du Data Science. Près de 50% rapportent l'utiliser pour du "Streaming data". D'autres applications sont les microservices, le Web front-end, la recherche, et "autre types de back-end".
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/11/2016, 20h35
  2. Langages orienté objet indispensable?
    Par djoulju dans le forum Débuter
    Réponses: 7
    Dernier message: 04/05/2010, 10h37
  3. Réponses: 0
    Dernier message: 06/06/2008, 08h41
  4. régles de passage d'un diagramme de classe à un langage orienté objet
    Par lasmarmann dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 22/01/2007, 18h16
  5. VBA est-il un langage orienté objet ?
    Par Kcirtap dans le forum Général VBA
    Réponses: 5
    Dernier message: 06/12/2005, 09h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo