Magazine Focus Emploi

Les connaissances informatiques de base

Publié le 15 septembre 2010 par Abouchard

Au fil du temps, j'ai pu observer des lacunes techniques chez beaucoup d'informaticiens. On ne peut évidemment pas tout savoir ; l'informatique est un domaine très large, qui couvre des choses très variées. Mais il y a un certain nombre de connaissances basiques que vous devez absolument maîtriser si vous êtes informaticien.

Valeurs binaires standard

Il me semble absolument nécessaire de connaître de tête les plus importantes valeurs binaires.

Un octet, c'est stocké sur combien de bits ? Et un entier standard ?
Combien peut-on stocker de valeurs différentes en 8 bits ? Et en 16, 24, ou 32 ?

Réponses :

  • Un octet est stocké sur 8 bits. Un entier standard est stocké sur 32 bits. Un «short» est classiquement stocké sur 16 bits, un «long» sur 64 bits.
  • En 8 bits (sur un octet, donc), on a 256 valeurs différentes. En non-signé, cela va donc de zéro jusqu'à 255. En signé, cela va de -128 à +127.
  • En 16 bits (sur 2 octets), on a 65 536 valeurs. De zéro à 65 535 en non-signé ; de -32 768 à +32 767 en signé.
  • En 24 bits (3 octets), on a 16 777 216 valeurs possibles.
  • En 32 bits (4 octets), on a 4 294 967 296 valeurs possibles.
  • En 64 bits (8 octets), on a 18 446 744 073 709 551 616 valeurs.

C'est pas bien compliqué à mémoriser. Gardez juste à l'esprit les ordres de grandeur :

  • 1 octet => 256
  • 2 octets => 65 milles
  • 3 octets => 16 millions
  • 4 octets => 4 milliards
  • 8 octets => beaucoup (je considère que 18 trillions, ça fait trop grand pour être compté).

Mais pourquoi est-ce si important à savoir ? Après tout, on peut recalculer facilement tout ça. Oui, mais pour un informaticien, recalculer ça reviendrait au même qu'un géomètre qui se demande tous les jours combien il y a de centimètres dans un mètre...

Concrètement, ces valeurs ne servent pas forcément tous les jours, mais il faut être capable de les utiliser à bon escient. Si vous faites du développement embarqué, vous aurez sûrement besoin de calculer au plus juste l'utilisation de la mémoire ; et en codant en C, vous devrez choisir le type de vos variables en connaissance de cause. Mais ce n'est pas le seul cas où c'est utile.

Si vous êtes un développeur Web ou un DBA vous aurez à créer des tables dans votre base de données. Pour cela, vous devez connaître les types de données que vous pouvez utiliser. Si on prend l'exemple de MySQL, les nombres entiers peuvent être stockés dans des champs de type TINYINT, SMALLINT, MEDIUMINT, INT et BIGINT. Chacun pouvant être signé (par défaut) ou non-signé (en ajoutant UNSIGNED au type).
Alors pour stocker la taille d'un être humain, en centimètres, un TINYINT UNSIGNED sera sûrement suffisant. Hum... sauf si vous devez gérer les 4 hommes les plus grands du monde qui dépassaient les 255 centimètres. Certains choisissent alors la facilité et stockent tous leurs entiers en utilisant des INT. Mais pourquoi prendre 4 octets, là où la moitié suffirait ?

De la même manière, quel est le type le plus adapté à une clé primaire ? Sur 16 bits, ce serait un peu court ; c'est assez fréquent d'avoir des tables qui contiennent bien plus de 65 milles lignes.
Un petit truc pour y arriver, c'est de réfléchir en terme de rapidité de remplissage de la table : Si vous avez en moyenne une nouvelle ligne par seconde, une clé primaire stockée sur 3 octets (un MEDIUMINT UNSIGNED) se remplira en à peine plus de 6 mois. Si par contre vous passez sur 4 octets (INT UNSIGNED), vous pouvez tenir ce rythme pendant 136 ans. Est-ce vraiment utile de passer sur un BIGINT ?

Langage de script

Quel que soit votre domaine, quelle que soit votre plate-forme, quelles que soient les technologies que vous utilisez, vous ne pouvez pas faire votre travail efficacement si vous ne connaissez aucun langage de script. Évidemment, on peut toujours s'en tirer en mettant au point des «méthodes de contournement». Mais quelle perte de temps ! Cela revient à passer le baccalauréat scientifique avec une calculatrice "4 opérations" ; c'est possible, mais c'est se mettre soi-même des bâtons dans les roues.

Par «langage de script», j'entends n'importe quel langage de programmation qui permet de faire des petits outils, des coder des prototypes, de faire la "glue" entre d'autres programmes. Il ne faut pas avoir besoin de sortir son compilateur à chaque fois qu'on veut faire un petit programme qui va nous simplifier la vie de manière ponctuelle.

  • Si vous travaillez sous Unix, vous devez avoir au moins quelques notions de base en Shell. Le minimum, c'est de pouvoir instancier l'exécution d'un programme, d'en récupérer le résultat et de le transmettre de manière conditionnelle à un autre logiciel.
  • La plupart des langages de script sont très versatiles. Perl, Python, Ruby, PHP, ... Souvent on n'y pense que dans le cadre d'un développement Web. Et pourtant, ils permettent de faire tellement de choses qu'il serait idiot de ne pas en maîtriser au moins un.
  • Si vous êtes sous Windows, n'oubliez pas que vous pouvez automatiser la plupart de vos traitements avec du VBScript, voire du Javascript.

Programmation orientée objet et assimilé

Quel que soit le domaine informatique dans lequel vous évoluez, vous devez absolument connaître les principes de base de la programmation orientée objet. Même si vous n'êtes pas développeur, soit vous allez prendre part à des choix techniques, soit vous aurez à suivre des discussions techniques. Et même si vous utilisez un langage procédural, ou que vous choisissez de ne pas utiliser toutes les capacités "objet" d'un langage donné, cela reste valable : Il vaut mieux connaître un minimum ce qu'on choisit de ne pas utiliser, sinon on fera forcément un mauvais choix un jour.

Les concepts-clés ne sont pourtant pas nombreux :

  • Le principe de l'objet, qui est une «boîte noire» qui regroupe ses données et les traitements qui vont s'y appliquer.
  • L'héritage et la surcharge, qui permettent de créer un type d'objet qui dérive d'un autre en l'enrichissant.
  • La portée des attributs (les données d'un objet) et des méthodes (ses fonctions), qui permet de les rendre accessibles à tout le reste du code, ou de les réserver à un usage "interne".

Vous devez maîtriser ces concepts. Sinon, à chaque fois que quelqu'un vous demandera «Pourquoi tu ne fais pas un objet comme ceci ou comme cela ?», vous aurez l'impression de passer pour un abruti.

Il y a d'autres concepts qui accompagnent la programmation orientée objet. Considérez-les comme du bonus, sauf un : les exceptions. Il s'agit d'un concept "disruptif" dans la gestion des erreurs. Les développeurs ont généralement besoin d'un peu de temps pour en intégrer tous les aspects ; mieux vaut s'y préparer avant d'avoir besoin de s'y frotter au boulot.

Filesystem Hierarchy Standard

Vous pouvez faire le choix de carrière de ne jamais toucher à un système Unix de près ou de loin (ce qui inclus Linux et Mac OS X, sans oublier Solaris ou AIX), sachant que ça veut dire que vous souhaitez travailler exclusivement sous Windows. C'est un choix qui se défend, mais à l'échelle d'une carrière entière, c'est quasiment aussi discutable que l'inverse. La raison est bien simple : sur un nombre non négligeable de projets, l'environnement de production est sous Unix, même si l'environnement de développement est différent. Il est important de prendre cela en compte.

Le minimum pour se sentir à l'aise sur un système Unix, c'est de comprendre l'organisation du système de fichiers, pour comprendre à quoi sert chaque répertoire sur le disque et pouvoir retrouver un fichier au besoin. Ce n'est pas difficile à intégrer, il vous faudra une petite demi-heure pour lire la documentation, et encore moins pour lire le résumé en français sur Wikipédia.

Le minimum à savoir :

  • /boot : Fichiers nécessaires au démarrage du système.
  • /bin : Programme exécutables de base.
  • /sbin : Programmes exécutables du système.
  • /etc : Fichiers de configuration.
  • /home : Répertoire parent des répertoires personnels.
  • /usr : Fichiers supplémentaires (contenant lui-même des répertoires bin/, etc/, ...).
  • /usr/local : Logiciels compilés en local (contenant à nouveau les répertoires bin/, etc/, ...).
  • /tmp : Fichiers temporaires.
  • /var : Données variables non temporaires.
  • /opt : Logiciels optionnels.

SQL

Quoi ? Le SQL ferait partie des connaissances de base en informatique ? C'est nouveau, ça ?

Eh bien oui, c'est relativement nouveau. Il y a une dizaine ou une quinzaine d'années, ça aurait été différent. Mais de nos jours, il paraît compliqué de vraiment y échapper. Bien entendu, je pense tout d'abord au développement Web. C'est devenu une industrie difficile à négliger. Ce serait dommage qu'à un moment ou un autre de votre carrière, vous soyez coincé le jour où on vous demande de modifier l'enregistrement d'un formulaire sur l'intranet de l'entreprise...

Mais même en dehors du Web, le SQL prend une place de plus en plus importante. Je pense notamment à tous les logiciels qui intègrent SQLite comme support de stockage interne. Même pour un programme standalone, la possibilité d'enregistrer des données relationnelles est vraiment pratique en comparaison aux alternatives utilisées jusqu'alors.

En imaginant que ce n'est pas votre cœur de métier, et que vous pourrez toujours apprendre − le moment venu − à créer des bases ou des tables, il n'en reste pas moins que vous devez savoir comment écrire les 4 types de requêtes SQL fondamentales :

  • SELECT : récupération de données
  • INSERT : ajout de données
  • UPDATE : mise-à-jour de données
  • DELETE : effacement de données

Et le reste

Ah, il y a encore plein de choses qui me semblent nécessaires et obligatoires, même si un peut moins fondamentales :

  • Un minimum de connaissance du HTML.
  • Connaître les bases des outils de bureautique (traitement de texte et tableur). Savoir faire un tableau croisé dynamique sous Excel ou OpenOffice vous sauvera parfois d'un long développement pour générer des statistiques.
  • Savoir utiliser Google Alerts pour faire une veille passive des sujets qui vous intéressent, que ce soit dans un domaine technique ou pour surveiller les annonces de vos concurrents.

Et vous, qu'est-ce qui vous semble important de savoir ?


Retour à La Une de Logo Paperblog

A propos de l’auteur


Abouchard 392 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte