What Makes Programming Languages Successful?
July 1, 2010 § Leave a comment
The characteristics widely-adopted languages seem to share:
- Generality (suitable for a wide range of problems)
- Extensibility (can easily be extended with new abstractions)
- Novelty (solves a certain domain of problems far better than existing alternatives)
- Familiarity (e.g., C-like syntax)
- Availability (low cost + ported to multiple platforms)
- Popularity (associated with an emerging, widely-used platform)
- Utility (readily-available libraries for common tasks / integration with existing tools)
The order is largely arbitrary, but roughly goes from “intrinsic” to “extrinsic” factors. While the terms themselves are rather vague, I find it useful as a framework for considering and comparing various currently-popular languages.
What’s particularly fascinating to me (with my admittedly sketchy knowledge of history) is how most successful languages apparently start out with only 2-3 of these items, but then attract an “early adopter” crowd who provides the others.