
Architecture et programmation des ordinateurs en un seul volume
Description
Introduction au livre
La plupart des développeurs ne connaissent pas grand-chose aux technologies sous-jacentes qui alimentent les programmes qu'ils créent.
Le code fonctionne bien, alors pourquoi s'inquiéter de la technologie sous-jacente ? Oui.
Comprendre la technologie sous-jacente depuis ses fondements vous aidera à améliorer le fonctionnement de vos programmes et à éviter les bugs frustrants et difficiles à trouver.
Personne ne souhaite que son code soit présenté au journal télévisé de 21 heures à cause d'un problème de sécurité.
Des informations détaillées sur de nombreuses technologies sont déjà disponibles en ligne.
Cependant, la plupart de ces documents sont mal organisés, et il est difficile de trouver un endroit où ils sont tous classés et rassemblés en un seul lieu.
« Architecture et programmation des ordinateurs en un seul volume », écrit par l'ingénieur chevronné Jonathan Steinhart, explore en profondeur les concepts fondamentaux des ordinateurs.
Il couvre également un large éventail de sujets approfondis, notamment la structure interne du matériel informatique, le fonctionnement des logiciels sur ce matériel et la manière dont les gens ont utilisé la technologie pour résoudre des problèmes à travers l'histoire, ainsi que le développement de la technologie logicielle.
L'auteur vous raconte des histoires que vous ignoriez peut-être ou que vous aviez oubliées, sur ce qui se passe lorsque du code informatique est exécuté sur une machine appelée ordinateur.
Ce livre vous fournira une base solide pour apprendre à écrire de meilleurs logiciels et du code efficace.
Le code fonctionne bien, alors pourquoi s'inquiéter de la technologie sous-jacente ? Oui.
Comprendre la technologie sous-jacente depuis ses fondements vous aidera à améliorer le fonctionnement de vos programmes et à éviter les bugs frustrants et difficiles à trouver.
Personne ne souhaite que son code soit présenté au journal télévisé de 21 heures à cause d'un problème de sécurité.
Des informations détaillées sur de nombreuses technologies sont déjà disponibles en ligne.
Cependant, la plupart de ces documents sont mal organisés, et il est difficile de trouver un endroit où ils sont tous classés et rassemblés en un seul lieu.
« Architecture et programmation des ordinateurs en un seul volume », écrit par l'ingénieur chevronné Jonathan Steinhart, explore en profondeur les concepts fondamentaux des ordinateurs.
Il couvre également un large éventail de sujets approfondis, notamment la structure interne du matériel informatique, le fonctionnement des logiciels sur ce matériel et la manière dont les gens ont utilisé la technologie pour résoudre des problèmes à travers l'histoire, ainsi que le développement de la technologie logicielle.
L'auteur vous raconte des histoires que vous ignoriez peut-être ou que vous aviez oubliées, sur ce qui se passe lorsque du code informatique est exécuté sur une machine appelée ordinateur.
Ce livre vous fournira une base solide pour apprendre à écrire de meilleurs logiciels et du code efficace.
- Vous pouvez consulter un aperçu du contenu du livre.
Aperçu
indice
Chapitre 1.
Système de langage intégré à un ordinateur
Quel langage utilisent les ordinateurs ?
Qu'est-ce que le langage ?
langue écrite
peu
opérations logiques
___Algèbre booléenne
Loi de De Morgan
Comment représenter les entiers en bits
___représentation entière positive
addition binaire
___ expression négative
Comment exprimer une erreur
___Représentation à virgule fixe
___Représentation à virgule flottante
Norme IEEE pour les nombres à virgule flottante
système décimal codé binaire
Une manière simple de manipuler les nombres binaires
___Représentation octale
notation hexadécimale
Notation de base des langages de programmation
Le nom du groupe de beat
Représentation textuelle
___Code ASCII
___Évolution des autres normes
Format de conversion Unicode 8 bits
Représenter les nombres à l'aide de lettres
L'encodage a été modifié pour permettre la sortie.
Encodage ___base64
Encodage URL
Comment exprimer la couleur
___Ajouter de la transparence
Encodage de couleur
organiser
Chapitre 2.
Logique combinatoire dans les circuits électroniques
Comment les ordinateurs traitent-ils les bits ?
Exemples d'ordinateurs numériques
La différence entre l'analogique et le numérique
Pourquoi la taille compte en matière de matériel informatique
Le numérique permet des appareils plus fiables
Créer du numérique dans un monde analogique
___Pourquoi utiliser des bits plutôt que des nombres décimaux ?
Guide simple de la théorie électrique
L'électricité est similaire à la plomberie.
___interrupteur électrique
Matériel pour le traitement des bits
___Relais
___tube
___transistor
___circuit intégré
portes logiques
Amélioration de l'immunité au bruit grâce à l'utilisation du phénomène d'hystérésis
signal différentiel
délai de propagation
Type de sortie
circuits complexes combinant des portes logiques
___additionneur
Décodeur
___démultiplexeur
___sélecteur
organiser
Chapitre 3.
Au cœur de la mémoire et du disque : la logique séquentielle
Comment les ordinateurs mémorisent les bits
Représentation temporelle et mémoire d'état
___générateur
___horloge
___loquet
Loquet avec porte ___
___tongues
___bar
___registre
Organisation et adressage de la mémoire
mémoire à accès aléatoire
mémoire en lecture seule
dispositif de blocage
Mémoire flash et SSD
Détection et correction des erreurs
Comparaison du matériel et du logiciel
organiser
Chapitre 4.
Structure interne d'un ordinateur
Structure du matériel informatique
mémoire
Entrée et sortie
unité centrale de traitement
unité logique arithmétique
___changement
dispositif d'exécution
jeu d'instructions
___commande
Mode d'adressage
Commande de code conditionnel
instruction de branche
Configuration finale des commandes
Conception finale
___registre de commandes
Chemin de données et signaux de contrôle
___Contrôle du flux de données
jeux d'instructions RISC et CISC
GPU
organiser
Chapitre 5.
Architecture des ordinateurs et systèmes d'exploitation
Comment les ordinateurs organisent-ils les programmes et la mémoire ?
Éléments structurels de base
___cœurs de processeur
___Microprocesseurs et micro-ordinateurs
Procédures, sous-programmes et fonctions
empiler
interrompre
Adressage relatif
unité de gestion de la mémoire
mémoire virtuelle
espace système et espace utilisateur
Hiérarchie de la mémoire et performances
coprocesseur
Placement des données en mémoire
Exécutez le programme
consommation d'énergie de la mémoire
organiser
Chapitre 6.
Entrées/Sorties et mise en réseau
Comment les ordinateurs interagissent-ils avec le monde extérieur ?
E/S de bas niveau
Port d'E/S
Appuyez sur le bouton ___
Que la lumière soit
Lumière, mouvement et interaction
Contrôle de la luminosité
___2n nuances de gris
___Quadrature
communication parallèle
Communication en série
Surfez sur la vague ___
Bus série universel
Réseautage
Réseaux locaux récents
___Internet
méthode de traitement analogique
Convertir du numérique en analogique
___Convertir l'analogique en numérique
___audio numérique
___image numérique
___vidéo
dispositifs d'interface humaine
___Terminal
Terminal graphique
Graphiques vectoriels
Graphiques raster
clavier et souris
organiser
Chapitre 7.
Structures et traitement des données
Comment structurer et traiter efficacement les données dans un programme
Types de données de base
arrangement
bitmap
chaîne
types de données complexes
liste simplement chaînée
Allocation dynamique de mémoire
Allocation de mémoire plus efficace
Collecte des ordures
liste doublement chaînée
structure de données hiérarchique
périphérique de stockage de masse
base de données
Indice
Migration de données
E/S utilisant des vecteurs
Les pièges de l'orientation objet
tableau
Hacher
Efficacité et performance
organiser
Chapitre 8.
traitement du langage de programmation
Comment les ordinateurs interprètent et traduisent les programmes
langage d'assemblage
langage de haut niveau
Programmation structurée
Analyse lexicale
machine à états
___expression régulière
Des mots aux phrases
Une ère où n'importe qui peut créer un langage de programmation
Arbre à pâtisserie
Interprète
compilateur
Optimisation
Soyez prudent lors de la manipulation du matériel
organiser
Chapitre 9.
navigateur web
machines virtuelles pour comprendre les ordinateurs abstraits
langage de balisage
Localisateur de ressources uniformes
document HTML
DOM : Modèle objet de document
___Termes liés aux arbres
Traitement du DOM
CSS
Les langages de balisage tels que XML
JavaScript
jQuery
SVG
HTML5
JSON
organiser
Chapitre 10.
Programmation d'applications et programmation système
Comparaison des styles de programmation en langages de haut niveau et de bas niveau
Programme de devinettes d'animaux Version 1 : Programme HTML et JavaScript
Squelette au niveau de l'application
Corps de la page Web
___JavaScript
___CSS
Jeu de devinettes d'animaux Version 2 : Programme C
Terminal et ligne de commande
___Construction du programme
___Pilotes de terminal et de périphérique
___Changement de contexte
E/S standard
Tampon circulaire
Amélioration du code par abstraction
Bibliothèque d'exécution et entrée/sortie standard
Débordement du tampon
Programme C
___entraînement
organiser
Chapitre 11.
Techniques algorithmiques pour améliorer les performances
Astuces de programmation pour simplifier les calculs
Trouvez le tableau
___conversion
___Texture Mapping
Détermination du type de caractère
Comment calculer à l'aide d'entiers
___ligne droite
Gestion des courbes ___
___polynôme
Partitionnement récursif
___spirale
Géométrie constructive
___Shift et Masque
Autres techniques mathématiques pour éviter les calculs
Calcul d'approximation par série de puissances
Algorithme CORDIC
Exemples liés au hasard
courbe de remplissage d'espace
Système ___L
___Technique stochastique
___quantification
organiser
Chapitre 12.
Parallélisme et asynchronisme
Comment les ordinateurs font-ils autant de choses à la fois ?
Qu'est-ce qu'une condition de concurrence ?
ressources partagées
Processus et threads
Rocher
Taille des transactions et des opérations
___verrou en attente
___impasse
___Implémentation du verrouillage à court terme
___Mise en œuvre du verrouillage à long terme
JavaScript du navigateur
Fonctions asynchrones et promesses
organiser
Chapitre 13.
sécurité informatique
Comment les ordinateurs protègent les données
Aperçu de la sécurité et de la confidentialité
modèle de menace ___
___foi
___Sécurité physique
Sécurité des communications
Les temps modernes
Métadonnées et surveillance
___contexte social
___Authentification et autorisation
Cryptographie
___stéganographie
Chiffre de substitution ___
Chiffrement par transposition
Mot de passe plus complexe
serviettes hygiéniques jetables
problème d'échange de clés
Chiffrement à clé publique
___Sécurité optimale
Fonction de hachage cryptographique
___signature numérique
Infrastructure à clés publiques
Blockchain
Gestion des mots de passe
Précautions logicielles pour la sécurité
Protéger la bonne cible
___Vérifiez la logique trois fois
Vérifiez les erreurs ___
Réduisez votre surface d'attaque.
Restez à l'intérieur des ___ limites
Il est difficile de générer de bons nombres aléatoires.
___Connaissez votre code
___L'intelligence extrême est votre ennemie
Comprenez ce que vous voyez
___Ne pas trop collecter
Ne collectez pas ___
L'allocation dynamique de mémoire n'est pas votre amie
La collecte des ordures n'est pas votre amie non plus.
Données qui servent de code ___
organiser
Chapitre 14.
L'intelligence artificielle qui change le monde
L'intelligence artificielle, l'apprentissage automatique et le big data ouvrent la voie à l'avenir.
contour
apprentissage automatique
___Bayes
___Gauss
___Sobel
___Prudent
Extraction de caractéristiques
réseau neuronal artificiel
___Utilisation des données d'apprentissage automatique
intelligence artificielle
Big data
organiser
Chapitre 15.
Conseils et anecdotes pour devenir un excellent programmeur
Bon sens pratique et conseils à connaître
proposition de valeur
Les traces du développement logiciel
___Histoire abrégée
___Logiciels libres
Creative Commons
___Le développement de la transplantabilité
Gestion des paquets
___récipient
___Java
___nœud
informatique en nuage
machine virtuelle
appareil mobile
Environnement de programmation
Comment même les programmeurs débutants peuvent acquérir de l'expérience
Apprenez à estimer ___
___Planification de projet
___prise de décision
___Travailler avec des personnes ayant des personnalités différentes
___Gérer la culture d'entreprise
Choisissez avec ___ informations
Méthodologie de développement
Conception de projet
Notons nos pensées
Prototypage rapide
Conception d'interface
___Réutiliser le code ou écrire le vôtre ?
Développement de projet
Pensées aléatoires d'un vieux développeur
code portable
Contrôle du code source
___test
Signalement et suivi des bogues
___Refactorisation
___entretien
Gardez le style
Tirer parti des projets existants
organiser
Système de langage intégré à un ordinateur
Quel langage utilisent les ordinateurs ?
Qu'est-ce que le langage ?
langue écrite
peu
opérations logiques
___Algèbre booléenne
Loi de De Morgan
Comment représenter les entiers en bits
___représentation entière positive
addition binaire
___ expression négative
Comment exprimer une erreur
___Représentation à virgule fixe
___Représentation à virgule flottante
Norme IEEE pour les nombres à virgule flottante
système décimal codé binaire
Une manière simple de manipuler les nombres binaires
___Représentation octale
notation hexadécimale
Notation de base des langages de programmation
Le nom du groupe de beat
Représentation textuelle
___Code ASCII
___Évolution des autres normes
Format de conversion Unicode 8 bits
Représenter les nombres à l'aide de lettres
L'encodage a été modifié pour permettre la sortie.
Encodage ___base64
Encodage URL
Comment exprimer la couleur
___Ajouter de la transparence
Encodage de couleur
organiser
Chapitre 2.
Logique combinatoire dans les circuits électroniques
Comment les ordinateurs traitent-ils les bits ?
Exemples d'ordinateurs numériques
La différence entre l'analogique et le numérique
Pourquoi la taille compte en matière de matériel informatique
Le numérique permet des appareils plus fiables
Créer du numérique dans un monde analogique
___Pourquoi utiliser des bits plutôt que des nombres décimaux ?
Guide simple de la théorie électrique
L'électricité est similaire à la plomberie.
___interrupteur électrique
Matériel pour le traitement des bits
___Relais
___tube
___transistor
___circuit intégré
portes logiques
Amélioration de l'immunité au bruit grâce à l'utilisation du phénomène d'hystérésis
signal différentiel
délai de propagation
Type de sortie
circuits complexes combinant des portes logiques
___additionneur
Décodeur
___démultiplexeur
___sélecteur
organiser
Chapitre 3.
Au cœur de la mémoire et du disque : la logique séquentielle
Comment les ordinateurs mémorisent les bits
Représentation temporelle et mémoire d'état
___générateur
___horloge
___loquet
Loquet avec porte ___
___tongues
___bar
___registre
Organisation et adressage de la mémoire
mémoire à accès aléatoire
mémoire en lecture seule
dispositif de blocage
Mémoire flash et SSD
Détection et correction des erreurs
Comparaison du matériel et du logiciel
organiser
Chapitre 4.
Structure interne d'un ordinateur
Structure du matériel informatique
mémoire
Entrée et sortie
unité centrale de traitement
unité logique arithmétique
___changement
dispositif d'exécution
jeu d'instructions
___commande
Mode d'adressage
Commande de code conditionnel
instruction de branche
Configuration finale des commandes
Conception finale
___registre de commandes
Chemin de données et signaux de contrôle
___Contrôle du flux de données
jeux d'instructions RISC et CISC
GPU
organiser
Chapitre 5.
Architecture des ordinateurs et systèmes d'exploitation
Comment les ordinateurs organisent-ils les programmes et la mémoire ?
Éléments structurels de base
___cœurs de processeur
___Microprocesseurs et micro-ordinateurs
Procédures, sous-programmes et fonctions
empiler
interrompre
Adressage relatif
unité de gestion de la mémoire
mémoire virtuelle
espace système et espace utilisateur
Hiérarchie de la mémoire et performances
coprocesseur
Placement des données en mémoire
Exécutez le programme
consommation d'énergie de la mémoire
organiser
Chapitre 6.
Entrées/Sorties et mise en réseau
Comment les ordinateurs interagissent-ils avec le monde extérieur ?
E/S de bas niveau
Port d'E/S
Appuyez sur le bouton ___
Que la lumière soit
Lumière, mouvement et interaction
Contrôle de la luminosité
___2n nuances de gris
___Quadrature
communication parallèle
Communication en série
Surfez sur la vague ___
Bus série universel
Réseautage
Réseaux locaux récents
___Internet
méthode de traitement analogique
Convertir du numérique en analogique
___Convertir l'analogique en numérique
___audio numérique
___image numérique
___vidéo
dispositifs d'interface humaine
___Terminal
Terminal graphique
Graphiques vectoriels
Graphiques raster
clavier et souris
organiser
Chapitre 7.
Structures et traitement des données
Comment structurer et traiter efficacement les données dans un programme
Types de données de base
arrangement
bitmap
chaîne
types de données complexes
liste simplement chaînée
Allocation dynamique de mémoire
Allocation de mémoire plus efficace
Collecte des ordures
liste doublement chaînée
structure de données hiérarchique
périphérique de stockage de masse
base de données
Indice
Migration de données
E/S utilisant des vecteurs
Les pièges de l'orientation objet
tableau
Hacher
Efficacité et performance
organiser
Chapitre 8.
traitement du langage de programmation
Comment les ordinateurs interprètent et traduisent les programmes
langage d'assemblage
langage de haut niveau
Programmation structurée
Analyse lexicale
machine à états
___expression régulière
Des mots aux phrases
Une ère où n'importe qui peut créer un langage de programmation
Arbre à pâtisserie
Interprète
compilateur
Optimisation
Soyez prudent lors de la manipulation du matériel
organiser
Chapitre 9.
navigateur web
machines virtuelles pour comprendre les ordinateurs abstraits
langage de balisage
Localisateur de ressources uniformes
document HTML
DOM : Modèle objet de document
___Termes liés aux arbres
Traitement du DOM
CSS
Les langages de balisage tels que XML
JavaScript
jQuery
SVG
HTML5
JSON
organiser
Chapitre 10.
Programmation d'applications et programmation système
Comparaison des styles de programmation en langages de haut niveau et de bas niveau
Programme de devinettes d'animaux Version 1 : Programme HTML et JavaScript
Squelette au niveau de l'application
Corps de la page Web
___JavaScript
___CSS
Jeu de devinettes d'animaux Version 2 : Programme C
Terminal et ligne de commande
___Construction du programme
___Pilotes de terminal et de périphérique
___Changement de contexte
E/S standard
Tampon circulaire
Amélioration du code par abstraction
Bibliothèque d'exécution et entrée/sortie standard
Débordement du tampon
Programme C
___entraînement
organiser
Chapitre 11.
Techniques algorithmiques pour améliorer les performances
Astuces de programmation pour simplifier les calculs
Trouvez le tableau
___conversion
___Texture Mapping
Détermination du type de caractère
Comment calculer à l'aide d'entiers
___ligne droite
Gestion des courbes ___
___polynôme
Partitionnement récursif
___spirale
Géométrie constructive
___Shift et Masque
Autres techniques mathématiques pour éviter les calculs
Calcul d'approximation par série de puissances
Algorithme CORDIC
Exemples liés au hasard
courbe de remplissage d'espace
Système ___L
___Technique stochastique
___quantification
organiser
Chapitre 12.
Parallélisme et asynchronisme
Comment les ordinateurs font-ils autant de choses à la fois ?
Qu'est-ce qu'une condition de concurrence ?
ressources partagées
Processus et threads
Rocher
Taille des transactions et des opérations
___verrou en attente
___impasse
___Implémentation du verrouillage à court terme
___Mise en œuvre du verrouillage à long terme
JavaScript du navigateur
Fonctions asynchrones et promesses
organiser
Chapitre 13.
sécurité informatique
Comment les ordinateurs protègent les données
Aperçu de la sécurité et de la confidentialité
modèle de menace ___
___foi
___Sécurité physique
Sécurité des communications
Les temps modernes
Métadonnées et surveillance
___contexte social
___Authentification et autorisation
Cryptographie
___stéganographie
Chiffre de substitution ___
Chiffrement par transposition
Mot de passe plus complexe
serviettes hygiéniques jetables
problème d'échange de clés
Chiffrement à clé publique
___Sécurité optimale
Fonction de hachage cryptographique
___signature numérique
Infrastructure à clés publiques
Blockchain
Gestion des mots de passe
Précautions logicielles pour la sécurité
Protéger la bonne cible
___Vérifiez la logique trois fois
Vérifiez les erreurs ___
Réduisez votre surface d'attaque.
Restez à l'intérieur des ___ limites
Il est difficile de générer de bons nombres aléatoires.
___Connaissez votre code
___L'intelligence extrême est votre ennemie
Comprenez ce que vous voyez
___Ne pas trop collecter
Ne collectez pas ___
L'allocation dynamique de mémoire n'est pas votre amie
La collecte des ordures n'est pas votre amie non plus.
Données qui servent de code ___
organiser
Chapitre 14.
L'intelligence artificielle qui change le monde
L'intelligence artificielle, l'apprentissage automatique et le big data ouvrent la voie à l'avenir.
contour
apprentissage automatique
___Bayes
___Gauss
___Sobel
___Prudent
Extraction de caractéristiques
réseau neuronal artificiel
___Utilisation des données d'apprentissage automatique
intelligence artificielle
Big data
organiser
Chapitre 15.
Conseils et anecdotes pour devenir un excellent programmeur
Bon sens pratique et conseils à connaître
proposition de valeur
Les traces du développement logiciel
___Histoire abrégée
___Logiciels libres
Creative Commons
___Le développement de la transplantabilité
Gestion des paquets
___récipient
___Java
___nœud
informatique en nuage
machine virtuelle
appareil mobile
Environnement de programmation
Comment même les programmeurs débutants peuvent acquérir de l'expérience
Apprenez à estimer ___
___Planification de projet
___prise de décision
___Travailler avec des personnes ayant des personnalités différentes
___Gérer la culture d'entreprise
Choisissez avec ___ informations
Méthodologie de développement
Conception de projet
Notons nos pensées
Prototypage rapide
Conception d'interface
___Réutiliser le code ou écrire le vôtre ?
Développement de projet
Pensées aléatoires d'un vieux développeur
code portable
Contrôle du code source
___test
Signalement et suivi des bogues
___Refactorisation
___entretien
Gardez le style
Tirer parti des projets existants
organiser
Image détaillée

Avis de l'éditeur
Comment fonctionnent les ordinateurs et qu'est-ce que la programmation informatique ? Apprendre à programmer pour devenir développeur n'est que le point de départ ! Ce cours d'informatique fondamentale est accessible et stimulant, aussi bien pour les développeurs que pour les non-programmeurs, et offre une vue d'ensemble complète du sujet.
Ce livre d'introduction à l'ingénierie informatique couvre presque tout ce que tout développeur doit savoir sur l'architecture et la programmation informatique, en commençant par les circuits et portes électroniques de base qui constituent le fondement du matériel, et en expliquant la mémoire, le processeur, les E/S et l'architecture informatique globale, ainsi que la manière d'écrire des logiciels par-dessus avec des programmes web et C, et en abordant même des sujets tels que la sécurité, l'intelligence artificielle et les algorithmes !
Ce que ce livre couvre
- Les principes et les méthodes de conversion du monde réel en formes compréhensibles par les ordinateurs, telles que les bits, la logique, les nombres, le texte et les couleurs.
- Les éléments de base qui constituent un ordinateur, tels que les portes logiques, les additionneurs, les décodeurs, les registres et la mémoire
- Pourquoi les programmes doivent être conçus en tenant compte du matériel informatique, et notamment de la mémoire, afin d'améliorer leurs performances.
- Le processus par lequel un programme est converti en langage machine compréhensible par un ordinateur.
- Comment créer un programme de type navigateur web en combinant des composants logiciels
- Algorithmes et astuces de programmation pour rendre les programmes plus efficaces, tels que les invariants de boucle, la réduction de la complexité et le partitionnement récursif.
- Comprendre la sécurité informatique, l'intelligence artificielle, l'apprentissage automatique et le big data
- Expérience et conseils sur les pratiques de programmation concrètes dans le domaine, notamment la conception de projets, la documentation, la planification, la portabilité et la maintenance.
Structure de ce livre
Ce livre est conceptuellement divisé en trois parties.
La première partie explore le matériel informatique.
Nous allons examiner ce qu'est le matériel informatique et comment il est fabriqué.
La deuxième partie examine comment le logiciel fonctionne sur le matériel.
La dernière partie porte sur les compétences en programmation, c'est-à-dire comment collaborer avec d'autres pour créer de meilleurs programmes.
Chapitre 1, « Les systèmes de langage à l’intérieur des ordinateurs »
Le chapitre 1 commence par explorer l'esprit d'un enfant de trois ans.
Un ordinateur est une machine qui manipule des bits.
Les ordinateurs fonctionnent en collectant des bits.
Vous apprendrez ce que sont les bits et ce que vous pouvez faire avec.
Nous allons jouer à un jeu de « suppositions » pour donner un sens à un rythme ou à une collection de rythmes.
Chapitre 2, « Logique combinatoire dans les circuits électroniques »
Ce chapitre explique pourquoi il est judicieux d'utiliser des bits plutôt que des nombres, et explore ce raisonnement dans le contexte des ordinateurs numériques.
Dans ce cours, nous explorons les technologies anciennes qui ont ouvert la voie aux technologies que nous utilisons aujourd'hui.
Le chapitre 2 explique les bases de la logique combinatoire et vous apprend à construire des fonctions plus complexes à l'aide de bits et de logique.
Chapitre 3, « Le cœur de la mémoire et du disque : la logique séquentielle »
Vous apprendrez ici comment créer de la mémoire à l'aide de la logique.
Et puisque la mémoire n'est qu'un état qui persiste dans le temps, examinons comment le temps est créé.
Le chapitre 3 explique les principes fondamentaux de la logique séquentielle et aborde diverses technologies de mémoire.
Chapitre 4, « Les composants internes d'un ordinateur »
Ce chapitre explique comment construire un ordinateur en utilisant la logique et la mémoire présentées précédemment.
Nous allons examiner plusieurs méthodologies de mise en œuvre.
Chapitre 5, « Architecture des ordinateurs et systèmes d’exploitation »
Au chapitre 5, nous ajoutons quelques périphériques à l'ordinateur de base que nous avons examiné au chapitre 4.
Apprenez comment optimiser les fonctionnalités et l'efficacité de votre ordinateur.
Chapitre 6, « Entrées/Sorties et mise en réseau »
Les ordinateurs doivent interagir avec le monde extérieur.
Le chapitre 6 traite des entrées et sorties (E/S).
Nous examinerons les différences entre le numérique et l'analogique, et comment les ordinateurs numériques peuvent interagir avec le monde analogique.
Chapitre 7, « Structures de données et traitement »
Maintenant que vous avez appris comment fonctionnent les ordinateurs, vous devez apprendre à les utiliser plus efficacement.
Les programmes informatiques manipulent les données en mémoire.
Il est donc important de bien cartographier la manière dont un programme utilise la mémoire en fonction du problème qu'il tente de résoudre.
Chapitre 8, « Traitement du langage de programmation »
Les gens ont inventé les langages pour faciliter la programmation des ordinateurs.
Le chapitre 8 décrit le processus de conversion du langage en quelque chose qu'un ordinateur peut réellement exécuter.
Chapitre 9, « Navigateurs Web »
De nombreux programmes sont conçus pour être utilisés dans les navigateurs web.
Le chapitre 9 examine le fonctionnement des navigateurs Web et explore les principaux composants qui constituent un navigateur Web.
Chapitre 10, « Programmation d'applications et programmation système »
Nous écrivons deux versions du programme, l'une s'exécutant au niveau de l'application et l'autre au niveau du système, et nous démontrons plusieurs différences entre la programmation au niveau de l'application et la programmation au niveau du système.
Chapitre 11, « Techniques algorithmiques pour l’amélioration des performances »
Il est important de rendre le programme efficace.
Le chapitre 11 explore comment rendre vos programmes plus efficaces et améliorer leurs performances en évitant le travail inutile.
Chapitre 12, « Parallélisme et asynchronisme »
Il existe de nombreux systèmes qui contiennent un ou plusieurs ordinateurs.
Le chapitre 12 examine plusieurs problèmes qui surviennent lorsque plusieurs ordinateurs coopèrent pour résoudre un problème.
Chapitre 13, « Sécurité informatique »
La sécurité informatique est un sujet avancé.
Le chapitre 13 présente les principes fondamentaux de la sécurité tout en explorant brièvement les mathématiques avancées nécessaires à la sécurité.
Chapitre 14, « L’intelligence artificielle qui change le monde »
Le chapitre 14 aborde également des sujets avancés.
Nous abordons les nouvelles applications issues de la combinaison du big data, de l'intelligence artificielle et de l'apprentissage automatique, de la conduite autonome à la publicité agressive.
Chapitre 15, « Conseils et anecdotes pour devenir un excellent programmeur »
La programmation est un processus très systématique et logique.
Mais lorsqu'il s'agit de décider du pourquoi et du comment d'un programme, des personnes sont souvent impliquées, et ces personnes manquent souvent de logique.
Le chapitre 15 aborde certains des problèmes qui surviennent lors de la programmation dans le monde réel.
Public cible de ce livre
Ce livre s'adresse à ceux qui souhaitent devenir de bons programmeurs.
Qu’est-ce qui fait un bon programmeur ? Avant tout, un bon programmeur doit posséder de solides compétences en matière de pensée critique et d’analyse.
Pour résoudre des problèmes complexes, les programmeurs doivent être capables de déterminer si leurs programmes résolvent correctement le problème visé.
C'est plus difficile que vous ne le pensez.
Il n'est pas rare que des programmeurs expérimentés examinent le code de quelqu'un d'autre et commentent : « Oh, ce programme n'est qu'une solution compliquée à un problème simple qui n'a même pas de réponse correcte. »
Vous connaissez peut-être ce classique de la fantasy où un magicien acquiert un pouvoir croissant sur les objets à mesure qu'il apprend leurs véritables noms.
Malheur au magicien qui oublie les détails ! Un bon programmeur est celui qui, comme ce magicien, saisit l'essence des choses sans en négliger les détails.
Les bons programmeurs possèdent également un sens artistique, à l'instar des artisans qualifiés.
Il n'est pas rare de tomber sur des codes totalement indéchiffrables, comme le texte anglais original du roman Finnegans Wake de James Joyce, réputé pour être difficile à comprendre même pour les anglophones natifs.
Un bon programmeur écrit du code qui non seulement fonctionne, mais qui est aussi facile à comprendre et à maintenir pour les autres.
Enfin, un bon programmeur doit avoir une bonne compréhension du fonctionnement des ordinateurs.
Si vos connaissances de base sont superficielles, vous ne pourrez pas bien résoudre les problèmes complexes.
Ce livre s'adresse aux personnes qui apprennent la programmation mais qui sont insatisfaites par manque de profondeur.
C'est aussi un livre pour les personnes qui ont déjà appris la programmation mais qui souhaitent en savoir plus sur la programmation et les ordinateurs.
[Note de l'auteur]
Stephen Wolfram, créateur de Mathematica et du langage Wolfram, présente un point de vue intéressant mais assez différent sur la manière d'enseigner la programmation dans son article de blog intitulé « Comment enseigner la pensée informatique ».
Wolfram a défini la pensée computationnelle comme « une manière de formuler les choses de façon suffisamment claire et systématique pour indiquer à un ordinateur ce qu'il doit faire ».
Je suis entièrement d'accord avec cette définition.
En fait, cet argument est en grande partie ce qui m'a conduit à écrire ce livre.
Cependant, je suis en profond désaccord avec l'affirmation de Wolfram selon laquelle les personnes apprenant à programmer devraient utiliser les outils puissants et de haut niveau qu'il a développés au lieu d'acquérir les compétences fondamentales nécessaires au développement de la pensée informatique.
Par exemple, l'intérêt croissant porté aux statistiques par rapport au calcul différentiel et intégral indique clairement que le « traitement des données » devient un domaine de plus en plus important.
Mais que se passe-t-il lorsque les gens saisissent d'énormes quantités de données dans des programmes sophistiqués et n'y comprennent rien ?
Une possibilité dans ce cas est que les gens produisent des résultats qui semblent amusants mais qui sont soit totalement dénués de sens, soit incorrects.
Par exemple, une étude récente de Mark Zimmerman, Yotam Eren et Assam El-Osta (« Les erreurs de noms de gènes sont répandues dans la littérature scientifique ») a révélé qu’environ un cinquième des articles de génétique contenaient des erreurs dues à une utilisation incorrecte des tableurs.
Considérons ce genre d'erreurs et imaginons les conséquences lorsque des outils plus puissants sont mis entre les mains d'un plus grand nombre de personnes ! Lorsqu'il s'agit d'impacter des vies humaines, corriger ces erreurs devient d'autant plus crucial.
Une bonne compréhension de la technologie sous-jacente peut vous aider à développer la capacité de reconnaître lorsqu'un problème survient.
La connaissance exclusive d'outils de haut niveau peut conduire à poser les mauvaises questions.
Si vous voulez utiliser un outil électrique, vous devez d'abord apprendre à utiliser un marteau.
Une autre raison d'apprendre les sous-systèmes et les outils est que cela vous donne la possibilité de créer de nouveaux outils.
Il y aura toujours besoin de personnes capables de créer de nouveaux outils, et à mesure que le nombre d'utilisateurs d'outils augmente, l'importance de ces personnes s'accroît.
Si vous comprenez bien les ordinateurs et que vous pouvez démystifier le fonctionnement des programmes, vous serez certainement capable d'écrire un meilleur code.
[Note du traducteur]
N'importe qui peut être programmeur, mais tout le monde ne peut pas être un bon programmeur.
De même qu'il n'est pas forcément nécessaire de savoir assembler une voiture pour bien la conduire, mais que pour devenir un pilote de Formule 1 de haut niveau, il faut non seulement les capacités physiques et mentales nécessaires à la conduite, mais aussi diverses connaissances en ingénierie pour préparer la voiture à la course, pour devenir un bon programmeur, il faut posséder des connaissances du domaine ainsi qu'une bonne compréhension du fonctionnement des ordinateurs et de l'ingénierie informatique en général.
Heureusement, les développeurs de plus de 40 ans, dont je fais partie, ont pu naturellement élargir leurs horizons technologiques au fil des années, en suivant l'évolution du secteur informatique. Cependant, de nos jours, le rythme de production des connaissances et la rapidité des changements dans les frameworks et les langages de programmation rendent difficile pour les nouveaux venus dans le monde informatique de se tenir au courant des évolutions des frameworks et des langages de programmation utilisés en pratique, ainsi que des nouvelles tendances technologiques.
Mais cela ne signifie pas que vous devriez renoncer à étudier les fondamentaux de l'ingénierie informatique.
Comprendre le fonctionnement des ordinateurs et les principes fondamentaux de la programmation peut faciliter le dépannage lorsque vos propres programmes ne fonctionnent pas correctement, et peut également simplifier considérablement l'apprentissage et la maîtrise des nouvelles technologies.
L'idéal serait d'avoir un bon professeur capable d'expliquer clairement le matériel, les logiciels et autres aspects, mais il est tout aussi valable de comprendre l'informatique en général grâce à un livre qui explique les bases de manière simple et qui fournit un socle pour approfondir ses connaissances en ingénierie informatique.
Ce livre est un recueil des expériences de l'auteur en tant que bénévole dans l'enseignement auprès d'étudiants.
Il s'agit d'un ouvrage d'introduction à l'ingénierie informatique qui couvre presque tout, depuis les circuits électroniques et les portes logiques de base qui constituent le fondement du matériel, jusqu'à la mémoire, le processeur, les entrées/sorties et l'architecture globale de l'ordinateur, et donne un aperçu de la façon d'écrire des logiciels par-dessus via le web et les programmes en C, et aborde même la sécurité, l'intelligence artificielle et les algorithmes.
Si vous parcourez rapidement ce livre pour vous familiariser avec l'ingénierie informatique, puis que vous approfondissez progressivement vos connaissances en consultant des livres ou des cours en ligne qui couvrent chaque domaine plus en détail, vous finirez par développer vos compétences et devenir un bon programmeur.
J'espère que ce livre sera utile aux lecteurs en général intéressés par l'informatique et aux développeurs qui souhaitent un bref aperçu du génie informatique.
- Oh Hyun-seok de Brisbane, Australie
Ce livre d'introduction à l'ingénierie informatique couvre presque tout ce que tout développeur doit savoir sur l'architecture et la programmation informatique, en commençant par les circuits et portes électroniques de base qui constituent le fondement du matériel, et en expliquant la mémoire, le processeur, les E/S et l'architecture informatique globale, ainsi que la manière d'écrire des logiciels par-dessus avec des programmes web et C, et en abordant même des sujets tels que la sécurité, l'intelligence artificielle et les algorithmes !
Ce que ce livre couvre
- Les principes et les méthodes de conversion du monde réel en formes compréhensibles par les ordinateurs, telles que les bits, la logique, les nombres, le texte et les couleurs.
- Les éléments de base qui constituent un ordinateur, tels que les portes logiques, les additionneurs, les décodeurs, les registres et la mémoire
- Pourquoi les programmes doivent être conçus en tenant compte du matériel informatique, et notamment de la mémoire, afin d'améliorer leurs performances.
- Le processus par lequel un programme est converti en langage machine compréhensible par un ordinateur.
- Comment créer un programme de type navigateur web en combinant des composants logiciels
- Algorithmes et astuces de programmation pour rendre les programmes plus efficaces, tels que les invariants de boucle, la réduction de la complexité et le partitionnement récursif.
- Comprendre la sécurité informatique, l'intelligence artificielle, l'apprentissage automatique et le big data
- Expérience et conseils sur les pratiques de programmation concrètes dans le domaine, notamment la conception de projets, la documentation, la planification, la portabilité et la maintenance.
Structure de ce livre
Ce livre est conceptuellement divisé en trois parties.
La première partie explore le matériel informatique.
Nous allons examiner ce qu'est le matériel informatique et comment il est fabriqué.
La deuxième partie examine comment le logiciel fonctionne sur le matériel.
La dernière partie porte sur les compétences en programmation, c'est-à-dire comment collaborer avec d'autres pour créer de meilleurs programmes.
Chapitre 1, « Les systèmes de langage à l’intérieur des ordinateurs »
Le chapitre 1 commence par explorer l'esprit d'un enfant de trois ans.
Un ordinateur est une machine qui manipule des bits.
Les ordinateurs fonctionnent en collectant des bits.
Vous apprendrez ce que sont les bits et ce que vous pouvez faire avec.
Nous allons jouer à un jeu de « suppositions » pour donner un sens à un rythme ou à une collection de rythmes.
Chapitre 2, « Logique combinatoire dans les circuits électroniques »
Ce chapitre explique pourquoi il est judicieux d'utiliser des bits plutôt que des nombres, et explore ce raisonnement dans le contexte des ordinateurs numériques.
Dans ce cours, nous explorons les technologies anciennes qui ont ouvert la voie aux technologies que nous utilisons aujourd'hui.
Le chapitre 2 explique les bases de la logique combinatoire et vous apprend à construire des fonctions plus complexes à l'aide de bits et de logique.
Chapitre 3, « Le cœur de la mémoire et du disque : la logique séquentielle »
Vous apprendrez ici comment créer de la mémoire à l'aide de la logique.
Et puisque la mémoire n'est qu'un état qui persiste dans le temps, examinons comment le temps est créé.
Le chapitre 3 explique les principes fondamentaux de la logique séquentielle et aborde diverses technologies de mémoire.
Chapitre 4, « Les composants internes d'un ordinateur »
Ce chapitre explique comment construire un ordinateur en utilisant la logique et la mémoire présentées précédemment.
Nous allons examiner plusieurs méthodologies de mise en œuvre.
Chapitre 5, « Architecture des ordinateurs et systèmes d’exploitation »
Au chapitre 5, nous ajoutons quelques périphériques à l'ordinateur de base que nous avons examiné au chapitre 4.
Apprenez comment optimiser les fonctionnalités et l'efficacité de votre ordinateur.
Chapitre 6, « Entrées/Sorties et mise en réseau »
Les ordinateurs doivent interagir avec le monde extérieur.
Le chapitre 6 traite des entrées et sorties (E/S).
Nous examinerons les différences entre le numérique et l'analogique, et comment les ordinateurs numériques peuvent interagir avec le monde analogique.
Chapitre 7, « Structures de données et traitement »
Maintenant que vous avez appris comment fonctionnent les ordinateurs, vous devez apprendre à les utiliser plus efficacement.
Les programmes informatiques manipulent les données en mémoire.
Il est donc important de bien cartographier la manière dont un programme utilise la mémoire en fonction du problème qu'il tente de résoudre.
Chapitre 8, « Traitement du langage de programmation »
Les gens ont inventé les langages pour faciliter la programmation des ordinateurs.
Le chapitre 8 décrit le processus de conversion du langage en quelque chose qu'un ordinateur peut réellement exécuter.
Chapitre 9, « Navigateurs Web »
De nombreux programmes sont conçus pour être utilisés dans les navigateurs web.
Le chapitre 9 examine le fonctionnement des navigateurs Web et explore les principaux composants qui constituent un navigateur Web.
Chapitre 10, « Programmation d'applications et programmation système »
Nous écrivons deux versions du programme, l'une s'exécutant au niveau de l'application et l'autre au niveau du système, et nous démontrons plusieurs différences entre la programmation au niveau de l'application et la programmation au niveau du système.
Chapitre 11, « Techniques algorithmiques pour l’amélioration des performances »
Il est important de rendre le programme efficace.
Le chapitre 11 explore comment rendre vos programmes plus efficaces et améliorer leurs performances en évitant le travail inutile.
Chapitre 12, « Parallélisme et asynchronisme »
Il existe de nombreux systèmes qui contiennent un ou plusieurs ordinateurs.
Le chapitre 12 examine plusieurs problèmes qui surviennent lorsque plusieurs ordinateurs coopèrent pour résoudre un problème.
Chapitre 13, « Sécurité informatique »
La sécurité informatique est un sujet avancé.
Le chapitre 13 présente les principes fondamentaux de la sécurité tout en explorant brièvement les mathématiques avancées nécessaires à la sécurité.
Chapitre 14, « L’intelligence artificielle qui change le monde »
Le chapitre 14 aborde également des sujets avancés.
Nous abordons les nouvelles applications issues de la combinaison du big data, de l'intelligence artificielle et de l'apprentissage automatique, de la conduite autonome à la publicité agressive.
Chapitre 15, « Conseils et anecdotes pour devenir un excellent programmeur »
La programmation est un processus très systématique et logique.
Mais lorsqu'il s'agit de décider du pourquoi et du comment d'un programme, des personnes sont souvent impliquées, et ces personnes manquent souvent de logique.
Le chapitre 15 aborde certains des problèmes qui surviennent lors de la programmation dans le monde réel.
Public cible de ce livre
Ce livre s'adresse à ceux qui souhaitent devenir de bons programmeurs.
Qu’est-ce qui fait un bon programmeur ? Avant tout, un bon programmeur doit posséder de solides compétences en matière de pensée critique et d’analyse.
Pour résoudre des problèmes complexes, les programmeurs doivent être capables de déterminer si leurs programmes résolvent correctement le problème visé.
C'est plus difficile que vous ne le pensez.
Il n'est pas rare que des programmeurs expérimentés examinent le code de quelqu'un d'autre et commentent : « Oh, ce programme n'est qu'une solution compliquée à un problème simple qui n'a même pas de réponse correcte. »
Vous connaissez peut-être ce classique de la fantasy où un magicien acquiert un pouvoir croissant sur les objets à mesure qu'il apprend leurs véritables noms.
Malheur au magicien qui oublie les détails ! Un bon programmeur est celui qui, comme ce magicien, saisit l'essence des choses sans en négliger les détails.
Les bons programmeurs possèdent également un sens artistique, à l'instar des artisans qualifiés.
Il n'est pas rare de tomber sur des codes totalement indéchiffrables, comme le texte anglais original du roman Finnegans Wake de James Joyce, réputé pour être difficile à comprendre même pour les anglophones natifs.
Un bon programmeur écrit du code qui non seulement fonctionne, mais qui est aussi facile à comprendre et à maintenir pour les autres.
Enfin, un bon programmeur doit avoir une bonne compréhension du fonctionnement des ordinateurs.
Si vos connaissances de base sont superficielles, vous ne pourrez pas bien résoudre les problèmes complexes.
Ce livre s'adresse aux personnes qui apprennent la programmation mais qui sont insatisfaites par manque de profondeur.
C'est aussi un livre pour les personnes qui ont déjà appris la programmation mais qui souhaitent en savoir plus sur la programmation et les ordinateurs.
[Note de l'auteur]
Stephen Wolfram, créateur de Mathematica et du langage Wolfram, présente un point de vue intéressant mais assez différent sur la manière d'enseigner la programmation dans son article de blog intitulé « Comment enseigner la pensée informatique ».
Wolfram a défini la pensée computationnelle comme « une manière de formuler les choses de façon suffisamment claire et systématique pour indiquer à un ordinateur ce qu'il doit faire ».
Je suis entièrement d'accord avec cette définition.
En fait, cet argument est en grande partie ce qui m'a conduit à écrire ce livre.
Cependant, je suis en profond désaccord avec l'affirmation de Wolfram selon laquelle les personnes apprenant à programmer devraient utiliser les outils puissants et de haut niveau qu'il a développés au lieu d'acquérir les compétences fondamentales nécessaires au développement de la pensée informatique.
Par exemple, l'intérêt croissant porté aux statistiques par rapport au calcul différentiel et intégral indique clairement que le « traitement des données » devient un domaine de plus en plus important.
Mais que se passe-t-il lorsque les gens saisissent d'énormes quantités de données dans des programmes sophistiqués et n'y comprennent rien ?
Une possibilité dans ce cas est que les gens produisent des résultats qui semblent amusants mais qui sont soit totalement dénués de sens, soit incorrects.
Par exemple, une étude récente de Mark Zimmerman, Yotam Eren et Assam El-Osta (« Les erreurs de noms de gènes sont répandues dans la littérature scientifique ») a révélé qu’environ un cinquième des articles de génétique contenaient des erreurs dues à une utilisation incorrecte des tableurs.
Considérons ce genre d'erreurs et imaginons les conséquences lorsque des outils plus puissants sont mis entre les mains d'un plus grand nombre de personnes ! Lorsqu'il s'agit d'impacter des vies humaines, corriger ces erreurs devient d'autant plus crucial.
Une bonne compréhension de la technologie sous-jacente peut vous aider à développer la capacité de reconnaître lorsqu'un problème survient.
La connaissance exclusive d'outils de haut niveau peut conduire à poser les mauvaises questions.
Si vous voulez utiliser un outil électrique, vous devez d'abord apprendre à utiliser un marteau.
Une autre raison d'apprendre les sous-systèmes et les outils est que cela vous donne la possibilité de créer de nouveaux outils.
Il y aura toujours besoin de personnes capables de créer de nouveaux outils, et à mesure que le nombre d'utilisateurs d'outils augmente, l'importance de ces personnes s'accroît.
Si vous comprenez bien les ordinateurs et que vous pouvez démystifier le fonctionnement des programmes, vous serez certainement capable d'écrire un meilleur code.
[Note du traducteur]
N'importe qui peut être programmeur, mais tout le monde ne peut pas être un bon programmeur.
De même qu'il n'est pas forcément nécessaire de savoir assembler une voiture pour bien la conduire, mais que pour devenir un pilote de Formule 1 de haut niveau, il faut non seulement les capacités physiques et mentales nécessaires à la conduite, mais aussi diverses connaissances en ingénierie pour préparer la voiture à la course, pour devenir un bon programmeur, il faut posséder des connaissances du domaine ainsi qu'une bonne compréhension du fonctionnement des ordinateurs et de l'ingénierie informatique en général.
Heureusement, les développeurs de plus de 40 ans, dont je fais partie, ont pu naturellement élargir leurs horizons technologiques au fil des années, en suivant l'évolution du secteur informatique. Cependant, de nos jours, le rythme de production des connaissances et la rapidité des changements dans les frameworks et les langages de programmation rendent difficile pour les nouveaux venus dans le monde informatique de se tenir au courant des évolutions des frameworks et des langages de programmation utilisés en pratique, ainsi que des nouvelles tendances technologiques.
Mais cela ne signifie pas que vous devriez renoncer à étudier les fondamentaux de l'ingénierie informatique.
Comprendre le fonctionnement des ordinateurs et les principes fondamentaux de la programmation peut faciliter le dépannage lorsque vos propres programmes ne fonctionnent pas correctement, et peut également simplifier considérablement l'apprentissage et la maîtrise des nouvelles technologies.
L'idéal serait d'avoir un bon professeur capable d'expliquer clairement le matériel, les logiciels et autres aspects, mais il est tout aussi valable de comprendre l'informatique en général grâce à un livre qui explique les bases de manière simple et qui fournit un socle pour approfondir ses connaissances en ingénierie informatique.
Ce livre est un recueil des expériences de l'auteur en tant que bénévole dans l'enseignement auprès d'étudiants.
Il s'agit d'un ouvrage d'introduction à l'ingénierie informatique qui couvre presque tout, depuis les circuits électroniques et les portes logiques de base qui constituent le fondement du matériel, jusqu'à la mémoire, le processeur, les entrées/sorties et l'architecture globale de l'ordinateur, et donne un aperçu de la façon d'écrire des logiciels par-dessus via le web et les programmes en C, et aborde même la sécurité, l'intelligence artificielle et les algorithmes.
Si vous parcourez rapidement ce livre pour vous familiariser avec l'ingénierie informatique, puis que vous approfondissez progressivement vos connaissances en consultant des livres ou des cours en ligne qui couvrent chaque domaine plus en détail, vous finirez par développer vos compétences et devenir un bon programmeur.
J'espère que ce livre sera utile aux lecteurs en général intéressés par l'informatique et aux développeurs qui souhaitent un bref aperçu du génie informatique.
- Oh Hyun-seok de Brisbane, Australie
SPÉCIFICATIONS DES PRODUITS
- Date de publication : 8 avril 2021
Nombre de pages, poids, dimensions : 636 pages | 185 × 240 × 31 mm
- ISBN13 : 9791189909284
- ISBN10 : 1189909286
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne