|
|
Introduction
Scala est un langage de programmation conçu par l'équipe du Laboratoire de Méthodes de
Programmation à l'EPFL. Il
combine des aspects des langages orienté-objet et fonctionnels
actuels, et s'intègre très bien à Java.
Il existe à l'heure actuelle une seule implémentation du langage
Scala, réalisée également au LAMP. Cette implémentation offre à la
fois un compilateur et un interpréteur interactif.
Le compilateur, nommé socos , est semblable au
compilateur Java, dans la mesure où il prend en entrée un programme
écrit en Scala et fournit en sortie un ensemble de fichiers classes
Java (dotés de l'extension .class ).
L'interpréteur, nommé siris , permet quant à lui
d'entrer des expressions Scala et de visualiser directement leur
valeur, de manière interactive. C'est l'outil idéal pour expérimenter
rapidement des idées, et nous vous recommandons de l'utiliser pour vos
premiers pas avec le langage.
Utilisation de Scala
En salle IN/3
En salle IN/3, tous les programmes dont vous aurez besoin pour
utiliser Scala dans le cadre du cours se trouvent dans le répertoire
/home/iclamp/soft/bin . Il est donc important que ce
répertoire figure dans votre chemin de recherche, donné par la
variable d'environnement PATH . Pour l'y ajouter, il vous
faut taper la commande suivante dans votre shell :
setenv PATH /home/iclamp/soft/bin:$PATH
Afin qu'il ne soit pas nécessaire de retaper cette commande avant
chaque utilisation de Scala, nous vous conseillons de l'ajouter à
votre fichier .cshrc .
Vous pouvez vérifier que le système trouve effectivement
l'interpréteur Scala en tapant which siris , ce qui
doit afficher /home/iclamp/soft/bin/siris .
Utilisation de siris
Pour évaluer des expressions avec siris , il suffit de
le lancer et d'attendre l'apparition de l'invite. Vous pouvez ensuite
entrer des expressions Scala, dont la valeur est affichée en réponse.
Notez toutefois que par défaut siris n'offre pas la
possibilité d'éditer la ligne courante, ni de naviguer dans
l'historique des expressions entrées précédemment. Pour remédier à ce
problème, nous vous suggérons fortement de lancer siris
dans ledit , qui fournit ces possibilités d'édition de
ligne. La commande complète à taper est donc
ledit siris .
Conseils et remarques :
- Le cycle de base d'utilisation de
siris est le suivant:
- écrire/modifier son programme dans un fichier (en utilisant de
préférence emacs pour avoir les couleurs et l'indentation
automatique) et le sauver.
- dans
siris utiliser la commande :use monfichier
(ou simplement :use si la commande précédente à
déjà été tapée) pour charger/recharger ce fichier.
- Vous pouvez aussi utiliser le menu venant avec le mode Scala
pour emacs (voir ci-dessous) pour effectuer ce cycle.
- Les fichiers lisibles par
siris n'ont pas besoin
de contenir un module (contrairement à socos , voir
ci-dessous).
- Si vous souhaitez absolument taper directement vos définitions
et expressions Scala dans
siris il faut bien penser
à rajouter un \ à la fin d'une ligne si
la définition ou l'expression se poursuit sur la ligne suivante.
Utilisation de socos
Pour compiler vos programmes avec socos , il vous
suffit en général de lancer ce dernier en lui passant le nom du
fichier Scala à compiler en argument. Comme tout compilateur,
socos offre un certain nombre d'options, dont vous pouvez
obtenir la liste au moyen de l'option -help .
socos produit des fichiers .class Java.
Pour exécuter les programmes compilés par socos , on
utilise donc la commande java . Il faut toutefois prendre
garde à ce que la variable d'environnement CLASSPATH ait
une valeur correcte, en particulier qu'elle contienne au moins le
fichier /home/iclamp/soft/lib/scala.jar ainsi que le
répertoire contenant vos fichiers compilés. Vous pouvez initialiser
cette variable dans votre fichier .cshrc , comme vous
l'avez fait pour la variable PATH . Pour plus
d'informations sur la variable CLASSPATH , vous pouvez
consulter la
documentation de Sun.
Comme vous le savez, tout programme Java doit comporter au moins
une classe comportant une méthode statique nommée main
afin d'être exécutable. Pour Scala, la règle est similaire : pour
qu'un programme soit exécutable, il faut qu'il contienne au moins un
module comporant une méthode main ayant un profil
adéquat. Cette méthode peut être invoquée par la suite en passant à la
commande java le nom du module qui la contient.
Pour résumer, voici un petit exemple de programme Scala, le fameux
hello world :
module HelloWorld {
def main(args: Array[String]): unit = {
System.out.println("hello, world");
}
}
Pour compiler ce programme, si on admet qu'il se trouve dans le
fichier HelloWorld.scala , il faut le passer à
socos :
socos HelloWorld.scala
ce qui produit, entre autres, un fichier HelloWorld.class
contenant la fonction main du module, dans le répertoire
courant. Pour l'exécuter, il faut maintenant passer cette classe à la
commande java :
java HelloWorld
ce qui affiche, comme on s'y attendait, hello, world .
Sur un ordinateur personnel
Il vous est tout à fait possible d'installer Scala sur votre
ordinateur personnel. Pour cela, suivez les instructions données sur
cette page.
Édition de programmes Scala
Pour écrire vos programmes Scala, nous vous encourageons à utiliser
l'éditeur GNU Emacs (version 21.1 au moins), car nous mettons à votre
disposition un mode Scala pour cet éditeur. Ce mode met en
couleur les programmes Scala, gère en partie l'indentation
automatique, et permet d'interagir avec siris .
Pour utiliser ce mode en IN/3, il vous faut tout d'abord
configurer Emacs pour qu'il charge le mode Scala automatiquement. Pour
ce faire, ouvrez le fichier .emacs qui se trouve dans
votre répertoire personnel, et ajoutez-y les lignes suivantes :
;; Mise en couleur du texte
(global-font-lock-mode t)
;; Affichage des parenthèses ouvrantes/fermantes
(show-paren-mode 1)
;; Sélection du texte à la PC
(pc-selection-mode)
;; Arrête le clignotement du curseur
(blink-cursor-mode -1)
;; Affiche le numéro de colonne
(column-number-mode 1)
;; Fournit un raccourci pour aller à une ligne
(global-set-key [(meta control g)] 'goto-line)
;; Configuration du mode Scala
(add-to-list 'load-path (expand-file-name "~iclamp/soft/share/emacs/site-lisp"))
(load "scala-mode-auto")
Ensuite, vous pouvez (re)lancer Emacs lui-même, en tapant
emacs . Dorénavant, le mode Scala sera activé
automatiquement lorsque vous chargerez des fichiers dont le nom se
termine par .scala .
Questions fréquemment posées
Nous tenons à jour une liste des
questions fréquemment posées relatives à Scala. Si vous avez une
question, nous vous saurions gré de bien vouloir consulter cette
liste. Si vous n'y trouvez pas la réponse désirée, n'hésitez pas à
contacter un assistant, ou à écrire un message dans le forum de
discussion epfl.ic.cours.programmationIV.
Bogues du compilateur
Le compilateur Scala étant en plein développement, il est tout à
fait probable qu'il contienne encore des bogues. Si vous en trouvez
une, merci de la signaler à un assistant, soit par oral, soit par
courrier électronique. Dans ce dernier cas, pensez à inclure les
sources du programme montrant le problème, afin de nous faciliter le
travail. Merci d'avance !
|
|