The interest for studying the origin and development of language has increased greatly in the last decades. For a language to be developed the production and understanding of it must co evolve, otherwise the users will not be able to understand each other. Here, we show that the co-evolution of language production and understanding promotes the development of an efficient language, where the efficiency is measured in terms of number of symbols needed to transmit a message and distinguish it from other possible messages. We also show how agents evolve a very simple language in order to solve the task at hand, even though the simplicity is never enforced in any way.