Logical Approaches to Computational Barriers