Talk

From Latin to async/await: An Archaeological Dig into JavaScript

In Russian

We all write JavaScript, but we rarely stop to think about what we’re really working with. Why does code in this language look the way it does? What achievements of past generations made such a beautiful (or terrible) language possible? And how much does the code we write actually depend on our own will? I’ll share three stories that will change the way you look at your code:

Narrative 1. Computer Science. JavaScript inherited much from its predecessors: syntax from Java (which in turn inherits from C), prototype-based inheritance from Self, and functional features from Scheme (a dialect of Lisp). A detailed look at the history behind specific design choices in JS can help you better leverage its strengths and avoid its pitfalls.

Narrative 2. Linguistics. JavaScript is an artificial language constructed on the basis of English, which is evident from its keywords, the names of standard objects and functions. Many of these words made their way from French and Latin into English over centuries. The fascinating stories of borrowing and shifts in word meanings from language to language can shed new light on the code you write, revealing its historical and cultural continuity.

Narrative 3. Mathematics and Logic. A language isn’t just words and symbols — it has semantics. Code has meaning; behind its operators and arrows lie mathematical abstractions and, ultimately, CPU-level operations. It took humanity years of effort to arrive at a point where we can subtract a string from an array and get a number [] - '1' === -1! We’ll explore how key milestones in mathematics and logic led to this strange perfection — from Aristotle’s deductive logic to monad-like Promises and async/await. Most importantly, we’ll understand how all this helps (or hinders) us in solving everyday tasks effectively.

Speakers

Talks