L'informatique est le domaine d'activité scientifique, technique et industriel concernant le traitement automatique de l'information par des machines : des systèmes embarqués, des ordinateurs, des robots, des automates, etc.
Ces champs d'application peuvent être séparés en deux branches, l'une, de nature théorique, qui concerne la définition de concepts et modèles, et l'autre, de nature pratique, qui s'intéresse aux techniques concrètes d'implantation et de mise en oeuvre sur le terrain. Certains domaines de l'informatique peuvent être très abstraits, comme la complexité algorithmique, et d'autres peuvent être plus proches d'un public profane. Ainsi par exemple, la théorie des langages demeure un domaine davantage accessible aux professionnels formés (description des ordinateurs et méthodes de programmation), tandis que les métiers liés aux interfaces homme-machine sont accessibles à un plus large public.
Le terme « informatique » résulte de la combinaison des deux premières syllabes du terme « information » et des deux dernières syllabes du terme « automatique » ; il désigne à l'origine l'ensemble des activités liées à la conception et à l'emploi des ordinateurs pour traiter des informations. Dans le vocabulaire universitaire américain, il désigne surtout l'informatique théorique : un ensemble de sciences formelles qui ont pour objet d'étude la notion d'information et des procédés de traitement automatique de celle-ci, l'algorithmique. Par extension, la mise en application de méthodes informatiques peut concerner des problématiques annexes telles que le traitement du signal, la calculabilité ou la théorie de l'information.
« La science informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes1. »
Par ses applications, la mise en pratique de méthodes issues de l'informatique a donné naissance, dans les années 1950, au secteur d'activité des technologies de l'information et de la communication. Ce secteur industriel et commercial est lié à la fois aux procédés (logiciel, architectures de systèmes) et au matériel (électronique, télécommunication). Le secteur fournit également de nombreux services liés à l'utilisation de ses produits : développement, maintenance, enseignement, assistance, surveillance et entretien.
En 1957, le terme « Informatik » est créé par l'ingénieur Karl Steinbuch dans son essai intitulé « Informatik: Automatische Informationsverarbeitung », pouvant être rendu en français par « Informatique : traitement automatique de l'information »2.
En mars 1962, le terme « Informatique » est utilisé pour la première fois, en France, par Philippe Dreyfus, ancien directeur du Centre national de calcul électronique de Bull3, pour son entreprise Société d'Informatique Appliquée (SIA). Ce néologisme est formé par la combinaison du terme « information », réduit à « infor », et du terme « automatique », réduit à « matique »4,5.
Le même mois, Walter F. Bauer inaugure la société américaine Informatics Inc., qui dépose son nom et poursuit toutes les universités qui utilisent ce mot pour décrire la nouvelle discipline, les forçant à se rabattre sur computer science, bien que les diplômés qu'elles forment soient pour la plupart des praticiens de l'informatique plutôt que des scientifiques au sens propre. L’Association for Computing Machinery, la plus grande association d'informaticiens au monde, approche même Informatics Inc. afin de pouvoir utiliser le mot informatics en remplacement de l'expression computer machinery, mais l'entreprise décline la proposition. La société Informatics Inc., achetée par Sterling Software[réf. nécessaire], cesse ses activités en 1986.
En 1966, en France, l'usage officiel du mot est consacré par l'Académie française pour désigner la « science du traitement de l'information », et largement adopté dès cette époque dans la presse, l'industrie et le milieu universitaire.
En juillet 1968, le ministre fédéral de la Recherche scientifique d'Allemagne, Gerhard Stoltenberg, prononce le mot Informatik lors d'un discours officiel sur la nécessité d'enseigner cette nouvelle discipline dans les universités de son pays ; on emploie ce même terme pour nommer certains cours dans les universités allemandes[réf. nécessaire]. Le mot informatica fait alors son apparition en Italie et en Espagne, de même qu’informatics au Royaume-Uni.
Le mot « informatique » est ensuite repris par la Compagnie Générale d'Informatique (CGI), créée en 19696.
Dans l'usage contemporain, le substantif « informatique » devient un mot polysémique qui désigne autant le domaine industriel en rapport avec l'ordinateur (au sens de calculateur fonctionnant avec des algorithmes), que la science du traitement des informations par des algorithmes.
Les expressions « science informatique », « informatique fondamentale » ou « informatique théorique » sont utilisées pour désigner sans ambiguïté la science, tandis que « technologies de l'information » ou « technologies de l'information et de la communication » désignent le secteur industriel et ses produits. Au niveau des utilisateurs, la manipulation des appareils est parfois assimilée à de la conduite automobile, comme veut le faire entendre l'expression European Computer Driving License (traduction littérale : « permis de conduire un ordinateur »)7,8.
Il existe plusieurs termes en anglais pour désigner l'informatique :
Le mot information est également souvent utilisé pour désigner le secteur industriel des technologies de l'information, en anglais information technology9.
En anglais, l'expression computer science est utilisée pour désigner à la fois la science fondamentale (informatique) et la science appliquée (ainsi que l'étude de sa mise en œuvre)10,11,12, par opposition à information technology (autrefois data processing), qui regroupe toutes les techniques permettant de traiter les informations.
Depuis des millénaires, l'Homme a créé et utilisé des outils l'aidant à calculer (abaque, boulier...). Pour réaliser des calculs complexes, il a également mis au point des algorithmes. Parmi les algorithmes les plus anciens, on compte des tables datant de l'époque d'Hammourabi (environ -1750).
Si les machines à calculer évoluent constamment depuis l'Antiquité, elles ne permettent pas de traiter un algorithme: c'est l'homme qui doit exécuter les séquences de l'algorithme, au besoin en s'aidant de machines de calculs (comme pour réaliser les différentes étapes d'une division euclidienne). En 1642, Blaise Pascal imagine une machine à calculer13, la Pascaline, qui fut commercialisée et dont sept exemplaires existent dans des musées comme celui des arts et métiers14 et dont deux sont dans des collections privées (IBM en possède une)15. Mais il faudra attendre la définition du concept de programmation (illustrée en premier par Joseph Marie Jacquard avec ses métiers à tisser à cartes perforées, suivi de Boole et Ada Lovelace pour ce qui est d'une théorie de la programmation des opérations mathématiques) pour disposer d'une base permettant d'enchaîner des opérations élémentaires de manière automatique.
Une autre phase importante fut celle de la mécanographie. Dans les années 1880, Herman Hollerith, futur fondateur d'IBM, invente une machine électromécanique destinée à faciliter le recensement en stockant les informations sur une carte perforée16. Les trieuses et les tabulatrices furent utilisées à grande échelle pour la première fois par les Américains lors du recensement de 1890 aux États-Unis, suite à l'afflux des immigrants dans ce pays dans la seconde moitié du XIXe siècle.
La première entreprise européenne qui a développé et commercialisé des équipements mécanographiques a été créée par l'ingénieur norvégien Fredrik Rosing Bull dans les années 1930 qui s'est installé en Suisse, avant de venir en France pour s'attaquer au marché français des équipements mécanographiques. Pendant la Seconde Guerre mondiale, René Carmille utilisait des machines mécanographiques Bull.
Les Allemands étaient équipés de machines mécanographiques déjà avant la Seconde Guerre mondiale. Ces équipements étaient installés par ateliers composés de trieuses, interclasseuses, perforatrices, tabulatrices et calculatrices connectées à des perforateurs de cartes. Les traitements étaient exécutés à partir de techniques électromécaniques utilisant aussi des lampes radio comme les triodes. La chaleur dégagée par ces lampes attirait les insectes, et les bugs (terme anglais pour insectes, francisé en « bogue ») étaient une cause de panne courante. Ce n'est que suite à l'invention du transistor en 1947 et son industrialisation dans les années 1960, que l'informatique moderne a pu émerger.
L'informatique moderne commence avant la Seconde Guerre mondiale, lorsque le mathématicien Alan Turing pose les bases d'une théorisation de ce qu'est un ordinateur, avec son concept de machine universelle de Turing. Turing pose dans son article les fondements théoriques de ce qui sépare la machine à calculer de l'ordinateur : la capacité de ce dernier à réaliser un calcul en utilisant un algorithme.
Après la Seconde Guerre mondiale, avec l'invention du transistor, puis du circuit intégré quelques années plus tard, il devient possible d'envisager de remplacer les relais électromécaniques et les tubes à vide qui équipent les machines à calculs pour les rendre à la fois plus petites, plus complexes, plus économiques et plus fiables. L'architecture de von Neumann, qui est une mise en application de la machine universelle de Turing, peut alors être utilisée : les machines dépassent la simple faculté de calculer et peuvent commencer à accepter des programmes plus évolués, de nature algorithmique.
Les sciences informatiques sont récentes et doivent être clairement détachées des aspects purement calculatoires et matériels. Lorsque l'on recherche les prémices antiques de l'informatique, c'est plutôt les méthodes algorithmiques telles que le Crible d'Ératosthène ou la Division euclidienne qui peuvent être considérées en tant que filiation.
La série de livres The Art of Computer Programming de Donald Knuth, publiée à partir des années 1960, fait ressortir les aspects mathématiques de la programmation informatique17. Edsger Dijkstra, Niklaus Wirth et Christopher Strachey travaillent et publient dans le même sens. Ces travaux préfigurent d'importants développements en matière de langage de programmation.
L'amélioration de l'expressivité des langages de programmation a permis la mise en œuvre d'algorithmes toujours plus sophistiqués, appliqués à des données de plus en plus variées. La miniaturisation des composants et la réduction des coûts de production, associées à une augmentation de la demande en traitements des informations de toutes sortes (scientifiques, financières, commerciales, etc.), ont eu pour conséquence une diffusion de l'informatique dans toutes les couches de l'économie ainsi que dans la vie quotidienne des individus.
Des études en psychologie cognitive et en ergonomie réalisées dans les années 1970 par Xerox ont amené les outils informatiques à être équipés d'interfaces graphiques en vue de simplifier leur utilisation.
La démocratisation de l'utilisation d'Internet - réseau basé sur ARPANET - depuis 1995, a amené les outils informatiques à être de plus en plus utilisés dans une logique de réseau18 comme moyen de télécommunication, à la place des outils tels que la poste ou le téléphone. Elle s'est poursuivie avec l'apparition des logiciels libres 19 puis des réseaux sociaux et des outils de travail collaboratif (dont Wikipédia n'est qu'un des nombreux exemples).
En France, l'informatique n'a commencé à vraiment se développer que dans les années 1960, avec le Plan Calcul. Depuis lors, les gouvernements successifs ont mené des politiques diverses en faveur de la Recherche scientifique, l'Enseignement, la tutelle des Télécommunications, la nationalisation d'entreprises clés.
La science informatique est une science formelle, dont l'objet d'étude est le calcul20 au sens large, c'est-à-dire non pas exclusivement arithmétique, mais en rapport avec tout type d'information que l'on peut représenter de manière symbolique par une suite de nombres. Ainsi, par exemple, textes, séquences d'ADN, images, sons ou formules logiques peuvent faire l'objet de calculs. Selon le contexte, on parle d'un calcul, d'un algorithme, d'un programme, d'une procédure, etc.
Un algorithme est une manière systématique de procéder pour arriver à calculer un résultat21. Un des exemples classiques est l'algorithme d'Euclide du calcul du « Plus grand commun diviseur » (PGCD) qui remonte au moins à 300 ans av. J.C., mais il s'agit déjà d'un calcul complexe. Avant cela, le simple fait d'utiliser un abaque demande d'avoir réfléchi à un moyen systématique (et correct) d'utiliser cet outil pour réaliser des opérations arithmétiques.
Des algorithmes existent donc depuis l'Antiquité, mais ce n'est que depuis les années 1930, avec les débuts de la théorie de la calculabilité, que les scientifiques se sont posé les questions « qu'est-ce qu'un modèle de calcul ? » et « est-ce que tout est calculable ? » et ont tenté d'y répondre formellement.
Il existe de nombreux modèles de calcul, mais les deux principaux sont la « machine de Turing » et le « lambda calcul ». Ces deux systèmes formels définissent des objets qui peuvent représenter ce qu'on appelle des procédures de calcul, des algorithmes ou des programmes. Ils définissent ensuite un moyen systématique d'appliquer ces procédures, c'est-à-dire de calculer.
Le résultat le plus important de la calculabilité est probablement la thèse de Church22, qui postule que tous les modèles de calcul ont la même puissance. C'est-à-dire qu'il n'existe pas de procédure que l'on pourrait exprimer dans un modèle mais pas dans un autre.
Un deuxième résultat fondamental est l'existence de fonctions incalculables, une fonction étant ce que calcule une procédure ou un algorithme (ceux-ci désignant plutôt comment faire le calcul). On peut montrer qu'il existe des fonctions, bien définies, pour lesquelles il n'existe pas de procédure pour les calculer. L'exemple le plus connu étant probablement le problème de l'arrêt, qui montre qu'il n'existe pas de machine de Turing calculant si une autre machine de Turing donnée s'arrêtera (et donc donnera un résultat) ou non.
Selon la thèse de Church-Turing, tous les modèles de calcul sont équivalents, par conséquent ce résultat s'applique aussi aux autres modèles, ce qui inclut les programmes et logiciels que l'on peut trouver dans les ordinateurs courants. À noter qu'il existe un lien très fort entre les fonctions que l'on ne peut pas calculer et les problèmes que l'on ne peut pas décider (voir Décidabilité et indécidabilité).
L'algorithmique est l'étude comparative des différents algorithmes. Tous les algorithmes ne se valent pas : le nombre d'opérations nécessaires pour arriver à un même résultat diffère d'un algorithme à l'autre. Ce nombre d'opération, appelé la complexité algorithmique est le sujet de la théorie de la complexité des algorithmes, qui constitue une préoccupation essentielle en algorithmique.
La complexité algorithmique sert en particulier à déterminer comment le nombre d'opérations nécessaires évolue en fonction du nombre d'éléments à traiter (la taille des données) :
Nous arrivons maintenant à un problème ouvert fondamental en informatique : « P est-il égal à NP ? »23
En simplifiant beaucoup : P est « l'ensemble des problèmes pour lesquels on connaît un algorithme efficace » et NP « l'ensemble des problèmes pour lesquels on connaît un algorithme efficace pour vérifier une solution à ce problème ».
Et en simplifiant encore plus : existe-t-il des problèmes difficiles ? Des problèmes pour lesquels il n'existe pas d'algorithme efficace.
Cette question est non seulement d'un grand intérêt théorique mais aussi pratique. En effet un grand nombre de problèmes courants et utiles sont des problèmes que l'on ne sait pas résoudre de manière efficace. C'est d'ailleurs un des problèmes du prix du millénaire et le Clay Mathematical Institute s'est engagé à verser un million de $ aux personnes qui en trouveraient la solution.
Comme nous venons de le dire : c'est un problème ouvert, donc formellement il n'y a pas de réponse reconnue. Mais, en pratique, la plupart des spécialistes s'accordent pour penser que P≠NP, c'est-à-dire qu'il existe effectivement des problèmes difficiles qui n'admettent pas d'algorithme efficace.
Ce type de problème de complexité algorithmique est directement utilisé en cryptologie. En effet les méthodes de cryptologie modernes reposent sur l'existence d'une fonction facile à calculer qui possède une fonction réciproque difficile à calculer. C'est ce qui permet de chiffrer un message qui sera difficile à décrypter (sans la clé).
La plupart des chiffrements (méthode de cryptographie) reposent sur le fait que la procédure de Décomposition en produit de facteurs premiers n'a pas d'algorithme efficace connu. Si quelqu'un trouvait un tel algorithme il serait capable de décrypter la plupart des cryptogrammes facilement. On sait d'ailleurs qu'un calculateur quantique en serait capable, mais ce genre d'ordinateur n'existe pas, en tout cas pour le moment.
Plus récemment, et à la frontière avec la logique mathématique : la correspondance de Curry-Howard a jeté un pont entre le monde des démonstrations formelles et celui des programmes.
Citons aussi l'étude de la mécanisation des procédés de calcul et de pensée qui a permis de mieux comprendre la réflexion humaine, et apporté des éclairages en psychologie cognitive et en linguistique, par exemple à travers la discipline du traitement automatique du langage naturel24,25.
Le terme technologies de l'information et de la communication désigne un secteur d'activité et un ensemble de biens qui sont des applications pratiques des connaissances scientifiques en informatique ainsi qu'en électronique numérique, en télécommunication, en sciences de l'information et de la communication et en cryptologie.
Le système de numération binaire est le système utilisé aujourd'hui dans tous les appareils en électronique numérique pour représenter l'information sous une forme qui peut être manipulée par des composants électroniques.
Les appareils informatiques sont équipés de quatre unités qui servent respectivement à entrer des informations, les stocker, les traiter puis les faire ressortir de l'appareil, selon les principes de la machine de Turing et l'architecture de von Neumann. Les informations circulent entre les pièces des différentes unités par des lignes de communication - les bus. Le processeur est la pièce centrale qui anime l'appareil en suivant les instructions des programmes qui sont enregistrés à l'intérieur.