Combien de temps faut-il pour apprendre l’informatique si je suis un débutant ?


Il m'a fallu 5 ans pour obtenir un diplôme en sciences informatiques. Certes, un trimestre, j'ai pris congé pour travailler, et de nombreuses classes n'étaient pas strictement liées à la comp sci.

Je dirais que quelqu'un de dévoué avec de bonnes compétences d'apprentissage pourrait s'enseigner les choses les plus importantes en un an.


Notez que je suppose que vous ne parlez pas de la façon de programmer, car vous devriez considérer que cela prendra de nombreuses années, et vous ne devriez jamais cesser d'apprendre.

Retournons simplement à la comp sci...

J'apprendrais certains algorithmes comme la façon dont les listes liées fonctionnent, le tri fonctionne, la façon dont les arbres équilibrés fonctionnent, etc. Bien que vous ne les coderez peut-être jamais vous-même, je considère que leur apprentissage fait partie d'une éducation comp sci équilibrée.

Vous devriez apprendre les bases des systèmes d'exploitation. Systèmes de fichiers, processus, mémoire virtuelle, sécurité de base, ce qu'un noyau fait plus ou moins, comment vous parlez au système d'exploitation avec des appels système ( UNIX est plus facile à apprendre IMO, que windows à cet égard.) Les programmeurs peuvent essayer d'être ignorants sur les systèmes d'exploitation, mais si vous rencontrez des problèmes avec votre programme en raison de l'interaction entre votre programme et le système d'exploitation, il va être bon de connaître certaines de ces choses. Par exemple, nous avons dû utiliser l'affinité du processeur sur un projet pour régler notre application correctement.

Je suggère d'apprendre un peu le langage machine pour savoir comment fonctionnent les processeurs. N'importe lequel fera l'affaire. Heck, le jeu Human Resource machine n'est pas si loin du langage machine et vous donnerait une légère idée de son fonctionnement.

Vous devriez savoir comment les ordinateurs font des maths, comme le complément à 2, et un peu comment fonctionnent les nombres à virgule flottante IEEE.

Vous devriez comprendre la notation big O, ce qu'elle signifie et comment l'utiliser pour évaluer les algorithmes.

Vous devriez connaître la conception orientée objet, les modèles de conception, et peut-être même un peu de programmation fonctionnelle, parce qu'il semble y avoir plus d'intérêt pour cela de nos jours.

Vous devriez apprendre à évaluer les performances des programmes, comme l'utilisation d'outils de profilage.

Vous voulez probablement comprendre comment les allocateurs de mémoire fonctionnent, et comment fonctionne la collecte des déchets.

IMO, vous devriez connaître les bases de données. MySQL est une bonne base d'apprentissage d'après mon expérience. SQL peut être important, et est beaucoup utilisé de nos jours. Stocker les données permanentes de vos programmes dans des "fichiers plats" est une façon assez ancienne de faire les choses maintenant.

Ce n'est pas une liste exhaustive, juste des choses que j'ai apprises en cours de route et que je pense utiles en programmation.