Tout d’abord, nous allons réaliser un état de l’art afin de comprendre ce que sont les langages de programmation, de comprendre leur fonctionnement, leur évolution dans le temps et de savoir pourquoi nous les utilisons.

Ensuite, nous allons voir qu’il existe des méthodes et des outils pratique permettant de comprendre plus facilement les langages de programmation. Par la même occasion, nous mènerons un sondage informatique que nous allons distribuer à des apprentis développeurs et nous allons interviewer des professeurs et des étudiants en informatique dans un lycée.

Enfin, après avoir détaillé et expliqué ce que sont les langages et la programmation et après avoir effectué des sondages, nous clôturerons ce mémoire avec une conclusion approfondie afin de savoir s’il est possible de rendre les langages de programmation compréhensible par tous.

Dans ce mémoire, nous allons étudier l’utilisation des langages de programmation afin de comprendre leur fonctionnement et, après étude, de conclure s’il est possible de rendre les langages de programmation compréhensibles par tous.

Pour ce faire, nous ferons tout d’abord un état de l’art sur les langages, l’informatique et la programmation afin de comprendre les termes utilisés durant le document et de comprendre leur fonctionnement. Nous poursuivrons notre état de l’art par une description des principaux langages de programmation utilisés dans le milieu du développement d’application informatique (logiciel, site web ou jeux vidéo).

C’est ensuite que nous verrons qu’il existe des outils informatiques permettant de rendre le code et la programmation plus facile d’utilisation. Mais nous verrons surtout qu’il existe des méthodes pour comprendre la programmation et qui ne sont pas négligeables. Nous parlerons donc d’algorithmique.

Puis nous parlerons des langages graphiques qui sont des langages intuitifs rendant à la fois l’utilisation et la compréhension de la programmation plus facile. 

C’est ensuite à l’aide d’un sondage et d’une interview sous forme de questions que nous allons pouvoir étudier la manière dont est vu la programmation pour, des apprentis développeurs, des élèves et des professeurs.

Une conclusion clôturera le document afin de déterminer s’il est possible de rendre les langages de programmation compréhensibles par tous.

 

1. Les langages, l’informatique et la programmation

1.1 Les langages naturels

Tout d’abord, commençons par comprendre l’étymologie du mot langage. Qu’est-ce que ce mot signifie exactement ? Le langage est un système de communication. Plus précisément, le langage est la possibilité d’émettre une pensée et ainsi, de communiquer grâce à différents signes : vocaux, gestualité, schémas etc. Souvent, il s’agit d’une syntaxe qui élabore la manière dont les mots sont liés pour créer des phrases ou des énoncés dans une langue.

Tel que nous le décrivons, la première chose à laquelle on pense est la « langue naturelle ». Elle correspond à toutes les différentes langues parlées dans le monde permettant la compréhension entre chaque individu. Il est toujours possible que, par souci d’identité national, un peuple crée sa langue pour pouvoir échanger avec d’autre plus facilement.

Chaque pays possède sa propre langue. Une personne étrangère se rendant dans un autre pays que le sien, doit apprendre une nouvelle langue. Sans l’apprentissage de cette langue parlée dans le pays courant, il est difficile de communiquer avec les habitants.

Tout cela pour dire, que la langue aide à la communication pour chaque personne qui l’utilise.

 

1.2 Le langage et la technologie

Bien entendu, il existe également d’autres types de langages dans le monde permettant une meilleure compréhension par tout type d’être humain, mais aussi pour les machines.

Avec l’arrivée des nouvelles technologies, à savoir l’informatique, Internet ou encore les téléphones mobiles, nous avons rencontré également un autre langage : le langage SMS. Celui-ci permet d’échanger des messages courts avec nos interlocuteurs. Les systèmes avaient limité la taille des messages. 

De ce fait, la meilleure façon de communiquer notre message à l’interlocuteur à travers nos téléphones mobiles, était de réduire au minimum la taille des mots qu’on utilisait (Par exemple : « Tu vas bien ? » en « Tva bi1 ? »). 

Aujourd’hui, les systèmes ont soulevé cette limitation de taille de message, mais le langage SMS existe toujours.

 

1.3 Les langages informatiques

Au-delà des langages naturels, et toujours dans le domaine de l’informatique, il existe un autre type de langage permettant la communication entre les humains et les machines. Il s’agit tout simplement et bien évidemment des langages informatiques.

Ici, on parle de langage informatique lorsque le langage est compris par les humains et les ordinateurs. En d’autres termes, le langage informatique est conçu de façon à ce que l’être humain puisse comprendre la syntaxe linguistique afin de créer une série d’instructions compréhensibles par l’ordinateur. Le rôle de l’ordinateur quant à lui, est d’exécuter toutes les actions que l’utilisateur aura créé.

Il est intéressant de noter que les ordinateurs peuvent communiquer entre eux, mais à ce moment-là, il ne s’agit pas de langages informatiques mais de protocoles de communication.

Pour être plus précis, les actions exécutées par l’ordinateur sont en fait gérées par le processeur. Ce dernier est définit comme le cerveau de l’ordinateur et comprend le langage machine. Ce langage est constitué de suites de 0 et de 1 (appelés les chiffres binaires).

Bien évidemment, les données reçues par le processeur sont incompréhensibles pour les humains. Aucun être humain peut comprendre le langage machine.

C’est pourquoi, des langages de substitution ont été créé afin que les êtres humains puisse à la fois : écrire du code et ainsi, communiquer avec un langage transformé en langage machine opérationnel pour les ordinateurs.

En 1964, l’assembleur a été le premier langage informatique compréhensible par les humains. Il a été conçu de manière à ce que les développeurs puissent envoyer des informations que l’ordinateur peut comprendre. C’est un langage informatique proche du langage machine qui fait le lien entre l’être humain et la machine.

Le langage d’assemblage, est un langage informatique qui fait la relation entre le développeur et l’ordinateur, et permet ainsi un parfait échange avec une bonne communication.

Il faut savoir que les bits compris par l’ordinateur, sont également représentés par des symboles appelés « mnémotechnique » (ou « mnémonique »), c’est-à-dire, que l’on peut retenir plus facilement par une lettre. 

Un « mnémotechnique » est un moyen technique de mémoriser plus facilement une association d’idées. Grâce à ce système de mnémotechnique, l’assembleur va les convertir en langage machine de façon à créer un fichier de type objet ou encore un fichier de type exécutable.

 

1.4 Les langages interprétés et compilés

Dans ce monde de langage informatique, on peut distinguer 2 autres types de catégories de langages : les langages interprétés et les langages compilés.

Nous avons vu précédemment que le langage informatique était un langage différent du langage machine. Il a également été énoncé que, le langage informatique était la relation entre le développeur et le processeur. C’est grâce au langage informatique que le développeur peut envoyer des informations compréhensibles pour l’ordinateur. 

Plus précisément, c’est grâce à un outil appelé « interpréteur » que la traduction se fait plus facilement. En effet, l’interpréteur s’occupe d’analyser, de traduire et d’exécuter les instructions d’un programme envoyé au processeur (et donc à l’ordinateur).

Il existe donc des langages dits « langages interprétés » qui permettent aux personnes qui les utilisent, d’envoyer des informations concrètes à l’ordinateur. Mais il faut savoir que ce type de langage pose de nombreux problèmes. En effet, le langage interprété permet à quiconque de s’approprier des codes qui permettent la création d’une application. Ainsi, tout programme peut être copié ou pire encore, modifié.

Et puis, nous avons aussi les langages dits « langages compilés » qui, quant à eux, utilisent un outil appelé « compilateur ». Ce système permet de traduire tout un programme. C’est-à-dire que, contrairement à l’interpréteur qui traite instruction par instruction, le compilateur transforme le contenu de toutes les instructions en un seul programme. Cela va générer un nouveau fichier permettant de s’exécuter en un seul coup. On parle d’ailleurs de fichier exécutable.

Comparé à l’interpréteur encore une fois, le programme compilé sera plus sécurisé car il ne fera pas apparaître le code à partir du fichier exécutable.

 

1.5 Les langages intermédiaires

A cela, il existe également les langages intermédiaires qui quant à eux, appartiennent à la fois aux langages interprétés et aux langages compilés. En ce qui concerne cette catégorie, le programme peut connaître une étape de compilation intermédiaire avec un langage non exécutable. On peut citer les langages suivants : LISP, Java ou encore Python.

Pour distinguer plus facilement les langages de programmation en fonction des langages compilés et des langages interprétés, le tableau suivant permet de les classer de manière structurée.

Tableau des types de langages de programmation

Langages

Bas niveau / 

Haut niveau

Interprété / 

Compilé

FORTRAN Haut niveau Compilé
COBOL Haut niveau Compilé
BASIC Haut niveau Interprété
PASCAL Haut niveau Compilé
C Bas niveau Compilé
C++ Bas niveau Compilé
PERL Haut niveau Interprété
PYTHON Haut niveau Intermédiaire
RUBY Haut niveau Interprété
JAVA Bas niveau Intermédiaire
PHP Haut niveau Interprété
JAVASCRIPT Haut niveau Interprété

 

On remarque notamment ce qu’on appelle les langages de bas et de haut niveau, et suite à ce qui a été décrit précédemment sur l’assembleur, il est intéressant de bien comprendre la distinction entre ces deux terminaisons. 

En effet, on utilise langages de bas et de haut niveau pour définir si les langages se rapprochent de près ou de loin du langage machine. Toujours dans cette logique, on comprend bien que plus le langage se rapproche du langage machine et plus il est difficile à prendre en main et à comprendre. 

En revanche, on saura plus facilement utiliser les langages de haut niveau.

 

1.6 Les langages de modélisation

Avant d’étudier les langages de programmation, nous allons comprendre les langages de modélisation graphiques.

Un langage de modélisation graphiques va permettre de définir des informations, de la connaissance ou des systèmes dans un modèle défini par des règles. Il peut être graphique ou textuel.

Les langages de modélisation graphiques utilisent des méthodes de diagrammes. Il existe plusieurs types de diagrammes contenant des symboles en liaison à des noms et des lignes connectant des symboles et représentant des relations.

Les langages de modélisation textuels utilisent principalement des mots-clés standardisés accompagnés de paramètres pour rendre les expressions interprétables par les ordinateurs.

Dans la programmation graphique on trouve donc des blocs qui correspondent à des entités ou des fonctions. Ainsi que des flèches qui représentent les relations entre chaque bloc.

On peut citer une liste exhaustive de langage modélisé comme :

  • EXPRESS et EXPRESS-G
  • Sysml
  • Business Process Modeling Notation
  • Energy Systems Language
  • IDEF
  • Unified modeling language (UML) et ses antécédents :
    • Object Modeling Technique
    • Méthode Booch
    • OOSE

 

La programmation modélisée est un moyen technique permettant de comprendre plus facilement et étape par étape la logique d’un programme, ou la conception d’un système.

Nous verrons plus loin, d’autres méthodes permettant de comprendre efficacement la logique de programmes.

 

1.7 Les langages de programmation

Avant de nous lancer dans les langages de programmation, il faut comprendre ce que signifie la programmation. Il s’agit d’un groupe d’activité permettant l’écriture des programmes informatiques.

En programmation, il existe un terme permettant d’indiquer si le langage est proche ou non du langage machine. En ce qui concerne le langage assembleur, on dit qu’il est un langage de bas niveau. Son niveau de compréhension est proche de celui du langage machine. Un langage de bas niveau sera donc moins évident à comprendre qu’un langage de haut niveau.

Aujourd’hui, on peut d’or et déjà distinguer un certain nombre de langages de bas niveau et de haut niveau.

 

1.8 La programmation impérative et fonctionnelle

En programmation, il existe ce qu’on appelle les paradigmes de programmation. Il s’agit simplement d’une manière de programmer. Il existe la programmation procédurale, la programmation orientée objet, la programmation impérative, la programmation fonctionnelle, la programmation dérivée et bien d’autres encore.

Bien qu’il existe des langages de bas niveau et des langages de haut niveau, en soit tous ces langages informatique fonctionnent plus ou moins de la même façon. 

En effet, on peut distinguer 2 paradigmes de programmation, en fonction de la façon dont les instructions sont traitées :

  • Nous avons les langages impératifs, qui sont des types de programmes qui s’exécutent de façon séquentielle. C’est-à-dire que l’ordinateur exécute une série d’instructions permettant de modifier l’état du programme. Ce type de langage est beaucoup répandu sur l’ensemble des langages de programmation.
  • Et nous avons donc les langages fonctionnels, qui sont quant à eux, des types de programmes qui mettent en avant l’utilisation et l’application de fonctions, alors que la programmation impérative joue sur le changement d’état des données. Ce langage est principalement constitué de fonctions qui retournent des résultats.

1.9 La programmation procédurale

La programmation procédurale est aussi un paradigme centré sur la conception d’appel procédural.

Une procédure contient une suite d’étapes à réaliser. Les instructions d’un programme vont être exécutées les unes à la suite des autres. Une procédure peut être appelée à n’importe quelle étape de l’exécution du programme.

En programmation, nous avons ce qu’on appelle « les boucles ». Une boucle attend le déclenchement d’un événement. 

Un événement est un fait qui survient permettant d’actionner un élément. Il peut s’agir d’un clic de souris. Quand le clic de souris s’exécute dans une boucle, cette dernière attend le déclenchement d’un nouvel événement. Et ainsi de suite. 

 

1.10 La programmation orientée objet

La programmation orientée objet est un autre paradigme de programmation plus utilisé que la programmation procédurale car cette façon de programmer est plus structurée et permet une meilleur exécution des programmes.

En reprenant l’exemple de notre boucle vu pour la programmation procédurale, dans la programmation orientée objet, la boucle va correspondre à un objet (blocs de codes indépendants). Il peut y avoir plusieurs objets dans un programme correspondant à plusieurs blocs d’instructions. Lorsque le clic de souris survient dans une boucle, l’objet va l’exécuter.

En programmation orientée objet, nous utilisons différents termes techniques définissant les composants de notre programme. Pour comprendre ce paradigme informatique, nous allons utiliser des éléments courants dans la vie de tous les jours comme : les voitures. 

Une voiture est définie par un groupe d’éléments qui la compose : modèle et couleur. Une voiture est fabriquée dans une usine. Durant la fabrication, un ou plusieurs paramètres est ajouté au modèle de base. Nous avons :

  • l’usine est une classe : elle fabrique les objets,
  • la voiture est un objet,
  • les caractéristiques de la voiture sont des propriétés,
  • les options sont des méthodes de la classe Usine.

 

1.11 La programmation par reconnaissance vocale

La programmation par reconnaissance vocale… Dit comme cela, on pense tout de suite à la fameuse phrase fictive « Sésame, ouvre-toi ! ». Et bien, c’est presque ça ! 

En effet, la reconnaissance vocale est la conversion du son de la voix en fichier numérique qui permet de décoder un signal sonore de parole en une suite de mots. 

Remontons un peu en arrière. 

Vous vous demandez certainement quand est-ce que cela est apparue ? Pour être exacte, c’est dans les années 40 aux Etats-Unis qu’est apparu le premier système capable de reconnaître la voix humaine pour ainsi être retranscrite sur un fichier numérique. 

Les Américains avaient mis au point un outil de reconnaissance vocal dans le but de comprendre les messages russes interceptés.

Pendant ces années là, il a fallu beaucoup de temps et de ressources informatiques pour enregistrer et récupérer la représentation de chaque mot dans chaque langue. La représentation des mots n’était pas si simple, car différents mots peuvent résulter de sons similaires. 

On peut trouver d’autres problèmes comme : les sons individuels peuvent varier en fonction des sons qui suivent et qui précèdent. 

La vitesse de traitement de la parole ne s’aligne pas encore avec celle d’un être humain : elle pouvait emmagasiner 180 mots par minute. Même le meilleur système de reconnaissance vocale ne pourra fonctionner correctement sans appui matériel.

Aujourd’hui il existe quelques applications qui utilisent la reconnaissance vocale telles que : 

  • Cortana (Microsoft)
  • Siri (Apple)
  • Google (Traduction)
  • Vocapia Research (VoxSigma suite)
  • Voxygen Transcription (Voxygen)

 

De nos jours, et par rapport à autrefois, il est maintenant plus facile de créer son propre système de reconnaissance vocal à l’aide de langages de programmation et ainsi de l’implanter dans une application. 

Bien entendu, il faut utiliser les bons logiciels et langages informatiques, et bien évidemment un microphone.

 

2. La programmation en quelques langages

2.1 Des langages de programmation

Depuis la création du premier langage de programmation en 1964, une quantité impressionnante de langages de programmation ont été créé. Il en existe de toute sorte. Le tableau suivant présente uniquement les langages de programmation les plus parlant. Vous pouvez y trouver, l’année de parution et son évolution (versions).

Tableau de quelques langages de programmation

Années de parution Langages de programmation Évolutions
1954 FORTRAN FORTRAN (I, II, III, IV, V, 66, 77, 90, 95, 2003, 2008, 2015)
1959 COBOL COBOL (60, 68, 74, 85, 2002, 2014)
1964 BASIC BASIC 
1970 PASCAL /
1972 C C (89, 90, 99, 11, C++)
1983 C++ /
1987 PERL PERL (5, 6)
1991 PYTHON PYTHON (1.5, 1.6, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5)
1993 RUBY RUBY (1.2, 1.4, 1.6, 1.8, 1.9, 2.0, 2.1, 2.2, 2.3)
1995 JAVA JAVA (Java 1.0, Java 1.1, J2SE 1.2, J2SE 1.3, J2SE 1.4, J2SE 5.0, Java SE 6, Java SE 7, Java SE 8)
1995 PHP PHP (4, 5.4, 5.5, 5.6, 7.0)
1995 JAVASCRIPT JAVASCRIPT (1.0, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8)

 

2.2 FORTRAN

Le FORTRAN (FORmula TRANslator) est un langage de programmation scientifique, créé en 1954, il est utilisé dans l’informatique pour réaliser d’importants calculs scientifiques. Il a été créé par John Bachus avec le groupe IBM. 

FORTRAN est de nos jours considérés comme un des langages de programmation de haut niveau le plus ancien.

Aujourd’hui, FORTRAN possède beaucoup bibliothèques qui ont chacune de nombreuses fonctions, ces fonctions sont toujours améliorées. Ce langage possède des compilateurs qui lui permette de créer des applications rapides. La plupart des logiciels développés en FORTRAN ont connu d’importantes phases durant leurs existences. Il est très coûteux, de nos jours, le passage d’une application FORTRAN a un autre langage de programmation, de plus d’anciens systèmes sont nombreux à avoir été développé en FORTRAN.

La migration d’une application développée en FORTRAN à un autre langage de programmation serait un risque beaucoup trop important au bon fonctionnement actuel des anciens systèmes.

FORTRAN est considéré comme un langage de haut niveau, car il est accessible à des scientifiques qui n’ont pas forcément le niveau nécessaire en informatique. Nous sommes actuellement à la version « FORTRAN 2008 » parue en 2010, une version « FORTRAN 2015 » est prévue prochainement.

 

2.3 COBOL

COBOL (Common Business Oriented Language) est un langage qui a été inventé pour des applications de gestion. Il a été conçu en 1959 plus précisément le 18 septembre 1959 lors du pentagone auquel 6 constructeurs d’ordinateurs et 3 agences gouvernementales étaient conviés pour se mettre d’accord sur un langage commun, de plus de nombreuses applications de l’administration américaine sont créées en COBOL.

Suite à la création de ce comité, le sous-comité a ensuite été créé « Short Range committee ». Ce comité est composé de six personnes en charge de développer le COBOL. Il fut d’ailleurs mis en place en moins de 6 mois et porte pour nom « COBOL 60 ».

Depuis sa première version, COBOL a connu de nombreuses améliorations, notamment avec l’ajout de nombreuse fonctions, mais aussi avec son évolution pour une programmation orientée objet. Nous sommes de nos jours à la version « COBOL 2014 ».

 

2.4 BASIC

BASIC (Beginner’s All-purpose Symbolic Instruction Code) est un langage qui a pour but d’être facile à utiliser. C’est un langage de haut niveau qui a été créé pour une utilisation simple. Il a été conçu par George Kemeny et Thomas Eugene Kurtz en 1964. 

Dès le milieu des années 1970, les micro-ordinateurs pouvait être fournis avec un interprète BASIC.

Huit principes ont été respectés pour la conception de BASIC :

  • Être accessible sans connaissances particulières sur les ordinateurs,
  • Si l’ordinateur possédait un système d’exploitation, pouvoir s’en séparer pour réaliser du BASIC,
  • Être facile d’apprentissage,
  • Pouvoir traiter aussi bien des chaînes de caractères que des nombres,
  • Être modulable pour les experts (permettre l’ajout de fonctions),
  • Fournir des messages d’erreur clairs,
  • Un faible délai d’exécution,
  • Avoir le moyen d’interrompre le programme pour le modifier et reprendre son exécution.

 

BASIC a été conçu à destination de l’enseignement car il doit permettre aux étudiants qui ne sont pas dans le domaine scientifique de pouvoir utiliser un ordinateur.

 

2.5 PASCAL

En 1970, Niklaus Wirth a créé le langage PASCAL. Il a choisi ce nom en rapport à Blaise Pascal. C’est avant tout un langage qui a été pensé pour enseigner.

C’est un langage simple d’utilisation, il était au début tellement simplifié qu’il ne prenait pas en charge les chaînes de caractères (suite de caractères alphanumériques), il a été modifié par la suite pour prendre en charge ce type de variable. Il faut savoir aussi que c’est un langage qui est utilisé pour apprendre la programmation structurée.

Depuis ses début PASCAL a bien évolué avec par exemple l’ajout de nombreuses fonctions comme par exemple les fonctions d’allocations de mémoires dynamiques. De plus, une version alternative orientée objet est apparue : le « Pascal Objet ».

 

2.6 C

Le langage C est apparu au début des années 1970, il a été développé par Ken Thompson et Dennis Ritchie dans les Laboratoires Bell courant 1972. De grosses améliorations lui ont été apporté notamment l’ajout des types de données car ce langage est une évolution du langage B. 

L’avantage qu’il y a eu au courant de ces évolutions est qu’elles ont permis à Dennis Ritchie d’appeler ce langage différemment ainsi est apparu le langage C.

Le langage C a permis la réécriture de UNIX, un ancien système d’exploitation, et a donc permis au langage C d’être un des langage les plus utilisés. De plus le C a servi de base à d’autres langages comme le C++ ou encore le PHP par exemple.

Depuis son apparition, ce langage a connu peu d’amélioration, en effet courant 2011, le multi-thread qui est le fait de pouvoir lancer plusieurs processus à la fois a fait son apparition au sein de ce langage. Et possède donc actuellement un meilleur support Unicode pour les caractères codées en hexadécimal.

 

2.7 C++

Le C++ a été créée par Bjarne Stroustrup en 1983, ce langage est une amélioration du langage C qui au début s’appelait « langage C avec objet » mais fut renommé après en C++.

De nombreuses fonctionnalités lui ont été ajoutée, comme les fonctions virtuelles ou encore la surcharge des opérateurs. L’ajout des fonctions virtuelles dans les classes (méthodes) est destiné à pouvoir être redéfini dans des classes qui en héritent. Une nouvelle version de C++ apparaît en 1989, la version 2.0, et qui a vue l’apparition des classes multiples et les classes abstraites. Les classes représentent un ensemble de code constitué d’objets et de méthodes (utilisé en programmation orientée objet).

Un comité s’est réuni en 1998 afin de standardiser le langage C++ et d’y définir des normes ANSI et ISO. Quelques années plus tard, un rapport fut publié pour annoncer quelques problèmes concernant ce langage mais une version corrigée du langage a été publié. Le C++ est un langage gratuit mais il existe des documents de standardisation qui sont payants.

 

2.8 PERL

Le langage PERL a pour but la manipulation d’informations textuelles. Larry Wall l’a créé en 1987.

Nous pouvons utiliser, à la place des script Shell, des script PERL car il permet de transférer des données d’un processus à un autre de manière lisible et unifié. 

Il est également utilisé dans le traitement des scripts CGI et est aussi utilisé dans la génération de fichier de log.

Nous pouvons aussi remarquer que PERL s’inspire de nombreux langages comme le langage C ou encore le Shell par exemple.

« The Perl Foundation » est une équipe qui maintient et qui gère son avenir, notamment le passage à la version 6 de PERL. Actuellement nous sommes à la version 5.24 parue en mai 2016.

 

2.9 PYTHON

PYTHON est apparu en 1990, il a été créé par Guido Van Rossum, c’est un langage qui est orienté objet et qui est multi plateformes. C’est un langage similaire au PERL ainsi qu’au RUBY, il dispose d’un système de gestion d’exceptions et d’une allocation automatique de la mémoire.

Pyhton est généralement utilisé dans le domaine scientifique, car il dispose de nombreuses bibliothèques qui sont prévues spécialement pour des applications numériques

PYTHON peut être utilisé pour de nombreuse applications mais sert principalement à réaliser des petits scripts prévus pour des petites tâches répétitives. Il est notamment utilisé en tant que langage prototype pour créer des applications avant que celles-ci soient réalisées dans un langage de plus bas niveau.

Ce langage est notamment apprécié des pédagogues car sa syntaxe est assez simple à comprendre et son apprentissage est plutôt simple.

Nous sommes actuellement à la version 3.5 de PYTHON.

 

2.10 RUBY

Le langage Ruby a été inventé en 1995 par Yukihiro Matsumoto. C’est un langage interprété et orienté objet. 

Ruby est très orienté objet car toutes les fonctions sont des méthodes, toutes les variables ont une référence à un objet, 

Ruby est un langage ou toutes les données sont en objet y compris les types.

En 2004, est arrivé le Framework Ruby on Rails. Depuis, Ruby est de plus en plus utilisé dans le monde de la programmation. 

Actuellement nous sommes à la version  2.3.1 de Ruby paru le 26 Avril 2016.

 

2.11 JAVA

JAVA a été créé par deux personnes, James Gosling et Patrick Naughton. Ils ont présenté JAVA pour la première fois en 1995 lors du SunWorld, plus tard en 2009 Oracle a racheté JAVA et le maintient désormais.

Le C++ a été le langage d’inspiration à JAVA, il a été modélisé afin de retirer les points déroutants, tels que les pointeurs par exemple. C’est un langage orienté objet et les créateurs de JAVA ont décidé ainsi car ils souhaitaient que, majoritairement, tout soit objet dans JAVA.

Java est portable et peut être utilisé sur différent type de plateformes. Il a permis l’apparition de nouveau système d’exploitation comme Java OS par exemple. On a pu voir apparaître aussi des environnements de développement.

Le 18 mars 2014 est sortie la version 1.8 de JAVA (JAVA SE 8).

 

2.12 PHP

PHP a été inventé en 1994 par Rasmus LERDORF. Pour la petite histoire, il s’agissait au début d’une bibliothèque en C qui avait pour but de comptabiliser le nombre d’utilisateurs venu visiter un CV en ligne. Par la suite on a donné la possibilité à ce langage de pouvoir communiquer avec des bases de données.

Par la suite, deux étudiants ont travaillé sur ce langage et ont mis au point la version 3 de PHP. Ils ont développé le cœur de PHP qu’ils ont appelé Zend Engine, origine de la version 4 de PHP.

A l’heure actuelle PHP est un des langages les plus utilisés pour les sites web (plus de 244 million en 2013), et fait partie des langages open source les plus utilisés dans les logiciels utilisés par les entreprises.

La version 7 de PHP a récemment été publié, celle-ci offre des performances allant jusqu’à être deux fois plus rapides que la version précédente (PHP 5.6).

 

2.13 JAVASCRIPT

En 1995, Brendan Eich a créé JavaScript. C’est un langage qui est souvent utilisé sur des applications web mais aussi pour des serveurs, c’est principalement un langage orienté objet.

L’application de ce langage sur des pages internet permet d’exécuter des scripts web sur le navigateur client, il est généralement utilisé pour contrôler de l’HTML, et rendre ainsi dynamiques des pages web. C’est le navigateur internet qui gère son exécution et peut donc être utilisé de différentes manières. Par exemple il permet de gérer des services dynamiques de façon à les rendre plus ergonomiques.

JavaScript en est à sa version 1.8.5 parue en juillet 2010 et qui respect les standards EDMA-262.

 

3. Le fonctionnement des langages informatiques

3.1 Un fonctionnement syntaxique

En informatique, un langage de programmation est une notation formaliste qui a pour objectif de créer des algorithmes et produire des programmes informatiques qui les appliquent. Comme une langue naturelle, un langage de programmation est composé d’un alphabet, d’un vocabulaire, de règles de grammaire et de significations.

Les langages de programmation permettent de décrire les structures des données qui seront manipulées par l’appareil informatique (aussi appelé la syntaxe). C’est grâce aux langages informatiques que les programmeurs communiquent avec l’ordinateur, mais aussi avec d’autres programmeurs. Ensuite, les programmes peuvent être lus, compris et modifiés par une équipe de programmeurs.

Un langage de programmation est mis en place à l’aide d’un traducteur automatique appelé : compilateur ou interpréteur. Le compilateur est le programme informatique qui transforme un code source écrit dans un langage de programmation donné en un code qui sera directement exécuté par un ordinateur, tandis que l’interpréteur effectue cette traduction.

Comme il a été dit dans les précédents chapitres, chaque langage informatique à son but bien particulier dans leur utilisation et chacun a sa propre syntaxe. Les codes syntaxiques de programmation se différencient en fonction des langages informatiques. Plusieurs langages peuvent également être liés afin d’optimiser une application (Exemple : SQL et PHP).

Le code informatique d’un langage de programmation contient une série d’instructions compris à la fois : par la personne qui l’utilise et par l’ordinateur.

Dans la majeur partie des langages informatiques, le code est lu de haut en bas par l’ordinateur, instruction par instruction.

Un langage de programmation permet de décrire les structures des données qui seront manipulées par l’appareil informatique. 

Le langage informatique possède un ensemble d’éléments tels que les instructions, les variables, les types, et les procédures.

3.2 Des notions de programmation

Les langages de programmation permettent d’écrire du code qui doit suivre une structure qui sera par la suite utilisé par l’ordinateur. 

Tout ceci offre des jeux d’instructions, des variables, des procédures, des types de données qui peuvent être utilisé pour réaliser des algorithmes.

En programmation il existe donc plusieurs types :

  • Une instruction : une instruction est une action qui demande à l’ordinateur ce qu’il doit effectuer avant de passer à l’instruction suivante
  • Une variable : une variable est un nom utilisé faisant référence à une donnée informatique. Une variable peut être statique si elle ne change pas ou dynamique si elle change au fil du temps.
  • Une constante : un nom utilisé représentant une valeur qui ne change pas.
  • Une expression littérale : une valeur composée de lettres dans un programme.
  • Un type : Chaque valeur est associé à un type. Chaque langage de programmation contient des types dits « primitifs ».

Les types de données primitifs que l’on retrouve le plus souvent sont :

  • les nombres entiers, 
  • les nombres réels, 
  • le booléen, 
  • les chaînes de caractères,
  • les pointeurs.

 

En ce qui concerne le type booléen, il s’agit d’un type qui ne possède que deux valeurs : vrai ou faux (1 ou 0). Alors que le type pointeur possède une valeur qui se trouve en mémoire.

  • Une structure de données : Une manière de classer un groupe de données en mémoire, qui agit sur les algorithmes utilisés pour les manipuler.
  • Une déclaration : Il s’agit d’un lot de deux éléments : d’un type et d’un mot.

 

Pour s’assurer que les opérations sont faisables avec les types de données utilisés, lors de l’exécution du programme, de nombreuses vérifications sont établies lors de la compilation.

  • Les procédures, fonctions, méthodes : Des langages de programmation proposent d’isoler un morceau de programme, et d’en faire une opération générale, modifiable et peut être utilisé de façon répété. 

 

Ces morceaux sont appelés procédures, fonctions ou méthodes.

  • Les modules : Les langages de programmation peuvent également offrir la possibilité de découper un programme en plusieurs petits programmes appelées modules. Chaque module a un rôle déterminé, puis les modules sont assemblés.

 

3.3 Des règles de programmation

Parmi les langages informatiques existant dans l’univers de la programmation, il existe très peu de langages dont la syntaxe est identique. 

Généralement, chaque langage à son propre code syntaxique. 

Certains langages peuvent se ressembler car ils font parti de la même famille (exemple : langages C et C++) mais contient toujours plus ou moins des fonctions différentes. En soit, il est rare de retrouver deux langages disposant la même syntaxe.

Bien que la syntaxe du code source d’un langage soit différente, on retrouvera souvent les mêmes noms de type de données. Et pour mieux comprendre ce qui suit, nous allons parler de la manière dont est codé le langage Javascript.

Notez bien que la façon dont est codé le Javascript est totalement différentes d’autres langages de programmation mais dans l’esprit, d’autres langages seront capable de faire la même chose.

Ici, on ne parlera pas de tout ce qu’on peut faire en Javascript malheureusement car ce langage comme tous les autres peut nous emmener loin.

Dans Javascript, il n’y a pas 100 types de données. On trouve principalement :

  • les booléens (boolean),
  • les chaînes de caractères (string),
  • les nombres (number),
  • et les objets (object).

 

Parmi les sous-types d’objets, on trouve aussi :

  • les tableaux (Array),
  • les dates (Date),
  • les expressions régulières (RexExp),
  • et les fonction (Function).

Voici un premier exemple assez classique avec l’affichage du message du « hello world » en Javascript, lorsque l’application du développeur est ouverte sur un navigateur web.

Lorsqu’on écrit « alert », cela demande à l’ordinateur d’afficher un message dans une « bulle » d’information (petite fenêtre), on écrit un texte dans la parenthèse. Alert est une méthode de la classe DOM. 

Le DOM en web correspond au squelette d’une interface de programmation.

Les deux structures de données les plus importantes sont les objets et les fonctions. Un objet est simplement une liste de valeur indexées par des clés qui sont des chaînes de caractères. Voici un exemple d’objet :

 

3.4 Des outils pour des langages informatiques

3.4.1 Des outils informatiques

Pour développer une application, que ce soit des jeux vidéos, des sites web ou des logiciels, les développeurs utilisent des langages informatiques différents en fonction du besoin voulu. 

Au début, lorsque la technologie n’était pas aussi évoluée qu’aujourd’hui, les développeurs concevaient leur application à partir de rien. Ils devaient écrire de nombreux algorithmes et dessiner beaucoup de schémas ou d’organigrammes pour comprendre le problème et ainsi créer leur application.

Depuis l’homme a voulu voir plus loin et il a voulu toujours créer plus. 

C’est pourquoi aujourd’hui, la technologie a fortement évolué et les méthodes de travail des développeurs se sont améliorées. La technologie a également évolué dans le domaine de la programmation et aujourd’hui nous disposons d’outils informatiques permettant de gagner du temps, de travailler dans de meilleurs conditions, de faciliter la conception des nouveaux appareils, mais surtout de rendre plus performantes les applications informatiques.

Il existe bien entendu toujours des développeurs qui codent à partir de rien. C’est ce qu’on appelle coder de manière « From Scratch ».

Mais la plupart utilise à présent divers outils informatiques.

Pour la conception de site internet, nous avons ce qu’on appelle des CMS (Content Management System), des frameworks et d’autres outils encore.

Ces différents outils n’ont pas la même utilisation. Il est intéressant de comprendre leur fonctionnement car il joue énormément sur la compréhension des langages informatiques.

 

3.4.2 Les CMS

Le nom CMS (Content Management System) ou Système de Gestion de Contenu est un logiciel qui permet d’afficher du contenu (textes, images, etc.).

Plus exactement, il s’agit d’un logiciel qui permet de gérer un site web de manière à ne pas toucher au code source.

Les CMS proposent un contenu important grâce aux modules que l’on peut ajouter à son aise. Il est toutefois possible de toucher au code source si on souhaite développer plus que les modules proposés.

Il en existe un bon nombre aujourd’hui et certain sont utilisés pour la mise en ligne de site internet commercial (E-Commerce).

 

3.4.3 Les frameworks

En programmation informatique, un framework, autrement appelé cadre applicatif, ou encore socle d’applications correspond à un groupe logique d’éléments, qui sert à créer les bases ainsi que les grandes lignes d’une partie d’un logiciel. 

Un framework se définit par une simple bibliothèque logicielle mais surtout par :

  • un framework composé de nombreuses bibliothèques chacune spécialisée dans un domaine. Il peut être conçu pour un langage particulier, une plateforme, etc. ;
  • un framework guidant le développeur à respecter certaines règles de conception ; 
  • des bibliothèques organisées en fonction du même paradigme.

 

Les frameworks sont conçus et utilisés de façon à manipuler l’architecture des logiciel, des applications web. 

Aujourd’hui il en existe un certain nombre notamment en web tels que : Django avec le langage Python, Angular avec le langage Javascript, Rails avec le langage Ruby.

 

3.4.4 From Scratch

Depuis quelques années en développement web notamment, les développeurs  utilisent un paquet d’outils pour coder le moins possible et ainsi de parvenir le plus rapidement au résultat attendu.

Coder de manière « From Scratch » (à partir de rien) n’est pas pour autant plus mal. La preuve est que cela n’est pas devenu obsolète. Il s’agit d’une technique comme une autre.

Entre CMS, les frameworks CSS / PHP, les préprocesseurs CSS, … Il faut dire que nous sommes plutôt bien servi.

Mais pour apprendre le développement lorsqu’on ne s’y connait pas, il est intéressant d’apprendre à coder petit à petit de manière « From Scratch », plutôt qu’apprendre un framework directement.

 

3.5 A quoi ça sert ?

A partir du moment où vous voulez créer une application, il est essentiel de savoir quel langage de programmation vous allez utiliser. On retrouve facilement des similarités entre les langages de programmation, l’esprit d’un code de programmation sera presque tout le temps le même mais l’utilisation de chaque langage de programmation à un intérêt particulier. 

Bien sûr, il existe des langages informatiques qui permettent de créer la même chose mais généralement chaque langage sert à une chose en particulier.

Nous pouvons citer quelques langages souvent utilisés dans le développement web comme : HTML, CSS, Javascript, PHP, SQL. Il en existe d’autres mais ceux-ci sont les plus utilisés. 

Le langage HTML permet d’afficher du texte sur une page web, il est composé de balise informatique. Le langage CSS quant à lui permet de mettre en valeur l’interface de la page web. C’est lui qui va ajouter de la couleur, rendre des textes plus ou moins petits ou grands, ou encore mettre en place les parties du contenu du site web (menu en haut au milieu, menu vertical sur côté droit, etc.). 

Ensuite, il est possible de rendre pages web dynamiques grâce au Javascript. 

Ce langage peut animer des pages web comme par exemple avec l’affichage d’un « slideshow » (cadre contenant des images qui défilent). Le Javascript se complète bien avec le langage Jquery qui permet de faire la même chose, sauf qu’il propose des modules plus puissants. Ces langages informatiques sont plutôt orientés interface utilisateur (tout ce que l’utilisateur peut voir).

Dans le cas contraire, nous avons les langages web de programmation qui, quant à eux, permettent de créer des systèmes informatiques tels que : la création d’un module d’inscription et de connexion, la gestion des membres utilisateurs dans un site web et bien plus ! Pour y parvenir, on utilise le langage PHP. 

Puis pour utiliser les informations des membres inscrits à un site web, nous utilisons le langage SQL. Ce langage permet de créer des requêtes à l’aide d’une base de données. 

Cette dernière peut être créé sur divers outils. Généralement les développeurs qui utilisent le langage PHP, créent une base de donnés avec l’outil PhpMyAdmin disponible sur le serveur web WAMP (sur windows).

Ensuite, on peut en citer d’autres dans le développement de logiciels ou de jeux vidéo comme : C, C++ ou encore Java.

Aujourd’hui, certains anciens langages sont moins utilisés et sont remplacés par de nouveaux plus performants. De nombreuses entreprises préfèrent garder les mêmes langages informatiques pour ne pas perturber leur système.

 

4. Les algorithmes

4.1 Quésaco ?

Un algorithme est une suite d’opérations ou d’instructions non ambiguë (système compréhensible simplement) permettant de résoudre un problème ou encore d’obtenir un résultat. L’étude des algorithmes est appelé algorithmique. Le mot algorithme provient du mathématicien perse Al-Khawarizmi, étant également et à la fois géographe, astronome et astrologue.

Aujourd’hui, les algorithmes existent dans énorméments d’applications comme pour le fonctionnement des ordinateurs, la planification de projets, le traitement de texte et bien plus encore. Et même dans la vie de tous les jours, nous utilisons les algorithmes (souvent sans s’en rendre compte) quand nous avons besoins de résoudre des problèmes.

 

4.2 Un algorithme concret

Par exemple, on peut rencontrer des problèmes en automobile lors de l’injection d’essence dans sa voiture. Admettons que vous avez une voiture. Le problème que l’on peut se poser est le suivant : comment pouvons-nous injecter de l’essence ? 

La démarche suivante correspond aux étapes à suivre pour mettre de l’essence dans sa voiture :

  • stationner près d’une pompe à essence,
  • insérer sa carte bancaire (si c’est par paiement en carte),
  • ouvrir le réservoir d’essence de la voiture,
  • choisir son type d’essence,
  • prendre le pistolet d’essence (tuyau),
  • insérer le pistolet d’essence dans le réservoir de la voiture,
  • appuyer sur la gâchette du pistolet pour amener le carburant.

 

Ces étapes permettant de faire un plein d’essence dans son véhicule correspondent à notre algorithme. Cet algorithme peut paraître peu clair car dans notre préparation, on avait seulement mentionné l’essence, et pourtant on peut retrouver également les éléments suivants : une pompe à essence, une carte bancaire, un réservoir, un pistolet d’essence etc. Dans la vie de tous les jours, on peut se retrouver dans des situations comme ci-dessus dans lesquelles tous ces objets ne sont pas forcément disponibles. Dans ces moments là, il faudra alors utiliser un autre algorithme de façon à résoudre les nouveaux problèmes. 

Dans un problème, il est possible d’avoir moins d’instructions comme plus d’instructions. Par exemple, comment faisons-nous pour ouvrir le réservoir du véhicule ? Et si le propriétaire de la voiture n’arrive pas à interpréter la ligne « choisir le type de carburant », il faudra alors expliquer avec des termes plus simples ou détailler l’étape en sous-étapes.

Il arrive en algorithmique d’utiliser des langages graphiques pour schématiser notre algorithme. Il peut aider à la compréhension du problème.

L’organigramme ci-dessous explique l’algorithme de notre exemple avec plus de détails. Le fait de posséder une carte bancaire ou de l’argent en pièces changent les conditions. Nous aurions pu ajouter plus de détails comme moins de détails.

Généralement, les programmeurs qui ont l’habitude d’écrire des lignes de codes auront tendance à dire qu’ils n’ont jamais utilisé d’algorithmes pour créer leurs programmes. Et en effet, c’est vrai qu’il est possible de créer des programmes sans trop se concentrer vraiment sur le problème. 

Mais la rédaction des algorithmes n’est pas pour autant à négliger car ils permettent plusieurs choses :

  • Une compréhension pour tous les informaticiens qui utilisent le programme, même s’il ne connaît pas le langage du programme,
  • Un focus sur la logique du programme et non sur les aspects du langage utilisé,
  • Une vérification de la complexité du programme afin de l’optimiser,
  • Une apparition compréhensible des cas d’utilisations.

 

En programmation, nous avons les langages de programmation, les algorithmes et les « pseudo-code ». Le pseudo-code est ni un langage informatique ni représenté comme un algorithme. Il est une manière de décrire un algorithme sans pour autant faire référence à un langage de programmation particulier.

L’écriture en pseudo-code permet surtout de développer une approche détaillée de la construction de l’algorithme en question. Et c’est ce qui est intéressant. 

En effet, comparé à un langage de programmation dans lequel il faudra employer la bonne syntaxe pour que le programme fonctionne et soit clair à la compréhension, ici le pseudo-code nous laisse libre d’écrire un langage permettant d’être compris par tous ceux qui l’utilisera. 

Ainsi nous pouvons obtenir une vision globale du programme. Cela nous permet également d’utiliser plus facilement les instructions de programmation, qui elles en l’occurrence ne serait pas aussi simple à utiliser si on devait utiliser un langage de programmation. 

Nous avons les instructions suivantes :

  • l’affectation de variable,
  • la lecture / écriture,
  • les tests,
  • les boucles…

 

Ces instructions suffisent à décrire n’importe quel algorithme !

On retrouve également les algorithmes dans l’univers du numérique. En effet, les algorithmes sont des outils initialement conçus dans la résolution de problèmes arithmétiques comme la soustraction de plusieurs nombres. 

Les algorithmes numériques ont été formalisés bien plus tard avec l’arrivée de la logique mathématique.

 

4.3 Peu importe notre niveau en mathématiques

Comprendre les algorithmes c’est comprendre la logique d’un programme. Comme expliqué précédemment, il peut s’agir de programmes plus ou moins difficiles à comprendre.  Pour cela, nous utilisons un algorithme afin de détailler le problème. Mais cela peut s’avérer difficile si nous n’utilisons pas les bonnes méthodes. D’autant plus que tout le monde n’est pas parfait. 

En effet, il nous ait déjà arrivé d’entendre certaine opinion qui ont souvent servi d’excuses telles que : « j’arriverai jamais à comprendre les algorithmes tant que je ne comprendrais pas les mathématiques… ».

Certes, ceux qui comprennent les mathématiques auront moins de difficultés à développer leur logique, mais cela ne veut pas forcément dire qu’une personne ayant un faible niveau en mathématiques ne comprendra jamais les algorithmes. Faut-il être « bon en mathématiques » pour expliquer correctement son chemin à quelqu’un ?. Cela revient au même.

La maîtrise de l’algorithmique demande deux qualités complémentaires :

  • Avoir de la logique, car jusqu’à ce jour, rien ne permet d’obtenir le résultat attendu si on ne réfléchi pas un petit peu. C’est à ce moment là que survient la forme d’intelligence requise pour l’algorithmique. 

 

Bien entendu, il existe des personnes qui possèdent dès le début cette logique que d’autres n’ont pas forcément.  Mais les réflexes, cela s’obtient. Et ce qu’on appelle finalement l’intuition n’est que de l’expérience répétée que le raisonnement, au début pénible, finit par devenir instantané.

  • Être méthodique et rigoureux. En effet, muni d’un papier et d’un crayon, il est essentiel d’écrire une série d’instructions que l’on pense justes, afin de vérifier si le résultat obtenu est bien celui que l’on voulait. 

 

Il faut se mettre mentalement à la place de la machine qui va exécuter les instructions que vous avez écrit. Cette tâche ne demande pas la moindre idée d’intelligence, mais reste indispensable.

Et petit à petit à force de pratiquer, vous constaterez que vos algorithmes se résoudront rapidement sans que vous ayez besoin d’écrire quoique ce soit sur une feuille de papier. Bien sûr, cet apprentissage est long, et demande des heures de travail et de la patience. 

Il faut se forcer à suivre les étapes car la vérification méthodique, de chacun des algorithmes représente plus de la moitié du travail.

 

4.4 Les algorithmes et la programmation

Pourquoi devons-nous apprendre l’algorithmique pour apprendre à programmer ? C’est vrai, on pourrait simplement nous contenter d’apprendre la syntaxe d’un langage de programmation et d’écrire des lignes de codes pour concevoir une application web par exemple.

Comme nous avons pu l’expliquer précédemment, l’algorithme sera là pour nous aider à résoudre un problème car l’algorithmique exprime les instructions résolvant un problème donné indépendamment de la syntaxe de tel ou tel langage de programmation. En illustrant cela de la façon suivante : nous pouvons dire que, si un programme était une dissertation, l’algorithmique serait le plan. Et, vous savez qu’il vaut mieux faire dans un premier temps le plan puis rédiger le sujet.

Apprendre l’algorithmique, c’est apprendre à manipuler la structure logique d’un programme informatique. Cela s’applique à n’importe quel langage de programmation ; mais lorsqu’on programme dans un langage (en C, en Visual Basic, etc.) on doit en également prendre en compte les problèmes de syntaxe, ou de types d’instructions, propres à ce langage.

A cela, il faut penser aussi que des générations de programmeurs, souvent autodidactes, ayant directement appris à programmer dans tel ou tel langage, ne font pas clairement la différence entre ce qui relève de la structure logique générale de toute programmation (les règles fondamentales de l’algorithmique) et ce qui relève du langage particulier qu’ils ont appris. 

Ces programmeurs, non seulement ont beaucoup plus de mal à passer ensuite à un langage différent, mais encore écrivent bien souvent des programmes qui même s’ils sont justes, restent laborieux.

Historiquement, plusieurs types de notations ont permi de représenter les algorithmes :

  • Il y a eu notamment une représentation graphique, avec des carrés, des losanges, etc. qu’on appelait des organigrammes

 

Aujourd’hui, cette représentation est presque abandonnée. En effet, dès que l’algorithme commence à grossir un peu, cela ne devient plus pratique à prendre en main.

  • C’est pourquoi maintenant, on utilise la plupart du temps des pseudo-code, qui ressemble à un langage de programmation authentique dont on aurait évacué la plupart des problèmes de syntaxe. 

Ce pseudo-code est susceptible de varier légèrement d’un livre (ou d’un enseignant) à un autre. Ce qui peut se comprendre car le pseudo-code est purement conventionnel ; aucune machine n’est censée le reconnaître.

 

5. Un langage à la portée de tous

5.1 Les langages graphiques

Tout ce que l’on sait de la programmation, c’est que nous devons utiliser des langages informatiques nous permettant d’écrire une série d’instructions, qui seront compris par l’ordinateur. Cette manière de programmer s’applique en tapant des lignes de code et en exécutant son programme pour voir le résultat.

Au-delà de cette façon de programmer, il existe des langages informatiques permettant de créer des formes géométriques. On les appelle les langages graphiques. Parmi ces langages graphiques, nous retrouvons toujours certain langage qui permettent d’écrire des instructions (donc avec du code) et il y en a d’autres qui permettent de positionner des blocs graphiques. Ces blocs graphiques génèrent du code.

Il en existe quelques un mais nous allons parler plus précisément des langages Processing, LOGO, et Scratch. En effet, ces langages sont très intuitifs et permettent de comprendre la programmation de manière la plus simple. Mais parmi ces 3 langages graphiques, nous allons surtout nous appuyer sur Scratch.

En informatique, un langage de programmation visuel (VPL pour Visual Programming Language, en anglais) est un langage de programmation qui permet aux utilisateurs de créer des programmes en manipulant graphiquement les éléments du programme plutôt qu’en les spécifiant textuellement. 

Un VPL permet la programmation avec des expressions visuelles, des dispositions spatiales de texte et des symboles graphiques, utilisés soit comme éléments de syntaxe ou de notation secondaire. 

Par exemple, de nombreux VPL sont basés sur l’idée de « boîtes et flèches », où les boîtes ou autres objets d’écran sont traités comme des entités, reliées par des flèches, des lignes ou des arcs qui représentent des relations.

Attention, bien que les langages de programmation graphiques soient composés de boîtes, d’entités avec des liaisons par des flèches ou des lignes, il ne faut pas les confondre avec les langages modélisés (chapitre 1.6). Le langage Scratch ne sert pas à faire la même chose que le langage UML par exemple.

Il est important de faire la différence entre les deux. 

Nous avons d’une part les langages de programmation graphiques qui permettent de créer des programmes.

Et d’autres part les langages modélisés qui permettent de comprendre le problème d’un programme.

 

5.1.1 langages graphiques avec code

Langage Processing…

Processing est une bibliothèque Java inventée par Casey Reas et Benjamin Fry. Ce langage est basé sur la plate-forme Java, il permet d’ailleurs de programmer en langage Java.

Processing est le prolongement multimédia de l’environnement de programmation graphique développé par John Maeda au Media Lab du Massachusetts Institute of Technology.

Processing est tout particulièrement adapté à la création graphique interactive. Cet outil fonctionne sur Windows, Macintosh, Linux. Il existe également une version en Javascript de Processing, appelée Processing.js, cette version pouvant être exécuté dans un environnement HTML5 ou par Node.js.

Les programmes développés avec Processing peuvent être lus par les navigateurs web grâce au plug-in java, mais aussi sous forme d’applications indépendantes pour Windows, Mac OS X ou Linux.

Processing est un langage de programmation informatique libre et conçu pour : 

les arts des nouveaux médias, les arts électroniques et les communautés de design visuel. Ce langage a été développé dans le but d’apprendre les fondamentaux de la programmation informatique dans un contexte visuel.
L’un des objectifs de Processing est de permettre aux non-programmeurs de programmer grâce à la rétroaction visuelle. Le langage utilise une syntaxe simplifiée et une interface utilisateur graphique.

On peut écrire le message classique « Hello world » de cette manière :

et même ainsi : println(“Hello World!”);

Cependant, la méthode suivante est propre au fonctionnement de Processing :

Les gestionnaires setup() et draw() sont deux fonctions prédéfinies très importantes dans processing. 

  • La première, setup(), est exécutée une seule fois au lancement du programme. 
  • La seconde, draw() est lancée à intervalle régulier, par défaut dix fois par seconde.

 

Processing emploie un typage rigoureux et est sensible à la casse. La structure de ses fonctions de base (comparaisons, conditions, boucles, etc.) est familière pour les utilisateurs du C++ ou de Java.

Par exemple, une condition s’évalue ainsi :

et une boucle se construit de cette façon :

L’image ci-contre est une carte des résultats de l’élection présidentielle américaine de 2008. Le bleu désigne les états obtenus par Barack Obama, et le rouge désigne ceux obtenus par John McCain. L’extrait de code présent sur l’annexe (8.1.1) permet d’exécuter la carte avec les couleurs sur les différents états.

 

Langage LOGO…

Logo, du mot grec Logos « discours, parole, intelligence », repose sur deux idées liées à la fois par : un type d’environnement informatique, à partir d’un langage conçu dans une démarche de pédagogie, et un mode d’apprentissage sur le développement de la connaissance de l’enfant.

Logo est un langage de programmation orientée objet réflexif. Le Logo est généralement connu grâce à sa tortue mais est également capable d’utiliser des fichiers, des listes,… ce qui permet une approche des concepts de l’algorithmique.

Cependant le Logo est un langage de programmation puissant et complet. Pour utiliser ce langage, on utilise l’outil de développement MSWLogo.

Les jeunes enfants apprennent rapidement à déplacer la tortue en utilisant des mots particuliers qui sont intuitifs et faciles à mémoriser et comprendre. 

Par exemple, si vous tapez l’instruction « avance 50 » la tortue se déplace de 50 pas (par pixels). Si vous tapez l’instruction « droite 90 » la tortue tourne à droite de 90 degrés (dans le sens des aiguilles d’une montre). 

Dans MSWLogo, on tape ces instructions dans la ligne de commande de la fenêtre texte, la tortue se déplace dans la fenêtre graphique.

  • avance 50 est une instruction, c’est-à-dire quelque chose que le Logo est capable d’interpréter comme un ordre. Une instruction doit contenir la description exacte de ce que vous voulez que le Logo fasse pour vous.
  • Les mots qui comme avance et droite font partie du vocabulaire du langage Logo sont des noms de procédures. Une procédure est comme une recette décrivant une tâche à accomplir. Par exemple la procédure qui a pour nom avance a pour tâche de faire avancer la tortue.

 

En combinant les 2 instructions avance 50 et droite 90, il est facile de faire dessiner un carré à la tortue, sachant qu’elle se déplace en traçant un crayon de couleur : 

Sachez aussi qu’il existe des abréviations telles que : « avance » en « av » et « droite » en « dr »

Pour vous rendre le développement plus simple et arriver plus rapidement au dessin d’un carré, la procédure « répète », combine ces 2 instructions :

Une fois que le programme se termine, la tortue reprend son état initial, c’est-à-dire qu’elle occupe la même position et a le même cap (orientation).

Les procédures « pos » et « cap » permettent de le vérifier de la façon suivante :

Le symbole « >> » désigne qu’une valeur a été calculée par l’évaluateur Logo (exemple : la valeur [0 0]).

La valeur « [0 0] » représente une position, c’est-à-dire une paire de coordonnées avec les axes X et Y. Ici, cela indique une valeur au centre de l’écran.

La valeur du cap est donnée en degrés : 0 correspond à une orientation verticale vers le haut (le nord).

Le Logo permet de créer facilement des nouvelles procédures en les construisant à l’aide d’autres procédures. Voici un exemple de la façon dont on doit définir une procédure carré dont la tâche sera de dessiner notre carré de 50 pas de côté :

 

5.1.2 langages graphiques avec blocs

Langage Scratch…

Scratch est un langage de programmation graphique. Il possède une plateforme de développement d’apprentissage de codage composé de plus de 14,5 millions de projets partagés allant à la fois de l’animation à la simulation 3D. 

La plateforme a pu enregistrer 12 millions d’utilisateurs et ce chiffre ne cesse d’augmenter.

Les domaines d’utilisation de Scratch dépassent l’univers scolaire, mais une forte communauté d’étudiants, d’enseignants et de passionnés, partagent et exposent leurs projets, leurs créations et leurs développements sur le site de Scratch. Ce langage veut être un partage fondamental de la pédagogie.

En France, des « Coding goûters » sont organisés autour des outils Scratch avec une communauté particulière. Les « Coding goûters » sont des événements dans lesquels les enfants apprennent à coder en s’amusant avec leur parent, tout en mangeant des gâteaux et des bonbons.

En 2015 en France, la plateforme de développement Scratch apparaît dans les écoles avec les notions de programmation et de codage grâce à la nouvelle réforme des collèges.

Scratch est flexible, nous pouvons modifier le code du programme en cours d’exécution. Développé pour l’enseignement pour le monde informatique des enfants, il exécute avec une facilité des concepts de base de la programmation comme les affectations de variables, les conditions, les boucles, et surtout la l’utilisation des objets, comme les vidéos et les sons.

Scratch est graphique, le code de Scratch est gravé dans la langue maternelle de l’enfant (disponible dans une vingtaine de langues européennes) sous forme de briques en couleurs (par exemple les variables en rouge, les déplacements en bleu, les actions en jaune, et plus).

Scratch est libre et permet ainsi à l’enseignant de diffuser sa pédagogie par une interactivité divertissante des objets grâce à ces briques de couleurs.

Le langage Scratch est composé de plusieurs « briques » permettant d’exécuter une action précise. Il existe 10 catégories de briques différentes (rangés par couleurs) :

Couleur                    
Catégorie Mouvement Contrôle Événements Apparence Capteurs Sons Opérateurs Stylo Données Ajouter blocs

Le logiciel de développement de Scratch est facile à prendre en main, il est composé de plusieurs parties explicites pour développer dans de bonnes conditions.

Dans le premier espace (bloc situé à gauche), on peut retrouver les différentes briques de couleurs. Si on choisit la bleue, les différentes fonctions de cette catégorie apparaissent un peu en dessous dans le même bloc. Puis on peut assembler plusieurs briques graphiquement en les déplaçant dans le bloc du milieu. Ainsi nous formons un programme. Sur l’image ci-dessous, ce sont les briques de la catégorie jaune qui ont été sélectionnées et assemblées. Il est possible bien entendu de mélanger les couleurs.

Enfin, plutôt sur le côté droit, nous retrouvons 2 blocs. Celui du haut correspond au rendu du programme. Il est possible de le rendre animé s’il s’agit d’un jeux vidéo.

Puis, le bloc situé en dessous correspond à la bibliothèque contenant des objets graphiques à ajouter au programme.

 

 

6. Conclusion

6.1 Un domaine peu accessible à tous

L’étude que nous avons mené sur les langages de programmation nous a permi de comprendre certaine chose et ainsi, de déterminer plusieurs facteurs importants permettant la compréhension d’un langage de programmation.

A cela, nous avons noté d’une part que chaque langage de programmation possédait sa propre syntaxe de programmation. La prise en main d’un langage informatique prend du temps avant qu’il soit maîtrisé à la perfection mais cela ne suffit pas.

En effet, et nous en avons parlé lors d’un chapitre; avant de se lancer dans la programmation et de commencer à écrire ses premières lignes de code, il est essentiel de décomposer le problème à résoudre sous forme d’algorithme. Pour cela, il est possible d’utiliser un pseudo-code pour décrire le problème afin de trouver les meilleurs solutions possibles.

Dans ce chapitre, nous avons également pris en compte le fait que le domaine de la programmation en informatique n’est pas accessible à tous. En effet, et malheureusement, le monde n’est pas parfait. 

Nous retrouverons toujours des personnes qui auront ce déclic en programmation leur permettant de comprendre le problème instinctivement. Tandis qu’il y en a d’autres qui n’auront pas cette logique et auront besoin de plus de temps pour résoudre leur algorithme.

Une personne n’ayant jamais programmé aura besoin d’acquérir des compétences que ce soit personnelles, à l’école ou en entreprise mais devra surtout être patiente. Il est intéressant de savoir également que pour programmer, il faut avoir cette envie de développer et s’intéresser au monde de la programmation.

Mais il est vrai qu’à l’heure actuelle, de nombreuses personnes créent leur premier site internet pour mieux parler de leur entreprise ou de leur projet. Ces personnes n’ont pas forcément de compétences en informatique et pourtant, parviennent au bout de leur création à l’aide de l’importante documentation que nous pouvons retrouver sur internet ou encore grâce aux grandes communautés informatique, aux formations gratuites et aux tutoriels.

Bien qu’Internet propose un vaste contenu, une personne n’ayant jamais programmé pourra créer le strict minimum (grâce aux outils et extraits de code disponible en ligne) mais ne pourra pas aller au-delà.

 

6.2 Tout le monde n’a pas 25 ans

De nos jours, il existe de plus en plus de développeurs en informatique avec tout âge confondu. 

Nous pouvons retrouver d’anciens développeurs ayant connu les premiers langages informatique qui sont aujourd’hui âgés d’un peu plus de 60 ans. 

Il existe ensuite des développeurs qui sont encore professeurs pour les plus âgés (40 ans et plus) et bien entendu des apprentis professeurs et développeurs âgés de 25 à 30 ans. 

Nous retrouvons également des apprentis développeurs informaticiens, étudiants ou employés d’une entreprise. Et mieux encore, des jeunes adolescents qui s’initient à la programmation.

Une chose est sûr, si vous demandez à votre grand-mère (n’ayant jamais touché à l’informatique) de comprendre des lignes de code de programmation et de vous en écrire quelques unes, même en essayant d’apprendre à son rythme, il lui sera extrêmement difficile d’apprendre un langage de programmation. A moins que vous ayez une super mamie.

Comme nous l’avons dit précédemment, les seules personnes âgés aujourd’hui qui savent programmer, sont des personnes qui ont appris à programmer étant plus jeune.

Au cours des quinzes dernières années, une vague de développeurs informatique est apparue presque au même rythme que l’évolution d’internet. En effet, internet aujourd’hui permet de se documenter et de trouver des solutions à nos problèmes comme bon nous semble. 

Comparé à notre grand-mère, une personne âgée de 15 à 30 ans pourra se débrouiller en programmation même s’il n’en a jamais fait.

Une jeune personne aura plus de facilité à développer sa logique qu’une personne âgé. De plus, aujourd’hui, internet propose un contenu très important par rapport au début.

Bien que la maîtrise de la programmation demande de la logique, de la patience et de bonnes méthodes de travail, il faut noter aussi que l’âge d’une personne joue tout de même un jeu dans la compréhension de la programmation. Des personnes ayant une tranche d’âge allant de 15 à 30 ans auront en effet plus de facilité pour apprendre, comprendre et maîtriser des langages de programmation. 

Nous avons remarqué que depuis un peu moins de dix ans, la programmation commence à faire son apparition dans les collèges afin d’initier les jeunes élèves.

 

6.3 Une solution efficace

En tant que développeurs, nous aurions pensé à un langage informatique ou une méthode de programmation pouvant arriver un jour à révolutionner ce domaine. C’est-à-dire, un langage de programmation permettant de coder simplement, qu’il soit universel (qu’il s’adapte à toutes les plateformes Windows, MacOs, Linux), un langage qui soit clair et compréhensible au niveau de sa syntaxe (sans typages). 

Et que l’on ait à disposition une documentation plus que complète au point de créer par exemple une application web aussi performante qu’on l’aurait imaginé au départ.

Il est vrai que l’acquisition de la logique n’a pas été favorable à tout ceux qui ont débuté en programmation. 

La logique ne s’obtient pas forcément instantanément. Comme nous l’avons dit précédemment, il faut pratiquer, s’entraîner et au fil du temps on gagne en compétences et cette logique deviendra presque un réflex.

Heureusement, internet ne cesse d’évoluer et nous offre de plus en plus de contenu.  Et en ce concerne le problème que l’on peut rencontrer avec la logique, il faut savoir qu’il existe de plus en plus de méthode pour se familiariser plus facilement la logique. L’une d’entre elle consiste à utiliser des langages graphiques permettant, de manière graphique, de réaliser du code. 

Par exemple, le langage Flowcode est un langage graphique permettant d’écrire de simple programme en C de manière algorithmique.  

C’est-à-dire que l’on applique un algorithme qui est compilé en C et qui est exécuté directement. Au final, nous utilisons un langage difficile à appréhender mais la méthode de Flowcode permet de comprendre plus facilement la logique d’un programme et ainsi réaliser des applications d’une manière différente. Il en est de même pour le langage graphique Scratch. 

Son apprentissage facilite énormément le développement de sa logique et le fait qu’il soit enseigné dès le collège aide beaucoup les jeunes élèves.

 

6.4 Demain, que pourrait devenir la programmation ?

A l’aide de notre étude et au vu de l’évolution de la technologie actuelle, nous pouvons d’ores et déjà imaginer ce que la programmation pourrait devenir dans 10 ans. Nous avons pu retenir que les langages graphiques jouaient un bon rôle dans la compréhension de la programmation grâce notamment avec le langage Scratch enseigné dès le collège. 

Dans quelques années, les jeunes élèves au collège seront capables de développer leur logique plus rapidement. Les langages graphiques seront certainement de plus en plus utilisés et universels, et cela permettra certainement à quiconque de développer un programme comme s’il faisait une action dans la vie de tous les jours. 

Mais la maîtrise des langages de programmation dépend de divers éléments à ne pas négliger, ce qui nous laisse dire que les langages de programmation ne peuvent pas être compris par tous.