Undecidability refers to problems that cannot be solved algorithmically. Alan Turing first proved the existence of undecidable problems in 1936. There are decidable problems that can be solved by a Turing machine in finite time, and undecidable problems for which no Turing machine can provide a definitive yes or no answer. Examples of undecidable problems include determining if a context-free grammar is ambiguous or if two context-free languages are equal. Rice's theorem states that any non-trivial semantic property of a language recognized by a Turing machine is undecidable. Undecidability has important implications in language theory and for analyzing programs and computational problems.