Programmer

Programmer

Programmation informatique

Page d'aide sur l'homonymie Pour les articles homonymes, voir Programmation (homonymie).

La programmation dans le domaine informatique est l'ensemble des activités qui permettent l'écriture des programmes informatiques. C'est une étape importante de la conception de logiciel (voire de matériel, cf. VHDL).

Pour écrire le résultat de cette activité, on utilise un langage de programmation.

La programmation représente usuellement le codage, c’est-à-dire la rédaction du code source d'un logiciel. On utilise plutôt le terme développement pour dénoter l'ensemble des activités lié à la création d'un logiciel.

Sommaire

Une brève histoire de la programmation

La première machine programmable (c’est-à-dire machine dont les possibilités changent quand on modifie son "programme") est probablement le métier à tisser de Jacquard, qui a été réalisé en 1801. La machine utilisait une suite de cartons perforés. Les trous indiquaient le motif que le métier suivait pour réaliser un tissage ; avec des cartes différentes le métier produisait des tissages différents. Cette innovation a été ensuite améliorée par Herman Hollerith d'IBM pour le développement de la fameuse carte perforée d'IBM.

En 1936, la publication de l'article fondateur de la science informatique On Computable Numbers with an Application to the Entscheidungsproblem[1] par Alan Mathison Turing allait donner le coup d'envoi à la création de l'ordinateur programmable. Il y présente sa machine de Turing, le premier calculateur universel programmable, et invente les concepts et les termes de programmation et de programme.

Les premiers programmes d'ordinateurs étaient réalisés avec un fer à souder et un grand nombre de tubes à vide (plus tard, des transistors). Les programmes devenant plus complexes, cela est devenu presque impossible, parce qu'une seule erreur rendait le programme entier inutilisable. Avec les progrès des supports de données, il devient possible de charger le programme à partir de cartes perforées, contenant la liste des instructions en code binaire spécifique à un type d'ordinateur particulier. La puissance des ordinateurs augmentant, on les utilisa pour faire les programmes, les programmeurs préférant naturellement rédiger du texte plutôt que des suites de 0 et de 1, à charge pour l'ordinateur d'en faire la traduction lui-même. Avec le temps, de nouveaux langages de programmation sont apparus, faisant de plus en plus abstraction du matériel sur lequel devaient tourner les programmes. Ceci apporte plusieurs facteurs de gains : ces langages sont plus faciles à apprendre, un programmeur peut produire du code plus rapidement, et les programmes produits peuvent tourner sur différents types de machines.

La fin des programmeurs ?

De tous temps, on a prédit « la fin des programmeurs ».

Dans les années 60, les langages symboliques comme AUTO-CODE, Cobol et Fortran ont en effet mis fin - en grande partie - à la programmation de bas niveau tel que l'assembleur. Il semblait alors clair que n'importe qui était capable d'écrire du code du type

multiply MONTANT-HT by TAUX-TVA giving MONTANT-TAXES.
add MONTANT-HT, MONTANT-TAXES giving MONTANT-TTC.

ou

RDELTA = SQRT(B**2 - 4*A*C)
X1 = (-B + RDELTA) / (2*A)

plutôt que des dizaines de lignes cryptiques comme

movl    %esp, %ebp
subl    $24, %esp
flds    12(%ebp)
fmuls   12(%ebp)
flds    8(%ebp)
flds    .LC0
fmulp   %st, %st(1)
fmuls   16(%ebp)
fsubrp  %st, %st(1)
fstpl   (%esp)
call    sqrt
fstps   -4(%ebp)
flds    -4(%ebp)
fsubs   12(%ebp)
flds    8(%ebp)
fadd    %st(0), %st
fdivrp  %st, %st(1)

Pourtant il a vite fallu se rendre compte que la programmation ne se limitait pas au codage, et que la conception d'applications était un vrai métier qui ne s'improvise pas.

Dans les années 80, la micro-informatique a souvent conduit à une informatisation sauvage des entreprises, dont le service informatique débordé n'arrivait pas à satisfaire les demandes (qui ne correspondaient d'ailleurs pas forcément aux vrais besoins des utilisateurs finaux). D'où la réalisation d'applications bricolées par des stagiaires « petit génie » en Basic et autres macros de tableurs, répondant à un besoin ponctuel, mais créant de fait un système d'information parallèle non maintenu. Dans cette catégorie, on peut également partiellement ranger les applications développées avec des L4G par des utilisateurs non formés. Il est évident que ce type d'outil (dont MS Access est un descendant) permet à un utilisateur non formé de réaliser de petites applications qu'il n'aurait pas entreprises autrement, et à un utilisateur compétent de développer très rapidement d’importantes applications, mais elles n'ont pas le pouvoir magique de faire l'analyse et la conception automatiquement dans les mains d'un utilisateur novice.

Phases de création d'un programme

Conception

Articles détaillés : Conception de logiciel et Algorithmique.

La phase de conception définit le but du programme. Si on fait une rapide analyse fonctionnelle d'un programme, on détermine essentiellement les données qu'il va traiter (données d'entrée), la méthode employée (appelée l'algorithme), et le résultat (données de sortie). Les données d'entrée et de sortie peuvent être de nature très diverses. On peut décrire la méthode employée pour accomplir le but d'un programme à l'aide d'un algorithme. La programmation procédurale et fonctionnelle est basée sur l'algorithmique. On retrouve en général les mêmes fonctionnalités de base :

Pour la programmation impérative

Article détaillé : Programmation impérative.
"Si"
Si prédicat
Alors faire ceci
Sinon faire cela
"Tant que"
Tant que prédicat
Faire ...
"Pour"
Pour variable allant de borne inférieur à borne supérieur
Faire ...

Codage

Article détaillé : Langage de programmation.

Une fois l'algorithme défini, l'étape suivante est de coder le programme. Le codage dépend de l'architecture sur laquelle va s'exécuter le programme, de compromis temps-mémoire, et d'autres contraintes. Ces contraintes vont déterminer quel langage de programmation utiliser pour "convertir" l'algorithme en code source.

Transformation du code source

Le code source n'est (presque) jamais utilisable tel quel. Il est généralement écrit dans un langage "de haut niveau", compréhensible pour l'homme, mais pas pour la machine.

Compilation

Articles détaillés : Compilation (informatique) et Machine virtuelle.

Certains langages sont ce qu'on appelle des langages compilés. En toute généralité, la compilation est l'opération qui consiste à transformer un langage source en un langage cible. Dans le cas d'un programme, le compilateur va transformer tout le texte représentant le code source du programme, en code compréhensible pour la machine, appelé code machine.

Dans le cas de langages dits compilés, ce qui est exécuté est le résultat de la compilation. Une fois effectuée, l'exécutable obtenu peut être utilisé sans le code source.

Il faut également noter que le résultat de la compilation n'est pas forcément du code machine correspondant à la machine réelle, mais peut être du code compris par une machine virtuelle (c'est à dire un programme simulant une machine), auquel cas on parlera de bytecode. C'est par exemple le cas en Java. L'avantage est que, de cette façon, un programme peut fonctionner sur n'importe quelle machine réelle, du moment que la machine virtuelle existe pour celle-ci.

Dans le cas d'une requête SQL, la requête est compilée en une expression utilisant les opérateurs de l'algèbre relationnelle. C'est cette expression qui est évaluée par le système de gestion de bases de données.

Interprétation

Article détaillé : Interpretation (informatique).

D'autres langages ne nécessitent pas de phase spéciale de compilation. La méthode employée pour exécuter le programme est alors différente. Le programme entier n'est jamais compilé. Chaque ligne de code est compilée "en temps réel" par un programme. On dit de ce programme qu'il interprète le code source. Par exemple, python est un langage interprété.

Cependant, ce serait faux de dire que la compilation n'intervient pas. L'interprète produit le code machine, au fur et à mesure de l'exécution du programme, en compilant chaque ligne du code source.

Avantages, inconvénients

Les avantages généralement retenus pour l'utilisation de langages "compilés", est qu'ils sont plus rapides à l'exécution que des langages interprétés, car l'interprète doit être lancé à chaque exécution du programme, ce qui mobilise systématiquement les ressources.

Traditionnellement, les langages interprétés offrent en revanche une certaine portabilité (la capacité à utiliser le code source sur différentes plate-formes), ainsi qu'une facilité pour l'écriture du code. En effet, il n'est pas nécessaire de passer par la phase de compilation pour tester le code source.

Appellation impropre

Il faut noter qu'on parle abusivement de langages compilés ou interprétés. En effet, le caractère compilé ou interprété ne dépend pas du langage, qui n'est finalement qu'une grammaire et une certaine sémantique. D'ailleurs, certains langages, comme ruby, peuvent être utilisés interprétés ou compilés.

Néanmoins, l'usage qu'on fait des langages est généralement fixé.

Test du programme

Article détaillé : Test (informatique).

C'est l'une des étapes les plus importantes de la création d'un programme. En principe, tout programmeur se doit de vérifier chaque partie d'un programme, de le tester. Il existe différents types de test. On peut citer en particulier:

Il convient de noter qu'il est parfois possible de vérifier un programme informatique, c'est à dire prouver, de manière plus ou moins automatique, qu'il assure certaines propriétés.

Pratiques

Techniques de programmation

Notes et références

Voir aussi

Wikibooks-logo-fr.png

Wikibooks propose un ouvrage abordant ce sujet : la programmation.

  • Portail de la programmation informatique Portail de la programmation informatique
Ce document provient de « Programmation informatique ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Programmer de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • programmer — [ prɔgrame ] v. tr. <conjug. : 1> • 1917; de programme, d apr. l angl. to program 1 ♦ Inclure dans un programme (cinéma, radio, télévision). Programmer une émission pour les enfants. Émission programmée à une heure de grande écoute. 2 ♦ (v …   Encyclopédie Universelle

  • programmer — pro‧gram‧mer [ˈprəʊgræmə ǁ ˈproʊgræmər] noun [countable] 1. COMPUTING someone whose job involves writing instructions for computers to perform particular tasks: • a labor shortage, particularly in trained computer programmers ˈsystems ˌprogrammer …   Financial and business terms

  • Programmer —   [engl.], Programmierer …   Universal-Lexikon

  • programmer — 1890, agent noun from PROGRAM (Cf. program). Meaning person who programs computers is attested from 1948 …   Etymology dictionary

  • Programmer — For other uses, see Programmer (disambiguation). Coder redirects here. For other uses, see encoder. A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one… …   Wikipedia

  • programmer */ — UK [ˈprəʊˌɡræmə(r)] / US [ˈproʊˌɡræmər] noun [countable] Word forms programmer : singular programmer plural programmers computing someone whose job is to create computer programs …   English dictionary

  • programmer — also programer noun Date: circa 1889 one that programs: as a. a person who prepares and tests programs for devices (as computers) b. one that programs a mechanism c. one that prepares an instructional program d. a person who plans or prepares… …   New Collegiate Dictionary

  • Programmer — Programmiergerät Programmiergeräte dienen dem Einschreiben von Daten in programmierbare IC Bausteine in der Elektronik. Bausteine sind : PROMs, EPROMs, EEPROMs, Flashs, PALs, PLDs …   Deutsch Wikipedia

  • programmer — noun /ˈpɹəʊɡɹæmə,ˈpɹoʊɡɹæmɚ/ a) One who designs software. The EPROM programmer burns the data into the EPROM chip. When programming is completed, remove the EPROM chip and plug it into the circuit... b) One who decides which programs will be… …   Wiktionary

  • programmer — noun ADJECTIVE ▪ lead (AmE), senior ▪ experienced, skilled, talented ▪ freelance ▪ computer …   Collocations dictionary

  • programmer — Synonyms and related words: AFTRA, DJ, MC, anchor man, announcer, automatic technician, broadcaster, commentator, computer engineer, computer programmer, computer technician, computer technologist, control engineer, cybernetic technologist,… …   Moby Thesaurus

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”