Останнім часом потрохи курив мануали до asyncio та корутин в Python 3, і, здається, наближається момент достатнього розширення свідомості.
Другий Пітон був відносно простою (для багатьох навіть примітивною) динамічною імперативною мовою із класами, якою було класно склеювати примітиви інших мов, і за це його досі люблять. Із просунутих фіч у ньому були хіба що генератори із yield, на основі яких зробили ледачі потоки в itertools, малою кров'ю взявши багато хороших ідей із хаскелівської ледачості обчислень.
А третій Пітон мене і лякає, і захоплює одночасно: виглядає скромно, але під капотом можна знайти повноцінний event-driven programming (із event loops, asynchronous tasks: async/await, coroutines, futures та іншою нетривіальною лабудою), модуль для прикріплення анотацій типів (typing), генератори/ітератори значно глибше проникли в мову і тепер навіть простий map(function, some_list) повертає не список, а ітератор. Теперішні можливості мови дозволяють робити складні та нетривіальні системи.
Але запроваджувати concurrency в мову через корутини та машини станів (що загалом непоганий напрямок для concucrrency в імперативній мові) було і досить невдалим вибором: asyncio потребує значного вникнення порівняно із акторами і горутинами. І в цьому плані Го перепітонив Пітон: дав concurrency простішим і очевиднішим методом, додавши до того ж рудиментарні типи.