Pour préparer, illustrer des cours : langages et programmation (sélection thématique)
Travaux en cours : cette page n'est pas finalisée.... Merci de votre compréhension.
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
- 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.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++
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. } }
http://javascool.gforge.inria.fr/
- 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).
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 >>>
- Page officielle de python
- 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://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"
- Langage programmation du Robot von Guido. Pour appréhender les bases de la programmation.
http://people.csail.mit.edu/pgbovine/python/
- Tutoriel python en ligne avec session interactive
- Outils pour le calcul scientifique en python
http://matplotlib.sourceforge.net/
- Outil de visualisation scientifique
- 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.
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
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.
- 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".
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.
On trouve aussi un usage important de Lua dans des environnements aussi différents que la calculatrice TI-Nspire et le langage de composition de pages mathématiques LuaTeX.
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
http://lua.gts-stolberg.de/en/index.php?uml=1
- Une autre introduction