Third, the software of computer assisted language learning programs is still imperfect. Current computer technology mainly deals with reading, listening, and writing skills. Even though some speaking programs have been developed recently, their functions are still limited. Warschauer (2004) pointed out that a program should ideally be able to understand a user’s “spoken” input and evaluate it not just for correctness but also or “appropriateness”. It should be able to diagnose a student’s problems with pronunciation, syntax, or usage and then intelligently decide among a range of options.