Langages et programmation

Diversité et unité des langages de programmation

Plan

Introduction

Il existe énormément de langages de programmation. Les plus connus sont JavaScript, Java, Python, C#, PHP, C/C++, Ruby, Swift et l’Objective-C.

Le basic a été conçu en 1964, il s'est inspiré du Fortran de 1954. Le basic fut le premier langage de programmation 'simple'. C'est un langage procédural, les instructions sont executées les unes après les autres: programmation séquentielle.

La façon dont on programme s'appelle les paradigmes de programmation. Un grand nombre de paradigmes furent crées dans vers 1970:

  • Simula 67, inventé par Nygaard et Dahl comme sur-couche d'Algol 60, est le premier langage conçu pour pouvoir intégrer la programmation orientée objet et la simulation par événements discrets.
  • C, un des premiers langages de programmation système, est développé par Dennis Ritchie et Ken Thompson pour le développement d'Unix aux laboratoires Bell entre 1969 et 1973.
  • Smalltalk (milieu des années 1970) est l'un des premiers langages de programmation à disposer d'un environnement de développement intégré complètement graphique.
  • Prolog (PROgrammation LOGique), défini en 1972 par Colmerauer, Roussel et Kowalski (en) est le premier langage de programmation logique.
  • ML (Meta Language) inventé par Robin Milner en 1973, construit sur un typage statique fort et polymorphe au-dessus de Lisp, pionnier du langage de programmation généraliste fonctionnel.

    Voici la liste de quelques langages importants

    • 1972, le Pascal
    • 1972, le C
    • 1983, le C++ (langage compilé) et l'objective-C
    • 1987, le PERL
    • 1990, le HTML
    • 1991, Python langage orienté objet et multiplateformes.
    • 1994, le php, langage utilisé pour les sites web, s'execute côté serveur
    • 1995, le Java et le javascript. Deux langages distincts! Java est multiplateformes. JavaScript s'execute sur les pages web, côté client.
    • 2011, le ruby langage orienté objet et multi-paradigme.

    Certains langages sont compilés avant l'execution. Cela signifie qu'ils sont traduit avant d'être executés. Le C est un langage compilé en assembleur, une fois compilé, le programme est donc directement compris par la machine et est donc plus rapide. Le java est compilé en bytecode et ce bytecode est ensuite interprété gràce à une machine virtuelle (JVM) dépendante du système d'exploitation. Lors des procédures de compilation, un certains nombres d'erreurs sont détectées et signalés. Le programme doit être corrigé.

    Python est classé dans les langages interprétés car il ne produit pas de fichier compilé contrairement à java. Un langage interprété est lu et converti en assembleur au fur et à mesure de son execution. Ce qui rend le programme plus lent et qui oblige parfois à re-compiler des parties déjà utilisées. Un programme interpréteur permet d’exécuter le code Python sur n’importe quel ordinateur. Les langages interprétés ont pour avantage de voir rapidement les résultats d’un changement dans le code. Python est toutefois plus complexe et est dans les faits Python compile en bytecode dans le fichier .py

    Nous allons voir que les principaux langages orientés objets ont des syntaxes très proches même si différentes.

Détails et exemple

Certains langage obligent la déclaration de variables avant leur utilisation. C'est le cas de Java, javascript, aseba. Il faut en plus de la déclaration de l'existance de la variable, parfois donner son type comme en java.

en php toutes les variables sont précédées d'un $

Pour reconnaitre le début d'un bloc crée par un if, for, while etc, Python utilise l'indentation, mais de nombreux langages utilisent les accolades de début et fin.

De nombreux langages signalent la fin d'une ligne de programme par un point virgule

Enfin les commandes ne sont pas les mêmes mais on retrouve tout de même les mêmes mots clés pour les commandes de base

Voici un même programme dans différents langages

				## PYTHON     PYTHON
for i in range(0, 10 + 1, 1):
    print(i)
if i > 10:
    print("superieur à 10")
    if i > 11:
        print("supérieur à 11")
    else:
        print("pas superieur à 11")
else:
    print("inférieur à 10")


				// JAVASCRIPT    JAVASCRIPT
function main() {
    var i;
    for (i = 0; i <= 10; i++) {
        window.alert(i);
    }
    if (i > 10) {
        window.alert("superieur à 10");
        if (i > 11) {
            window.alert("supérieur à 11");
        } else {
            window.alert("pas superieur à 11");
        }
    } else {
        window.alert("inférieur à 10");
    }
}



#     PHP            PHP
< ?php
# PHP, code dans page HTML avec extension php
for ($i = 0; $i <= 10; $i++) {
    echo $i . PHP_EOL;
}
if ($i > 10) {
    echo "superieur à 10" . PHP_EOL;
    if ($i > 11) {
        echo "supérieur à 11" . PHP_EOL;
    } else {
        echo "pas superieur à 11" . PHP_EOL;
    }
} else {
    echo "inférieur à 10" . PHP_EOL;
}
?>


// C++       C++      C++
#include < iostream>
#include < sstream>
#include < string>
#include < cstdlib>
#include < cmath>

using namespace std;

// Headers
string toString (double);
int toInt (string);
double toDouble (string);

int main() {
    int i;
    for (i = 0; i <= 10; i++) {
        cout << i << endl;
    }
    if (i > 10) {
        cout << "superieur à 10" << endl;
        if (i > 11) {
            cout << "supérieur à 11" << endl;
        } else {
            cout << "pas superieur à 11" << endl;
        }
    } else {
        cout << "inférieur à 10" << endl;
    }
    return 0;
}

// The following implements type conversion functions.
string toString (double value) { //int also
    stringstream temp;
    temp << value;
    return temp.str();
}

int toInt (string text) {
    return atoi(text.c_str());
}

double toDouble (string text) {
    return atof(text.c_str());
}


// JAVA       JAVA       JAVA
import java.util.*;
import java.lang.Math;

public class JavaApplication {
    public static void main(String[] args) {
        // Python
        int i;
        for (i = 0; i <= 10; i++) {
            System.out.println(i);
        }
        if (i > 10) {
            System.out.println("superieur à 10");
            if (i > 11) {
                System.out.println("supérieur à 11");
            } else {
                System.out.println("pas superieur à 11");
            }
        } else {
            System.out.println("inférieur à 10");
        }
    }
}

Exercices

Vous pouvez installer le programme Flowgortihm qui permet de traduire vers différents langages

Android

De la programmation pour pc à la programmation pour téléphone.

A finir

Pas eu le temps de tout faire.....