Programming Languages seem to evolve over time. No one has designed a proper programming language once and then said "okay, it is done!". The CeeLanguage is sort of done and finished, but not really since there was C++ and ObjectiveCee. Pascal was finished once upon a time, but then had to evolve into Apple Pascal and Delphi. PHP 3 was a success but then evolved into PHP 4 and PHP 5. If there was a really good language designed it wouldn't need to continually evolve. Evolving programming languages are proof that humans suck at design - we are poor engineers, poor mathematicians, poor architects. Or possibly design sucks, and evolution is better. ''Or maybe the conditions have changed over time. A number of trade offs that were good ideas years ago aren't such good ideas today.'' I think a combination of evolution and design is best - pure evolution is way too slow, just look at how long it took for humans to evolve to where we were; millions of years - that is too long to wait for a good programming language! ------------ Possible Reasons for Change: * Faster/bigger hardware/RAM/Disk and/or new data structure algorithms allow other ways of doing things that weren't practical earlier. Example: dynamic maps/arrays instead of just pre-allocated arrays. * Me-Too-ism: a popular or hyped language has a feature that becomes a bragging point such that other languages feel compelled to add it or else get the LegacyStamp. * People get used to a certain feature in other languages and expect it in the target language. Sometimes it's merely habit and the target language offers a different way to handle it, but the habit is too ingrained to change to the target language's way. Other times the new feature really improves or simplifies software design. * A language meant for small and simple tasks becomes popular, and thus starts being used for bigger and more critical applications. This will generally require new features. Example: name-space management in JavaScript wishlists.