add approximate dates for C++ and Java
Early high-level programming languages were often intended for use in a particular problem domain (e.g. COBOL for business purposes, Fortran and Algol 60 for scientific calculations). Other programming languages were originally intended for teaching purposes (e.g. BASIC and Pascal). The language '''C''' was originally intended for systems programming (writing operating systems and compilers).
Successful programming languages evolve over time to become more general-purpose, or form the basis for other languages (e.g. '''C''' -> '''C++'''). The evolution often involves incorporating good features from other languages. The general trend is for languages to become more general-purpose and provide more levels of abstraction. The concepts of structured programming were put on a sound theoretical basis in the early 1970's and these have also influenced the evolution of some programming languages (e.g. Fortran 66 -> Fortran 77). The idea of objects (combining data with the applicable operations) was available in Simula in the mid 1960's, but did not become popular until the advent of C++ and Java; confusingly, Java and C++ have a lot of syntax in common, but the meaning (semantics) may differ drastically for what looks the same when written down.
==Implementation of programming lLanguages==