dmytrish: (Default)
[personal profile] dmytrish

Останнім часом потрохи курив мануали до 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 простішим і очевиднішим методом, додавши до того ж рудиментарні типи.

(no subject)

Date: 2017-08-23 06:59 am (UTC)
From: [personal profile] bamalip
А чи зручно користуватися одними лише Future?
Я дивлюся з того боку (Скала...), що Future це монада, і для неї можна зробити нормальну денотаційну семантику.

(no subject)

Date: 2017-08-23 10:49 am (UTC)
From: [personal profile] bamalip
Так я не про Пітон (це в мене офтопік!). Я взагалі про фьючери. Думаю - чи можна з усієї конкурентності залишити лише їх, і нормально жити?

Profile

dmytrish: (Default)dmytrish

August 2018

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 21st, 2026 05:16 am
Powered by Dreamwidth Studios