« Wikilivres:Portail développement logiciel » : différence entre les versions

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
→‎Paradigmes de programmation : export dans une ss section
m +export vers ss section des langages
Ligne 45 : Ligne 45 :
{{Sous section|nom=Programmation/Paradigmes de programmation|couleur=lightblue|couleurbord=black|couleurfond=white}}
{{Sous section|nom=Programmation/Paradigmes de programmation|couleur=lightblue|couleurbord=black|couleurfond=white}}


=== Langages de programmation ===
{{Sous section|nom=Programmation/Langages de programmation|couleur=lightblue|couleurbord=black|couleurfond=white}}

5. [[Langages de programmation]]
====A====
*[[Programmation ABAP|ABAP]]
*[[Programmation Actionscript|Actionscript]]
*[[Programmation Algol|Algol]]
*[[Programmation Alloy|Alloy]]
*[[Programmation Ada|Ada]]
*[[Programmation APL|APL]]
*[[Programmation Applescript|Applescript]]
*[[Programmation ASP|ASP]] {{25}}
*[[Programmation Assembleur|Assembleur]]
**[[Programmation Assembleur x86|x86]]
**[[Programmation Assembleur PowerPC|PowerPC]]
**[[Programmation Assembleur Itanium|Itanium]]
**[[Programmation Assembleur Sparc|Sparc]]
**[[Programmation Assembleur Mips|Mips]]
**[[Programmation Assembleur ARM|ARM]]
**[[Programmation Assembleur Alpha|Alpha]]
**[[Programmation Assembleur HP-PA|HP-PA]]
**[[Programmation Assembleur SuperH|SuperH]]
**[[Programmation Assembleur 68000|68000]]
**[[Programmation Assembleur Z80|Z80]]
**[[Programmation Assembleur 370|370]]
*[[Programmation Awk|Awk]]
====B à D====
*[[Programmation Basic|Basic]]
**[[Programmation GWBasic|GWBasic]]
**[[Programmation Visual Basic|Visual Basic]]
**[[Programmation Basic .NET|Basic .NET]]
**[[Programmation Basic Casio|Basic Casio]]
*[[Programmation BCPL|BCPL]]
*[[Programmation Brainfuck|Brainfuck]]
*[[Programmation C|C]] {{50}}
*[[Programmation Caml|Caml]]
*[[Programmation Coldfusion|Coldfusion]]
*[[Programmation C plus plus|C++]] {{25}}
*[[Programmation C plus plus debutants|C++ (débutants)]]
*[[Programmation C sharp|C#]]
*[[Programmation Cobol|Cobol]]
*[[Programmation Common Lisp|Common Lisp]]
*[[Programmation CSS|CSS]]
*[[Programmation Curl|Curl]]
*[[Programmation D|D]]

====E à L====
*[[Programmation Eiffel|Eiffel]]
*[[Programmation Erlang|Erlang]]
*[[Programmation Euclid|Euclid]]
*[[Programmation Euler|Euler]]
*[[Programmation Euphoria|Euphoria]]
*[[Programmation Forth|Forth]]
*[[Programmation Fortran|Fortran]]
*[[Programmation Haskell|Haskell]]
*[[Programmation HTML|HTML]] {{50}}
*[[Programmation IDL|IDL]]
*[[Programmation Java|Java]] {{50}}
**[[Programmation Java Bytecode|Bytecode]]
*[[Programmation JavaScript|JavaScript]]
*[[Programmation Jscript|Jscript]]
*[[Programmation Joy|Joy]]
*[[Programmation L4G|Langages de quatrième génération]]
**[[Programmation L4G NSDK|NSDK]]
**[[Programmation L4G Powerbuilder|Powerbuilder]]
**[[Programmation L4G Progress|Progress]]
**[[Programmation L4G Windev|Windev]]
*[[Programmation LaTeX|LaTeX]] {{25}}
*[[Programmation Lingo|Lingo]]
*[[Programmation Lisp|Lisp]]
*[[Programmation Logo|Logo]] {{75}}
*[[Programmation LSE|LSE]]
*[[Programmation Lua|Lua]]

====M à Q====
*[[Programmatin Maple|Maple]]
*[[Programmation Mathematica|Mathematica]]
*[[Programmation MathML|MathML]]
*[[Programmation ML|ML]]
*[[Programmation Modula|Modula]]
*[[Programmation Natural|Natural]]
*[[Programmation Nice|Nice]]
*[[Programmation Nosica|Nosica]]
*[[Programmation Oberon|Oberon]]
*[[Programmation Objective C|Objective C]]
*[[Programmation Objective Caml|Objective Caml]]
*[[Programmation Objective C plus plus|Objective C++]]
*[[Programmation Objectpal|Objectpal]]
*[[Programmation Occam|Occam]]
*[[Programmation Pascal|Pascal]]
*[[Programmation Perl|Perl]]
*[[Programmation PHP|PHP]] {{25}}
*[[Programmation Prolog|Prolog]]
*[[Programmation Python|Python]] {{25}}
====R, S====
*[[Programmation Rebol|Rebol]]
*[[Programmation Rexx|Rexx]]
*[[Programmation RPG|RPG]]
*[[Programmation Ruby|Ruby]]
*[[Programmation Scheme|Scheme]]
*[[Programmation SGML|SGML]]
*[[Programmation Simula|Simula]]
*[[Programmation Smalltalk|Smalltalk]]
*[[Programmation Shellscript|Shellscript]]
**[[Programmation bash|bash]]
**[[Programmation csh|csh]]
**[[Programmation ksh|ksh]]
**[[Programmation sash|sash]]
**[[Programmation tcsh|tcsh]]
**[[Programmation zsh|zsh]]
**[[Programmation dos|dos]] (ligne de commande [[MS-DOS]] / [[Windows]])
*[[Programmation SQL|SQL]] {{25}}
**[[Programmation MySQL|MySQL]]
**[[Programmation SQL PL/SQL|PL/SQL]] (Oracle)
**[[Programmation SQL T/SQL|T/SQL]] (Sybase/Microsoft SQL Server)
**[[Programmation SQL PL/pgSQL|PL/pgSQL]] (PostgreSQL)
*[[SyncML]] {{25}}
====T à Z====
*[[Programmation Tcl|Tcl]]
*[[Programmation TeX|TeX]]
*[[Programmation VBscript|VBscript]] {{25}}
*[[Programmation VRML|VRML]]
*[[Programmation WML|WML]]
*[[Programmation X3D|X3D]]
*[[Programmation XHTML|XHTML]]
*[[Programmation XML|XML]]



===Programmation Tuning et optimisation===
===Programmation Tuning et optimisation===

Version du 20 janvier 2006 à 18:10

Programmation

Cet ouvrage a pour but de permettre d'apprendre la programmation, toute la programmation, rien que la programmation. Il a vocation de permettre d'apprendre tous les langages, méthodes, outils et techniques en rapport avec la programmation.

Pour ce faire, nous étudierons les différentes étapes d'un projet logiciel, et ce du général au particulier :

  • Gestion de projet, car de nos jours, il ne peut plus y avoir de projet informatique cohérent sans organisation.
  • L'analyse, étape indispensable permettant de déterminer ce qui doit être fait.
  • Les techniques de programmation, à travers les différents paradigmes de programmation, l'algorithmique, les objectifs de la programmation, l'étude détaillée de chaque langage, l'optimisation et les différents outils disponibles.

Table des matières

Introduction

1. Le processus de développement


Il existe différentes classes de langage qui fonctionnent à partir de concepts et de schémas de pensées différents. Ainsi, le langage C est assez éloigné du langage Lisp qui lui-même ne partage guère les structures de base du langage SmallTalk.

On parle de paradigme pour désigner un ensemble de concept particulier.

Les [[../Programmation impérative|langages de programmation impératifs]] représentent le premier paradigme de programmation utilisé : ce sont les langages qui héritent de l'Algol, dont le C est le meilleur représentant.

Bien qu'inventé en même temps, le [[../Programmation orientée objet|paradigme orienté objet]] a connu le succès avec le C++ et, au début du XXIème siècle grâce aux langages Java et C#.

Les autres paradigmes, comme par exemple la [[../Programmation fonctionnelle|programmation fonctionnelle]], sont moins utilisés. Ils comprennent le LISP, le Scheme et le Prolog. Le logo est également un langage respectant le paradigme fonctionnel.

Certains langages sont multi-paradigmes, ainsi le Python offre les trois paradigmes présentés dans cette introduction.


On distingue six générations de langages de programmation. Les langages des générations 1 et 2 sont appelés langages de bas niveau (orienté machine) alors que les langages des générations 3 à 6 sont appelés langages de haut niveau (orienté problème). Les langages de haut niveau sont indépendants du processeur ce qui n’est pas le cas des langages de bas niveau.

Bas niveau

Génération 1

  • Langage machine dépendant du processeur
  • Suite d’instructions binaires directement introduites (programmation directe) dans la mémoire du processeur
  • Les instructions du processeur sont appelées code opérationnel

Code opérationnel- Intel pentium- Motorola 6800

Exemple pour un processeur 8086 :

BD 41 00
BE 65 41
01 D8
38 47 03

La programmation de la machine par un humain à ce niveau nécessite d'avoir le manuel du processeur. Les erreurs de frappe arrivent facilement.

Génération 2

  • Même jeu d’instructions que le langage machine, mais sous forme symbolique (mnémoniques) plus compréhensible pour l’homme
  • Les instructions sont converties (programmation indirecte) en langage machine par un programme (assembleur)

Exemple pour un processeur 8086 :

MOV BP,41h
MOV SI,4165h
ADD AX,BX
CMP [BX+3],AL

Les langages assembleurs plus évolués permettent d'utiliser des commentaires et possèdent des fonctionnalités facilitant la vie du développeur, lui évitant des calculs manuels et des erreurs potentielles. Par exemple, il est possible de définir un symbole/nom/label représentant l'adresse où se trouve la déclaration puis l'utiliser directement comme opérande (adresse de saut ou adresse de l'emplacement d'une donnée) dans les instructions à la place d'une adresse calculée manuellement.

Haut niveau

Génération 3

  • Langages indépendants du processeur
  • Proches des langues parlées (anglais)
  • Langages procéduraux, descriptions des opérations à effectuer pour résoudre un problème.

Les premiers langages de programmation étaient écrits sur des cartes perforées. Celles-ci ne permettaient pas de coder les lettres en minuscules, ce qui explique que les mots-clés des premiers langages de programmation soient en capitales (Fortran, COBOL, Basic, Pascal).

Langages : C, Pascal, Fortran (Formula Translation), Cobol (Common Business Oriented Language), Basic, Wlangage

Génération 4

  • Langages descriptifs
  • Description de ce que l’on désire faire mais pas de la manière de le faire
  • Très fortement lié à un domaine (base de données, tables de calcul)

Langages : Uniface, Informix, Oracle, Lotus

Génération 5

  • Langages descriptifs pour la programmation de systèmes experts

Langages : Prolog

Génération 6

  • [[../Programmation orientée objet|Orienté objet]]
  • Toutes les informations nécessaires à la résolution d’un problème sont réunies dans un objet

Langages : Ada, C++, C#, Delphi, Eiffel, Java, Object Pascal, PHP, Python, Smalltalk

Références


Programmation Tuning et optimisation

6. Tuning et optimisation

Environnements et outils

7. Environnements et outils

Annexes

A. Glossaire
B. Auteurs