Par:
Aimé DIUMI DIKOLO
Kleine KAMBALA MBO
Minasquin SOKOMBE

QUELQUES DOMAINES DE L'INFORMATIQUE

QUELQUES DOMAINES DE L'INFORMATIQUE

Par:
Aimé DIUMI DIKOLO
Kleine KAMBALA MBO
Minasquin SOKOMBE

AVANT PROPOS

AVANT PROPOS

Souvent, on choisit d’apprendre l’informatique à cause de l’influence des autres ou après admiration des œuvres des autres en informatique. Et dans la plupart de cas, nous ignorons toutes les possibilités qu’offre l’informatique, on a juste une petite et vague idée de la grandeur et de la profondeur de l’informatique.

Et parfois, nous tombons dans le piège de chercher à apprendre tout sur l’informatique, à chercher à connaitre tout ce qui se dit autour de l’informatique. Et pour plusieurs, il arrive qu’ils ne soient forts en aucun domaine précis malgré tous leurs efforts pour la simple raison qu’ils apprennent l’informatique sans viser un domaine bien défini et par manque de la bonne stratégie d’apprentissage.

Il y a des gens qui n’aiment pas entendre parler de quelque chose en informatique sans chercher à s’intéresser immédiatement à ça. Par exemple, peut-être qu’il était en train d’apprendre les réseaux informatiques, mais s’il entend quelqu’un vanter la programmation, sa motivation côté réseaux diminue et il se penche côté programmation parfois sans même terminer son apprentissage des réseaux informatique. Pendant qu’il cherche à connaitre la programmation, si par malheur, il entend encore parler du job le plus sexy de l’informatique (data scientist), il abandonne encore la programmation pour chercher à être data scientist. Et au finish, il ne sera peut-être pas bon dans aucun des domaines…

INTRODUCTION

INTRODUCTION

L’informatique est un domaine d’activité scientifique, technique et industriel concernant le traitement automatique de l’information numérique par l’exécution des programmes informatiques par des machines : des systèmes embarqués, des ordinateurs, des robots, des automates, etc.

Aujourd’hui, l’informatique touche presque tous les aspects de la vie, on retrouve l’informatique presque partout : dans nos maisons, églises, écoles, universités, entreprises etc. Elle offre plusieurs avantages et facilite la vie…

Mais l’informatique est une grande forêt, dans laquelle on risque de se perdre si on n’est pas prudent ou averti. Etant donné qu’elle a plusieurs champs d’applications, c’est logique qu’elle ait plusieurs domaines. Chaque domaine de l’informatique a des rôles ou finalités bien connus et précis : par exemple, on fait la programmation pour la production des logiciels et applications.

Dans ce guide, nous avons retenu dix domaines de l’informatique à savoir :

  • Programmation et développement
  • Infrastructures et réseaux
  • Administration base de données
  • Sécurité informatique
  • Administration système
  • Infographie
  • Analyse informatique
  • Big data
  • Intelligence artificielle
  • Informatique embarquée

Pour chaque domaine, nous allons essayer d’expliquer en bref sa finalité, les compétences nécessaires et les outils nécessaires.

I. Programmation et développement

I. Programmation et développement

Un développeur ou analyste programmeur est un informaticien qui réalise des logiciels ou des applications. Et il les (logiciels) met en œuvre grâce aux langages de programmation.

I.1 Généralités sur les langages de programmation

I.1 Généralités sur les langages de programmation

Un langage de programmation est un mode de communication vous permettant de dialoguer avec une machine en lui soumettant des instructions à exécuter.

Les langages de programmation se comptent par milliers. Certains sont dits dédiés car utilisés pour traiter les contraintes d’un domaine d’application précis (calcul scientifique, bases de données, …). D’autres sont généralistes car peuvent être utilisés dans tous les domaines.

Les langages de programmation se différencient aussi selon qu’ils soient interprétés ou compilés ou encore de haut ou de bas niveau. Un langage de programmation de haut niveau utilisera ainsi une langue naturelle tel que l’anglais. A contrario, un langage de programmation de bas niveau visera à être compris d’abord et avant tout par la machine et moins par un être humain.

I.2 Généralités sur les Frameworks

I.2 Généralités sur les Frameworks

Un Framework est, comme son nom l’indique en anglais, un “cadre de travail ”. L’objectif d’un Framework est généralement de simplifier le travail des développeurs informatiques (les codeurs si vous préférez), en leur offrant une architecture “prête à l’emploi” et qui leur permette de ne pas repartir de zéro à chaque nouveau projet.

Avantages :

  • La réutilisation des codes
  • La standardisation de la programmation
  • La formalisation d’une architecture adaptée aux besoins de chaque entreprise
  • Les frameworks sont toujours « enrichis » de l’expérience de tous les développements antérieurs.

Il existe des frameworks pour tout : développer une application mobile, un jeu, un site web, un module d’extension, des CSS… La plupart d’entre eux est spécifique à un langage de script ou de programmation.

I.3 Description du métier

I.3 Description du métier

Pour répondre aux besoins d'un client, il établit dans un premier temps un « cahier des charges» qui détermine les besoins du client en matière d'informatisation et contrôle.

Dans un second temps il développe une solution technique (Hardware) et crée un modèle (analyse organique) du futur logiciel(software) gérant le futur système informatique (s'il n'existe pas).

Il écrit ensuite des lignes de code nécessaires au correct fonctionnement (programmation), participe aux phases d'essais, réalise la documentation technique, s'occupe du suivi et de la maintenance de son produit. Il peut également former les utilisateurs.

Le développeur travaille en équipe, le plus souvent avec des clients, des chefs de projet et d’autres développeurs.

I.4 Compétences et qualités d’un développeur

I.4 Compétences et qualités d’un développeur

Un développeur est un expert des langages de programmation. Il doit maîtriser des outils informatiques, de l'anglais technique et des langages de programmation

La connaissance du secteur d'activité dans lequel va être utilisé le logiciel est un atout. Elle permet de mieux saisir les attentes des clients et leur approche du problème. Car on ne peut pas proposer une solution à un problème sans connaitre le problème. Le développeur doit aussi maîtriser l'environnement d'exécution de son programme.

Rigueur, sens de la méthode, qualités relationnelles, rapidité d'exécution et facilité de s'adapter à de nouveaux langages sont autant de qualités demandées. Il faut également faire preuve d'autonomie. Métier d'un secteur en perpétuelle évolution, le concepteur informatique doit avoir une très bonne capacité d'adaptation et d'autoformation tout au long de sa carrière, avec une pointe de curiosité.

Le développeur doit par ailleurs avoir un esprit logique, rigoureux et pragmatique. L'écoute et la rapidité d'exécution peuvent être un plus, notamment pour répondre aux demandes des clients.

I.5 Les spécialités du développement

I.5 Les spécialités du développement

Nous pouvons subdiviser le développement en trois sous domaines :

  • Développement web
  • Développement mobile
  • Développement desktop

I.5.1 Développement web

I.5.1 Développement web

La programmation web est la programmation informatique qui permet d’éditer des sites ou applications web.

Il existe différentes technologies et différents langages permettant de construire des sites web par l'intermédiaire de serveurs web, que l'on peut donc classer selon deux principes : des langages de programmation côté client, ou côté serveur. Cette distinction est faite pour séparer les langages « côté serveur » dont le code est exécuté sur le serveur web avant d'arriver sur le navigateur de l'utilisateur, des langages « côté client » dont l'exécution ne nécessite pas de calcul sur le serveur web mais, seulement après le téléchargement de la page, une interprétation par le navigateur de l'utilisateur.

I.5.1.1 Développement front-end (côté visiteur)

I.5.1.1 Développement front-end (côté visiteur)

Il est nécessaire de connaitre :

  • HTML
  • CSS
  • JavaScript

Quelques librairies et Frameworks supplémentaires :

Quelques librairies et Frameworks supplémentaires :

  • CSS
    • Bootstrap
    • Semantic UI
    • Foundation
    • KNACSS
    • Materialize
    • Material UI
    • Pure
    • Skeleton
    • Tailwind CSS
    • UIkit
    • UI sémantique
    • Susy
    • Squelette
    • Milligram
    • Bulma
  • JAVASCRIPT
    • AngularJS
    • Angular
    • Cappuccino
    • Ember.js
    • Prototype
    • Dojo Toolkit
    • Zepto
    • Meteor.js
    • Backbone.js
    • Aurelia.js
    • React.js
    • Vue.js
    • JQuery
    • Mithril
    • Polymer

I.5.1.2 Développement Back-end

I.5.1.2 Développement Back-end

Les principaux langages sont :

  • PHP
  • JAVA
  • Python
  • ASP.Net
  • Ruby

Quelques Frameworks

  • Express (Javascript)
  • Django (Python)
  • Ruby on Rails (Ruby)
  • Laravel (PHP)
  • Spring (Java)
  • CakePHP (PHP)
  • Flask (Python)
  • Symfony (PHP)

I.5.1.3. Système de gestion de contenu (CMS ou SGC)

I.5.1.3. Système de gestion de contenu (CMS ou SGC)

Un système de gestion de contenu ou SGC (content management system ou CMS en anglais) est une famille de logiciels destinés à la conception et à la mise à jour dynamique de sites Web ou d'applications multimédia.

La plupart des systèmes de gestion de contenu modernes permettent en effet l'édition de contenu selon le principe WYSIWYG. Cet acronyme issu de l'anglais signifie What you see is what you get, c'est-à-dire, ce que vous voyez est ce que vous obtenez. En effet, ce procédé qui a révolutionné la conception web permet de construire une page sur la base de ce à quoi elle doit ressembler. Le CMS génère automatiquement le code lui étant relatif.

Quelques CMS :

  • WordPress
  • Joomla
  • Shopify
  • Drupal
  • Squarespace
  • Wix
  • Bitrix
  • Blogger
  • Magento
  • PrestaShop
  • OpenCart
  • TYPO3
  • Weebly
  • Adobe Dreamweaver
  • FrontPage

I.5.2 Développement desktop

I.5.2 Développement desktop

Le développement de logiciel consiste à étudier, concevoir, construire, transformer, mettre au point, maintenir et améliorer des logiciels.

Du côté du développement desktop, les langages de programmation sont très nombreux et il est donc très difficile de connaitre la majorité de tous ces langages. Il s’agira donc pour le développeur informatique de se spécialiser dans un ou plusieurs de ces langages et de faire valoir son savoir-faire pour un type d’application ou d’usage en particulier.

Quelques langages pour le développement desktop

  • Python
  • Java
  • C#
  • C++
  • Visual basic.NET
  • Javascript (ElectronJS)
  • Langage C

I.5.3 Développement mobile

I.5.3 Développement mobile

Un développeur d’applications mobiles développe des applications pour des terminaux mobiles (smartphones, tablettes…). Il peut également avoir la mission d’optimiser des applications déjà créées ou d’adapter des sites Web au support mobile.

De nos jours, il existe divers enjeux pour développer une application mobile entre autres les enjeux de compatibilité aux différents systèmes d’exploitation ; c’est-à-dire, si vous voulez créer une application, vous allez soit créer une application « native » ou une application « cross-platform ». Une application est dite native si elle est écrite en tenant compte que cela puisse tourner sur un système d’exploitation bien ciblé, de là, il est clair qu’il faudrait deux applications écrites en différents langages de programmation pour enfin avoir une application qui tourne sur Android et sur l’IOS par exemple.

Chacun des OS mobile, dispose d'un langage de programmation à lui propre, permettant le développement de ses applications. Les applications pour les terminaux Apple sont développées dans un langage principalement dédié à ces applications mobiles, le Swift. Celles pour Windows Mobile, sont développées en C#. Le système Android utilise, quant à lui le Java et le Kotlin.

Les applications mobiles sont pour la plupart distribuées depuis des plateformes de téléchargement (parfois elles-mêmes contrôlées par les fabricants de smartphones) telles que l' AppStore (plateforme d'Apple), le Google Play (plateforme de Google / Android), ou encore le Microsoft Store (plateforme de Microsoft pour Windows 10 Mobile. Les applications distribuées à partir des magasins d'applications sont soit payantes, soit gratuites, mais généralement avec des publicités.

En générale, voici les langages, frameworks et outils utilisés pour la programmation mobile :

  • Java
  • XML
  • Android Studio
  • Kotlin
  • Objective-C
  • Swift
  • React Native (JavaScript) permettant de créer une application multiplateforme (Par Facebook depuis 2015).
  • C#
  • Dart
  • Flutter (Par Google)
  • NativeScript
  • Ionic
  • Xamarin

I.6 BONUS

I.6 BONUS

I.6.1 Quelques classements de langages de programmation

I.6.1 Quelques classements de langages de programmation

  • D’après l’IEEE Spectrum, célèbre magazine édité par l’IEEE, organisation professionnelle dédiée à l’ingénierie et aux sciences appliquées.

En 2019:
Domaines de l'informatique

En 2020
Domaines de l'informatique

  • D’après le Tiobe Index, indicateur de popularité des langages informatiques sur la Toile

Domaines de l'informatique

I.6.2 Classement des Frameworks

I.6.2 Classement des Frameworks

D’après le site hotframeworks.com
Domaines de l'informatique

I.6.3 Citations et pensées sur le développement

I.6.3 Citations et pensées sur le développement

Il y existe deux manières de concevoir un logiciel. La première, c’est de le faire si simple qu’il est évident qu’il ne présente aucun problème. La seconde, c’est de le faire si compliqué qu’il ne présente aucun problème évident. La première méthode est de loin la plus complexe"

C.A.R. Hoare
"Aujourd’hui, la programmation est devenue une course entre le développeur, qui s’efforce de produire de meilleures applications à l’épreuve des imbéciles et l’univers, qui s’efforce de produire de meilleurs imbéciles. Pour l’instant, l’univers a une bonne longueur d’avance."
Rich Cook
"Les programmes doivent être faits pour être lus par des gens, et occasionnellement pour être exécutés par des machines. "
Hal Abelson
Codez toujours comme si la personne qui allait maintenir votre code était un violent psychopathe qui sait où vous habitez.
John Woods
“ Mesurer la progression du développement d’un logiciel à l’aune de ses lignes de code revient à mesurer la progression de la construction d’un avion à l’aune de son poids ”
Bill Gates
“ Neuf femmes ne peuvent pas faire un bébé en un mois ”
Fred Brooks
“ Mal nommer les choses, c’est ajouter au malheur du monde ”
Albert Camus
“ Il semble que la perfection soit atteinte non quand il n’y a plus rien à ajouter, mais quand il n’y a plus rien à retrancher. ”
Antoine de Saint-Exupéry
"Il n'y a que deux sortes de langages de programmation : ceux dont les gens disent toujours du mal et ceux que personne n'utilise."
Bjarne Stroustrup
“ Un langage de programmation est censé être une façon conventionnelle de donner des ordres à un ordinateur. Il n'est pas censé être obscur, bizarre et plein de pièges subtils (ça ce sont les attributs de la magie).”
Dave Small
“ Parler est bon marché. Montrez-moi le code."
Linus Torvald
"Je m'en fous si ça marche sur votre machine ! Nous ne livrons pas votre machine !"
Vidiu Platon
"Programmer, c'est comme se donner des coups de pied dans le visage, tôt ou tard, votre nez va saigner."
Kyle Woodbury
“N’importe quel idiot peut écrire du code qu'un ordinateur peut comprendre. Les bons programmeurs écrivent du code que les humains peuvent comprendre.”
Martin Fowler
pdf Retrouvez ce cours en version pdf
Télécharger
pdf
Retrouvez ce cours en version pdf
Télécharger
AVANT PROPOS
INTRODUCTION
I. Programmation et développement
I.1 Généralités sur les langages de programmation
I.2 Généralités sur les Frameworks
I.3 Description du métier
I.4 Compétences et qualités d’un développeur
I.5 Les spécialités du développement
I.5.1 Développement web
I.5.2 Développement desktop
I.5.3 Développement mobile
I.6 BONUS
I.6.1 Quelques classements de langages de programmation
I.6.2 Classement des Frameworks
I.6.3 Citations et pensées sur le développement
II. Infrastructures et réseaux
II.1 Définitions
II.2. Types de réseaux
II.3 Supports des réseaux informatiques
II. 4 Eléments des réseaux informatiques
II.5 Quelques compétences nécessaires d’un administrateur et/ou technicien des réseaux informatiques
II.6 Quelques outils de l’administration réseaux
III. Administration base de données
III.1 Définitions
III. 2 Différents types de base de données
III.2.1 Base de données hiérarchique
III.2.2. Base de données réseau
III.2.3 Base de données orientée texte
III.2.4 Base de données relationnelle (SQL)
III.2.5 Base de données distribuée
III.2.6 Base de données Cloud
III.2.7 Base de données NoSQL
III.2.8 Base de données orientée objets
III.2.9 Base de données orientée graphe
III.3 Système de gestion de base de données
IV. Sécurité informatique
IV.1 Généralités
IV.2 Objectifs de la sécurité informatique
IV.3 Terminologie de la sécurité informatique
IV.4 Types d’attaques
IV.5 Les acteurs
IV.5.1 Les hackers
IV.5.2 Les espions
IV.6 Les moyens d’attaques
V. Administration système
V.1 Définitions
V.2 Les attributions d’un administrateur système
V.3 Les compétences
VI. Infographie
VI.1 Généralités
VI.2 Les métiers de l’infographie
VI.3 Domaines d’application de l’infographie
VI.4 Les logiciels utilisés en infographie
VII. Analyse informatique
VII.1 Généralités
VII.2 Description du métier
VII.3 Tâches et responsabilités d’un analyste
VII.4 Caractéristiques d’une méthode d’analyse
VII.5 Les méthodes d’analyse informatique
VIII. Big data
VIII.1 Généralités
VIII.2 Le data scientist
VIII.3 Les modèles
VIII.4 Les logiciels ou outils pour le big data
IX. Intelligence artificielle
IX.1 Généralités
IX.2 Domaines d’applications de l’intelligence artificielle
IX.3 Les langages de programmation utilisés en Intelligence artificielle
X. Informatique embarquée
X.1 Généralités
X.2 Les contraintes du système embarqué
X.3 Langages utilisés
COURS D'INFORMATIQUE
II. INFRASTRUCTURES ET RESEAUX