Pour préparer, illustrer des cours : langages et programmation (sélection thématique) : Différence entre versions
m (→Javascript, 1995) |
|||
(208 révisions intermédiaires par 4 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
− | + | [[Image:Pucegrain.png]] 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 | + | |
+ | = 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 [[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. | ||
+ | |||
+ | * 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. | ||
+ | |||
+ | * Pour rendre vos programmes plus lisibles, il existe des outils appelés "code beautifier", [http://uncrustify.sourceforge.net/ uncrustify] en est un exemple pour les langages similaires à C mais il en existe pour les langages les plus répandus. | ||
+ | |||
+ | * Les pires [http://www.wired.com/software/coolapps/news/2005/11/69355?currentPage=all bugs] de l'histoire. | ||
+ | |||
+ | * [http://fr.wikipedia.org/wiki/Dépassement_de_tampon 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. | ||
+ | |||
+ | * Programmation d'une [http://ironphoenix.org/tril/tm/ machine de Turing] | ||
+ | |||
+ | * [http://inventwithpython.com/blog/2010/09/27/i-want-to-teach-my-kid-how-to-program/ Comment choisir] un langage de programmation pour un enfant ? | ||
+ | |||
+ | * [http://showmedo.com/ Site de ressources] pour différents langages de programmation | ||
+ | |||
+ | = 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%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 | ||
+ | |||
+ | 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 [[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 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 | ||
+ | |||
+ | [http://docs.python.org/tutorial/ 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" | ||
+ | |||
+ | [[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/ | ||
+ | * 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|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 <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 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|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|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 | ||
+ | * 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 = | ||
+ | |||
+ | [[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 à 18:25
Voir aussi la page sur les algorithmes
Tous les contenus en liens avec Langages et programmation
Sommaire
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.
- Programmation d'une machine de Turing
- Comment choisir un langage de programmation pour un enfant ?
- Site de ressources pour différents langages de programmation
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.
- 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
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.
- Plateforme logicielle conçue par l'INRIA pour l'apprentissage des bases de la programmation
- Un environnement graphique pensé pour l'enseignement de Java
- Apprendre et enseigner Java dans un contexte visuel et interactif
- Tutoriel (en espagnol, simple et clair) pour un autoapprentissage de la programmation sous Android (avec l'environnement Eclipse).
- 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.
- Page officielle de python
- Une école de python sur codeacademy
- Session python interactive dans un navigateur
http://www.larsen-b.com/static/intro_python/
- Courte introduction à python
- 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"
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.
- 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)
- Tutoriel Python destiné aux lycéens, en français.
- Outils pour le calcul scientifique en python
http://matplotlib.sourceforge.net/
- Outil de visualisation scientifique
Programmation en Python pour les maths
- Manuel niveau Licence
- 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
- 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
- Programmation d'interface graphique avec Ruby
- Un programme interactif pour apprendre à programmer
- Une bibliothèque ruby pour le calcul scientifique
- 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
- 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
- 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
- Une école de JavaScript sur codeacademy
- 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!
- 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. :
- 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