JavaScool:Faq

De Sciencinfolycee
Révision datée du 7 février 2012 à 18:44 par Vthierry (discussion | contributions) (Comment passer d'un programme JavaScool à un Jar ou un programme Java)
Aller à : navigation, rechercher

Vous nous avez posé des questions à propos de Java'sCool, les voici avec nos meilleures réponses:

A propos de l'enseignement de l'informatique.

Quels sont les liens avec les cours sur les sciences informatiques ?.

Ils sont multiples: Gérard Berry avec Gilles Dowek sont des initiateurs (et de bienveillants conseillers) des contenus disponibles sur CanalU/fuscia, tout particulièrement sur ce qu'est l' information et sur les ingrédients des algorithmes.

Le cours au Collège de France ( vidéo, audio support visuel ) reste une très belle introduction.

Y a t'il un manuel avec toutes les constructions et instructions ?.

Bien entenu ce ``manuel´´ existe à la fois:

  • Pour ce qui est utilisé dans le cadre de Java'sCool il est donné dans la documentation intérieure au logiciel.
  • Au niveau des fonctions proposées dans les excercices se sont . . tous les objets Java qui peuvent être utilisés (!) en plus des fonctions définies pour chaque proglet.

Peut-on consulter un ``vrai´´ cours d'algorithmique ?.

  • Il y un cours de science informatique avec des chapitres selon les grands domaines de l'algorithmique: calcul numérique, manipulation de graphes, optimisation et recherche opérationnelle, automatique et contrôle de système, mesures et statistiques, etc.. Ce sont les fondements de la programmation
  • Surtout nous avons un SIL:O de ressources en lignes à disposition.

Dans quel cadre pédagogique se positionne JavaSccol ?

  • Quelques notes de réflexions sur ce sujet ont été proposées.

Mais . .est-il besoin de savoir programmer pour comprendre les fondements de l'informatique ?

Quels est le lien de JavaScool avec les programmes officiels ?

Je suis professeur et j'ai plusieurs idées de sujets, comment aider et se faire aider ?

Facilement ! Plus de 20% de nos contenus ont été crées ou initiés par des professeurs des lycées. Toutes les informations et éléments sont librement utilisables, tandis que la méthodes est simple: il suffit de nous contacter.

Mais pourquoi apprendre des choses aussi «débilisantes» qu'imprimer «Hello World» ? Pourquoi ne pas attaquer des sujets mathématiquement plus profonds !

C'est une vraie question, et il y a quatre réponse à cette question:

  1. Pas si débilisant que ça: les points clé du cours ont été proposés par un professeur d'informatique à l'Ecole Polytechnique et un membre de l'Académie des Sciences (il faut évidemment dépasser la leçon 1 pour le mesurer). Dès la leçon 2 du parcours de formation des mécanismes d'abstraction non triviaux sont abordés par l'exemple, en expérimentant d'abord ces mécanismes, pour permettre à l'enseignant d'en expliciter le fondement.
  2. Pour tou(te)s les élèves de 2nd: cet apprentissage ne cible pas uniquement les jeunes qui iront vers les sections scientifiques, mais vise bien tou(te)s les futurs citoyens qui vont devoir maîtriser, sans subir, la société numérique où nous vivons aujourd'hui. En profitant ici du fait que les fondement de l'informatique s'appréhendent par des mécanismes de pensée qui ne se limitent pas aux maths enseignées de la 2nd à la terminale.
  3. Ces sujets mathématiques existent: Tous les enseignants de mathématiques disposent aussi d'exercices de programmation liés au programme de 2nd. Cela requière évidemment les bases de programmation de type «Hello World», pour que l'élève maîtrise les mécanismes algorithmiques fondamentaux avant. Au delà du programme, il faut aussi mentionner des mathématiques passionnantes, spécifiques de l'informatique, ébauchées ici et détaillées dans l'excellent livre Information, complexité et hasard de Jean-Paul Delahaye.
  4. Et surtout, il y a effectivement une limite à l'exercice d'apprendre l'informatique en mathématique ou physique/chimie alors que c'est de fait une discipline à part entière.

Et au delà de JavaScool ?.

Nous avons référencé à la fois d'autres outils logiciels pour apprendre l'informatique et aussi d'autres initiatives périscolaires qui peuvent fournir des ressources au niveau de l'enseignement.

Tout est évidemment recensé dans le «SIL:O!» sur sciences-info-lycee.fr.

A propos de l'utilisation de JavaScool.

Quelle version de Java faut il ? Faut il autre chose ?

  • Une version "récente" de Java (en 1.6). Java est presque toujours installé par défaut.
  • Il ne faut rien de plus . .
    • Sauf pour le 3D pour de la proglet «EnVoiture» (qui utilise OpenGL) il faut copier les librairies dynamiques disponibles ici dans le répertoire Java de la machine, c'est à dire, normalement Program Files/java/jre6/bin. Se faire aider du responsable informatique si besoin.

Avec de trop anciennes versions de Java l'application ne marche pas. Dans tous les cas, il faut vraiment upgrader le système car beaucoup d'applets du web ne marchent sûrement pas non plus.

Comment passer d'un programme Java à un programme JavaScool

C'est très facile il faut:

  • Mettre tous les éléments de votre projet Java dans un seul fichier
  • Sortir la méthode public static void main(String[] args) et utiliser une simple méthode void main() { }
  • Noter qu'il n'y a pas besoin d'encapsuler le code dans une classe au niveau de JavaScool

Par exemple d'un fichier Main.java et Classe.java avec :

class Main {
 public static void main(String[] args) {
  new Classe().run();
 }
}

dans l'un et dans l'autre :

public class Classe {
 public void run() {
  System.out.println("Ma class runs, c'est la classe !");
 }
}

il faut mettre dans le fichier JavaScool :

void main() {
 new Classe().run();
}
public class Classe {
 public void run() {
  System.out.println("Ma class runs, c'est la classe !");
 }
}

Comment passer d'un programme JavaScool à un Jar ou un programme Java

C'est très facile il faut:

  • Copier le contenu du fichier JavaScool dans un fichier de nom, disons, Main.java
  • Renommer la méthode void main() { } en public static void main(String[] args)
  • Ajouter tous les import static listés ci dessous
  • Mettre le Jar javascool-proglets.jar dans le CLASS-PATH
  • Utiliser un autre outil de développement Java

Par exemple d'un fichier main.jvs:

void main() {
 println("Hello world");
}

il faut créer un Main.java :

import static java.lang.Math.*;
import static org.javascool.macros.Macros.*;
import static org.javascool.macros.Stdin.*;
import static org.javascool.macros.Stdout.*;
public class Main {
public static void main(String[] args) {
  println("Hello world"); 
  
 }
}

puis utiliser les commandes

javac -cp javascool-proglets.jar Main.java
java -cp .:javascool-proglets.jar Main

et le tour est joué.

Les entrées se font dans les "popup" et les sorties à la console.

Pour utiliser une proglet, c'est un peu plus compliqué:

import static java.lang.Math.*;
import static org.javascool.macros.Macros.*;
import static org.javascool.macros.Stdin.*;
import static org.javascool.macros.Stdout.*;
import static org.javascool.proglets.codagePixels.Functions.*; // pour la proglet codagePixels
public class Main {
public static void main(String[] args) {
  // Commande qui permet d'ouvrir la proglet
  new org.javascool.widgets.MainFrame().reset("codagePixels", 600, 800, org.javascool.core.ProgletEngine.getInstance().setProglet("codagePixels").getProgletPane());
  // Ici vient le code d'utilisation
}

Quels sont les autres outils d'initiation à la programmation ?

Bien entendu, JavaScool n'est pas le seul outil proposé pour les professeur(e)s des lycées au niveau de l'enseignement de l'algorithmique, donc de l'informatique au lycée. Voici quelques autres très beaux exemples d'outils au bout de ce clic.

Pourquoi JavaScool n'a pas de lanceurs .exe ou .app etc.. ?

Parce qu'il n'y a pas besoin !!! En se limitant à un fichier .jar on garanti de

  1. pouvoir tourner sur quasiment toutes les machines dès que java est installé
  2. ne pas pertuber l'installation de l'ordinateur qui est utilisé pour javascool
    • donc pas d'installation de logiciel qui réclame des droits administrateurs
    • la possibilité de profiter de la dernière version de javascool en un clic
    • etc..

Pourquoi ne pas intégrer JavaScool sous Eclipse, NetBeans, Processing ou utiliser JavaWebStart ?

Voici notre contrainte d'utilisation:

  • il faut que le professeur entre dans sa salle de classe sur les ordinateurs «tels qu'il sont» (il n'y a pas forcément quelqu'un pour installer quoi que ce soit, il ne faut donc que compter sur le run-time Java standard);
  • il faut que l'outil se lance en un clic sur les 30 ordis !!!! Sinon le temps de travail est mort;
  • Il faut aussi que ça marche hors réseau (qu'il soit en panne, ou coupé pour des raisons scolaire, ou absent), donc passer facilement sur cle USB

Alors:

  1. Si la version 1 était sous Eclipse (c'était un plugin Eclipse) cette solution a été mise de côté pour éviter à la fois les problèmes d'installation et la baisse de performances sur des machines trop anciennes, mais il est envisagé de "remonter" cette intégration.
  2. Un de nos développeur prépare une solutions sous NetBeans (conscient que propriété d'Oracle, les portes pourrait se fermer) tandis que http://javafx.com est à une autre possibilité.
  3. Nous avons investi dans http://www.processing.org car son aspect modulaire le rend complètement intégrable et avons rendu JavaScool interopérable avec cette techno.
  4. Finalement nous n'avons pas déployé JavaWebStart car nos jar restent de taille raisonnable, et surtout des barrières de sécurité rendent l'implémentation trop fragile.

Pourquoi ne pas utiliser algobox ou la calculette, plutôt que JavaScool ?

A l’aide d'un mini-langage algorithmique en français et d'une interface simple et ergonomique, le logiciel algobox permet de concevoir et de tester facilement les algorithmes que l'on peut rencontrer dans l’enseignement des mathématiques au secondaire. Il est plus facile à prendre en main que JavaScool car il évite de se soucier de la syntaxe et permet, comme Scratch, d'insérer les instructions à la main sans les taper. Il est de plus très bien adapté aux algorithmes de mathématiques de secondes, avec beaucoup d'exercices prêts à être utilisés. Les auteurs d'algobox expliquent qu'il a été conçu pour appréhender de suite les structures logiques algorithmiques fondamentales, en choisissant d'introduire un nouveau pseudo-code et mini-langage algorithmique. Et c'est un logiciel libre, multi-plateformes, ce qui est précieux. En revanche, il a trois inconvénients:

  • Du fait qu'il ne confronte pas l'élève à écrire du code, il ne permet pas d'appréhender la syntaxe des structures abstraites qui forment les ingrédients des algorithmes. C'est une simplification, donc une limitation pédagogique, au sens où en utilisant un éditeur graphique l'élève est moins incité à s'approprier les abstractions à apprendre, mais peut plus avancer, par exemple en «tâtonnant»: n'oublions pas que le but n'est pas ``d'apprendre à programmer´´ mais bien de commencer à apprendre des abstractions informatique en programmant.
  • Il reste limité à des interactions de type console (lire/écrire une valeur) et l'affichage de courbe et ne permet pas de manipuler des objets numériques (ex: image de pixels) plus riches que des valeurs numériques.
  • Ici, algobox «réinvente» un nouveau langage, et une interaction spécifique avec le système, ce qui va nécessiter de la part de l'élève un apprentissage provisoire supplémentaire qui ne sera pas directement pérennisable, contrairement aux outils qui adhèrent à une syntaxe existante.

Plus généralement, pour certains enseignants, la plus value de ces outils, tels que JavaScool ou Algobox par rapport aux calculettes programmables n'est pas certain. Si l'enseignant veut se limiter aux exercices proposés au niveau du programme de seconde, ils peuvent tout aussi bien être réalisés sur une calculette. Mais en acceptant cette fois ci de voir les structures algorithmiques fondamentales implémentées sous forme bien moins visible. Mais l'investissement pour apprendre à manipuler le langage de la calculette sera réutilisable ensuite, de même que JavaScool ouvre sur les langages impératifs usuels (C, PHP, Java, ..).