Programmation IV
Summer Semester 2003
School of Computer and Communication Sciences
Programming Methods Laboratory (LAMP)
 
 
Home
Staff
Research
Publications
Events
Teaching
  Prog IV
Jobs
   
 
  
     

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:
    1. é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.
    2. 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 !


     
   [an error occurred while processing this directive]  
Last modified: Monday, 13-Nov-2006 13:03:05 CET