Je suis un ingénieur logiciel assez compétent, mais je ne connais pas beaucoup la théorie. Je veux en savoir plus sur la théorie. Les sujets particuliers qui m'intéressent sont: la complexité informatique, les langages formels et la théorie des types. Mais je ne sais pas trop comment commencer à apprendre ces domaines.
Quelles ressources recommanderiez-vous à quelqu'un qui souhaite en savoir plus sur la théorie par l'auto-apprentissage? Existe-t-il des guides théoriques d'autoformation en informatique pour les ingénieurs logiciels?
soft-question
teaching
books
Henry H.
la source
la source
Réponses:
C'est un vaste domaine avec quelques domaines très différents.
Je commencerais par quelques-unes des idées les plus fondamentales sur ce que sont les ordinateurs: Hopcroft et Ullman, «Introduction à la théorie des automates, aux langages et au calcul».
La raison pour laquelle je recommanderais cela en particulier, c'est l'accent mis sur les preuves. Ils vous guident dans une réflexion rigoureuse. C'est la différence entre écrire des programmes et être scientifique.
la source
Il existe plusieurs façons de se renseigner sur la théorie des types. Pour un programmeur qui travaille, Types et langages de programmation de B. Pierce est un bon début. Les bases pratiques pour les langages de programmation par R. Harper pourraient également être bonnes. Si vous voulez un peu de contexte facile à lire sur la sémantique opérationnelle, je recommande G. Winskel, The Formal Semantics of Programming Languages: An Introduction . Avec T. Nipkow, G. Klein, Concrete Semantics, une variante du livre de Winskel a été formalisée pour l'assistant de preuve interactif Isabelle / HOL. Je soupçonne qu'il est vraiment difficile de se familiariser avec un prouveur juste à partir de ce livre (ou de tout autre livre), vous voudriez qu'un expert à proximité pose des questions. Si vous voulez une approche plus mathématique de la théorie des types, vous pouvez regarder JR Hindley, JP Seldin, Lambda-Calculus and Combinators: An Introduction , ou H. Barendregt's, Lambda Calculi with Types . Bien que je ne recommanderais pas de partir de Barendregt.
Si vous voulez une seule recommandation, je dirais de lire tout Pierce sauf la partie VI (Systèmes d'ordre supérieur) et d'implémenter les langages de jouets dont le livre traite. Vous vous retrouverez avec une solide base dans la théorie des types, et probablement un meilleur programmeur aussi.
la source
Je recommande la calculabilité, la complexité et les langages de Martin Davis, Ron Sigal et Elaine Weyuker.
la source
Je suis un grand fan de la théorie et des algorithmes. J'ai eu une fois l'occasion de visiter l'informatique théorique à l'Institut indien de technologie de Madras (IIT-M), en Inde. J'ai appris beaucoup de théoriciens à l'IIT-M. Quand j'y suis allé, je n'avais aucune idée de ce qu'était la théorie, mais aujourd'hui j'en suis totalement amoureuse.
Merci à @Kate F pour le pointeur, oui Hopcroft et Ullman est un excellent point de départ.
Mais voici comment j'ai commencé,
Lisez l'introduction aux algorithmes par Cormen. <\ Br> C'est un excellent point de départ. Lorsque vous étudiez, essayez de comprendre chaque preuve aussi longuement que possible. Si vous comprenez bien la preuve, essayez de coder la même logique dans la langue de votre choix. (Cela prend un peu plus de temps mais ça vaut le coup d'essayer)
Suivez les meilleures conférences en Théorie comme
FOCS
SODA
STOC
EC (Commerce électronique) - Théorie des jeux algorithmiques
COLT (Conférence sur la théorie de l'apprentissage) - Théorie de l'apprentissage
CRYPTO - Cryptographie
SOCG (Symposium sur la géométrie informatique) - Computational Geometry
CCC (Conférence sur Complexité informatique) - Théorie de la complexité
Même si vous ne comprenez pas beaucoup, essayez de lire et de PENSER autant que possible. Vous devez faire autant de preuves que possible ..
la source