Попробуйте Drupal и таксономию там. Это конечно не программа, а CMS для сайта. Но тогда одной книге вы сможете задать десяток тэгов. В вашем случае для статьи «Структурные модели и кодирование состояний автоматов.pdf» будут тэги (можно иерархические):
— программирование
— программирование / алгоритмы
— программирование / автоматы
— программирование / моделирование
— математика / автоматы
А во-вторых, вы сможете дать легкий доступ к своей коллекции друзьям (если это дело захостить на сайте).