Doporučte programovací jazyk pro Windows

Re:Doporučte programovací jazyk pro Windows
« Odpověď #120 kdy: 09. 03. 2020, 12:42:40 »
pro splosteni tech zanorenych dictu existuji knihovni funkce, ja treba pouzivam knihovnu funcy

Kód: [Vybrat]
>>> from funcy import flatten, join
>>> join(flatten([{'a':1}, [{'b':2}, [{'c':3}]]]))
{'a': 1, 'b': 2, 'c': 3}

nemusite psat rucne rekurzi


Re:Doporučte programovací jazyk pro Windows
« Odpověď #121 kdy: 09. 03. 2020, 13:30:43 »
Určitě je spoustu cest, jak to rozhodování řešit. Pro mě je ale podstatné, že se musí na začátku funkce něco takového řešit. To přece nemá s příjemným a robustním vývojem nic společného.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #122 kdy: 09. 03. 2020, 13:50:26 »
Určitě je spoustu cest, jak to rozhodování řešit. Pro mě je ale podstatné, že se musí na začátku funkce něco takového řešit. To přece nemá s příjemným a robustním vývojem nic společného.

podle mě nemusíte řešit. stačí se jen trochu přizpůsobit zavedeným konvencím. Pro funkce akceptující jeden nebo více párů klíč-hodnota se používají **kwargs, pro funkce akceptující jednu nebo více hodnot se používá *args. Ve vašem případě bych to kombinoval.

Kód: [Vybrat]
from funcy import flatten, join

def append(*args, **kwargs):
    widgets = {**join(flatten(args)), **kwargs}
    for k, v in widgets.items():
        process_widget(k, w)
    return widgets.keys()

funkce akceptuje slovnik, zanorene listy, keyword argumenty, vice slovniku, .... spoji vse do jednoho slovniku widgets, ktery zpracuje

rekurzivni typove anotace jsou mozne, jen je asi nedam z hlavy
« Poslední změna: 09. 03. 2020, 13:53:58 od A.P.Hacker »

Re:Doporučte programovací jazyk pro Windows
« Odpověď #123 kdy: 09. 03. 2020, 14:07:51 »
oprava, lepe tak:

Kód: [Vybrat]
from funcy import flatten, join

def append(*args, **kwargs):
    widgets = join([*flatten(args), *[kwargs]])
    for k, v in widgets.items():
        process_widget(k, w)
    return widgets.keys()

Re:Doporučte programovací jazyk pro Windows
« Odpověď #124 kdy: 09. 03. 2020, 14:37:14 »
oprava, jeste lepe tak:

Kód: [Vybrat]
from funcy import flatten, join

def append(*args, **kwargs):
    widgets = join([*flatten(args), kwargs])
    for k, v in widgets.items():
        process_widget(k, w)
    return widgets.keys()


Re:Doporučte programovací jazyk pro Windows
« Odpověď #125 kdy: 09. 03. 2020, 15:04:35 »
Vetsinou lidi, kteri nevidi prinos pythonu, pisi nasobne vic kodu nez je nutne. Pripravuji se tim o hlavni vyhodu pythonu oproti Jave, mensi ukecanost.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #126 kdy: 09. 03. 2020, 15:14:16 »
Oproti Javě tu výhodu má snad každý jayk...

qelurg

  • ****
  • 340
    • Zobrazit profil
    • E-mail
Re:Datove tridy v Pythonu
« Odpověď #127 kdy: 09. 03. 2020, 15:23:59 »
Python neumi nic, co by neumela java(akorat vylozene nebezpecne veci se tam delaji ukecane, typicky reflection api, to je zalesitost pro tvurce frameworku, bezny jouda do toho nema co hrabat), naopak to zdaleka neplati. Ostatne jython je imementace pythonu v jave, javu v pythonu nikdo nenapsal

Opravdu? Umi java duck typing? Umí java modifikovat tridy realtime za behu programu? Umi java neco jako:

def fce1(arg1, /, arg2, *, arg3):

Re:Doporučte programovací jazyk pro Windows
« Odpověď #128 kdy: 09. 03. 2020, 15:42:32 »
Vetsinou lidi, kteri nevidi prinos pythonu, pisi nasobne vic kodu nez je nutne. Pripravuji se tim o hlavni vyhodu pythonu oproti Jave, mensi ukecanost.

Ano, osobne pisu mnohem vice kodu nez je nutne a hromadu komentaru k tomu.
A to za ucelem citelnosti kodu, az se na to za 3 roky podivam, nepotrebuju dekodovat fancy hacky, co zpusobily, ze jsem usetril  4 radky kodu.
Asi "nejlepsi" je v tomto ohledu Perl, ktery je obecne znam jako "write only language", casto to po sobe neprecte ani autor.

Osobne se snazim o takovy kod, ktery precte i clovek, co v zivote v Jave nedelal.

qelurg

  • ****
  • 340
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #129 kdy: 09. 03. 2020, 15:50:10 »
Určitě je spoustu cest, jak to rozhodování řešit. Pro mě je ale podstatné, že se musí na začátku funkce něco takového řešit. To přece nemá s příjemným a robustním vývojem nic společného.
To je jen váš subjektivní dojem. Ať tak nebo tak, řešit to musíte v každém jazyku. Mít rozhodování v jedné funkci dle typu nebo si na to napsat deset přetížených funkcí je věc osobních preferencí. Komu vyhovuje přetěžování, může v pythonu používat @overload.

Re:Datove tridy v Pythonu
« Odpověď #130 kdy: 09. 03. 2020, 15:52:11 »
Python neumi nic, co by neumela java(akorat vylozene nebezpecne veci se tam delaji ukecane, typicky reflection api, to je zalesitost pro tvurce frameworku, bezny jouda do toho nema co hrabat), naopak to zdaleka neplati. Ostatne jython je imementace pythonu v jave, javu v pythonu nikdo nenapsal

Opravdu? Umi java duck typing? Umí java modifikovat tridy realtime za behu programu? Umi java neco jako:

def fce1(arg1, /, arg2, *, arg3):

Ne neumi.
Protoze to jsou znouzectnosti, Java vsechny tyto veci resi jinak a robustneji.
Ducktyping je znouzectnost, protoze python neumi silne typy. Ducktyping neni nic jineho, ze nemam ZADNOU kontrolu typu, proste zavolam stejnojmennou metodu bez rozliseni typu atributu a dej se vule bozi.
IDE s tim maglajzem neudela nic, v Jave ti eclipse pri znalosti signatur metod pise podstatny kus kodu za tebe, staci mackat CTRL+SPACE

Modifikovat tridu za behu je prasecina, v Jave se zkratka pouziva misto hrabani do trid dynamicka kompozice typu Spring IoC.
Variabilni pocet atributu metody java umi taky, se silnymi typy v parametrech, ktere mimochoden jsou soucasti signatury metody a netreba provadet zhuverilosti jako je toto.

https://stackoverflow.com/questions/25343981/method-overloading-for-different-argument-type-in-python

O generickych metodach ani nemluvim.

qelurg

  • ****
  • 340
    • Zobrazit profil
    • E-mail
Re:Doporučte programovací jazyk pro Windows
« Odpověď #131 kdy: 09. 03. 2020, 15:54:05 »
Vetsinou lidi, kteri nevidi prinos pythonu, pisi nasobne vic kodu nez je nutne. Pripravuji se tim o hlavni vyhodu pythonu oproti Jave, mensi ukecanost.

Ano, osobne pisu mnohem vice kodu nez je nutne a hromadu komentaru k tomu.
A to za ucelem citelnosti kodu, az se na to za 3 roky podivam, nepotrebuju dekodovat fancy hacky, co zpusobily, ze jsem usetril  4 radky kodu.
Asi "nejlepsi" je v tomto ohledu Perl, ktery je obecne znam jako "write only language", casto to po sobe neprecte ani autor.

Osobne se snazim o takovy kod, ktery precte i clovek, co v zivote v Jave nedelal.

Psát čitelně je ideál. Ale příliš mnoho (zbytečného) kódu přehlednost snižuje. Java je proto nepřehledný jazyk, imho jeden z hlavních důvodů neíblíbenosti. Vždy když slyším obhajobu, že ide mi ten kód vygeneruje, tak mám dost nepříiemný pocit, že je něcohodně špatně.

qelurg

  • ****
  • 340
    • Zobrazit profil
    • E-mail
Re:Datove tridy v Pythonu
« Odpověď #132 kdy: 09. 03. 2020, 16:04:00 »
Python neumi nic, co by neumela java(akorat vylozene nebezpecne veci se tam delaji ukecane, typicky reflection api, to je zalesitost pro tvurce frameworku, bezny jouda do toho nema co hrabat), naopak to zdaleka neplati. Ostatne jython je imementace pythonu v jave, javu v pythonu nikdo nenapsal

Opravdu? Umi java duck typing? Umí java modifikovat tridy realtime za behu programu? Umi java neco jako:

def fce1(arg1, /, arg2, *, arg3):

Ne neumi.
Protoze to jsou znouzectnosti, Java vsechny tyto veci resi jinak a robustneji.
Ducktyping je znouzectnost, protoze python neumi silne typy. Ducktyping neni nic jineho, ze nemam ZADNOU kontrolu typu, proste zavolam stejnojmennou metodu bez rozliseni typu atributu a dej se vule bozi.
IDE s tim maglajzem neudela nic, v Jave ti eclipse pri znalosti signatur metod pise podstatny kus kodu za tebe, staci mackat CTRL+SPACE

Modifikovat tridu za behu je prasecina, v Jave se zkratka pouziva misto hrabani do trid dynamicka kompozice typu Spring IoC.
Variabilni pocet atributu metody java umi taky, se silnymi typy v parametrech, ktere mimochoden jsou soucasti signatury metody a netreba provadet zhuverilosti jako je toto.

https://stackoverflow.com/questions/25343981/method-overloading-for-different-argument-type-in-python

O generickych metodach ani nemluvim.

Výborně, máme vyvráceno nesmyslné tvrzení, že Java umí všechno, co Pythoh.

Duck typing není z nouze ctnost, je to chtěný a žádaný stav. Není pravda, že to znamená žádnou kontrolu typů. Python je vyšší jazyk, kde typ je vlastnost hodnoty nikoliv proměnné. Python má silné typy, ale vyhodnocuje je dynamicky. Pomocí MyPy je umí vyhodnocovat i staticky, ale z toho pramení mnohí nechtěných omezení, žakže já třeba jazyky se statickýmá typy odmítám, nejsou pro mě dostatečně flexibilní.

Já spoléhám na sebe, nikoliv na ide a je mi fajn. Ty prostě neumíš dobře programovat, ovládáš možná statické programování, ale plaveš v tom dynamickém, neumíš myslet v dynamickém jazyku. To je celé. Omezuješ sám sebe. Já zase neumím myslet ve funkcionálních jazycích, ale beru to jako svůj nedostatek, nikoliv jako nedostatek (těch blbých) funkcionálních jazyků.

Můj dotaz nezněl na variabilní počet argumentů.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #133 kdy: 09. 03. 2020, 16:04:17 »
Vetsinou lidi, kteri nevidi prinos pythonu, pisi nasobne vic kodu nez je nutne. Pripravuji se tim o hlavni vyhodu pythonu oproti Jave, mensi ukecanost.

Ano, osobne pisu mnohem vice kodu nez je nutne a hromadu komentaru k tomu.
A to za ucelem citelnosti kodu, az se na to za 3 roky podivam, nepotrebuju dekodovat fancy hacky, co zpusobily, ze jsem usetril  4 radky kodu.
Asi "nejlepsi" je v tomto ohledu Perl, ktery je obecne znam jako "write only language", casto to po sobe neprecte ani autor.

Osobne se snazim o takovy kod, ktery precte i clovek, co v zivote v Jave nedelal.

Psát čitelně je ideál. Ale příliš mnoho (zbytečného) kódu přehlednost snižuje. Java je proto nepřehledný jazyk, imho jeden z hlavních důvodů neíblíbenosti. Vždy když slyším obhajobu, že ide mi ten kód vygeneruje, tak mám dost nepříiemný pocit, že je něcohodně špatně.

Mno, staci mit zajimave metody nahore, seno dole. Kazdy vi co je getter, setter, toString().
IntelliJ to umi dokonce konfigurovatelne foldovat.
A kdo toto nezkousne, je tu Lombok, osobne nepouzivam.

Java neni rozhosdne ukecana vic, nez je potreba.
Prakticky jedina vec, kterou v tomoto ohledu Jave zazlivam, je nemoznost NonNull Objectu, kde proste neni mozno mit null object daneho typu s null hodnotou.

Re:Doporučte programovací jazyk pro Windows
« Odpověď #134 kdy: 09. 03. 2020, 16:06:28 »
Java neni rozhosdne ukecana vic, nez je potreba.

java je nejukecanejsi v soucasnosti pouzivany jazyk