Eich ultimately created a quick proof of concept using Java-based syntax to express Scheme-based capabilities.
He then went on to incorporate, into this already unlikely combination, a unique style of object-oriented programming (OOP).
A Unique Language
In OOP, data and procedures are encapsulated together into “objects”, which are typically defined via a hierarchy of abstract classes.
Java is one of the most object-oriented languages in existence, with the concept of classes inextricably woven throughout. But OOP in Java has an all-encompassing and rigid flavor that Eich abstain from it.
Objects could be created at will and linked to other objects (called prototypes). This prototypal inheritance adds comparatively little syntax to a language, yet is capable of simulating classical or alternative inheritance patterns.
This new language combined:
- Superficialities and control structures from Java
- Core functional and object-oriented behavior from Scheme and Self
- Features that were minimalist yet flexible
Eich created a tool that satisfied requirements (“looks like Java,” “small”, “approachable”) but had greater potential than perhaps anyone had anticipated.
But the reality is that having a “glue” language allowed the internet to really flourish. Programmers could react better to use events and compose interactive components.
Java applets, meanwhile, were languishing:
- Users did not enjoy keeping the Java Virtual Machine up to date
- They were scared off by Java’s security prompt
ECMAScript is born
Brendan Eich, famously commented about the name of the standardized language; stating that ECMAScript was an “unwanted trade name that sounds like a skin disease.”
In the decade to follow, ECMAScript went through a bevy of revisions and spinoffs.
ES4 descended into development hell and was eventually abandoned.
Developers watch other developers laughing at these features and infer that these features are worthy of ridicule and the cycle continues.
Even Brendan Eich, the creator of the language, is occasionally apologetic for design decisions he made for the language.
However, these expressions of apology should not be taken as confirmation that those decisions were wrong: but rather acknowledgement of the necessary inability of one language to please all developers.
Jesse James Garrett