Code, hidden language (2nd edition)

Publié le 19/02/2023

Au commencement Ă©tait les codes morse et braille, en suivant l’analogie de la lumiĂšre et de la nĂ©cessitĂ© de communiquer en complexifiant de plus en plus l’environnement: d’abord avec une personne en face de nous, et la possibilitĂ© de nous faire comprendre avec une seule lampe torche et un dictionnaire de correspondance, aprĂšs quoi il faut pouvoir communiquer avec quelqu’un parallĂšle Ă  nous, via quelques mĂ©canismes de base de lampes.

C’est super bien amenĂ©, je n’ai jamais lu une synthĂšse aussi concise et claire de l’algĂšbre de Boole, avec sa reprĂ©sentation lumineuse sur un circuit Ă©lectrique. Les analogies sont claires et bien expliquĂ©es, avec des beaux schĂ©mas plein de couleurs et des explications qui nous prennent par la main pour le plus grand bonheur de mon cerveau qui peut enfin se dĂ©gourdir les neurones sans ĂȘtre pris pour un demeurĂ©.

On voit aussi la loi de De Morgan sur les inventeurs, la dĂ©finition des six portes logiques classiques, tout cela sur base du fonctionnement d’une ampoule 💡 et d’un dĂ©but de circuit logique.

AprĂšs cela, les systĂšmes numĂ©riques sont amenĂ©s: le plus simple Ă©tant le bit. En retirant le 1, on se retrouverait avec uniquement des 0, ce qui ne permettrait pas d’aller trĂšs loin. Le nombre de bits Ă©tant directement liĂ© au nombre de codes possibles, on a droit Ă  une introduction succincte aux logarithmes, aux codes barres, UPC, Quick-Response (QR) codes et leurs structures associĂ©es. Ce qui est marrant, c’est de dĂ©couvrir que beaucoup de ces bits sont dĂ©diĂ©s Ă  la correction (ou dĂ©tection) d’erreurs: un code UPC contient 95 bits, mais est en fait reprĂ©sentĂ© par 113 bits, pour avoir un guard pattern. C’est pareil pour un QR code: nous avons potentiellement 25*25 bits (= 625) disponibles, mais dont un tiers seulement est rĂ©ellement dĂ©diĂ© au stockage d’informations: chaque QR contient trois grands blocs (les Finder patterns), un bloc moyen sur le bas Ă  droite (« alignment pattern »), auxquels s’ajoutent un « timing pattern » (qui permet de dĂ©terminer le nombre de modules - la version 40 des QR codes autorise 177 modules horizontales et verticaux), un « format information », le nombre de caractĂšres composant les donnĂ©es, etc.

Ensuite, cela bascule vers les diffĂ©rents types d’encodage (en commençant par Charles Baudot (d’oĂč le terme de « bauds »), l’ascii, puis l’ANSI comme extension proposĂ©e par Microsoft dans sa premiĂšre version de Windows, qui a ensuite Ă©tĂ© approuvĂ©e comme norme iso (la 8859-1, ou alphabet latin numĂ©ro 1), qui a lui-mĂȘme Ă©tĂ© Ă©tendu pour devenir l’encodage Windows 1252. Arrive ensuite Unicode (dont les rĂ©flexions de base datent de 1988 hein, c’est pas rĂ©cent non plus). Comme Unicode est codĂ© sur 16 bits (= 2 bytes), il a Ă©tĂ© nĂ©cessaire de dĂ©finir un « Byte Order Mark) correspondant Ă  la valeur U+FEFF, pour savoir si la machine de destination Ă©tait en big endian ou little endian. Tout un programme qui ne posait finalement aucun soucis lorsque les caractĂšres Ă©taient sur 7 bits (ascii) ou 8 bits (ansi) 😋. L’apothĂ©ose Ă©tant prĂ©sentĂ©e par UTF (Unicode Transformation Format), reprĂ©sentant les caractĂšres Unicode sur un ensemble fixe de bits. UTF8 est le plus connu, est utilisĂ© par 97% des sites web (de 2021) et reprĂ©sente le meilleur ratio compacitĂ© vs puretĂ© (puisqu’utf8 demande des opĂ©rations sur les bytes, sachant que les 32 bits d’UTF-32, seuls 21 bits servent Ă  reprĂ©senter l’ensemble des caractĂšres mondiaux).

Addition is the most basic of arithmetic operations, so if we want to build a computer (and that is my not-so-hidden agenda in this book), we must first know how to build something that adds two numbers together. When you come right down to it, addition is just abou the only thing that computers do. If we can build something that adds we're well on our way to building something that uses addition to als subtract, multiply, divide, calculate mortgage payments, guide rockets t Mars, play chess, and use social media to share our latest dance move kitchen feats, or pet antics. The adding machine that we'll build in this chapter will be big, clunk slow, and noisy, at least compared to the calculators and computers of mo ern life. What's most interesting is that we're going to build this addi machine entirelv out of simple electrical devices that we've learned abo in previous chapters-switches, lightbulbs, wires, a battery, and relays tr have been prewired into various logic gates. These components were available prior to the 20th century. And what's really nice is that we do have to acrolivomit-rustenci. ur living rooms; instead, we can bu

On en arrive Ă  rĂ©aliser un mĂ©canisme d’additions de deux registres de 8 bits avec un rĂ©sultat sur 16 Ă  partir de portes logiques. Puis au dĂ©but d’arithmĂ©tique computation elle de Charles babage, continuĂ©es par Augusta Ada Byron Lovelace, pour finir sur les architectures de von Neumann.

Aux alentours de la page 220, j’ai un peu dĂ©crochĂ©, mais les termes restent toujours valables et restent extrĂȘmement bien expliquĂ©s. Comme dans la plupart des livres scientifiques, il est important de bien suivre les concepts expliquĂ©s au fil des chapitres, ou de les utiliser comme reminders. Mais Ă©vitez de sauter des pages 😉 - J’avoue avoir sautĂ© les chapitres 17 et 18 sur la construction d’une horloge, qui est pourtant l’un des objectifs principaux du livre 🙃

Voir aussi [https://codehiddenlanguage.com/].