Qu'est-ce que la programmation informatique? Définition du développement logiciel.

Mon fils de cinq ans, Ramy, m'a approché un jour alors que je travaillais à domicile et m'a demandé: «Qu'est-ce que tu fais maman?»

«Je travaille», ai-je répondu.

Il a regardé l'écran de mon ordinateur portable et a demandé à nouveau: "Mais que faites-vous ?"

Je me suis arrêté et j'ai commencé à y réfléchir. Je suis développeur web et je programme en JavaScript. Comment expliquer cela à un enfant de cinq ans?

«J'écris des instructions pour l'ordinateur et l'ordinateur fait ce que je lui demande de faire. Cela s'appelle la programmation », ai-je expliqué. Ramy eut l'air perplexe.

J'ai continué: "Par exemple, je peux donner à l'ordinateur des instructions pour ajouter deux nombres et il me donnera la réponse." J'ai écrit une fonction qui a ajouté 2 + 2 et lui ai montré la réponse sur mon écran. Ses yeux s'illuminèrent.

À partir de là, j'ai commencé à réfléchir à ce qu'est la programmation ? Que se passe-t-il réellement sous le capot? Lorsque j'ai commencé à apprendre à coder en 2017 sur freeCodeCamp, j'ai utilisé l'éditeur de code intégré sur le site Web et je voyais les résultats. Cependant, je ne comprenais pas vraiment la magie qui se passait dans les coulisses.

J'ai commencé à faire des recherches et voici quelques-uns des termes que j'ai recherchés: «Qu'est-ce que la programmation informatique? Qu'est-ce qu'un logiciel? » Il y a plus de 600 millions de résultats de recherche sur Google pour "Qu'est-ce que la programmation informatique?" C'est un peu comme descendre un terrier de lapin - cela peut être compliqué et accablant.

Je voulais mettre sur pied une introduction complète à ce qu'est la programmation informatique et le développement de logiciels pour les débutants. Je commencerai par la programmation informatique et je couvrirai ensuite les langages de programmation informatique. Ensuite, je parlerai du développement de logiciels et de logiciels. Enfin, je vais passer aux tendances actuelles et à l'avenir de la programmation informatique.

Si vous envisagez de faire une transition dans le monde de la programmation ou si vous souhaitez simplement apprendre à coder, cela vous donnera un aperçu général, sans (trop!) Jargon technique.

Juste une chose à noter: vous pouvez utiliser les mots «développeur» et «programmeur» pour désigner quelqu'un qui écrit du code.

Qu'est-ce que la programmation informatique?

Sur Wikipédia, la définition de «Programmation informatique» est:

«La programmation informatique est le processus de conception et de construction d'un programme informatique exécutable pour obtenir un résultat informatique spécifique.»

Mais qu'est ce que ça veut dire?

Un ordinateur en lui-même n'est pas intelligent. Oui, ils sont puissants et ont le potentiel d'effectuer des tâches beaucoup plus rapidement qu'un humain. Mais les ordinateurs ont besoin d'un humain pour écrire des instructions et leur dire quoi faire.

Par conséquent, la programmation est le processus d'écriture de ces instructions. Nous utilisons un langage de programmation pour ce faire. Ces instructions sont traduites dans un format lisible qu'un ordinateur peut comprendre. Les instructions sont ensuite exécutées par l'ordinateur.

Programmation de la préparation d'une tasse de thé

Prenons par exemple la préparation d'une tasse de thé. Si vous deviez donner des instructions sur la façon de préparer une tasse de thé, cela ressemblerait à ceci:

  1. Faire bouillir de l'eau
  2. Versez de l'eau chaude dans une tasse avec un sachet de thé
  3. Laissez le thé infuser
  4. Retirez le sachet de thé
  5. Ajouter du lait et / ou du sucre (si désiré)

Simple, non?

Ce que nous tenons pour acquis, c'est que la communication avec un être humain est différente de la communication avec un ordinateur. Un humain a des connaissances et une expérience de la vie antérieures - il peut savoir où trouver le thé. Nous supposons qu'ils savent que le lait est conservé dans un réfrigérateur.

Les humains ont aussi de l'intuition. Si vous ne trouvez pas de tasse, vous pouvez alors fouiller les placards à la place. Il y a aussi la lecture d'indices non verbaux des gens comme le langage corporel.

En matière de programmation, il faut être très précis. En continuant à préparer une tasse de thé, vous pouvez écrire des instructions sous forme de pseudo-code comme ceci:

  1. Aller à la cuisine
  2. Localisez la bouilloire
  3. Ouvrez le couvercle de la bouilloire
  4. Remplissez la bouilloire avec de l'eau
  5. Allumez la bouilloire
  6. Attendez qu'il bout à 100 degrés Celsius
  7. Trouver une tasse

Et ainsi de suite.

Et si des instructions comme celles ci-dessus ne suffisent pas? Vous devrez peut-être ajouter une logique pour tenir compte de tous les scénarios. Par exemple: 2) Localisez la bouilloire. Eh bien, est-ce une bouilloire électrique ou est-ce une bouilloire que vous mettez sur une plaque de cuisson? Vous devrez ajouter une condition selon laquelle s'il s'agit d'une bouilloire électrique, faites xyz. Sinon , faites xyz pour une bouilloire que vous mettez sur une plaque de cuisson.

Même lorsque vous pensez avoir pris en compte toutes les conditions possibles et donné des instructions très précises, il y a des choses que vous ne pouvez pas prévoir. Vous commencez à préparer votre tasse de thé et quelque chose ne va pas. Oh non! Votre bouilloire cesse de fonctionner après avoir commencé à la faire bouillir.

Qu'est-il arrivé? Il y a un bogue dans votre code! Un bogue est une erreur ou une faille dans votre code qui peut conduire à des résultats inattendus. Afin de corriger votre code, vous passez par un processus de «débogage», où vous trouvez les problèmes dans votre code et résolvez les problèmes.

Dans ce cas, vos instructions n'incluaient pas de remplir votre bouilloire à 0,8 litre pour couvrir l'élément chauffant. La bouilloire s'éteint donc par mesure de sécurité.

Pour éviter que des erreurs ne se produisent après l'exécution de votre programme, les développeurs effectuent des tests et des tests unitaires sur leurs programmes. Les tests unitaires sont l'endroit où vous écrivez des tests pour des parties de votre code. Les tests échouent ou réussissent.

Par exemple, vous écrivez une fonction qui ajoute deux nombres: 1 + 1. Vous écrivez ensuite un test unitaire où le résultat attendu est 2. Toutes les réponses échoueront sauf si c'est 2.

Vous parcourez votre code jusqu'à ce que tout s'exécute sans aucun problème inattendu. La programmation est donc un processus itératif et orienté en détail dans lequel vous améliorez continuellement ce que vous avez écrit précédemment.

Comment votre ordinateur comprend-il votre code?

Ce que la plupart des programmeurs écrivent comme «code» est un langage de programmation de haut niveau. C'est abstrait par conception. L'abstraction dans ce contexte signifie que nous nous éloignons davantage du code machine et que les langages de programmation sont plus proches des langages parlés.

Mais un ordinateur ne peut pas comprendre le code basé sur du texte. Il doit être compilé (traduit) en code machine. Le code machine est un ensemble d'instructions qui peuvent être compris par l'unité centrale de traitement (CPU) d'un ordinateur. Considérez le processeur comme le cerveau d'un ordinateur. Le code machine est composé de uns et de zéros. Ceci est appelé binaire.

Par exemple, voici comment vous écririez «Hello World» en binaire:

01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100

Comme vous pouvez le voir, le binaire n'est pas facilement lisible pour les humains, nous avons donc tendance à éviter la programmation en code machine!

Qu'est-ce qu'un langage de programmation exactement?

Les langages de programmation font partie à la fois du spectre des langages de bas niveau, tels que l'assemblage, et des langages de programmation de haut niveau, tels que JavaScript.

Mais qu'est-ce qu'un langage de programmation exactement? La meilleure analogie à laquelle je puisse penser sont les langues parlées que nous utilisons aujourd'hui. Toutes les langues expriment la même idée, mais de manière différente pour une autre personne:

Anglais: Bonjour

Français: Bonjour

Espagnol: Hola

Les langages de programmation sont différentes manières d'exprimer la même idée, mais à la place d'un ordinateur. Ce qui suit imprimera «Hello» dans trois langages de programmation différents:

JavaScript: alert(“Hello”);

Python: print(“Hello”)

Perl: print "Hello";

Chaque langage de programmation a sa propre syntaxe. En anglais, nous avons la grammaire. La même chose s'applique aux langages de programmation - ils ont chacun leur propre ensemble de règles.

Comment savoir si un langage de programmation est un langage de programmation?

Cela peut sembler une question étrange à poser. Tout le code est-il écrit dans un langage de programmation? Techniquement, non. Par exemple, il existe une idée fausse selon laquelle HTML (HyperText Markup Language) est un langage de programmation. Il s'agit en fait d'un langage «déclaratif», qui selon Wikipédia est:

"... un style de construction de la structure et des éléments des programmes informatiques - qui exprime la logique du calcul sans décrire son flux de contrôle."

En d'autres termes, HTML fournit la structure d'une page Web, mais ne contrôle pas la façon dont le site Web se comporte ou fonctionne.

Vous pouvez déterminer si un langage est un langage de programmation en indiquant s'il s'agit de «Turing complet». La machine de Turing est une machine hypothétique décrite par Alan Turing en 1936. Pour qu'un langage de programmation soit Turing complet, il faut:

  1. Branchement conditionnel (que j'explore ci-dessous).
  2. La capacité de lire et d'écrire sur une bande de papier infinie. Cela signifie essentiellement pouvoir stocker des données en mémoire.

Je ne vais pas explorer ce sujet en profondeur, mais si vous êtes intéressé, cette vidéo est une introduction utile.

Quels sont les principes de base d'un langage de programmation?

Certains éléments de base sont couramment présentés. Cela inclut les variables, les boucles, les instructions conditionnelles, les structures de données et les algorithmes. Ce sont les éléments constitutifs de la plupart des langages de programmation.

Qu'est-ce qu'une «boucle for»?

Les boucles For sont utiles si vous devez exécuter un ensemble d'instructions à plusieurs reprises. Par exemple, vous prenez le thé de l'après-midi et devez préparer cinq tasses de thé pour vos invités. Pour préparer une tasse de thé, vous devez suivre un ensemble d'instructions, comme mon exemple précédent.

Au lieu d'écrire les instructions cinq fois, vous pouvez demander à l'ordinateur de parcourir les mêmes instructions cinq fois. Cela vous permet d'évoluer.

Voici un exemple de forboucle de base :

for (let i = 0; i < 5; i++) { console.log("Make Tea!"); } //expected output: "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" "Make Tea!" 

Qu'est-ce qu'une instruction conditionnelle?

En JavaScript, nous avons des if...elseinstructions conditionnelles. Ils sont utilisés lorsque vous souhaitez exécuter différentes actions en fonction d'une condition.

Pour revenir à mon exemple précédent, vous demandez à l'utilisateur s'il veut du lait dans son thé. S'ils veulent du lait, ajoutez du lait au thé, sinon ne faites rien.

Voici un exemple d' if...elseinstruction en JavaScript:

if(milk == true) { // add milk } else { // don't add milk } 

Que sont les structures de données?

«Une structure de données est un moyen d'organiser les données de manière à ce qu'elles puissent être utilisées efficacement ... Ce sont des ingrédients essentiels pour créer des algorithmes rapides et puissants.»

(Cours de structure de données facile à avancé, William Fiset)

Les structures de données courantes que vous pouvez trouver dans de nombreux langages de programmation sont les tableaux, les objets, les tuples et les unions. Je vais prendre les tableaux comme exemple.

En JavaScript, un tableau peut stocker une plage de données telles que des nombres et des chaînes (texte). J'adore les biscuits avec mon thé alors je vais les stocker dans mon assortiment:

biscuits = [“shortbread”, “digestive”, “ginger nut”]; 

Ces biscuits sont stockés dans la mémoire de l'ordinateur et vous, en tant que développeur, pouvez accéder à un biscuit spécifique en référençant son index. Vous commencez à compter l'index à partir de 0. L'index est comme la position du biscuit dans un moule à biscuit. Vous y faites référence en utilisant la notation entre crochets.

biscuits[0]; // “shortbread” biscuits[1]; // “digestive” biscuits[2]; // “ginger nut” 

Si vous voulez obtenir un biscuit digestif, vous pouvez accéder à sa position d'index: biscuits[1]. Je peux facilement le trouver car je sais où il est stocké.

N'oubliez pas que le premier élément du tableau est l'index 0. Ainsi, lorsque vous faites référence à l'index 1, c'est en fait le deuxième élément du tableau.

Par conséquent, les structures de données sont un moyen de gérer les données. Cela comprend le stockage et la récupération des données. Il est plus efficace d'exécuter des algorithmes si les données sont organisées dans une structure de données.

Qu'est-ce qu'un algorithme?

Un algorithme est un ensemble d'instructions spécifique qui résout un problème. C'est un concept abstrait. Voici un lien vers une courte vidéo de TED sur "Qu'est-ce qu'un algorithme?".

Tu te souviens quand nous écrivions des instructions sur la façon de préparer une tasse de thé plus tôt? C'est essentiellement un algorithme: un ensemble d'instructions séquentielles.

Quand j'ai écrit ma première fonction en JavaScript, j'ai en fait créé mon premier algorithme sans savoir que c'était un algorithme! Une fonction est une implémentation d'un algorithme.

Tout comme dans la vraie vie, il existe souvent plusieurs solutions à un problème de codage. Par exemple, disons que vous prévoyez d'aller dans un café où vous n'êtes jamais allé auparavant. Il existe plusieurs façons d'arriver à destination. Certains itinéraires prennent plus de temps que d'autres, mais finalement, ils vous mènent tous au même endroit. Idéalement, vous voulez choisir l'itinéraire le plus rapide, le plus efficace et le plus simple.

Le même principe peut être appliqué à la programmation. Il existe généralement plusieurs façons de résoudre un problème de codage et les programmeurs s'efforcent de trouver la solution la plus élégante et la plus efficace.

Les développeurs ne réussissent souvent pas du premier coup! Tout comme j'écrirais un premier brouillon pour un article, c'est la même chose pour le codage. Je reformulerais un article plusieurs fois, où je pourrais changer la structure, éditer, réécrire des sections et supprimer des phrases inutiles. En programmation, nous passons par un processus similaire, et nous appelons cela refactoriser notre code.

Quels sont les principaux langages de programmation utilisés aujourd'hui? Combien y en a-t-il?

Il semble y avoir un débat sur le nombre total de langages de programmation sur Internet. Certains sites Web tels que Wikipedia répertorient environ 700 langages de programmation actuels et historiques «tous notables». D'autres sites tels que Tiobe suivent et surveillent 250 des langues «les plus populaires».

Sur Github, le langage de programmation le plus populaire de 2019 était JavaScript:

Pourquoi y a-t-il autant de langages de programmation? Comment les langages de programmation ont-ils évolué?

Différents langages de programmation sont développés pour répondre à différents besoins. Ceci est démontré tout au long de l'histoire des langages de programmation. Veuillez vous référer à ce diagramme d'O'Reilly qui retrace l'histoire des langages de programmation des années 1950 à 2004.

Au milieu des années 1950, FORTRAN (Formula Translation) a été créé pour résoudre des problèmes mathématiques, statistiques et scientifiques complexes. COBOL («Common Business Oriented Language») a été créé en 1959 pour faciliter l'utilisation du code par les entreprises. Il existe des langages plus adaptés à l'analyse statistique, comme R (1976).

Il y a eu l'essor des langages de programmation à usage général à partir des années 1970, tels que C, C ++, C # et Java. Comme vous pouvez le voir dans le tableau ci-dessus, les langues à usage général dominent les 10 langues les plus populaires.

JavaScript, créé en 1995, est un langage populaire pour le Web. Il donne aux sites Web leur interactivité et leur vie.

Plus récemment, nous avons vu naître de nouveaux langages tels que Go de Google, qui était destiné à maintenir plus efficacement de grands systèmes logiciels. Nous verrons probablement encore plus de langages de programmation créés à l'avenir.

Langages de programmation compilés ou interprétés

Au fur et à mesure que vous vous familiariserez avec les langages de programmation, vous rencontrerez des langages de programmation compilés et interprétés. Quelle est la différence?

Qu'est-ce qu'un langage compilé?

Les langages de programmation tels que C, C ++ et Java ont un processus de «construction» où votre code est compilé dans un format plus lisible (langage machine) pour l'ordinateur.

Il peut être plus facile de penser à deux personnes qui ne parlent pas la même langue, mais elles doivent travailler ensemble. John parle anglais et Chloé parle français. Chloé rédige un ensemble d'instructions sur la façon de faire un soufflé au chocolat en français, mais John ne peut pas le comprendre. Ils ont besoin d'un traducteur parlant anglais et français. C'est plus facile si le traducteur peut traduire les instructions de Chloé à l'avance avant de commencer à cuisiner ensemble.

Au lieu de cela, les développeurs «parlent» un langage de programmation comme Java ou Python. Ils ont besoin que leur code soit compilé (traduit) en langage machine avant qu'un programme puisse s'exécuter afin que l'ordinateur puisse le comprendre.

Les programmes créés à partir d'un langage compilé sont plus faciles à comprendre pour un ordinateur et s'exécutent donc très rapidement.

Qu'est-ce qu'une langue interprétée?

JavaScript, PHP et Python sont des exemples de langages de programmation interprétés. Il n'y a pas de processus de construction et le code n'a pas besoin d'être compilé. Votre code est interprété ou lu ligne par ligne lorsque vous exécutez le programme.

Revenons à mon analogie avec Chloé et John. John écrit un ensemble d'instructions sur la façon de faire une tarte aux bergers. Le traducteur ne traduit pas les instructions de John à l'avance, mais se joint à eux pour leur séance de cuisine. Le traducteur traduit chaque ligne des instructions de John de l'anglais vers le français pendant que Chloé cuisine. Pour cette raison, Chloé met plus de temps à préparer et à cuisiner le repas.

Par conséquent, les langues interprétées sont plus lentes que les langues compilées. Ils doivent être traduits à la volée pour que l'ordinateur puisse comprendre.

Mais avec les compilateurs juste-à-temps (JIT), les langages interprétés deviennent plus rapides et plus efficaces.

Quel (s) langage (s) de programmation dois-je choisir d'apprendre?

Les langages de programmation font à peu près la même chose, mais ce ne sont que des façons différentes d'exprimer les mêmes instructions à un ordinateur. Une fois que vous avez compris les concepts et les principes fondamentaux d'un langage de programmation, la courbe d'apprentissage pour apprendre une autre langue ne sera pas aussi raide.

Le langage de programmation que vous devez choisir d'apprendre en premier dépend d'un certain nombre de facteurs. Par exemple, je voulais devenir développeur Web, j'ai donc choisi JavaScript comme principal langage de programmation. D'autres langages pour le Web que vous pouvez apprendre sont PHP et Ruby on Rails.

Si vous souhaitez devenir data scientist, Python pourrait être une option. Python est considéré comme l'un des meilleurs outils de science des données pour analyser le Big Data. J'ai mentionné R plus tôt, qui est un autre langage largement utilisé parmi les data scientists et les statisticiens.

Python est un langage de programmation à usage général et est également utile pour savoir si vous souhaitez vous lancer dans le domaine de l'apprentissage automatique et de l'intelligence artificielle.

Si vous souhaitez devenir ingénieur logiciel, Java pourrait être une option. Java est l'un des langages les plus populaires et les plus demandés au monde. C'est un langage polyvalent qui peut être utilisé pour développer des logiciels pour petites et grandes entreprises.

Pensez donc au rôle que vous souhaiteriez dans la technologie et au type d'entreprise pour laquelle vous souhaitez travailler.

Le choix d'un langage de programmation dépend également du logiciel que vous essayez de créer. Cela nous amène bien à notre section suivante.

Qu'est-ce qu'un logiciel?

Combien de fois interagissez-vous avec un logiciel un jour donné?

Le logiciel est partout. Il est intégré en tant que systèmes embarqués dans des appareils de tous les jours tels que votre micro-ondes, machines à laver, voitures, téléviseurs, jouets pour enfants et télécommandes. Ensuite, il y a des appareils informatiques plus évidents qui ont des applications et / ou des logiciels système tels que des tablettes, des téléphones intelligents, des ordinateurs portables, des ordinateurs de bureau et des assistants domestiques comme Alexa.

La personne moyenne interagit probablement avec un logiciel quelques dizaines de fois par jour, sinon plus. Cela fait partie de notre vie quotidienne.

Tous les logiciels sont programmés par un développeur. Le logiciel est agile par nature et peut constamment itérer. Le logiciel et le matériel sont étroitement liés. Imaginez votre téléphone sans ses applications et son système d'exploitation. Le téléphone serait essentiellement une brique coûteuse! Par conséquent, le logiciel donne vie au matériel et le matériel est la façon dont nous interagissons avec le logiciel.

La majorité des logiciels créés par les programmeurs sont écrits dans un langage de programmation de haut niveau.

Qu'est-ce que le développement logiciel?

Le développement logiciel est tout, de la conception d'une idée au développement et au déploiement. Ce processus, de la conception d'une idée au déploiement d'un logiciel, est également appelé cycle de vie du logiciel.

Il existe plusieurs étapes du cycle de vie du logiciel: découverte, conception, programmation / création, test et déploiement / exécution. Il comprend également tout le reste de l'écosystème de développement logiciel, comme la maintenance, la documentation et les corrections de bogues.

Je n'entrerai pas dans les détails ici, car le sujet du développement logiciel justifie son propre article.

Tendances actuelles du développement de logiciels et de la programmation informatique

Intelligence artificielle et apprentissage automatique

Ces dernières années, vous avez probablement entendu des termes tels que l'intelligence artificielle et l'apprentissage automatique. Parfois, ils sont utilisés de manière interchangeable, mais sont-ils identiques?

Non, ce n'est pas tout à fait la même chose. L'apprentissage automatique est l'endroit où une machine apprend par l'expérience. Alors que l'intelligence artificielle est une idée plus large selon laquelle les machines peuvent exécuter des tâches de manière intelligente. L'apprentissage automatique est un sous-ensemble de l'intelligence artificielle.

Qu'est-ce que l'intelligence artificielle?

J'ai couvert le fonctionnement des langages de programmation - le programmeur écrit un ensemble d'instructions que l'ordinateur doit exécuter. L'intelligence artificielle (IA) est un concept plus large où les ordinateurs peuvent imiter le fonctionnement d'un cerveau. C'est entraîner une machine à «penser» comme un humain.

La grande question est: pouvez-vous reproduire l'intelligence humaine dans une machine? Pouvez-vous imiter la façon dont un humain apprend, raisonne et perçoit? Alan Turing a posé cette question dans son article de 1950:

«Les machines peuvent-elles penser?»

(Machines informatiques et intelligence, 1950 par Alan Turing)

Dans l'article de Turing, il a proposé le «test de Turing» dans lequel une machine serait classée comme «intelligente» si une personne ne pouvait pas faire la différence entre les réponses d'un humain et la machine artificiellement intelligente.

Après 70 ans, les développeurs d'IA, les universitaires, les scientifiques et les chercheurs tentent toujours de répondre à cette question et de créer une machine artificiellement intelligente. Je ne pense pas que nous y soyons encore. Avez-vous essayé d'avoir une conversation avec Siri ou Alexa? Les conversations avec ces deux appareils sont toujours basiques. Cependant, je suis sûr que ce n'est qu'une question de temps avant que la technologie ne s'améliore.

Des entreprises comme DeepMind étudient ce concept et déterminent si les machines sont capables d'intelligence. Le programme AlphaGo de DeepMind a fait la une des journaux en battant un joueur professionnel de Go. C'était une étape importante pour l'IA.

Qu'est-ce que l'apprentissage automatique?

L'apprentissage automatique (ML) est un sous-ensemble de l'intelligence artificielle. ML est une manière différente de programmer. C'est l'idée que l'ordinateur a la capacité d'apprendre sans être explicitement programmé. Arthur Samuel a eu l'idée de l'apprentissage automatique dans son article en 1959:

«La programmation d'ordinateurs pour tirer des leçons de l'expérience devrait à terme éliminer le besoin d'une grande partie de cet effort de programmation détaillé.»

Quand j'apprenais à mon fils à reconnaître un chat, je lui montrais des photos de chats. Je l'ai fait à plusieurs reprises jusqu'à ce qu'il soit capable de reconnaître un chat sans que je le lui demande.

L'apprentissage automatique est similaire à cela. Vous donnez à votre ordinateur une centaine d'images (entrée) de chats. Il apprend ensuite les modèles dans les données et construit un système de classification par répétition. Si vous donnez à votre ordinateur plus d'images de chats et d'autres animaux, il devrait être en mesure d'identifier si l'animal sur la photo est un chat ou non. Il a essentiellement appris à quoi devrait ressembler un chat.

ML donne à votre ordinateur des données et des exemples, et à son tour, il est capable d'apprendre par lui-même comme le font les bébés et les jeunes enfants. Au lieu que les développeurs donnent les instructions à un ordinateur, l'ordinateur crée son propre ensemble d'instructions à suivre - des algorithmes d'apprentissage automatique. Les algorithmes d'apprentissage automatique sont un sous-ensemble de ML, un concept connu sous le nom de «Deep learning».

«L'IA est l'une des choses les plus profondes sur lesquelles nous travaillons en tant qu'humanité. C'est plus profond que le feu ou l'électricité ... »

(Sundar Pichai, Forum économique mondial, janvier 2020)

La citation de Sundar Pichai, le PDG d'Alphabet Inc, résume l'importance de l'IA et du ML.

Quel est l'avenir de la programmation informatique?

Cette dernière section sera mes prédictions sur l'avenir de la programmation informatique.

Les développeurs continueront de créer de nouveaux langages de programmation. Les langages de programmation deviendront plus abstraits et, par conséquent, accessibles aux personnes apprenant à coder.

Je crois qu'une plus grande importance sera accordée au codage et à la programmation de l'éducation dans les programmes des écoles primaires et secondaires. La demande de développeurs et de programmeurs ne fera qu'augmenter à mesure que la technologie et les logiciels s'intégreront de plus en plus dans notre vie quotidienne. La programmation deviendra omniprésente.

Nous verrons l'augmentation et la popularité continuelles du ML et de l'IA pour aider les développeurs dans le processus de développement logiciel. Cela comprend l'automatisation des tests, ainsi que la détection et la prévention des vulnérabilités et des bogues.

L'IA va révolutionner tous les aspects de notre société, pas seulement dans la programmation et le développement de logiciels. Par exemple, nous avons vu de grands progrès dans le domaine de l'IA et des voitures autonomes.

L'une des plus grandes entreprises au monde développant des voitures autonomes est Tesla, fondée par Elon Musk. Sous la supervision d'un conducteur humain, une voiture Tesla peut désormais changer automatiquement de voie, naviguer de manière autonome sur des autoroutes à accès limité, et le propriétaire peut appeler la voiture depuis et vers un garage ou une place de parking. L'objectif de Tesla est de créer une voiture entièrement automatisée et autonome sans aucune supervision humaine.

À mesure que les machines deviennent plus intelligentes, nous pouvons arriver à un point où les machines dépassent l'intelligence des êtres humains. C'est ce qu'on appelle la singularité. Cela peut sembler une science-fiction complète pour le moment! Mais des personnalités notables telles que Ray Kurzweil prédisent que des machines dotées d'une intelligence au niveau humain seront disponibles dans les 20 prochaines années. Kurzweil est connu pour ses prédictions précises sur l'évolution des technologies. Il a écrit un livre à ce sujet: L'ère des machines spirituelles.

Comment notre société va-t-elle changer grâce aux machines super intelligentes?

Derniers mots

Les influences technologiques et le code touchent presque toutes les parties de nos vies. De notre choix de divertissement (jeux en ligne, streaming) et comment nous achetons, à choisir ce que nous mangeons et même comment nous sortons! Le code est important et de plus en plus d'emplois changeront et obligeront les gens à avoir au moins une certaine compréhension de base de la programmation.

Pourtant, il n'y a qu'environ 23,9 millions de développeurs dans le monde selon l'étude Global Developer Population and Demographic Study 2019. Pour mettre cela en perspective, seulement 0,3% de la population mondiale sait programmer. Comme je l'ai mentionné plus tôt, notre dépendance aux logiciels et à la technologie augmente. Selon les statistiques du Bureau of Labor des États-Unis, la demande d'ingénieurs en logiciel devrait augmenter de 21% entre 2018 et 2028. Par conséquent, nous devons augmenter le nombre de développeurs.

Si vous envisagez de devenir développeur, commencez dès aujourd'hui. C'est une période incroyablement excitante pour le faire! Il existe de nombreuses ressources d'apprentissage de code en ligne. Il existe des plates-formes adaptées à votre rythme comme freeCodeCamp. Il y a aussi un excellent article de Laurence Bradford qui compile toutes les meilleures ressources pour apprendre à coder gratuitement. Faites des recherches et découvrez quelle ressource convient à votre style d'apprentissage.

Si vous avez des questions ou souhaitez simplement me dire bonjour, retrouvez-moi sur Twitter @PhoebeVF.

Un merci spécial à Katerina Limpitsouni d'Undraw pour la création des illustrations de cet article.