Welcome to Bukkit France

Inscrivez-vous maintenant pour profiter d'un accès total à tout le contenu offert par la meilleur communauté Bukkit française ! Une fois inscrit et connecté, vous pourrez contribuez à la communauté en postant vos propres sujets et questions ou en répondant à ceux existants. Vous pourrez aussi customiser votre profil, recevoir des points de réputations, communiquer avec les autres membres via le chat, et plus encore! 

  • Annonces

    • Pskyco

      Bukkit France passe sous Discord !   02/20/16

      Bukkit France est désormais passé sur Discord, au revoir donc notre vieux Teamspeak ! Téléchargez le client et venez nous rejoindre sur notre salon en suivant les instructions suivantes.
      M-à-j du 25/02/2017 : Désormais, seuls les comptes actifs sur le forum se verront donner l'accès au Discord, ce dernier n'est pas une plateforme d'aide de la même manière que le chat.
  • billets
    2
  • commentaire
    0
  • vues
    113

À propos de ce blog

Scala est un langage de programmation moderne qui mêle typage fort, objets et programmation fonctionnelle dans une syntaxe concise. De plus en plus utilisé, il permet d'exprimer (presque) tout ce que vous voulez de façon élégante.

Ce blog est destiné à ceux qui ont juste les bases de la programmation ainsi qu'à ceux qui souhaitent changer de langage, suite à une intoxication aux points-virgules par exemple :D

Billets dans ce blog

TheElectronWill

2 - Les Bases

2 - Les Bases

 

Variables & Constantes

Scala utilise deux mots-clés différents pour les variables et pour les constantes.

var nom: Type = valeur // variable, contient une valeur
val nom: Type = valeur // constante, ne peux pas être modifiée

:excl:Remarquez que, contrairement à Java, C et d'autres, le type de la valeur est après son nom, pas avant.

 

Scala est capable de trouver le type des expressions lui-même, donc vous pouvez écrire par exemple :

var i = 0 // pas besoin de préciser que c'est un int

 

En Scala les types "primitifs" se notent avec une majuscule: Int, Long, Float, Double, Boolean. Puisque tout est objet, ils ont aussi leur classe ! Mais ce n'est pas comme si on remplaçait les types primitifs de Java par leur wrappers : au final, le compilateur Scala utilise les types primitifs (dès que c'est possible).

 

 

Méthodes

Une méthode se définit avec le mot-clé def, comme en Python.

def nom(param1: Type, param2: Type): TypeResultat = {
    // code ...
    resultat // pas besoin de return
}

Le mot-clé return existe en scala, mais il est peu utilisé. En effet, un bloc de code qui doit retourner une valeur prend automatiquement celle de sa dernière expression.

 

Là encore, Scala peut trouver le type du résultat tout seul. Cependant c'est une bonne habitude d'écrire le type, d'une part pour éviter les surprises (résultat qui n'est pas du type auquel on s'attendait) et pour informer les autres développeurs, ainsi que votre vous du futur qui aura oublié comment il a fait cette fonction :)

 

Petit exemple, attention c'est difficile ! On va additionner deux nombres :o

def add(a: Int, b: Int) = {
    a + b
}

Et voilà B)

 

On peut aussi écrire la fonction en une seule ligne et enlever les accolades:

def add(a: Int, b: Int) = a + b

 

Conditions

Les conditions sont similaires à celles du Java, avec un truc en plus : une condition est une expression qui donne un résultat. Il n'y a pas d'opérateur ternaire en Scala, juste des conditions.

var v = if(condition1) "a" else if (condition2) "b" else "c"

 

Boucles

On retrouve les classiques while(condition) (tant que) et do { ... } while(condition) (répéter) que vous connaissez bien.

Là où il y a du changement c'est au niveau de la boucle for. Vous avez peut-être l'habitude d'utiliser ce type de boucle :

for (int i = 0; i < 10; i++) {
    //code
}

En Scala, ça n'existe pas ! Il n'y a que le "foreach" :

for (i <- 0 until 10) { // i prend les valeurs 0,1,2,3,4,5,6,7,8,9
    //code
}
for (element <- array) { // parcourt un tableau
    //code
}

Cette écriture n'est en fait que du "sucre syntaxique" qui se traduit par un appel à la méthode foreach :

(0 until 10).foreach(/*code*/)

 

TheElectronWill

1 - Introduction

 

Bonjour à toutes et à tous ! (non ce tuto n'est pas sponsorisé par Emmanuel Macron :D ... bon OK c'était pas très drôle :mellow:)

 

Ne vous-êtes vous jamais dit, après avoir passé des heures à coder en Java, C ou autre langage créé dans le siècle précédent, "mais pourquoi c'est si long de faire ce que je veux ?!", "ah ben c'est pas possible, dommage c'était la meilleure solution pour avoir un design correct" ou encore "pourquoi les génériques java sont si limités ?". Eh bien, nous allons apprendre un langage qui dépasse beaucoup de ces limites, pour que vous puissiez faire plus de choses et plus rapidement !

 

Mettez vos points-virgules de côté, aujourd'hui on fait du Scala !

 

 

flat,800x800,075,f.jpg

 

La petite histoire du Scala

Peu après la sortie de Java, en 1995, un certain "Martin Odersky" travaille avec d'autres ingénieurs pour ajouter des fonctionnalités au langage, avec un nouveau compilateur. Une partie de ce travail est intégré dans Java sous la forme des génériques que vous connaissez.

En 2001, dans le cadre de ses recherches à l'EPFL, il se lance dans l'élaboration d'un nouveau langage avec l'objectif ambitieux de combiner programmation orienté objet et programmation fonctionnelle en évitant les problèmes de Java. Ce nouveau langage, il le nomme Scala, condensé de "scalable language", que l'on pourrait traduire par "langage extensible/évolutif", c'est-à-dire un langage qui grandit pour et avec ses utilisateurs.

Le logo rouge représente... un escalier. Oui oui, un escalier ! L'escalier qui se trouve dans le bâtiment d'informatique de l'EPFL, à côté des bureaux de recherche :) Au moins c'est simple, moderne et assez esthétique ^^ (pas comme Go :P). Mais revenons au sujet.

 

Scala est purement orienté objet :

  • Chaque valeur est un considérée comme un objet, même les ints ! Et c'est quand même bien pratique.
  • On définit les objets avec des classes et des traits, de façon similaire à Java.

Scala est aussi fonctionnel :

  • Chaque fonction est une valeur, qui peut être stockée, passée en paramètre et utilisée comme un objet.
  • On a une lib de collections immuables à disposition.
  • Support du currying et de la tail recursion (qui est optimisée par le compilateur, contrairement à Java).

Scala est enfin à typage statique :

  • Les variables ont un type précis et le compilateur vérifie qu'on ne met pas n'importe quoi comme valeur. Comme en Java, je ne peux pas associer une String à un Int.

 

Scala compile en bytecode java, et peut donc interagir avec du code Java. On peut utiliser Scala et Java dans le même projet !

On peut aussi utiliser scala en mode Script ou REPL pour évaluer des expressions isolées, et des travaux sont en cours pour compiler Scala en JavaScript (stable) et en binaire natif (encore en beta). Nous nous concentrerons sur la compilation classique en bytecode, qui est la mieux supportée et la plus utilisée.

 

Les bases de la programmation ?

Cette série de cours sur Scala s'adresse à des gens qui ont un minimum d'expérience en programmation. Vous devez donc savoir ce qu'est une variable, une fonction, de préférence un objet, et savoir utiliser un éditeur de texte ou votre IDE préféré. Je ne reviendrai pas en détail sur ces bases-là.

 

Mise en place de l'environnement

Avant toute chose vous devez installer le JDK 8 -> cf le site d'oracle. Le 9 devrait fonctionner avec les dernières versions mais officiellement le support de Java 9 n'est pas encore complet.

Vous avez ensuite plusieurs options :

  • Utiliser IntelliJ avec le plugin Scala.
  • Utiliser Eclipse avec le plugin Scala.
  • Utiliser Scala IDE, un IDE basé sur Eclipse et optimisé pour Scala.
  • Utiliser votre éditeur préféré + le terminal. Vous pouvez utiliser l'outil sdkman pour installer scala et sbt (l'outil de build). Scala fonctionne aussi avec maven et gradle.

 

Je vous laisse consulter la documentation de l'outil que vous avez choisi. Personnellement j'utilise IntelliJ et gradle, mais il n'y a pas de mauvais choix ^_^

 

Hello World

Pour donner un aperçu du langage, voici deux façons de faire un Hello World en Scala. Créez un nouveau fichier HelloWorld.scala et mettez-y le code. Vous devriez ensuite pouvoir l'exécuter avec votre IDE.

La façon classique, équivalente à celle que vous connaissez peut-être en Java :

class HelloWorld {
    def main(args: Array[String]): Unit = {
        println("Hello, World")
    }
}

Et la version "simplifiée" en héritant de App (on reparlera des objets et de l'héritage dans un futur billet).

object HelloWorld extends App {
    println("Hello, World!")
}