Les algorithmes et les structures de données sont au cœur de l'informatique. La théorie du calcul s'intéresse aux modèles abstraits de calcul et aux classes générales de problèmes pouvant être résolus grâce à eux. La cryptographie et la sécurité informatique étudient les moyens de communication sécurisée et de prévention des failles de sécurité . L'infographie et la géométrie algorithmique traitent de la génération d'images. La théorie des langages de programmation examine différentes manières de décrire les processus de calcul, tandis que la théorie des bases de données s'intéresse à la gestion des référentiels de données. L'interaction homme-machine étudie les interfaces d'interaction entre les humains et les ordinateurs, et le génie logiciel se concentre sur la conception et les principes du développement logiciel. Des domaines tels que les systèmes d'exploitation , les réseaux et les systèmes embarqués étudient les principes et la conception des systèmes complexes . L'architecture des ordinateurs décrit la construction des composants informatiques et des équipements informatisés. L'intelligence artificielle et l'apprentissage automatique visent à synthétiser les processus orientés vers un but, tels que la résolution de problèmes, la prise de décision, l'adaptation à l'environnement, la planification et l'apprentissage, présents chez l'humain et l'animal. En intelligence artificielle, la vision par ordinateur vise à comprendre et à traiter les données d'images et de vidéos, tandis que le traitement automatique du langage naturel vise à comprendre et à traiter les données textuelles et linguistiques.
La question fondamentale de l'informatique est de déterminer ce qui peut et ne peut pas être automatisé. Le prix Turing est généralement reconnu comme la plus haute distinction en informatique.


Les fondements de ce qui allait devenir l'informatique sont antérieurs à l'invention de l' ordinateur numérique moderne . Des machines permettant d'effectuer des calculs numériques fixes, comme l' abaque , existent depuis l'Antiquité et facilitent des opérations telles que la multiplication et la division. Les algorithmes de calcul existent également depuis l'Antiquité, avant même le développement d'équipements informatiques sophistiqués.
Wilhelm Schickard a conçu et construit la première calculatrice mécanique fonctionnelle en 1623. En 1673, Gottfried Leibniz a présenté une calculatrice mécanique numérique, appelée « Stepped Reckoner » . Leibniz peut être considéré comme le premier informaticien et théoricien de l'information, notamment parce qu'il a documenté le système binaire, bien que Thomas Harriot l'ait déjà fait des décennies auparavant. En 1820, Thomas de Colmar a lancé l'industrie de la calculatrice mécanique en inventant son arithmomètre simplifié , la première machine à calculer suffisamment robuste et fiable pour un usage quotidien en bureau. Charles Babbage a commencé la conception de la première calculatrice mécanique automatique , sa machine à différences , en 1822, ce qui lui a finalement donné l'idée de la première calculatrice mécanique programmable , sa machine analytique . Il commença à développer cette machine en 1834 et, « en moins de deux ans, il avait esquissé nombre des caractéristiques essentielles de l'ordinateur moderne ». « Une étape cruciale fut l'adoption d'un système de cartes perforées dérivé du métier à tisser Jacquard », la rendant infiniment programmable. En 1843, lors de la traduction d'un article français sur la machine analytique, Ada Lovelace écrivit, dans l'une des nombreuses notes qu'elle incluait, un algorithme pour calculer les nombres de Bernoulli , considéré comme le premier algorithme publié spécifiquement conçu pour une implémentation sur ordinateur. Vers 1885, Herman Hollerith inventa la tabulatrice , qui utilisait des cartes perforées pour traiter des informations statistiques ; son entreprise fut par la suite intégrée à IBM . Après Babbage, et ignorant ses travaux antérieurs, Percy Ludgate publia en 1909 le second des deux seuls modèles de machines analytiques mécaniques de l'histoire. En 1914, l'ingénieur espagnolLeonardo Torres Quevedo publia ses Essais sur l'automatique [ conçut, inspiré par Babbage, une machine à calculer électromécanique théorique qui devait être commandée par un programme en lecture seule. Cet article introduisit également l'idée de l' arithmétique à virgule flottante En 1920, pour célébrer le centenaire de l'invention de l'arithmomètre, Torres présenta à Paris l' Arithmomètre électromécanique , un prototype démontrant la faisabilité d'une machine analytique électromécanique sur laquelle il était possible de saisir des commandes et d'imprimer automatiquement les résultats. En 1937, cent ans après le rêve impossible de Babbage, Howard Aiken convainquit IBM, qui fabriquait toutes sortes d'équipements à cartes perforées et était également présente sur le marché des calculatrices , de développer sa calculatrice programmable géante, l' ASCC/Harvard Mark I , basée sur la machine analytique de Babbage, qui utilisait elle-même des cartes perforées et une unité centrale de traitement . Une fois la machine achevée, certains la saluèrent comme « le rêve de Babbage devenu réalité ».
Dans les années 1940, avec le développement de machines informatiques nouvelles et plus puissantes telles que l' ordinateur Atanasoff-Berry et l'ENIAC , le terme « ordinateur » en vint à désigner les machines plutôt que leurs prédécesseurs humains. Lorsqu'il devint évident que les ordinateurs pouvaient être utilisés pour bien plus que de simples calculs mathématiques, le domaine de l'informatique s'élargit à l'étude du calcul en général. En 1945, IBM fonda le Laboratoire de calcul scientifique Watson à l'Université Columbia de New York . Cette ancienne maison de fraternité rénovée, située dans l'ouest de Manhattan, fut le premier laboratoire d'IBM consacré à la recherche fondamentale. Ce laboratoire est le précurseur de la division Recherche d'IBM, qui exploite aujourd'hui des centres de recherche dans le monde entier. Finalement, l'étroite collaboration entre IBM et l'Université Columbia joua un rôle déterminant dans l'émergence d'une nouvelle discipline scientifique, Columbia proposant l'un des premiers cours universitaires crédités en informatique dès 1946. L'informatique commença à s'établir comme discipline universitaire distincte dans les années 1950 et au début des années 1960. Le premier programme de diplôme en informatique au monde, le Cambridge Diploma in Computer Science , a débuté au laboratoire informatique de l'université de Cambridge en 1953. Le premier département d'informatique aux États-Unis a été créé à l'université Purdue en 1962. Depuis que les ordinateurs pratiques sont devenus disponibles, de nombreuses applications de l'informatique sont devenues des domaines d'études distincts à part entière.
Étymologie et étendue
Aux débuts de l'informatique, plusieurs termes désignant les praticiens du domaine ont été proposés (avec une pointe d'humour) dans les Communications of the ACM : « turingineer » , « turologist » , « flow-charts-man » , « applied meta-mathematician » et « applied epistemologist » . Trois mois plus tard, dans la même revue, le terme « comptologist » a été suggéré, suivi l'année suivante par « hypologist » . Le terme « computics » a également été proposé. En Europe, on utilise souvent des termes dérivés de traductions contractées de l’expression « information automatique » (par exemple, «langues slaves et hongrois ) ou grec . Des termes similaires ont également été adoptés au Royaume-Uni (comme à la School of Informatics de l’Université d’Édimbourg ). Aux États-Unis, en revanche, l’informatique est associée à l’informatique appliquée, ou à l’informatique dans le contexte d’un autre domaine.
Une citation populaire, souvent attribuée à Edsger Dijkstra (mais dont il n'est certainement pas l'auteur) , affirme que « l'informatique ne concerne pas plus les ordinateurs que l'astronomie ne concerne les télescopes » La conception et le déploiement des ordinateurs et des systèmes informatiques relèvent généralement de disciplines autres que l'informatique. Par exemple, l'étude du matériel informatique est généralement considérée comme faisant partie du génie informatique , tandis que l'étude des systèmes informatiques commerciaux et de leur déploiement est souvent appelée technologies de l'information ou systèmes d'information . Cependant, des échanges d'idées ont eu lieu entre les différentes disciplines liées à l'informatique. La recherche en informatique recoupe également fréquemment d'autres disciplines, telles que les sciences cognitives , la linguistique , les mathématiques , la physique , la biologie , les sciences de la Terre , les statistiques , la philosophie et la logique .
L'informatique est considérée par certains comme ayant une relation beaucoup plus étroite avec les mathématiques que de nombreuses autres disciplines scientifiques, certains observateurs allant jusqu'à dire qu'elle est une science mathématique. Les débuts de l'informatique ont été fortement influencés par les travaux de mathématiciens tels que Kurt Gödel , Alan Turing , John von Neumann , Rózsa Péter , Stephen Kleene et Alonzo Church , et il subsiste aujourd'hui un échange d'idées fructueux entre les deux domaines dans des secteurs comme la logique mathématique , la théorie des catégories , la théorie des domaines et l'algèbre .
La relation entre l'informatique et le génie logiciel est un sujet de controverse, encore compliqué par les désaccords sur la signification du terme « génie logiciel » et sur la définition même de l'informatique. David Parnas , s'inspirant des relations entre d'autres disciplines scientifiques et d'ingénierie, a affirmé que l'informatique se concentre principalement sur l'étude des propriétés du calcul en général, tandis que le génie logiciel se concentre sur la conception de calculs spécifiques pour atteindre des objectifs pratiques, faisant ainsi de ces deux disciplines distinctes mais complémentaires.
Les aspects académiques, politiques et financiers de l'informatique dépendent généralement de l'orientation du département : mathématiques ou ingénierie. Les départements d'informatique à dominante mathématique et à orientation numérique envisagent un alignement avec les sciences computationnelles . Les deux types de départements s'efforcent généralement de créer des ponts entre les disciplines, au moins sur le plan de la formation, sinon sur l'ensemble de la recherche.
Philosophie
L'informatique est une discipline empirique. On pourrait la qualifier de science expérimentale, mais, à l'instar de l'astronomie, de l'économie et de la géologie, certaines de ses formes uniques d'observation et d'expérience ne correspondent pas à une conception restrictive de la méthode expérimentale. Il n'en reste pas moins qu'il s'agit d'expériences. Chaque nouvelle machine construite est une expérience. La construction même de la machine pose une question à la nature ; et nous cherchons la réponse en observant la machine en fonctionnement et en l'analysant par tous les moyens analytiques et de mesure disponibles.
Il a depuis été avancé que l'informatique peut être classée comme une science empirique puisqu'elle utilise des tests empiriques pour évaluer la correction des programmes . Cependant, la définition des lois et théorèmes de l'informatique (s'ils existent) et de la nature des expériences qui y sont menées reste problématique. Les partisans d'une classification de l'informatique comme discipline de l'ingénierie soutiennent que la fiabilité des systèmes informatiques est étudiée de la même manière que celle des ponts en génie civil et des avions en génie aérospatial . Ils affirment également que, tandis que les sciences empiriques observent l'existant, l'informatique observe le potentiel. Enfin, alors que les scientifiques découvrent des lois par l'observation, aucune loi propre n'a été établie en informatique, qui s'intéresse plutôt à la création de phénomènes.
Les partisans de la classification de l'informatique comme discipline mathématique soutiennent que les programmes informatiques sont des réalisations physiques d'entités et de programmes mathématiques pouvant être raisonnés de manière déductive grâce à des méthodes mathématiques formelles . Les informaticiens Edsger W. Dijkstra et Tony Hoare considèrent les instructions des programmes informatiques comme des phrases mathématiques et interprètent la sémantique formelle des langages de programmation comme des systèmes axiomatiques mathématiques .
Paradigmes de l'informatique
Plusieurs informaticiens ont plaidé pour la distinction de trois paradigmes distincts en informatique. Peter Wegner a soutenu que ces paradigmes sont la science, la technologie et les mathématiques . Le groupe de travail de Peter Denning a proposé qu'il s'agit de la théorie, de l'abstraction (modélisation) et de la conception . Amnon H. Eden les a décrits comme le « paradigme rationaliste » (qui considère l'informatique comme une branche des mathématiques, prédominant en informatique théorique et recourant principalement au raisonnement déductif), le « paradigme technocratique » (que l'on retrouve dans les approches d'ingénierie, notamment en génie logiciel) et le « paradigme scientifique » (qui aborde les artefacts informatiques selon la perspective empirique des sciences naturelles , identifiable dans certaines branches de l'intelligence artificielle ) . L'informatique se concentre sur les méthodes de conception, de spécification, de programmation, de vérification, d'implémentation et de test des systèmes informatiques créés par l'homme
Champs
Informatique théorique
Le célèbre problème P = NP?, l'un des problèmes du prix du millénaire , est un problème ouvert dans la théorie du calcul.
Théorie de l'information et du codage
| Théorie du codage | Capacité du canal | théorie algorithmique de l'information | théorie de la détection du signal | complexité de Kolmogorov |
Structures de données et algorithmes
théorie des langages de programmation et méthodes formelles
Les méthodes formelles constituent une technique mathématique particulière pour la spécification , le développement et la vérification des systèmes logiciels et matériels . Leur utilisation pour la conception logicielle et matérielle repose sur l'idée que, comme dans d'autres disciplines de l'ingénierie, une analyse mathématique appropriée contribue à la fiabilité et à la robustesse d'une conception. Elles forment un socle théorique important pour le génie logiciel, notamment lorsque la sûreté et la sécurité sont en jeu. Les méthodes formelles sont un complément utile aux tests logiciels, car elles permettent d'éviter les erreurs et fournissent un cadre de test. Pour une utilisation industrielle, un support utilitaire est nécessaire. Cependant, leur coût élevé limite généralement leur utilisation au développement de systèmes critiques et à haute intégrité , où la sûreté et la sécurité sont primordiales. Les méthodes formelles peuvent être décrites comme l'application d'un large éventail de concepts fondamentaux de l'informatique théorique , en particulier le calcul logique , les langages formels , la théorie des automates et la sémantique des programmes , mais aussi les systèmes de types et les types de données algébriques, aux problèmes de spécification et de vérification des logiciels et du matériel.
| sémantique formelle | Théorie des types | Conception de compilateurs | Langages de programmation | vérification formelle | Démonstration automatisée de théorèmes |
informatique appliquée
Infographie et visualisation
| Infographie 2D | animation par ordinateur | Rendu | Réalité mixte | réalité virtuelle | Modélisation 3D |
Traitement de l'image et du son
| Algorithmes FFT | Traitement d'images | Reconnaissance vocale | Compression des données | imagerie médicale | Synthèse vocale |
Sciences informatiques, finance et ingénierie
| Analyse numérique | Physique computationnelle | Chimie computationnelle | Bioinformatique | Neuroinformatique | Psychoinformatique | informatique médicale | Ingénierie informatique | musicologie computationnelle |
interaction homme-machine
| Informatique affective | Interface cerveau-ordinateur | Conception centrée sur l'humain | informatique physique | informatique sociale |
génie logiciel
Intelligence artificielle
Systèmes informatiques
Architecture et microarchitecture des ordinateurs
Calcul simultané, parallèle et distribué
Réseaux informatiques
Bases de données et exploration de données
Découvertes
Le philosophe de l'informatique Bill Rapaport a noté trois grandes idées de l'informatique :
- L'intuition de Gottfried Wilhelm Leibniz , George Boole , Alan Turing , Claude Shannon et Samuel Morse : un ordinateur n'a besoin de traiter que de deux objets pour représenter « n'importe quoi ».
- Toutes les informations concernant un problème calculable peuvent être représentées en utilisant uniquement 0 et 1 (ou toute autre paire bistable pouvant basculer entre deux états facilement distinguables, tels que « marche/arrêt », « magnétisé/démagnétisé », « haute tension/basse tension », etc.).
- L'intuition d' Alan Turing : un ordinateur n'a besoin d'effectuer que cinq actions pour faire « n'importe quoi ».
- Chaque algorithme peut être exprimé dans un langage pour ordinateur composé de seulement cinq instructions de base :
- se déplacer d'une position vers la gauche ;
- Déplacez-vous d'un emplacement vers la droite ;
- lire le symbole à l'emplacement actuel ;
- imprimer 0 à l'emplacement actuel ;
- Imprimer 1 à l'emplacement actuel.
- Chaque algorithme peut être exprimé dans un langage pour ordinateur composé de seulement cinq instructions de base :
- Trois règles suffisent pour combiner un ensemble d'instructions de base en instructions plus complexes :
- séquence : faites d'abord ceci, puis cela ;
- sélection : SI tel ou tel cas est le cas, ALORS faites ceci, SINON faites cela ;
- Répétition : TANT QUE telle ou telle situation est la vôtre, FAITES ceci.
- Les trois règles de l'intuition de Boehm et Jacopini peuvent être encore simplifiées grâce à l'utilisation de goto (ce qui signifie qu'elles sont plus élémentaires que la programmation structurée ).
- Trois règles suffisent pour combiner un ensemble d'instructions de base en instructions plus complexes :
De nombreuses langues offrent la prise en charge de plusieurs paradigmes , ce qui fait de la distinction une question de style plutôt que de capacités techniques.