Le 12 septembre 2021 à 12:10:12 :
Le 12 septembre 2021 à 11:57:31 :
En lisant la doc, et je dis pas ça pour te tacler, je programme depuis 4 ans (3 ans études + 1 ans pro), et c'est que y'a très peu de temps que j'ai commencé a m'attarder sur la doc, certes, ça prend du temps, mais en contrepartie tu comprends beaucoup mieux, juste un bête exemple, je fais de l'Angular depuis 3 ans, et c'est seulement il y a 4 mois que j'ai été comprendre le cycle de vie des components... or qu'avant je les utilisais a moitié et sans vraiment savoir à quoi ça servait.. xD
Ouais je vois je suis d'accord avec toi mais la doc par du principe que tu maitrise parfaitement les concepts de base, c'est juste les spécificité qu'elles t'explique. Par exemple tu va avoir les différents objet manipulables, comment les manipuler elles va pas t'expliquer ce qu'est un objet.
C'est vraiment les concepts fondation commun à quasi tout les language que je souhaite comprendre, les intéraction entre le code et la machine.... je souhaite avoir un niveau précision le plus important possibles quitte à rentrer dans une grande complexité, pour avoir des fondation en béton armé.
Bien sur un tel niveau de compréhension n'est pas nécessaire pour simplement utilisée le code, y'a des choses que j'utilise, je fait intuitivement mais que je ne comprend pas réellement, dans l'essence. Et y'a toujours des petites questions qui viennent me tarauder au moment ou je fais les choses, sur le pourquoi du comment je le fais, comment je pourrais l'optimisé....
T'as une analyse de la question extrêmement bonne pour, je suppose, un débutant. 
Comme tu le soulignes y a deux types de concepts : les concepts propres au langage et les concepts généraux théoriques. Généralement les premiers sont des implémentations des seconds.
Un exemple typique de pourquoi lire la doc n'est pas la solution universelle : la documentation de Control.Monad. Bon courage pour comprendre ce qu'est une monade en te contenant de la documentation de l'implémentation des monades en Haskell.
Là où c'est vicieux c'est que certains concepts sont plus facilement compréhensibles par le seul prisme de leur implémentation, typiquement les classes. Y a beaucoup de gens qui confondent les classes d'un point de vue théorique et leur implémentation dans le langage de programmation qu'ils utilisent.
Typiquement les gens qui t'expliquent que tu peux pas faire de programmation orientée objet en C n'ont absolument pas compris ce qui fait l'essence des objets et de la programmation orientée objet. Même chose pour les gens qui pensent que obj.method(args) c'est orienté objet mais pas method(obj, args), tout ça c'est juste de la syntaxe et ce qui compte c'est comment la résolution est dispatchée.
Bref, pour en revenir à ta question de base à mon sens y a trois prismes par lesquels tu peux étudier un concept théorique et qui sont tous trois complémentaires
1) Étudier directement la théorie
Exemple, tu veux comprendre ce qu'est une classe ? Lis un bouquin de programmation orientée objet qui ne soit associé à aucun langage de programmation, juste un bouquin purement théorique.
Généralement n'importe quel bouquin fera l'affaire ou alors tu te rendras vite compte que le livre ne convient pas à tes attentes.
2) Étudier l'implémentation du concept dans les différents langages de programmation existants
Tu regardes comment fonctionnent les classes dans chaque langage et t'essaies d'inférer un modèle plus général.
3) Faire des recherches assez superficielles sur le concept
Souvent c'est un bon point de départ. Tu veux savoir ce qu'est une monade ? Cherche monade sur wikipedia, tu vas tomber sur un article quasiment imbitable mais toute la subtilité repose dans le quasiment. Le peu que tu comprendras t'aidera grandement à te mettre sur la bonne voie pour comprendre le concept. L'idée étant juste de gratter la surface pour comprendre le genre de concept qu'il s'agit.