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

De Sciencinfolycee
Aller à : navigation, rechercher

Travaux en cours : cette page n'est pas finalisée.... Merci de votre compréhension.

Voir aussi la page sur les algorithmes


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.

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.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

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).

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
 >>>


http://python.org

  • Page officielle de python

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://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"

http://gvr.sourceforge.net/

  • 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

http://numpy.scipy.org/

  • Outils pour le calcul scientifique en python

http://matplotlib.sourceforge.net/

  • Outil de visualisation scientifique

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.

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

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.

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".

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!

http://www.lua.org

  • 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