Based on my [limited] understanding, better error messages is one of the goals of Perl 6 and something the Racket folks put a lot of thought behind when creating the Student Language series. At the other end of the spectrum are JVM languages that fail spectacular with references to Java classes that the program's author never heard of.