@Oxman : Pas si la bibliothèque s'auto-initialise :p
Oui, c'est pas encore parfait, mais ce n'est pas une raison pour ne pas essayer de tendre à la perfection. De plus, une autre idée m'est venue par la suite: supposons que l'on veuille traduire les livres mot à mot (parce qu'on est nul en anglais). La méthode que tu présente prendrai un livre, traduirait le livre mot à mot, et le reposerai. Supposons qu'on ai un algorithme parallèle capable de traduire rapidement 1 seul mot dans plusieurs livres en même temps: impossible de l'implémenter si tu te base sur des "foreach (Livre in Bibliotheque)", puisque tu traiteras forcément livre à livre et non le mot à travers tous les livres.
Map me semblerait effectivement un peu plus approprié. Mais après, oui, comme le souligne niahoo, c'est très dépendant des habitudes du programmeur. "L'hardcode" a l'avantage de faire speeder la bibliothèque, et cela évite les sur-généralisations: si mon projet a besoin de manipuler des matrices 3x3 que je sais être toujours inversibles (car ce sont des rotations par exemple), alors je ne vais pas m'encombrer d'une bibliothèque qui gère tout type de matrice, NxM incluses, en ajoutant toute la lourdeur d'utilisation et de calcul possible (la seule limite à l'informatique étant la vitesse de calcul, quasiment tous les algorithmes actuels ont été "inventés" il y a une bonne trentaine d'années mais ne peuvent être vraiment utilisés que maintenant).
Pour en revenir à la base, l'idée est de ne plus considérer la bibliothèque comme une collection d'objets indépendants, mais comme un ensemble mono-bloc, que ce soit en entrée, sortie ou autre.
Oui, c'est pas encore parfait, mais ce n'est pas une raison pour ne pas essayer de tendre à la perfection. De plus, une autre idée m'est venue par la suite: supposons que l'on veuille traduire les livres mot à mot (parce qu'on est nul en anglais). La méthode que tu présente prendrai un livre, traduirait le livre mot à mot, et le reposerai. Supposons qu'on ai un algorithme parallèle capable de traduire rapidement 1 seul mot dans plusieurs livres en même temps: impossible de l'implémenter si tu te base sur des "foreach (Livre in Bibliotheque)", puisque tu traiteras forcément livre à livre et non le mot à travers tous les livres.
Map me semblerait effectivement un peu plus approprié. Mais après, oui, comme le souligne niahoo, c'est très dépendant des habitudes du programmeur. "L'hardcode" a l'avantage de faire speeder la bibliothèque, et cela évite les sur-généralisations: si mon projet a besoin de manipuler des matrices 3x3 que je sais être toujours inversibles (car ce sont des rotations par exemple), alors je ne vais pas m'encombrer d'une bibliothèque qui gère tout type de matrice, NxM incluses, en ajoutant toute la lourdeur d'utilisation et de calcul possible (la seule limite à l'informatique étant la vitesse de calcul, quasiment tous les algorithmes actuels ont été "inventés" il y a une bonne trentaine d'années mais ne peuvent être vraiment utilisés que maintenant).
Pour en revenir à la base, l'idée est de ne plus considérer la bibliothèque comme une collection d'objets indépendants, mais comme un ensemble mono-bloc, que ce soit en entrée, sortie ou autre.