Programming languages evolves with the need to the developers, but not all of them evolves at the same speed and sometimes some languages stays almost the same for decades. Is this a sign of stagnation? Is it possible to evolve a language without breaking retrocompatibility?
This talk will cover how Python and Javascript approached the problem in a radically different way, with their pro and cons and with the consequences on the community.
The main points of this talk are:
* comparation of the new features in both languages
* strategies used to port or run the code on different versions of the language
* impact of the new features and tool on the respective developer’s communities
The intent is to start a constructive discussion about the retrocompatility in Python.
For this talk you don’t need to have a deep knowledge of Python or Javascript.
6. “The method of communication,
either spoken or written,
consisting of the use of words
in a structured and conventional way”
https://en.oxforddictionaries.com/definition/language
29. From Guido van Rossum: BDFL Python 3 retrospective:
● We didn't build any runtime compatibility features
● We didn't know how to create fully-automated
conversion tools
● We didn't make enough compatibility allowances
● We did a few things half-heartedly (i.e. the stdlib
cleanup)
Python
30. JavaScript
● The TC39 committee is careful to not break the Web
● ES5 code is still valid in ES6, ES7, etc.
● Features are provided by polyfills
● Babel transpile any version of JavaScript down to ES5
31. Which means:
● Old code is still working
● New code works on older interpreters via transpiling
● Can mix new and old code
● Can write code in ES.next via transpiling
JavaScript