La programmation informatique, également appelée codage, est le processus de création de logiciels.Mais qu’est-ce qu’un logiciel exactement, et comment est-il fabriqué ?
Qu’est-ce qu’un logiciel ?
Un logiciel est un ensemble d’instructions à exécuter par un ordinateur.
C’est un peu comme une recette de cuisine :
- Casser un œuf dans un bol
- Mélanger l’œuf
- Mettre une poêle sur feu moyen
- Graisser la poêle
- Verser les œufs dans la poêle
- Et ainsi de suite
Au lieu de manipuler des ingrédients, les ordinateurs manipulent des données.Les instructions à l’intérieur d’un logiciel ressemblent davantage à ceci :
- Chargez certaines données
- Chargez d’autres données
- Transformez ces deux bits de données en données de résultat
- Envoyez les données de résultat au moniteur pour affichage
- Envoyez les données de résultat sur Internet
- Et ainsi de suite
Ces instructions sont généralement appelées code source.Le code source est juste un ensemble d’instructions écrites qu’un ordinateur peut comprendre.
À quoi ressemble le code source ?
Le code n’est pas écrit dans les langues naturelles, comme l’anglais.
Voici un petit programme écrit dans un langage appelé Ruby :
require 'open-uri'require 'json'FRONT_PAGE_URL = 'https://reddit.com/r/all.json'front_page = JSON.load(open(FRONT_PAGE_URL).read)top_post = front_pageputs 'The top post on reddit is:'puts top_postputs top_post
Ce programme affiche le top post actuel sur reddit, comme ceci :
The top post on reddit is:One of my favourite things about working in the ski fieldshttp://i.imgur.com/hWwlWgI.jpg
Voici exactement le même programme, écrit dans un langage similaire appelé Python :
import urllib, jsonFRONT_PAGE_URL = "https://reddit.com/r/all.json"front_page = json.loads(urllib.urlopen(FRONT_PAGE_URL).read())top_post = front_pageprint "The top post on reddit is:"print top_postprint top_post
Voici le même programme dans un langage d’apparence différente appelé Clojure:
(require ')(def front-page-url "https://reddit.com/r/all.json")(let ))] (println "The top post on reddit is:") (println (get top-post "title")) (println (get top-post "url")))
Comme vous pouvez le voir, les langages de programmation sont très différents des langages naturels.Les langages naturels sont ambigus, avec de nombreuses couches de sens différentes – sarcasme, insinuation, et ce genre de choses.C’est très bien si vous communiquez avec un humain, mais les ordinateurs ne comprennent rien de tout cela.
Les ordinateurs prennent tout au pied de la lettre.Si vous demandez à un ordinateur si un nombre est pair ou impair, il répondra toujours « oui. » Je ne plaisante même pas – voici le code Ruby :
puts (5.odd? or 5.even?)
Ce code affiche » true « , ce qui est techniquement correct.Le nombre cinq est soit impair, soit pair, mais ce n’est pas ce que je voulais dire.
C’est plus qu’écrire du code
Écrire du code n’est qu’une partie de la création de logiciels.
Les gros logiciels – comme Windows, OS X et les jeux à gros budget – sont constitués de millions et de millions de lignes de code.Lorsque vous avez autant de code, vous devez planifier la façon dont le code sera écrit, et comment les différentes parties du code fonctionneront ensemble.Ce type de planification est appelé conception ou architecture.Sur les grands projets, beaucoup de temps est consacré à la conception et à l’architecture avant que le code ne soit écrit.
Une autre grande partie de la fabrication de logiciels est le test.Ce n’est pas parce que le code a été écrit qu’il est correct.Le code peut parfois planter, ou donner des résultats erronés, ou se figer, ou un certain nombre d’autres problèmes.Pour essayer d’éviter ces problèmes, les développeurs de logiciels professionnels ont différentes façons de tester leur code.
Puis il y a le débogage, qui est le processus d’investigation, de diagnostic et de correction des problèmes dans le code source.C’est une compétence en soi.