Python - zbožňovaný lidmi?

BoneFlute

  • *****
  • 2 095
    • Zobrazit profil
Re:Python - zbožňovaný lidmi?
« Odpověď #150 kdy: 17. 09. 2017, 22:25:20 »
Když už někdo touží po typech, ať použije dependent types, tam teprve začíná zábava.

Neměl by si po ruce nějaké texty? Jsem si to studoval, ale furt jsem podle všeho nepochopil tu pointu. Měl bych chápat Haskellovské typy, třídy a víceméně kinds, ale furt mě míjí jaký typ problémů řeší tyhlencty závislostní typy.


mikrom

Re:Python - zbožňovaný lidmi?
« Odpověď #151 kdy: 17. 09. 2017, 22:34:44 »
Ale vacsinou to byva tak, ze sa pytaju na stackoverflow, kopiruju a kopiruju. Dnes uz nie je modne sa nad niecim zamyslat, dnes je IN hodit to na stackoverflow a cakat, kym to niekto za mna vyriesi.
Kopirovanie sa tyka vsetkych jazykov - nie len pythonu. Ako hovoris, malokto dnes este cita nejake knizky o programovani, ale hned hodi problem radsej na diskusne forum a tam mu niekto pomoze.

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #152 kdy: 17. 09. 2017, 22:35:20 »
moderní PHP neznám. V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Ano, v PHP options objects používám i s těmi defaultními parametry. Jen to nevypadá tak hezky jako v tom Javascriptu. Pokud je to vhodné, tak si array uvnitř metody přetypuji na (object), například pokud chci data přímo použít v šabloně. Pro array má však PHP víc použitelných funkcí.

V Pythonu by se to dalo použít také, ale pojmenované parametry přeci jen vypadají elegantněji. Otázkou je, zda by to vypadalo stejně elegantně i pro 42 parametrů a jak by to vypadalo, pokud by se ty parametry načítaly z configu.

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #153 kdy: 17. 09. 2017, 22:58:31 »
V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Mě se to vůbec neosvědčilo.

Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.

Jako v Pythonu jsou ty pojmenované parametry šikovná věc. Ale alespoň ti to hlídá platné argumenty. Bez toho je to tak nějak naprd.

Tohle se musí podchytit v jednotkových testech, jinak se případná chyba hledá blbě. Spešl objekt (např. Messenger) můžeš použít také a chovat se to bude prakticky stejně.

Otázkou je, zda potřebuješ validovat vstupní hodnoty ještě předtím, než je předáš metodě. Mně se osvědčila validace uvnitř metody, resp. validátor se dá injektovat jako druhý parametr.

Metody, které taková data zpracovávají, si vždy ta data kontrolují a sanitují do takové míry, jakou potřebují. Jiné požadavky bude mít insert(), jiné search() a jiné find(). Vstupní data však mohou být pokaždé stejná.

Lemming

Re:Python - zbožňovaný lidmi?
« Odpověď #154 kdy: 17. 09. 2017, 23:43:12 »
V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Mě se to vůbec neosvědčilo.

Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.

Typescript tohle vzhledem k typové kontrole dává na další level. Je tam možno napsat signaturu ve stylu:

Citace
ulozMereni({teplota: number; tlak: { systolicky: number; disatolicky: number; } }): void;

Máš to i s kontrolou přítomnosti a typů parametrů a není potřeba deklarovat (pojmenovávat) speciální typ.


BoneFlute

  • *****
  • 2 095
    • Zobrazit profil
Re:Python - zbožňovaný lidmi?
« Odpověď #155 kdy: 18. 09. 2017, 00:11:52 »
V JS je tohle best practice. Říká se tomu option object.

http://www.codereadability.com/what-are-javascript-options-objects/

Mě se to vůbec neosvědčilo.

Snadno dochází k překlepům názvu klíče. Když mám hodně argumentů, a nejde to udělat jinak, použiju spešl objekt, který mi alespoň trochu validuje vstupní hodnoty. Ale bavíme se o případě, kdy potřebuju něco jako konfiguraci. Na normální volání funkce s několika málo argumenty mi přijde čitelnější prostě tam předat správně pojmenovaný výraz.

Typescript tohle vzhledem k typové kontrole dává na další level. Je tam možno napsat signaturu ve stylu:

Citace
ulozMereni({teplota: number; tlak: { systolicky: number; disatolicky: number; } }): void;

Máš to i s kontrolou přítomnosti a typů parametrů a není potřeba deklarovat (pojmenovávat) speciální typ.

Jo, tohle by šlo.

Aoidhghean

Re:Python - zbožňovaný lidmi?
« Odpověď #156 kdy: 18. 09. 2017, 02:26:53 »
Ale vacsinou to byva tak, ze sa pytaju na stackoverflow, kopiruju a kopiruju. Dnes uz nie je modne sa nad niecim zamyslat, dnes je IN hodit to na stackoverflow a cakat, kym to niekto za mna vyriesi.
Kopirovanie sa tyka vsetkych jazykov - nie len pythonu. Ako hovoris, malokto dnes este cita nejake knizky o programovani, ale hned hodi problem radsej na diskusne forum a tam mu niekto pomoze.
Když člověk hledá vývojáře, tak je pak otázka, jak najít ty sečtělé...

Aoidhghean

Re:Python - zbožňovaný lidmi?
« Odpověď #157 kdy: 18. 09. 2017, 02:55:47 »
Když už někdo touží po typech, ať použije dependent types, tam teprve začíná zábava.

Neměl by si po ruce nějaké texty? Jsem si to studoval, ale furt jsem podle všeho nepochopil tu pointu. Měl bych chápat Haskellovské typy, třídy a víceméně kinds, ale furt mě míjí jaký typ problémů řeší tyhlencty závislostní typy.
Tady je to názorně popsáno: http://www.cse.chalmers.se/~peterd/papers/DependentTypesAtWork.pdf
nicméně z čistě praktického pohledu jsou podle mě důležitější druhy (kinds), ty závislé typy jsou dost akademické. Na druhou stranu, když mám důkaz správnosti programu, nepotřebuju jednotkové testy :)

jpu

Re:Python - zbožňovaný lidmi?
« Odpověď #158 kdy: 18. 09. 2017, 10:56:59 »
Kopirovanie sa tyka vsetkych jazykov - nie len pythonu. Ako hovoris, malokto dnes este cita nejake knizky o programovani, ale hned hodi problem radsej na diskusne forum a tam mu niekto pomoze.
v knizkach vsetko nenajdes, a niektore veci sa vyriesia skusenostami. ale mas pravdu, dnes je to modny trend napisat niekam.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Python - zbožňovaný lidmi?
« Odpověď #159 kdy: 18. 09. 2017, 11:21:02 »
...
Kód: [Vybrat]
ulozMereni({teplota: number; tlak: { systolicky: number; disatolicky: number; } }): void;

Máš to i s kontrolou přítomnosti a typů parametrů a není potřeba deklarovat (pojmenovávat) speciální typ.

+1

Options object v TS je dost hezky, nepovinne veci staci oznacit "?" a pokud se uzivatel funkce preklepne v nazvu klice, tak mu to TS hned vrati s chybou :).

K tem path dep. types - pokud chces nejake prakticke ukazky, tak treba tato prednaska o Idris mi prijde dobra (Idris syntaxi vychazi z Haskellu).

DotNetGuy

Re:Python - zbožňovaný lidmi?
« Odpověď #160 kdy: 18. 09. 2017, 19:16:54 »
Víte co je průser v PHP? Že neumí tohle:

function f(array<intcisla) {}

Přitom tohle jde už i v Pythonu.

Re:Python - zbožňovaný lidmi?
« Odpověď #161 kdy: 18. 09. 2017, 19:46:02 »
Víte co je průser v PHP? Že neumí tohle:

function f(array<intcisla) {}

Přitom tohle jde už i v Pythonu.
http://php.net/manual/en/functions.arguments.php pole jdou předávat od PHP 5.1

Ivan Nový

Re:Python - zbožňovaný lidmi?
« Odpověď #162 kdy: 18. 09. 2017, 19:55:00 »
Víte co je průser v PHP? Že neumí tohle:

function f(array<intcisla) {}

Přitom tohle jde už i v Pythonu.
http://php.net/manual/en/functions.arguments.php pole jdou předávat od PHP 5.1

Vaše deklarace funkce, či dokonce metody je ale prasárna, co se stane, když s tím int už nevystačíte a budete potřebovat změnit typ?

DotNetGuy

Re:Python - zbožňovaný lidmi?
« Odpověď #163 kdy: 18. 09. 2017, 20:07:32 »
Víte co je průser v PHP? Že neumí tohle:

function f(array<intcisla) {}

Přitom tohle jde už i v Pythonu.
http://php.net/manual/en/functions.arguments.php pole jdou předávat od PHP 5.1

Nemůžeš si říct pole čeho.

Kit

Re:Python - zbožňovaný lidmi?
« Odpověď #164 kdy: 18. 09. 2017, 20:20:42 »
Víte co je průser v PHP? Že neumí tohle:

function f(array<intcisla) {}

Přitom tohle jde už i v Pythonu.

Je to průser i v C#, protože tam to jde také.

V PHP by mi tato konstrukce byla jaksi k ničemu, protože PHP je slabě typovým jazykem.