PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli

⇐ retour index

Deep C

vendredi 25 octobre 2013 à 15:13
Tiger-222, le 23/10/2013 à 23:03
Une dispo avec plein d'explications sur le comportement du language C (et un peu de C++). Ça permet de mieux appréhender les bases, les vraies.
(Permalink)

fspot, le 25/10/2013 à 15:13
Slides concernant C/C++.

Traduction approximative de l'introduction :
"""
Programmer est difficile. Programmer correctement en C et C++ est particulièrement difficile. D'ailleurs, aussi bien en C qu'en C++, il est rare de voir un écran complet contenant seulement du code conforme et bien défini. Pourquoi les programmeurs professionnels écrivent-ils du code comme cela ? Parce que la plupart n'ont pas une compréhension profonde du langage qu'ils utilisent. Certes, ils savent parfois que certaines choses sont indéfinies ou non-spécifiées (par la norme du langage), mais souvent ils ne savent pas pourquoi. [...]
"""

Ces slides sont amusantes, elles présentent une situation fictive où on aurait deux concurrents pour un poste de développeur C/C++ (ou deux collègues, peut importe). Et au travers de ces slides on peut découvrir ou re-découvrir certains points complexes des langages C et C++. Le premier candidat pense avoir une connaissance quasi exhaustive des langages, mais on se rend vite compte qu'il n'a pas forcément les notions de "fond" (concernant la compilation, l'édition des liens, déclarations, définitions, initialisations, portées, temps de vie, optimisations, pile d'exécution, normes officielles, différences d'implémentations, etc, etc...). Tandis que la seconde candidate connaît tout ça et est plus humble, car elle a conscience que même avec ces détails, elle n'a pas une compréhension qui couvre 100% des cas.

A un moment, le premier candidat, face à un bout de code tordu, répond simplement "je n'écrirai jamais du code comme ça !". Son interlocuteur lui dit "j'espère bien", mais attend néanmoins son avis sur le résultat de ce code.

Même si, évidemment, on sent que la 2e candidate est "meilleure", au final, on n'a fait qu'évaluer sa connaissance de mécanismes particulièrement précis. Les exemples de code sont volontairement tordus et ne se retrouvent pas dans la réalité (j'espère). Et tout les détails présentés n'ont quasiment plus aucune valeur dès lors qu'on sort du champ des langages C et C++. Du coup, est-ce que la 2e candidate sera réellement plus efficace à son poste que le 1er ? Pas forcément. C'est comme prendre deux personnes et leur poser plein de questions de grammaire, de vocabulaire, d'orthographe, de typographie, de bonnes pratiques d'écriture, dans l'objectif de savoir lequel serait le meilleur écrivain. Alors qu'écrire un roman, c'est bien plus que d'écrire des phrases. Bref, analogie foireuse finie.

Vers la fin, une slide explique : "Quelle est la plus grosse différence entre ces deux développeurs ? Leur connaissance du langage ? Non : c'est leur attitude face à l'apprentissage." => en gros la 2e candidate considère qu'elle a toujours à apprendre, là où le 1er croit connaître le langage depuis la fin de ses études, et qu'il ne lui reste qu'à continuer de pratiquer. Et oui, c'est finalement ça qui compte le plus : des connaissances détaillées sur le langage C, c'est bien, mais si la boîte désire tout porter en Go, ce qui va compter, c'est cette capacité de formation.
(Permalink)