Zkušenosti s TypeScriptem

Re:Zkušenosti s TypeScriptem
« Odpověď #75 kdy: 29. 03. 2020, 11:25:12 »
Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě.

Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy). U dynamického programování se nic takového nekonalo, protože tam na pochopení nic není. Pointa je v tom, že já ti v tom, že "dynamické jazyky jsou o jiném způsobu myšlení" jednoduše nevěřím. Takhle je to jednoduché. Přeji dobrou noc.

No zrovna ten Smalltalk je dobrá ukázka toho, jak dynamické programování může být šikovné. Celé IDE je napsané samo v sobě, a za běhu modifikovatelné. Můžeš debugovat debugger a za běhu ho upravovat. Zeptáš se třídy na všechny její instance a pošleš jim zprávu (zavoláš metodu). Nic se neprogramuje do souborů, které se překládají a spustí, všechno neustále běží, žije, za běhu se přidávají a ubírají třídy, metody, .. Každá věc se dá inspectnout a pracovat s ní, měnit. Prožít si programování v takovém systému je skutečně mind bending zkušenost.

Když vidím Python, Javascript atp., tak mi přijde, že si vzali to nejblbější z dynamického programování - absenci statických typů, což teď horko těžko dohánějí, a ze staticky typovaného programování - absenci pořádného živého explorativního prostředí, což už asi nedoženou nikdy, protože si ani nedovedou představit, co by se dalo dělat.

Podobný koncept, i když ne tak dotažený, má třeba Lighttable (http://lighttable.com/) pro Clojure, ale s tím osobní zkušenost nemám.


qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #76 kdy: 29. 03. 2020, 12:42:47 »
Já ti neříkám, že to umím, to je zcela podružné. Já ti říkám, jak to je, dynamické jazyky jsou o jiném způsobu myšlení. Jestli to pochopíš nebo ne je už na tobě.
Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy). U dynamického programování se nic takového nekonalo, protože tam na pochopení nic není. Pointa je v tom, že já ti v tom, že "dynamické jazyky jsou o jiném způsobu myšlení" jednoduše nevěřím. Takhle je to jednoduché. Přeji dobrou noc.

Takže jsme zpátky na začátku, akorát jsme si vyjasnili, že esoterika, tedy pardon, víra, je na tvé straně.

Ne ne ne :-P Když by si řekl, že věříš, že dynamické jazyky jsou lepší, tak bych neřekl ani popel. Na místo toho jsi se pustil do posuzování toho, co jsem či nejsem schopen pochopit. Víš, tomu, co tu předvádíš, se říká svatá kráva.

Já dál věřím, že přijde někdo, kdo bude zastáncem dynamických jazyků, a ukáže mi, že to není jen ezoterika, ale že je to skutečně o jiném způsobu myšlení. A já třeba dospěju k závěru, že mi to stejně nic neříká, ale alespoň si budu moct odškrtnout jeden mýtus.

Obelháváš sám sebe. Já nepřišel s tvrzením co jsi nebo nejsi schopen pochopit, já přišel s tvrzením, že nechápeš, že dynamické jazyky nejsou jenom o nepsaní typových anotací. Dovol abych ti to připomenul:

Nestalo se mi, že by mě obtěžovalo napsání Typové signatury. Zato se mi bolestně běžně stává, že mi absence typů schází. Čímž se kruhem dostáváme k tomu, že někdy to fakt záleží na preferencích. Pro někoho napsání těch několika málo typů může být stopka.

Nechápeš to. Nejde jen o to, že musíš napsat anotaci, ale že tě statické typy hrubě omezují v návrhu programu. Je to neflexibilní, a jakákoliv snaha dostat do návrhu flexibilitu je těžkopádná  a zkostnatělá.  A nechápeš to proto, že prostě neumíš myslet v dynamicky typovaném jazyku, neumíš myslet dynamicky. Proto ti v něm chybí statické typy, bez nich neumíš dobře programovat a naopak neumíš využít výhod jazyku dynamického.

A jestli máš pocit, že se mýlím a ty to chápeš, pak nevím, co tady řešíš.

Já zase nevěřím, že to pochopíš, protože ty to pochopit nechceš, ty chceš hlavně sám sebe přesvědčit o tom, že o nic nepřicházíš, když dynamické jazyky nechápeš. Stejně tak můžeš věřit v to, že se objeví někdo, kdo ti ukáže že bůh je nebo není, podle toho v co věříš. Není to na ostatních, je to na tobě. Jsi jako ateista, který se bojí že bůh je a on se dostane do pekla, nebo jako věřící, který se bojí, že bůh není a on celý život žije v omylu.

qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #77 kdy: 29. 03. 2020, 12:52:30 »
To prasení IMHO znamená, že jde spustit i kód, který na nějaké konkrétní neošetřené větvy spadne. Víc v tom podle všeho není.
Což platí i u staticky typovaných jazyků :-).
Neplatí  ;) U statických jazyků něco jako neošetřená větev (ideově samozřejmě) neexistuje.

To máš zásadně chybné ideje. Tohle je běžný omyl statických myslících programátorů, že když jim program projde statickou kontrolou, že ho mají ošetřený. Statické typy mají jediný smysl, umožňují výkonovou optimalizaci. Co se týče chybovosti, nejsou zárukou ničeho a to ani u ADY. Naopak typový systém je sám o sobě zdrojem dalších chyb v programu a to tím větší, čím je tento typový systém komplexnější.

Idris

  • *****
  • 919
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #78 kdy: 29. 03. 2020, 13:02:06 »
Pochopil jsem spoustu věcí (Prolog, Scheme, Smalltalk, OOP, FP). A když jsem to nepochopil, tak jsem alespoň cítil, že jsem si šáhl na hranice svých schopností (Haskell, závislostní typy).
Co přesně byl problém u závislostních typů?

qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #79 kdy: 29. 03. 2020, 13:04:45 »
Není, ukazatel v C je pojmenovaný ukazatel do paměti, který se nijak nestará o datový typ objektu, na který ukazuje. V principu je to stejné, jen je to více low level, programátor si to musí přetypovat explicitně a musí si sám pohlídat paměť.

Srovnáváš jazyk s vyspělým typovým systémem, který rozumí kontextu a vyšší assembler, který umožňuje dělat jenom low level věci, protože je jednoduchý a moc lepších možností nemá.

Srovnávám statické a dynamické typy obecně. Jakékoliv vaše obecné tvrzení o statických typech musí být platné pro všechny staticky typované jazyky. Pokud není, znamená to, že to, že se mýlíte, že se jedná o omyl (nebo argumentační faul), kdy statickým typům přisuzujete individuální vlastnosti nějakého konkrétního jazyku.

V souvislosti s tím bych rád upozornil, že jazyk C je dle žebříčku TIOBE stalé druhý nejoblíbenější jazyk. Používá se hodně a používám ho i já. Můžeme se tu bavit i o akademických jazycích, ale mě víc zajímá praxe, jsem pragmatický. Ergo každé platné tvrzení o statických typech musí být v souladu i s druhým nejoblíbenějším jazykem se statickými typy.


qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #80 kdy: 29. 03. 2020, 13:10:59 »
Dynamické jazyky na to nekašlou, dynamické jazyky mají jiný koncept. A ano, jsou díky tomu více flexibilní a jsou proto pohodlnější na používání, proto také čím dál tím více oblíbené s tím, jak roste výkon počítačů a to jejich plýtvání zdroji je čím dál tím více marginální.
Subjektivní hodnocení - nuda.

Globální statistika, málo co může být objektivnější. Samozřejmě o příčinách se můžeme hádat. Já sázím na peníze, dynamické jazyky nabízí vyšší produktivitu a jsou v řadě oblastí ekonomicky výhodnější.

Re:Zkušenosti s TypeScriptem
« Odpověď #81 kdy: 29. 03. 2020, 13:27:15 »
Globální statistika, málo co může být objektivnější. Samozřejmě o příčinách se můžeme hádat. Já sázím na peníze, dynamické jazyky nabízí vyšší produktivitu a jsou v řadě oblastí ekonomicky výhodnější.

To bych úplně netvrdil. To, že někdo něco rychle poslepuje snáz v Pythonu než v C++, je asi pravda, na stranu druhou to časem bude potřebovat přepsat... taky asi člověk najde snáz Pythonistu než Haskellistu.

Re:Zkušenosti s TypeScriptem
« Odpověď #82 kdy: 29. 03. 2020, 13:29:35 »
za mě TS moc nemusím a to z několika důvodů:
1) založen na transpilaci kódu a to je z mého pohledu zhovadilost,
2) zavádí do JS OOP patten, což je taky kr*vina (ikdyž nový TS už umí FC),
3) pochází od M$

Neříkám, že je TS špatný, typovost je vždy dobrá (alespoň z mého pohledu), ale to co dělá TS umí třeba i Flow, což je jen  type checker a je pekelně rychlý. případné chyby nebrání vlastní kompilaci ES6.

Nehledě na to, že mám s TS špatné zkušenosti - většinou jsem viděl zneužívání typu
Kód: [Vybrat]
any a k tomu nepotřebuji mít TS. A když člověk zakáže použítí any, tak natypovat některé věci správně, je někdy krapet oříšek.

Osobně mi přijde, že TS je "moderní" záležitost. Přednosti, které jsou vychvalovány, stejně tak dobře pokreju Flow a Eslintem, že nevidím důvod používat TS. Nehledě na to, že TS ošetří jen vstupní data a property. Data která lezou např. ze služeb třetích stran nikdy neošetříte.

1.) čo sa Vám nepáči na transpilacii? Máloktorý jazyk neni založený na kompilacii či transpilacii. Veď aj samotný JS prevádza JIT kompiler do inštrukcií procesora. To isté aj vami spomínaný smalltalk. Vyčítať programovacím jazykom kompiláciu / transpiláciu je ako vyčítať autám že majú kolesá.

2.) OOP patern je v JS odjakživa. TS akurát k prototypovému OOP pridalo aj triedy (ktoré sú v TS len syntaktický cukor nad prototypmi). TS moc FP neni dá sa v ňom s odretými ušami programovať aj funkcionálne, ale jazyk nám to vôbec neuľahčuje... Také možnosti aké dáva TS na poli funkcionálneho programovania dával aj starý dobrý pascal či LUA a nikto ich pritom za funkcionálne jazyky nepovažuje.

Vo funkcionálnych jazykoch by mal byť prítomný currying (funkcia má len jeden parameter a nato aby sme vytvorili ilúziu viacerých parametrov musíme vracať funkciu s ďalším parametrom). Currying by mal byť v FJ podporovaný na úrovni syntaxe jazyka (nemyslím tým skladanie arrow funkcií) a všetko by malo byť výraz (viete v TS použiť if alebo switch ako výraz?).

3.) No coment

Osobne som používal niekolko rokov Babel (bewz flow) a teraz používam TS pôvodne som chcel ostať pri Babeli ale v práci sa rozhodli pre TS a musím povedať, že som s týmto rozhodnutím nielen veľmi spokojný ale doslova nadšený. Radikálne sa nám celý projekt prečistil a vývoj je rýchlejší a celý projekt sa zbavil detských chýb

Smalltalk sa aj mne páči po teoretickej stránke, ale položte si otázku prečo sa nepresadil? Ja si myslím že je to kôli (ne)bezpečnosti. Dáva vám síce veľa slobody, ale práve nízka bezpečnosť a možnosť meniť úplne všetko je dôvod prečo ho v polovici 90tych rokov vytlačila Java.

qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #83 kdy: 29. 03. 2020, 14:09:23 »
To jsi četl kde, že mi to "nevadí"? Plýtvání je vždycky plýtvání, vždycky to je škoda, ale někdy je odůvodnitelné - něco za něco. To, že je produktivita programátora ve všech částech vývojového cyklu v dynamických jazycích v součtu vyšší, je Tvoje víra. Jinak doporučuju následující čtení - převod velkého systému z Pythonu do Rustu v Dropboxu - proč to dělali a co tím získali (nápověda: nešlo jenom o problém pomalosti některých dílčích operací v runtime dynamického jazyka, ale zejména o jeho relativní neflexibilitu, tedy naprostý opak toho, co tu celou dobu tvrdíš):

https://dropbox.tech/infrastructure/rewriting-the-heart-of-our-sync-engine

To hádám na základě toho, že neprogramuješ ve strojovém kódu. Že je produktivita dynamických jazyků vyšší usuzuji z toho, že jsou globálně stále dominantnější. Co se týče dropboxu, nepíší tam, že dynamické jazyky jsou neflexibilní. Píší to o svém vlastním programu. Píší že měli chybně navržený datový model a nejen to.

Měli špatný celý návrh programu a měli proto problém s modifikací a testováním změn. Next, the system was not designed for testability. We relied on slow rollouts and debugging issues in the field rather than automated pre-release testing. Což je u dynamického jazyka (a imho u jakéhokoliv, který se dynamicky vyvíjí) základní pochybení, unit testy musí být základ jakéhokoliv robustního programu.

Navíc se zdá, že to měli dokonce i špatně zdokumentované, viz nástup nových techniků trval roky. Nebo tvrzení, že napsat nový kód je jednodušší než porozumět starému a že musí archeologicky zkoumat proč jsou věci jak jsou.

Tohle je ukázkově "zpackaný" vývoj, malá firma která příliš vyrostla a musela nasadit enterprise procesy řízení kvality pro velký byznys. Takto by dopadli s jakýmkoliv jazykem, protože tohle se museli nejprve naučit.

Ano, nešlo jim o výkon, ale ani o Python, natož obecně dynamické jazyky jako takové.  Nicméně si povšimni, že na tom Pythonu skvěle vyrostli a .stali se globálně zásadní společností.

Re:Zkušenosti s TypeScriptem
« Odpověď #84 kdy: 29. 03. 2020, 14:19:32 »
Smalltalk sa aj mne páči po teoretickej stránke, ale položte si otázku prečo sa nepresadil? Ja si myslím že je to kôli (ne)bezpečnosti. Dáva vám síce veľa slobody, ale práve nízka bezpečnosť a možnosť meniť úplne všetko je dôvod prečo ho v polovici 90tych rokov vytlačila Java.

No, důvody byly asi trochu přízemnější. Ideový nástupce Smalltalku byl Self, který Sun Microsystems vyvíjel společně s Javou, a v Sunu dumali, který jazyk by měli pustit na veřejnost. Podle tohoto zdroje: http://blog.rfox.eu/en/Series_about_Self/Environment_and_the_programming_language_Self_part_3.html , zvolili nakonec Javu, protože

Chuck McManis, a former employee of Sun Microsystems, wrote for a thread on hackernews:

Wow. For those who don't know, there was a big 'language bake off' at Sun between TCL, Java, and Self (all being funded by Sun Labs) and Bert Sutherland (then director of Sun Labs and brother of Ivan) required that the language changes stop and then we'd look at each one, and decide which one to move forward on. When the world sort of exploded at the WWW conference held in Darmstadt Germany in 1995, Java officially 'won' and both Self and TCL were de-committed. (not canceled per-se but not getting any more funding either).
I like to think that all three languages benefited from the competition.

Asked why did Java win, he replied:

 "At the time it was the ability to construct executable content inside a web page. Javascript now dominates that space, but up until WWWC 2 pretty much everyone was stuck with page layout primitives. It made it possible to see a path to where we are today and so everyone wanted their browser to have it, and if their browser didn't have it they could run the HotJava browser and get it.
Bottom line, it demonstrated an answer to a problem that a lot of people were having, and it promised to answer that problem in an 'open source' kind of way."


Jinak z osobní zkušenosti bych neřekl že Smalltalk je více nebezpečný než kterýkoliv jiný dynamicky typovaný jazyk - Python, PHP, Javascript atp.

Re:Zkušenosti s TypeScriptem
« Odpověď #85 kdy: 29. 03. 2020, 14:23:32 »
Že je produktivita dynamických jazyků vyšší usuzuji z toho, že jsou globálně stále dominantnější.

Nechápu tvojí odvahu posuzovat produktivitu podle používanosti.

Co se týče dropboxu, nepíší tam, že dynamické jazyky jsou neflexibilní. Píší to o svém vlastním programu. Píší že měli chybně navržený datový model a nejen to.

Hlavně píší tohle:
Rust has been a force multiplier for our team, and betting on Rust was one of the best decisions we made. More than performance, its ergonomics and focus on correctness has helped us tame sync’s complexity. We can encode complex invariants about our system in the type system and have the compiler check them for us.

Ink

  • ***
  • 199
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #86 kdy: 29. 03. 2020, 14:44:47 »
V souvislosti s tím bych rád upozornil, že jazyk C je dle žebříčku TIOBE stalé druhý nejoblíbenější jazyk. Používá se hodně a používám ho i já. Můžeme se tu bavit i o akademických jazycích, ale mě víc zajímá praxe, jsem pragmatický. Ergo každé platné tvrzení o statických typech musí být v souladu i s druhým nejoblíbenějším jazykem se statickými typy.

Fakt Te nefackuje hanba za takoveto demagogicke kydy?

BoneFlute

  • *****
  • 1 470
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #87 kdy: 29. 03. 2020, 14:45:40 »
To prasení IMHO znamená, že jde spustit i kód, který na nějaké konkrétní neošetřené větvy spadne. Víc v tom podle všeho není.
Což platí i u staticky typovaných jazyků :-).
Neplatí  ;) U statických jazyků něco jako neošetřená větev (ideově samozřejmě) neexistuje.

Ideově neošetřená větev? Co je to za hovadinu?

Kód: [Vybrat]
f :: Maybe a -> a
f (Just x) = x
Ano. Přesně toto jsem měl na mysli.

Navyše proč to musíme definovat explicitne? Není z dát jasné, čo premenná obsahuje?
Nemusíš. Type inference.

Ta nebývá 100%.
Ano, nebývá. Mě to neva, někomu ano. Stačí takto?


To prasení IMHO znamená, že jde spustit i kód, který na nějaké konkrétní neošetřené větvy spadne. Víc v tom podle všeho není.
Což platí i u staticky typovaných jazyků :-).
Neplatí  ;) U statických jazyků něco jako neošetřená větev (ideově samozřejmě) neexistuje.

To máš zásadně chybné ideje. Tohle je běžný omyl statických myslících programátorů, že když jim program projde statickou kontrolou, že ho mají ošetřený.
Nemám. Nic takového si nemyslím, nic takové jsem nenapsal.

Statické typy mají jediný smysl, umožňují výkonovou optimalizaci. Co se týče chybovosti, nejsou zárukou ničeho a to ani u ADY. Naopak typový systém je sám o sobě zdrojem dalších chyb v programu a to tím větší, čím je tento typový systém komplexnější.
Toto je nesmysl. Neodpovídá to mé každodenní zkušenosti.

BoneFlute

  • *****
  • 1 470
    • Zobrazit profil
Re:Zkušenosti s TypeScriptem
« Odpověď #88 kdy: 29. 03. 2020, 14:52:41 »
No zrovna ten Smalltalk je dobrá ukázka toho, jak dynamické programování může být šikovné. Celé IDE je napsané samo v sobě, a za běhu modifikovatelné. Můžeš debugovat debugger a za běhu ho upravovat. Zeptáš se třídy na všechny její instance a pošleš jim zprávu (zavoláš metodu). Nic se neprogramuje do souborů, které se překládají a spustí, všechno neustále běží, žije, za běhu se přidávají a ubírají třídy, metody, .. Každá věc se dá inspectnout a pracovat s ní, měnit. Prožít si programování v takovém systému je skutečně mind bending zkušenost.
Když nad tím zauvažuješ, myslíš si, že by byl nějaký principielní problém do toho statické typování zavést? Jak by museli být omezené?

Mě se třeba v tomto líbí SQL (přirovnání trochu kulhá, vím). Že ti tam ty constrainty povolí vložit až poté, co ověří jejich funkčnost. Tak nějak si představuju statickému typování u živého systému.

Když vidím Python, Javascript atp., tak mi přijde, že si vzali to nejblbější z dynamického programování - absenci statických typů, což teď horko těžko dohánějí, a ze staticky typovaného programování - absenci pořádného živého explorativního prostředí, což už asi nedoženou nikdy, protože si ani nedovedou představit, co by se dalo dělat.
Typování, které Python a Javascript/TypeScript má má výhodu v tom, že to jde vypnout. Což se, uznejme, při prototypování docela hodí.  Přeci jen, chceš si tady něco vyzkoušet, a ztrácet fokus tím, že budeš opravovat vzdáleně související věci, které tě teď ale nezajímají...

qelurg

  • ****
  • 251
    • Zobrazit profil
    • E-mail
Re:Zkušenosti s TypeScriptem
« Odpověď #89 kdy: 29. 03. 2020, 15:11:02 »
Globální statistika, málo co může být objektivnější. Samozřejmě o příčinách se můžeme hádat. Já sázím na peníze, dynamické jazyky nabízí vyšší produktivitu a jsou v řadě oblastí ekonomicky výhodnější.
To bych úplně netvrdil. To, že někdo něco rychle poslepuje snáz v Pythonu než v C++, je asi pravda, na stranu druhou to časem bude potřebovat přepsat... taky asi člověk najde snáz Pythonistu než Haskellistu.

Ale to se přece navzájem nevylučuje. V 99 % případu to řešení v Pythonu bude dostatečné, ve zbytku se přepíše.

Já příležitostně v Pythonu v enterprise prostředí dělám automation, administrativní i kancelářské, podle toho jak organizace potřebuje zrovna přesypávat data odtud tam a zpátky, mezi různými systémy, mezi uživateli, mezi databázemi, mezi organizacemi, mezi excely a wordy a autokedy a já nevím čím vším ještě a mezi tím vším navzájem.

To jsou věci malého rozsahu, často jednorázové nebo provizorní, ale funkční a uspoří hodně člověkohodin za rutinní činnost, tedy šetří drahý čas lidí a podstatně snižují chybovost. Python je na to excelentní. Zadání je typický vágní, často se pod tlakem nepředvídatelných okolností mění a to poměrně rychle - takový je život.

S výhodou se tu využívá vysoká flexibilita jazyka, jakákoliv rigidnost je překážkou. Sem tam se z provizoria stane stabilní provozní záležitost, která pak běží roky. Někdy se v rámci integrace přepíše, většinou ale ne. Běží to spolehlivě, není pro to důvod. Každá taková věc běží jako portable balíček, který stačí zkopírovat, bez jakýchkoliv vnějších závislostí. Někde mi takhle běží balíčky s Python 2.5 který byl v době nasazení novinka, kolik už je to let, no nejméně deset.

Mám to snad psát v C, nebo Javě? Nesmysl, C je pro takové dynamické prostředí nevhodné, jen to problematické kompilování, udržovaní všech knihoven atd. Pak chce člověk upravit jeden řádek programu a zjistí, že stráví půl dne sháněním knihoven, aby to přeložil. Java dokonce ani není portable.

Nebo to mám dělat v nějakém minoritním jazyce? Třeba zmíněném Rustu nebo Haskellu? Vždyť ten v té době ani neexistoval. Má podporuje DCOM?, dostanu se s ním do excelu a acessu, má konektory na databáze, třeba 20 let starý Oracle? Je dobře odladěný a funguje ve všem stejně spolehlivě jako Python? Jak si tyhle jazyky poradí třeba s tímhle:

Kód: [Vybrat]
import win32com.client as win32

ex = win32.gencache.EnsureDispatch('Excel.Application')
ex.Visible = False
wb = ex.Workbooks.Add()
sh = wb.Sheets[0]
sh.Cells(1,1).Value = 'Hello World'
wb.SaveAs('x://test.xlsx')
wb.Save()
ex.Quit()

Mimochodem, skvělá ukázka dynamiky. Python si za pochodu vygeneruje všechny třídy pro aktuální rozhraní pro práci s Excelem, bez ohledu co na daném PC běží a verzi Excelu.