………..
Pourquoi Java ?
Tout langage de programmation de haut niveau renferme grosso modo les mêmes concepts. Chacun devient en quelque sorte, un dialecte différent pour un pouvoir d’expression (ce que l’on peut faire avec) très proche. Notre but est, qu’une fois les concepts de base de la programmation acquis via ce cours, et via la la pratique de Java, vous soyez capables de :
– vous former par vous même dans l’apprentissage d’un autre langage de programmation (dialecte)
– de programmer rapidement (parler ce dialecte) en gardant les mêmes techniques et reflexes déjà appris avec l’étude de Java.
Les avantages de Java :
– Il existe des environnements de développement gratuits que vous pouvez installer par vous mêmes,
– Java est fortement typé, ce qui signifie, que beaucoup d’erreurs sont détectée s automatiquement (et c’est essentiel pour un débutant)
– Java incorpore des nombreux traits de programmation de haut niveau : orienté objet, exceptions, polymorphisme, gestion de la mémoire, transparence des pointeurs.
– Java possède une sémantique precise
Les programmes
Les programmes servent à décrire les solutions d’un problème.
Qu’est-ce qu’un programme ?
– C’est la description d’une méthode mécanique (i.e, appliquable par une machine) de resolution d’un problème donné,
– Cette description est donnée par une suite d’instructions d’un langage de programmation.
– Ces instructions ont pour but de traiter et transformer les données du problème à resoudre, jusqu’à aboutir à une solution.
Un programme est en quelque sorte une méthode à suivre pour trouver les solutions, mais n’est pas une solution en soi.
Trouver les solutions : exécuter le programme sur les données du problème.
– Les traitements décrits par les instructions sont appliqués aux données (entrées),
– Les données ainsi transformées permettent d’aboutir aux solutions recherchées (sorties).
Les ordinateurs
Composants principaux :
– Unite centrale (CPU) ou processeur, pour le traitement des données et instructions logées en mémoire centrale. Capable d’exécuter un ensemble d’instructions dites instructions machine.
Il s’agit d’opérations simples telles que la lecture/écriture en mémoire centrale, opérations arithmétiques et logiques, comparaison des valeurs, branchement (saut) vers une adresse afin de poursuivre l’exécution, etc. Ces instructions sont codées en binaire (s’équences de 0 et de 1) et diffèrent dans chaque plateforme matérielle. Ainsi, une instruction qui s’exécute sur un processeur Intel/PC ne peut pas s’exécuter sur un processeur SPARC/Sun .
1.4 Les langages de programmation
Il en existe deux groupes principaux :
– Langages de haut niveau. (Ex : C, Ada, Pascal, Cobol, Java, OCaml, Python). Ils fournissent des nombreuses constructions sophistiquées qui facilitent l’écriture des programmes. Ils sont comprehensibles par les humains, mais pas directement exécutables par les machines. Un pro-gramme écrit en langage de haut niveau devra être traduit en langage machine avant son exécution.
– Langages de bas niveau. Ce sont les différents ensembles d’instructions propres à chaque machine (SPARC/Sun, Intel/PC, etc). Appelés également langages cibles ou natifs. Ils sont codés en binaire et directement exécutables par chaque machine.
Langages de haut niveau
Un langage de programmation est composé de trois ensembles : un ensemble de types de données, un ensemble de règles de construction syntaxiques des instructions et un ensemble de regles sémantiques.
Ces trois composants décrivent toutes les possibilités des données et instructions dans un programme, ainsi que leur comportément à l’exécution.
– Les types des donnees : utilisées pour décrire et modéliser les données. Exemple : Le type int en Java sert à modéliser les nombres entiers.
– La syntaxe : règles de formation textuelle des instructions et des programmes. Exemple : pour écrire l’expression mathématique 1 ≤ x ≤ 7, une syntaxe possible en Java est : 1 <= x && x <= 7.
1.5 La production des programmes
La fabrication d’un programme suit les phases suivantes :
1. Analyse et Conception : On établit précisement le problème à resoudre, les données de départ et ce que l’on souhaite obtenir en résultat, puis, on raisonne sur la manière de représenter les données du problème, et sur une méthode de resolution. Cette méthode est ensuite énoncée sous forme de suite de pas à accomplir pour aboutir aux solutions : c’est l’algorithme de resolution du probléme.
1.6 Traducteurs de programmes
Chaque langage de programmation est équipé d’un logiciel de traduction des programmes écrits dans ce langage. Entre autres traitements, il traduit chaque instruction de haut niveau en plusieurs instructions machine équivalentes.
– code source : fichier texte avec les instructions à traduire.
– code cible : fichier (binaire ou texte, selon le type de traduction) résultat de la traduction.
– code objet : fichier binaire avec des instructions machine.
– pseudo-code ou byte-code : fichier texte contenant du code intermédiare d’assez bas niveau,mais non exécutable directement par la machine.
Il existe deux sortes de traducteurs : les interpretes et les compilateurs.
Interpreteurs
Pour chaque instruction du programme, ils réalisent, l’une après l’autre, traduction en code puis exécution. Ce mécanisme a pour inconvénient de limiter le type d’analyses réalisées sur le programme source, mais surtout, il autorise l’exécution d’un programme même s’il présente des erreurs de syntaxe ou de sémantique. Cependant, ce mécanisme est bien adapte aux programmes precompilés vers du pseudo-code. C’est le cas de Java.
Compilation en Java
Un des objectifs de Java, est de permettre l’écriture des programmes independants des plateformes matérielles d’exécution. C’est le defi de la programmation distribuée que d’envoyer des programmes à travers le réseau pour leur exécution à distance. Dans ce contexte, la compilation vers du code natif n’a pas grand sens. C’est pourquoi en Java, on compile vers un code intermédiaire ou byte-code..
……….