Pour préparer, illustrer des cours : langages et programmation (sélection thématique) : Différence entre versions

De Sciencinfolycee
Aller à : navigation, rechercher
m (A voir)
m (Javascript, 1995)
 
(84 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
''Travaux en cours : cette page n'est pas finalisée.... Merci de votre compréhension.''
+
[[Image:Pucegrain.png]] Voir aussi la page sur les [[Pour préparer, illustrer des cours : Algorithme|algorithmes]]
  
Voir aussi la page sur les [[Pour préparer, illustrer des cours : Algorithme|algorithmes]]
+
[[Image:Pucegrain.png]] Tous les contenus en liens avec [https://wiki.inria.fr/sciencinfolycee/Sp%C3%A9cial:BrowseData/Ressources?_single&Statut_evaluation=publi%C3%A9e&Categorie_de_cours=Langage_de_programmation Langages et programmation]
 
 
* Tous les contenus en liens avec [[1.3._Langage_de_programmation|Langages et programmation]]
 
  
  
Ligne 13 : Ligne 11 :
  
 
== A voir ==
 
== A voir ==
 +
 +
* Des exemples de [[Quelques_%28hyper-%29vid%C3%A9os_de_pr%C3%A9sentation_de_petits_programmes_sous_divers_environnements|prise en main]] d'environnement de programmation avec des exos clé en main.
  
 
* Une [http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html étude] sur l'utilisation des différents langages.
 
* Une [http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html étude] sur l'utilisation des différents langages.
  
 
* Comment écrire [http://www.roesler-ac.de/wolfram/hello.htm Hello World !] selon le langage (avec de facto une liste presque exhaustive des différents langages).
 
* Comment écrire [http://www.roesler-ac.de/wolfram/hello.htm Hello World !] selon le langage (avec de facto une liste presque exhaustive des différents langages).
 +
 +
* [[Rosetta_Code,_a_programming_chrestomathy_site|Rosetta]] est un site montrant comment nombre d'algorithmes célèbres peuvent être programmés dans toutes sortes de langages, même les plus bizarres.
  
 
* Comment rendre un programme illisible avec le [http://www.ioccc.org/ concours du programme C le plus abscons]. Exemple à ne pas suivre bien évidemment, mais cela montre l'intérêt de bien écrire et commenter ses programmes.
 
* Comment rendre un programme illisible avec le [http://www.ioccc.org/ concours du programme C le plus abscons]. Exemple à ne pas suivre bien évidemment, mais cela montre l'intérêt de bien écrire et commenter ses programmes.
Ligne 34 : Ligne 36 :
 
= Pascal, 1970 =
 
= Pascal, 1970 =
  
C'est un langage relativement vieux (plus de 40 ans) mais qui bénéficie d'une syntaxe claire et intuitive, facilitant ainsi son apprentissage.
+
C'est un langage relativement vieux (plus de 40 ans) mais qui bénéficie d'une syntaxe claire et intuitive, facilitant ainsi son apprentissage. Sa vitesse est célèbre; Inconvénient : peu adapté pour le travail sur les listes.
  
 
'''Exemple de programmation en Pascal'''
 
'''Exemple de programmation en Pascal'''
Ligne 53 : Ligne 55 :
  
 
http://www.freepascal.org/
 
http://www.freepascal.org/
* Un compilateur pascal récent, rapide et gratuit !
+
* Un compilateur pascal récent, multiplateformes et rapide (logiciel libre).
  
 
http://www.lazarus.freepascal.org
 
http://www.lazarus.freepascal.org
* Un autre compilateur pascal récent et gratuit !
+
* Un environnement de développement très complet pour Free Pascal (logiciel libre)
  
 
= C, 1972 =
 
= C, 1972 =
Ligne 69 : Ligne 71 :
 
   }
 
   }
  
 +
http://www.lamsade.dauphine.fr/~manouvri/C/Polys_C_MM.pdf
 +
* Un cours de C, très classique, bien fait.
  
 +
http://www.inf.enst.fr/~charon/CFacile/
 +
* Apprendre le langage C par l'exemple : site d'Irène Charon (ENST), davantage conçu pour l'auto-apprentissage grâce aux exercices en ligne commentés, tests de connaissances etc. Très pédagogique.
 +
 +
https://www.rocq.inria.fr/secret/Anne.Canteaut/COURS_C/
 +
* Programmation en langage C, par Anne Canteaut (INRIA), avec exercices et pas mal de références.
  
 
http://www.loria.fr/~quinson/Teaching/CSH/
 
http://www.loria.fr/~quinson/Teaching/CSH/
Ligne 100 : Ligne 109 :
 
   
 
   
 
http://www.ensta-paristech.fr/~diam/c++/online/c++-faq-lite/
 
http://www.ensta-paristech.fr/~diam/c++/online/c++-faq-lite/
* Questions (et réponses) fréquemment posées sur le C++
+
* Questions (et réponses) fréquemment posées sur le C++\
 +
 
 +
[[Vecteurs_et_matrices_sous_GPU]]
 +
* Vecteurs et matrices sous GPU
  
 
= Visual Basic, 1991 =
 
= Visual Basic, 1991 =
Ligne 131 : Ligne 143 :
 
  }
 
  }
  
http://javascool.gforge.inria.fr/
+
 
 +
[[Un_logiciel_polyvalent_d%27apprentissage_de_la_programmation]]
 +
* Cours d'initiation à l'algorithmique exprimé dans deux langages pédagogiques : Larp et Javascool.
 +
 
 +
[[JavaScool:Accueil]]
 
* Plateforme logicielle conçue par l'INRIA pour l'apprentissage des bases de la programmation
 
* Plateforme logicielle conçue par l'INRIA pour l'apprentissage des bases de la programmation
  
Ligne 142 : Ligne 158 :
 
[[AndroidYa]]
 
[[AndroidYa]]
 
* Tutoriel (en espagnol, simple et clair) pour un autoapprentissage de la programmation sous Android (avec l'environnement Eclipse).
 
* Tutoriel (en espagnol, simple et clair) pour un autoapprentissage de la programmation sous Android (avec l'environnement Eclipse).
 +
 +
[[Tutorial de Java]]
 +
*Tutoriel (en espagnol, mais simple) très progressif et bien fait destiné à soutenir un autoapprentissage du langage Java.
 +
*''Certaines sections du tutoriel peuvent servir pour soutenir l'enseignement de la programmation si l'enseignant choisir de s'appuyer sur Javascool (par exemple).''
 +
 +
[[Vecteurs et matrices sous Java]]
 +
* Vecteurs et matrices en Java
 +
 +
Par ailleurs, Java a donné naissance à un certain nombre de variantes, évolutions qui ne manquent pas d'intérêt. On a déjà cité le cas d'Android, il vaut également la peine de découvrir [[Getting_Started_with_Scala|Scala]] qui donne une intéressante orientation fonctionnelle (voir aussi [[Simply Scala]], [[Learning Scala]]). Une autre « protubérance » motivante est [[Processing]], voir aussi http://openprocessing.org et http://mobile.processing.org
  
 
= Python, 1991 =
 
= Python, 1991 =
  
Python est un langage de programmation objet de haut niveau, interprété, et possédant une syntaxe claire avec notamment l'utilisation de l'indentation comme délimitateur de blocs ce qui peut être déroutant pour des novices.
+
Python est un langage de programmation objet de haut niveau, interprété, et possédant une syntaxe claire avec notamment l'utilisation de l'indentation (tabulations) comme délimiteur de blocs ce qui peut être déroutant pour des novices. Attention aux incompatibilités entre les version 2 et 3 du langage.
  
'''Exemple de programmation en python (version 2.7)'''
+
'''Exemple de programmation interactive en python (version 2.7)'''
  
 
   $ python
 
   $ python
Ligne 154 : Ligne 179 :
 
   >>>
 
   >>>
  
 +
[[Cours_d'introduction_au_langage_de_programmation_Python]]
 +
* Cours d'introduction au langage de programmation Python
  
 +
[[Cercles_informatiques_:_les_bases_de_la_programmation_en_Python_de_manière_semi-interactive]]
 +
* Apprendre les bases de la programmation en Python de manière semi-interactive.
  
 
http://python.org
 
http://python.org
 
* Page officielle de python
 
* Page officielle de python
 +
 +
[[Python_sur_codeacademy]]
 +
* Une école de python sur codeacademy
  
 
http://shell.appspot.com/
 
http://shell.appspot.com/
Ligne 168 : Ligne 200 :
 
* Tutoriel (en anglais) officiel de python  
 
* Tutoriel (en anglais) officiel de python  
  
http://diveintopython.adrahon.org
+
[[Plongez_au_coeur_de_Python,_de_débutant_à_expert]]
 
* Plongez au coeur de Python, tutoriel pour programmeurs expérimentés
 
* Plongez au coeur de Python, tutoriel pour programmeurs expérimentés
 +
 +
http://inforef.be/swi/python.htm
 +
* La version libre du livre « Apprendre à programmer en Python », de Gérard Swinnen
  
 
http://www.grappa.univ-lille3.fr/~jacquemin/robotL1/python_notes-2.pdf
 
http://www.grappa.univ-lille3.fr/~jacquemin/robotL1/python_notes-2.pdf
Ligne 176 : Ligne 211 :
 
http://temporaryland.wordpress.com/2011/01/26/python-for-newbies/
 
http://temporaryland.wordpress.com/2011/01/26/python-for-newbies/
 
* L'incontournable "Python pour les nuls"
 
* L'incontournable "Python pour les nuls"
 +
 +
[[Image:Pucegrain.png]] [[Premiers pas en Python avec Rurple]]
 +
* Ressource pédagogique DGESCO autour de Rurple (apprentissage de la programmation avec un robot virtuel simplifié).
 +
 +
[[Vecteurs_et_matrices_sous_Python]]
 +
* Vecteurs et matrices sous python.
  
 
http://gvr.sourceforge.net/
 
http://gvr.sourceforge.net/
* Langage programmation du Robot von Guido. Pour appréhender les bases de la programmation.
+
* Langage de programmation du robot (virtuel) « Guido von Robot ». Pour appréhender les bases de la programmation.
  
 
http://people.csail.mit.edu/pgbovine/python/
 
http://people.csail.mit.edu/pgbovine/python/
 
* Tutoriel python en ligne avec session interactive
 
* Tutoriel python en ligne avec session interactive
 +
 +
http://www.cndp.fr/sialle/fiche-detaillee-amiens-python-399.php
 +
* Python adapté pour l'enseignement des mathématiques au lycée (académie d'Amiens)
 +
 +
http://python.lycee.free.fr/
 +
* Tutoriel Python destiné aux lycéens, en français.
  
 
http://numpy.scipy.org/
 
http://numpy.scipy.org/
Ligne 188 : Ligne 235 :
 
http://matplotlib.sourceforge.net/
 
http://matplotlib.sourceforge.net/
 
* Outil de visualisation scientifique
 
* Outil de visualisation scientifique
 +
 +
[[Programmation_en_Python_pour_les_maths|Programmation en Python pour les maths]]
 +
* Manuel niveau Licence
 +
 +
[[PythonYa]]
 +
* Tutoriel très progressif et illustré permettant la prise en main du langage Python.
 +
*''Les manuels d'autoformation de cette collection sont suffisamment bien rédigés et présentés pour permettre à un élève de s'en servir en autoapprentissage ou en complément des cours.
  
 
= Ruby, 1993 =
 
= Ruby, 1993 =
  
Ruby est un langage de programmation de haut niveau, interprété et très orienté objet (mais il permet aussi la programmation procédurale).
+
Ruby est un langage de programmation de haut niveau, interprété et très orienté objet (mais il permet aussi la programmation procédurale). Inspiré de Python avec un but de simplification (Ruby ne réclame pas l'indentation des blocs par des tabulations et se contente d'un balisage par des <tt><b>end</b></tt>), et nettement orienté « web ». Ruby se distingue par l'abondance et la qualité pédagogique des documentations. Pour les différences entre Python et Ruby, voir ici : [http://www.ruby-lang.org/fr/documentation/ruby-from-other-languages/to-ruby-from-python to-ruby-from-python].
  
'''Exemple de programmation en Ruby'''
+
'''Exemple de programmation interactive en Ruby'''
  
 
  $ irb --simple-prompt
 
  $ irb --simple-prompt
Ligne 199 : Ligne 253 :
 
  Hello world
 
  Hello world
 
  => nil
 
  => nil
 
  
  
Ligne 206 : Ligne 259 :
  
 
http://www.ruby-lang.org/fr/documentation/quickstart/
 
http://www.ruby-lang.org/fr/documentation/quickstart/
* Un tutoriel très court qui pour avoir une première impression sur Ruby
+
* Un tutoriel très court (en français) pour avoir une première impression sur Ruby
  
 
http://tryruby.org/levels/1/challenges/0
 
http://tryruby.org/levels/1/challenges/0
 
* Cours interactif de Ruby (session interactive dans un navigateur)
 
* Cours interactif de Ruby (session interactive dans un navigateur)
  
http://pine.fm/LearnToProgram/
+
[[Apprendre_à_programmer_avec_Ruby|Apprendre à programmer avec Ruby]]
* Cours de programmation basé sur Ruby avec traduction française
+
* Cours de programmation basé sur Ruby (traduction française d'un ouvrage en anglais, superbe au demeurant)
 +
 
 +
[[Programming_Ruby_/_The_Pragmatic_Programmer's_Guide|Programming Ruby / The Pragmatic Programmer's Guide]]
 +
* Un autre tutoriel (en anglais, tiré d'un livre) pouvant servir de manuel de référence
 +
 
 +
[[Why's_(Poignant)_Guide_to_Ruby|Why's (Poignant) Guide to Ruby]]
 +
* Encore un tutoriel (toujours en anglais), mais vraiment original : présenté comme une BD.
  
 
http://www.techotopia.com/index.php/Ruby_Essentials
 
http://www.techotopia.com/index.php/Ruby_Essentials
Ligne 228 : Ligne 287 :
 
http://sciruby.com/
 
http://sciruby.com/
 
* Une bibliothèque ruby pour le calcul scientifique
 
* Une bibliothèque ruby pour le calcul scientifique
 +
 +
http://www.jetbrains.com/ruby
 +
* Environnement de développement complet pour Ruby, gratuit pour les enseignants et élèves
 +
 +
[[Vecteurs_et_matrices_sous_Ruby]]
 +
* Vecteurs et matrices sous Ruby
  
 
= PHP, 1995 =
 
= PHP, 1995 =
  
PHP est un langage de script de haut niveau qui a été conçu à l'origine pour (et reste principalement orienté vers ) la génération dynamique des pages HTML. Il est cependant possible de l'utiliser seul.
+
PHP est un langage de script de haut niveau qui a été conçu à l'origine pour (et reste principalement orienté vers) la génération dynamique des pages HTML. Il est cependant possible de l'utiliser seul. Fortement lié au projet Apache.
  
'''Example de programmation en PHP'''
+
'''Example de programmation interactive en PHP'''
 
  $php --interactive
 
  $php --interactive
 
  Interactive shell
 
  Interactive shell
Ligne 239 : Ligne 304 :
 
  php > echo 'hello world';
 
  php > echo 'hello world';
 
  hello world
 
  hello world
 
  
  
Ligne 253 : Ligne 317 :
 
http://www.netprof.fr/Informatique/PHP/Tous-les-cours-en-video,6,207,0.aspx
 
http://www.netprof.fr/Informatique/PHP/Tous-les-cours-en-video,6,207,0.aspx
 
* Apprentissage du PHP via des cours vidéos
 
* Apprentissage du PHP via des cours vidéos
 +
 +
= Javascript, 1995 =
 +
 +
Javascript est un langage interprété présent dans tous les navigateurs web. Ce langage s'est notablement développé depuis quelques années et permet à présent de traiter commodément des objets graphiques.
 +
 +
[[Apprendre_la_programmation:_JS/HTML5,_Jeux_2D/3D,_Web]]
 +
* A l'origine ce site a été conçu pour le club "apprendre la programmation" de mon lycée, il est "utilisable" en ISN (pour "amorcer" les projets en cas de manque d'inspiration).
 +
 +
[[Développer une application pour son smartphone avec firefox]]
 +
* Un tutotiel simple qui permet de faire à minima ses propres applications
 +
 +
[[Création_d'applications_pour_Firefox_OS]]
 +
[[Apprendre_le_développement_Web_:_Création_de_Web_app_1]] [[Apprendre_le_développement_Web_:_Création_de_web_app]] et [[Apprendre_le_développement_Web_:_EaselJS]]
 +
* Présentation des technos Webs client/serveur en JS
 +
 +
[[JavaScript_sur_codeacademy]]
 +
* Une école de JavaScript sur codeacademy
 +
 +
[[JavascriptYa]]
 +
* Tutoriel très progressif et illustré permettant la prise en main du langage Javascript.
 +
*''Les manuels d'autoformation de cette collection sont suffisamment bien rédigés et présentés pour permettre à un élève de s'en servir en autoapprentissage ou en complément des cours. Celui-ci est fourni avec une série de « problèmes à résoudre » (Problema a resolver) clairement énoncés et que l'on peut tenter de résoudre soi-même en direct dans le navigateur à partir d'une zone de saisie; les solutions sont également fournies.''
 +
 +
[[Les bases de JavaScript en lycée]]
 +
*Une introduction à JavaScript pour permettre aux élèves une première approche en autonomie des structures/fonctions de ce langage. Tout cela pour gagner du temps et permettre de se concentrer sur le suivi des projets des élèves en option ISN.
 +
 +
[[JavaScript,_pour_aller_plus_loin]]
 +
*Suite du cours "Les bases de JavaScript" pour approfondir l'apprentissage du langage par David Roche, professeur d'informatique au lycée G Fichet de Bonneville en Haute-Savoie.
 +
*''Le document ne prétend pas être une "bible" du JavaScript, mais a pour but de permettre aux élèves une première approche (en autonomie) de ce langage; il ne prétend pas non plus se substituer au travail en classe avec l'enseignant. Il est sans doute hors programme ISN, mais peut permettre à certains élèves "d'aller plus loin".
 +
''
 +
 +
[[Vecteurs_et_matrices_sous_Javascript]]
 +
* Il arrive que l'on doive manipuler des tableaux de nombres en tant que matrices. Une librairie pour javascript.
 +
 +
= Lua, 1994 =
 +
 +
[[Catégorie:PageThématique]]
 +
 +
Lua est un langage interprété de très petite taille, conçu par des Brésiliens (lua signifie la lune en portugais) pour être inclus comme langage de script dans des logiciels ou « embarqué », ce qui le destine aussi à des applications de bas niveau ou en robotique.
 +
 +
Un descriptif assez complet se trouve ici :
 +
 +
http://www.d-booker.fr/content/8-introduction-langage-script-lua
 +
 +
On trouve aussi un usage important de Lua dans des environnements aussi différents que de très nombreux jeux video, la calculatrice TI-Nspire, le langage de composition de pages mathématiques [http://www.luatex.org LuaTeX], l'explorateur de réseaux [http://www.cndp.fr/sialle/fiche-detaillee-wireshark-384.php WireShark] ou encore le navigateur web [http://mason-larobina.github.com/luakit Luakit].
 +
 +
'''Example de programmation interactive en Lua'''
 +
$lua
 +
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
 +
> io.write("Hello world, from ",_VERSION,"!\n")
 +
Hello world, from Lua 5.1!
 +
 +
http://www.lua.org
 +
* Page principale de Lua
 +
 +
http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Training_FR/Introduction_Programmation.html
 +
* Bonne introduction
 +
 +
[[LUA:_vraiment_pour_les_débutants]]
 +
* Une autre introduction
 +
 +
[[Le_guide_de_Lua_et_ses_applications]]
 +
* Un livre en français sur Lua (plus pour du perfectionnement que pour débuter)
 +
 +
http://unknownworlds.com/blog/lua-ide-decoda-open-source
 +
* Un bon environnement de développement consacré à LUA, utilisé par un concepteur de jeu vidéo (l'environnement Decoda est en lui-même un logiciel libre).
 +
 +
= R, 1996 =
 +
 +
[[Catégorie:PageThématique]]
 +
 +
R est un logiciel libre de calcul numérique, de statistique, moteur graphique et langage de programmation fonctionnelle, interprété et orienté objet.
 +
Il est multiplateforme (Linux, OSX, Win), téléchargeable (exécutables, sources et paquets complémentaires) sur :
 +
 +
http://ftp.igh.cnrs.fr/pub/CRAN/
 +
 +
On trouve aussi R sur le site SIALLE du CNDP :
 +
 +
[http://www.cndp.fr/sialle/fiche-detaillee-r-341.php R sur SIALLE, pour Windows]<br />
 +
[http://www.cndp.fr/sialle/fiche-detaillee-r-342.php R sur SIALLE, pour OSX]<br />
 +
[http://www.cndp.fr/sialle/fiche-detaillee-r-343.php R sur SIALLE, pour Linux]
 +
 +
'''Exemple de programme interactif en R'''
 +
cat('Hello world!')
 +
 +
Il existe deux principaux éditeurs de code (libres également) à coloration syntaxique dédiés à R, avec console intégrée, complétion automatique, aide contextuelle etc. :
 +
* Tinn-R (uniquement windows) : http://www.sciviews.org/Tinn-R/
 +
* et RStudio (multiplateforme), mieux adapté à un usage "lycée" : http://www.rstudio.com/ide/
 +
 +
L'article fondateur de R est encore trouvable ici (en anglais) :
 +
 +
http://www.stat.auckland.ac.nz/~ihaka/downloads/R-paper.pdf
 +
 +
D'autres documents en français :
 +
 +
http://www.apmep.asso.fr/Ateliers-du-dimanche-matin,4799
 +
* Documents diaporama et fichiers de codes correspondants pour mettre en œuvre l'algorithmique en simulation probabiliste, probabilité et statistique au lycée.
 +
 +
http://publications-sfds.math.cnrs.fr/index.php/StatEns/issue/view/13
 +
* Le logiciel R comme outil d'initiation à la statistique descriptive : enquête sur les dépenses des ménages
 +
 +
http://sierra.univ-lyon1.fr/irem/CII-Stat/R_Ajustements.mht
 +
* Mettre en œuvre l'ajustement selon les moindres carrés en BTS au lycée.
 +
 +
http://fr.wikipedia.org/wiki/Mod%C3%A8le_des_urnes_d%27Ehrenfest
 +
* Le modèle des urnes d'Erhenfest
 +
 +
http://cran.r-project.org/doc/contrib/Paradis-rdebuts_fr.pdf
 +
* Le manuel pour les débutants.
 +
 +
http://www.math.sciences.univ-nantes.fr/~philippe/download/Anne-Philippe-cours-R-par4.pdf
 +
* Un cours introductif
 +
 +
Le langage R est abondamment utilisé par des statisticiens, biologistes et chercheurs en sciences sociales. Voici quelques endroits pour se documenter :
 +
 +
http://www1.montpellier.inra.fr/fp/cdr/article.php3?id_article=177
 +
* Introduction à R et support de cours par l'INRA (institut National de la Recherche Agronomique)
 +
 +
http://forums.cirad.fr/logiciel-R/
 +
* Forum d'utilisateurs de R par le CIRAD (Centre de coopération Internationale en Recherche Agronomique pour le Développement)
 +
 +
http://rug.mnhn.fr/semin-r/presentations.html
 +
* Site des documents des séminaires R organisés par le Museum National d'Histoire Naturelle

Version actuelle datée du 14 décembre 2014 à 17:25

Pucegrain.png Voir aussi la page sur les algorithmes

Pucegrain.png Tous les contenus en liens avec Langages et programmation


Avant propos

Il existe historiquement différents critères permettant de classer les langages de programmation (impératif/fonctionnel, procédural/objet, haut-niveau/bas-niveau, interprété/compilé) mais ces critères tendent à disparaître avec d'une part la modification des langages existants (les langages ne sont pas des langues mortes) et d'autre part avec l'avènement des nouveaux langages de programmation.

Cependant, la distinction compilé/interprété reste importante puisque qu'elle a un impact direct sur la façon de programmer. Avec un langage compilé, vous devez écrire un fichier source, le compiler puis tester son exécution. Avec un langage interprété, vous pouvez facilement tester un programme en l'écrivant directement dans l'interpréteur.

A voir

  • Des exemples de prise en main d'environnement de programmation avec des exos clé en main.
  • Une étude sur l'utilisation des différents langages.
  • Comment écrire Hello World ! selon le langage (avec de facto une liste presque exhaustive des différents langages).
  • Rosetta est un site montrant comment nombre d'algorithmes célèbres peuvent être programmés dans toutes sortes de langages, même les plus bizarres.
  • Comment rendre un programme illisible avec le concours du programme C le plus abscons. Exemple à ne pas suivre bien évidemment, mais cela montre l'intérêt de bien écrire et commenter ses programmes.
  • Pour rendre vos programmes plus lisibles, il existe des outils appelés "code beautifier", uncrustify en est un exemple pour les langages similaires à C mais il en existe pour les langages les plus répandus.
  • Les pires bugs de l'histoire.
  • Le dépassement de tampon (buffer overflow en anglais) est la faille de programmation la plus utilisée par les virus, vers et chevaux de Troie.

Pascal, 1970

C'est un langage relativement vieux (plus de 40 ans) mais qui bénéficie d'une syntaxe claire et intuitive, facilitant ainsi son apprentissage. Sa vitesse est célèbre; Inconvénient : peu adapté pour le travail sur les listes.

Exemple de programmation en Pascal

program HelloWorld;

begin
  writeln('Hello World');
end.


http://hdd34.developpez.com/cours/artpoo/

  • Introduction à la programmation orientée objet par Eric Sigoillot

http://pascal.developpez.com/cours/

  • Référencement des cours en ligne sur Pascal.

http://www.freepascal.org/

  • Un compilateur pascal récent, multiplateformes et rapide (logiciel libre).

http://www.lazarus.freepascal.org

  • Un environnement de développement très complet pour Free Pascal (logiciel libre)

C, 1972

Langage historique qui a fortement impacté la communauté et qui demeure très utilisé aujourd'hui (programmation du noyau linux par exemple). C'est un langage de relativement bas niveau avec lequel il est très facile de commettre des erreurs, il est peut donc être un peu difficile d'accès pour une première approche de la programmation.

Exemple de programmation en C

 # include <stdio.h>
 int main(int argc, char **argv) {
     printf("Hello World\n");
     return 0;
 }

http://www.lamsade.dauphine.fr/~manouvri/C/Polys_C_MM.pdf

  • Un cours de C, très classique, bien fait.

http://www.inf.enst.fr/~charon/CFacile/

  • Apprendre le langage C par l'exemple : site d'Irène Charon (ENST), davantage conçu pour l'auto-apprentissage grâce aux exercices en ligne commentés, tests de connaissances etc. Très pédagogique.

https://www.rocq.inria.fr/secret/Anne.Canteaut/COURS_C/

  • Programmation en langage C, par Anne Canteaut (INRIA), avec exercices et pas mal de références.

http://www.loria.fr/~quinson/Teaching/CSH/

  • Introduction par Martin Quinson à la programmation en langage C pour des utilisateurs ayant déjà une première expérience de programmation.

http://picolibre.int-evry.fr/projects/svn/coursc/

  • Support de cours de Christian Bac pour le langage C.

http://www.netprof.fr/Informatique/Langage-C/Tous-les-cours-en-video,6,87,0.aspx

  • Des cours de C en vidéos

C++, 1983

Le langage C++ représente une extension objet du langage C. Bien qu'il permette d'abstraire un certain nombre de structures algorithmiques du langage C, il reste un langage de relativement bas niveau exigeant un certain effort de programmation.

Exemple de programmation en C++

 #include <iostream>
 int main(int argc, char **argv) {
     std::cout << "Hello World" << std:endl;
     return 0;
 }


http://en.cppreference.com/w/cpp

  • Références sur la norme C++

http://www.ann.jussieu.fr/courscpp/

  • Introduction à C++ par Thomas Lachand-Robert

http://www.ensta-paristech.fr/~diam/c++/online/c++-faq-lite/

  • Questions (et réponses) fréquemment posées sur le C++\

Vecteurs_et_matrices_sous_GPU

  • Vecteurs et matrices sous GPU

Visual Basic, 1991

Visual Basic est un langage dérivé du BASIC parmi les plus répandus mais qui est propriétaire et qui est très lié à l'architecture logicielle du système (Windows en l'occurrence).


Exemple de programmation en Visual Basic

Private Sub Form_Load()
   ' Execute a simple message box that will say "Hello, World!"
   MsgBox "Hello, World!"
End Sub


http://bbil.developpez.com/tutoriel/vb/debuter-vb6/

  • Introduction à Visual Basic 6

Java, 1991

Java est un langage objet de haut niveau qui a pour origine le langage C++. Il permet un accès facile et assez immédiat à la programmation de par sa présence sur un grand nombre de plate-formes matérielles et son "inter-opérabilité" (les sources restent les mêmes d'une machine à l'autre). La programmation sous Android dérive de Java, avec quelques particularités.

Exemple de programmation en Java

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //Display the string.
    }
}


Un_logiciel_polyvalent_d'apprentissage_de_la_programmation

  • Cours d'initiation à l'algorithmique exprimé dans deux langages pédagogiques : Larp et Javascool.

JavaScool:Accueil

  • Plateforme logicielle conçue par l'INRIA pour l'apprentissage des bases de la programmation

http://www.bluej.org/

  • Un environnement graphique pensé pour l'enseignement de Java

http://www.greenfoot.org/

  • Apprendre et enseigner Java dans un contexte visuel et interactif

AndroidYa

  • Tutoriel (en espagnol, simple et clair) pour un autoapprentissage de la programmation sous Android (avec l'environnement Eclipse).

Tutorial de Java

  • Tutoriel (en espagnol, mais simple) très progressif et bien fait destiné à soutenir un autoapprentissage du langage Java.
  • Certaines sections du tutoriel peuvent servir pour soutenir l'enseignement de la programmation si l'enseignant choisir de s'appuyer sur Javascool (par exemple).

Vecteurs et matrices sous Java

  • Vecteurs et matrices en Java

Par ailleurs, Java a donné naissance à un certain nombre de variantes, évolutions qui ne manquent pas d'intérêt. On a déjà cité le cas d'Android, il vaut également la peine de découvrir Scala qui donne une intéressante orientation fonctionnelle (voir aussi Simply Scala, Learning Scala). Une autre « protubérance » motivante est Processing, voir aussi http://openprocessing.org et http://mobile.processing.org

Python, 1991

Python est un langage de programmation objet de haut niveau, interprété, et possédant une syntaxe claire avec notamment l'utilisation de l'indentation (tabulations) comme délimiteur de blocs ce qui peut être déroutant pour des novices. Attention aux incompatibilités entre les version 2 et 3 du langage.

Exemple de programmation interactive en python (version 2.7)

 $ python
 >>> print "Hello World"
 Hello World
 >>>

Cours_d'introduction_au_langage_de_programmation_Python

  • Cours d'introduction au langage de programmation Python

Cercles_informatiques_:_les_bases_de_la_programmation_en_Python_de_manière_semi-interactive

  • Apprendre les bases de la programmation en Python de manière semi-interactive.

http://python.org

  • Page officielle de python

Python_sur_codeacademy

  • Une école de python sur codeacademy

http://shell.appspot.com/

  • Session python interactive dans un navigateur

http://www.larsen-b.com/static/intro_python/

  • Courte introduction à python

Tutoriel officiel

  • Tutoriel (en anglais) officiel de python

Plongez_au_coeur_de_Python,_de_débutant_à_expert

  • Plongez au coeur de Python, tutoriel pour programmeurs expérimentés

http://inforef.be/swi/python.htm

  • La version libre du livre « Apprendre à programmer en Python », de Gérard Swinnen

http://www.grappa.univ-lille3.fr/~jacquemin/robotL1/python_notes-2.pdf

  • Un cours sur python

http://temporaryland.wordpress.com/2011/01/26/python-for-newbies/

  • L'incontournable "Python pour les nuls"

Pucegrain.png Premiers pas en Python avec Rurple

  • Ressource pédagogique DGESCO autour de Rurple (apprentissage de la programmation avec un robot virtuel simplifié).

Vecteurs_et_matrices_sous_Python

  • Vecteurs et matrices sous python.

http://gvr.sourceforge.net/

  • Langage de programmation du robot (virtuel) « Guido von Robot ». Pour appréhender les bases de la programmation.

http://people.csail.mit.edu/pgbovine/python/

  • Tutoriel python en ligne avec session interactive

http://www.cndp.fr/sialle/fiche-detaillee-amiens-python-399.php

  • Python adapté pour l'enseignement des mathématiques au lycée (académie d'Amiens)

http://python.lycee.free.fr/

  • Tutoriel Python destiné aux lycéens, en français.

http://numpy.scipy.org/

  • Outils pour le calcul scientifique en python

http://matplotlib.sourceforge.net/

  • Outil de visualisation scientifique

Programmation en Python pour les maths

  • Manuel niveau Licence

PythonYa

  • Tutoriel très progressif et illustré permettant la prise en main du langage Python.
  • Les manuels d'autoformation de cette collection sont suffisamment bien rédigés et présentés pour permettre à un élève de s'en servir en autoapprentissage ou en complément des cours.

Ruby, 1993

Ruby est un langage de programmation de haut niveau, interprété et très orienté objet (mais il permet aussi la programmation procédurale). Inspiré de Python avec un but de simplification (Ruby ne réclame pas l'indentation des blocs par des tabulations et se contente d'un balisage par des end), et nettement orienté « web ». Ruby se distingue par l'abondance et la qualité pédagogique des documentations. Pour les différences entre Python et Ruby, voir ici : to-ruby-from-python.

Exemple de programmation interactive en Ruby

$ irb --simple-prompt
>> puts "Hello world"
Hello world
=> nil


http://www.ruby-lang.org/fr/

  • Page officielle du langage Ruby

http://www.ruby-lang.org/fr/documentation/quickstart/

  • Un tutoriel très court (en français) pour avoir une première impression sur Ruby

http://tryruby.org/levels/1/challenges/0

  • Cours interactif de Ruby (session interactive dans un navigateur)

Apprendre à programmer avec Ruby

  • Cours de programmation basé sur Ruby (traduction française d'un ouvrage en anglais, superbe au demeurant)

Programming Ruby / The Pragmatic Programmer's Guide

  • Un autre tutoriel (en anglais, tiré d'un livre) pouvant servir de manuel de référence

Why's (Poignant) Guide to Ruby

  • Encore un tutoriel (toujours en anglais), mais vraiment original : présenté comme une BD.

http://www.techotopia.com/index.php/Ruby_Essentials

  • Guide sur Ruby

http://www.linuxtopia.org/online_books/programming_books/ruby_guide/index.html

  • Manuel utilisateur de Ruby

http://shoes.heroku.com/

  • Programmation d'interface graphique avec Ruby

http://hackety-hack.com/

  • Un programme interactif pour apprendre à programmer

http://sciruby.com/

  • Une bibliothèque ruby pour le calcul scientifique

http://www.jetbrains.com/ruby

  • Environnement de développement complet pour Ruby, gratuit pour les enseignants et élèves

Vecteurs_et_matrices_sous_Ruby

  • Vecteurs et matrices sous Ruby

PHP, 1995

PHP est un langage de script de haut niveau qui a été conçu à l'origine pour (et reste principalement orienté vers) la génération dynamique des pages HTML. Il est cependant possible de l'utiliser seul. Fortement lié au projet Apache.

Example de programmation interactive en PHP

$php --interactive
Interactive shell

php > echo 'hello world';
hello world


http://www.php.net/manual/fr/

  • Manuel officiel du langage PHP

http://sylvie-vauthier.developpez.com/tutoriels/php/grand-debutant

  • Introduction au PHP "pour les grands débutants" par Sylvie Vauthier

http://www.w3schools.com/php/

  • Un cours niveau débutant jusqu'à avancé

http://www.netprof.fr/Informatique/PHP/Tous-les-cours-en-video,6,207,0.aspx

  • Apprentissage du PHP via des cours vidéos

Javascript, 1995

Javascript est un langage interprété présent dans tous les navigateurs web. Ce langage s'est notablement développé depuis quelques années et permet à présent de traiter commodément des objets graphiques.

Apprendre_la_programmation:_JS/HTML5,_Jeux_2D/3D,_Web

  • A l'origine ce site a été conçu pour le club "apprendre la programmation" de mon lycée, il est "utilisable" en ISN (pour "amorcer" les projets en cas de manque d'inspiration).

Développer une application pour son smartphone avec firefox

  • Un tutotiel simple qui permet de faire à minima ses propres applications

Création_d'applications_pour_Firefox_OS Apprendre_le_développement_Web_:_Création_de_Web_app_1 Apprendre_le_développement_Web_:_Création_de_web_app et Apprendre_le_développement_Web_:_EaselJS

  • Présentation des technos Webs client/serveur en JS

JavaScript_sur_codeacademy

  • Une école de JavaScript sur codeacademy

JavascriptYa

  • Tutoriel très progressif et illustré permettant la prise en main du langage Javascript.
  • Les manuels d'autoformation de cette collection sont suffisamment bien rédigés et présentés pour permettre à un élève de s'en servir en autoapprentissage ou en complément des cours. Celui-ci est fourni avec une série de « problèmes à résoudre » (Problema a resolver) clairement énoncés et que l'on peut tenter de résoudre soi-même en direct dans le navigateur à partir d'une zone de saisie; les solutions sont également fournies.

Les bases de JavaScript en lycée

  • Une introduction à JavaScript pour permettre aux élèves une première approche en autonomie des structures/fonctions de ce langage. Tout cela pour gagner du temps et permettre de se concentrer sur le suivi des projets des élèves en option ISN.

JavaScript,_pour_aller_plus_loin

  • Suite du cours "Les bases de JavaScript" pour approfondir l'apprentissage du langage par David Roche, professeur d'informatique au lycée G Fichet de Bonneville en Haute-Savoie.
  • Le document ne prétend pas être une "bible" du JavaScript, mais a pour but de permettre aux élèves une première approche (en autonomie) de ce langage; il ne prétend pas non plus se substituer au travail en classe avec l'enseignant. Il est sans doute hors programme ISN, mais peut permettre à certains élèves "d'aller plus loin".

Vecteurs_et_matrices_sous_Javascript

  • Il arrive que l'on doive manipuler des tableaux de nombres en tant que matrices. Une librairie pour javascript.

Lua, 1994

Lua est un langage interprété de très petite taille, conçu par des Brésiliens (lua signifie la lune en portugais) pour être inclus comme langage de script dans des logiciels ou « embarqué », ce qui le destine aussi à des applications de bas niveau ou en robotique.

Un descriptif assez complet se trouve ici :

http://www.d-booker.fr/content/8-introduction-langage-script-lua

On trouve aussi un usage important de Lua dans des environnements aussi différents que de très nombreux jeux video, la calculatrice TI-Nspire, le langage de composition de pages mathématiques LuaTeX, l'explorateur de réseaux WireShark ou encore le navigateur web Luakit.

Example de programmation interactive en Lua

$lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> io.write("Hello world, from ",_VERSION,"!\n")
Hello world, from Lua 5.1!

http://www.lua.org

  • Page principale de Lua

http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Training_FR/Introduction_Programmation.html

  • Bonne introduction

LUA:_vraiment_pour_les_débutants

  • Une autre introduction

Le_guide_de_Lua_et_ses_applications

  • Un livre en français sur Lua (plus pour du perfectionnement que pour débuter)

http://unknownworlds.com/blog/lua-ide-decoda-open-source

  • Un bon environnement de développement consacré à LUA, utilisé par un concepteur de jeu vidéo (l'environnement Decoda est en lui-même un logiciel libre).

R, 1996

R est un logiciel libre de calcul numérique, de statistique, moteur graphique et langage de programmation fonctionnelle, interprété et orienté objet. Il est multiplateforme (Linux, OSX, Win), téléchargeable (exécutables, sources et paquets complémentaires) sur :

http://ftp.igh.cnrs.fr/pub/CRAN/

On trouve aussi R sur le site SIALLE du CNDP :

R sur SIALLE, pour Windows
R sur SIALLE, pour OSX
R sur SIALLE, pour Linux

Exemple de programme interactif en R

cat('Hello world!')

Il existe deux principaux éditeurs de code (libres également) à coloration syntaxique dédiés à R, avec console intégrée, complétion automatique, aide contextuelle etc. :

L'article fondateur de R est encore trouvable ici (en anglais) :

http://www.stat.auckland.ac.nz/~ihaka/downloads/R-paper.pdf

D'autres documents en français :

http://www.apmep.asso.fr/Ateliers-du-dimanche-matin,4799

  • Documents diaporama et fichiers de codes correspondants pour mettre en œuvre l'algorithmique en simulation probabiliste, probabilité et statistique au lycée.

http://publications-sfds.math.cnrs.fr/index.php/StatEns/issue/view/13

  • Le logiciel R comme outil d'initiation à la statistique descriptive : enquête sur les dépenses des ménages

http://sierra.univ-lyon1.fr/irem/CII-Stat/R_Ajustements.mht

  • Mettre en œuvre l'ajustement selon les moindres carrés en BTS au lycée.

http://fr.wikipedia.org/wiki/Mod%C3%A8le_des_urnes_d%27Ehrenfest

  • Le modèle des urnes d'Erhenfest

http://cran.r-project.org/doc/contrib/Paradis-rdebuts_fr.pdf

  • Le manuel pour les débutants.

http://www.math.sciences.univ-nantes.fr/~philippe/download/Anne-Philippe-cours-R-par4.pdf

  • Un cours introductif

Le langage R est abondamment utilisé par des statisticiens, biologistes et chercheurs en sciences sociales. Voici quelques endroits pour se documenter :

http://www1.montpellier.inra.fr/fp/cdr/article.php3?id_article=177

  • Introduction à R et support de cours par l'INRA (institut National de la Recherche Agronomique)

http://forums.cirad.fr/logiciel-R/

  • Forum d'utilisateurs de R par le CIRAD (Centre de coopération Internationale en Recherche Agronomique pour le Développement)

http://rug.mnhn.fr/semin-r/presentations.html

  • Site des documents des séminaires R organisés par le Museum National d'Histoire Naturelle