Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Cikáda

Stran: 1 ... 27 28 [29] 30 31 ... 54
421
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 21:27:51 »
Teď nevím, co se tím pokoušíš říct...

422
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 21:14:03 »
Citace
new String('aa') == new String('aa')
{} == {}

Tady zase porovnáváš objekt s objektem. No a shodné objekty to nejsou. Tzn. je to konzistentní.

Tady někde je tuším ta hranice, kdy se přepíná mezi porovnávání hodnoty, a porovnávání identity. Což je další matení nepřítele, že si se dvěma oparátory (== a ===) vlastně furt nevystačíš.

Ne, to bych neřekl. Ono totiž není úplně snadné říct, kdy jsou si objekty rovny... :)

423
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 20:07:00 »
Narážel jsem na tohle:

Kód: [Vybrat]
def format(a, b):
    return a + b

format(1, 2)
Špatný název protože "tak se kouknu dovnitř, co to dělá, že jo".

Ne, to by bylo fakt nepěkné. :)

Funny je, že musí přijít @Kit a mluvit k tématu. Zase se po nějaké době shodneme. :)

Kit a k tématu? Ano, to je Funny.

Možná, ale často tu měl teď point. :)

424
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 19:51:45 »
Funny je, že musí přijít @Kit a mluvit k tématu. Zase se po nějaké době shodneme. :)

425
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 19:50:28 »
Jinak je ti doufám jasné, že i v JavaScriptu taky můžeš hlídat, jestli jsi dostal číslo, nebo string
Jen za běhu. Fakt budeš "kopat" základy lžičkou, když můžeš použít bagr?
Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D
Interpretovanost nijak nesouvisí s typováním.
Ano, dobrý point - chtěl jsem napsat dynamických (~dynamicky typovaných). Moje chyba. :)
Pak to ale není argument. 1. “Java umí kontrolovat typy na vstupu při překladu - před během.” 2. “V JS taky jdou kontrolovat typy na vstupu.”

Zaprvé se koukni na to, jak šly "argumenty" po sobě. Zadruhé Java je dynamicky typovaná?

Jednak si můžeš zjistit, co uvnitř je, ...

Tohle by slušný programátor nemohl ani vyslovit!

Pročpak? A co je to "slušný programátor".

Pokud by mi těžce šlo o to, aby oba parametry byly Stringy, tak si to prostě ověřím a případně vyhodím výjimku (když už na tom tak trváte). V C si taky ověřuji, jestli pointer není NULL.
Však C je také slabě typovaný jazyk. Prpblém v JS, že samotné ověřování typů není dostatečné, protože JS s nimi pracuje špatně, viz řada už uvedených příkladů:

'aa' == 'aa'
'aa' == new String('aa')
new String('aa') == new String('aa')
{} == {}


Problém je, že tvrdíš, že ověřování typů není dostatečné, ale jako příklad uvádíš něco, co typ neověřuje...

Pročpak? A co je to "slušný programátor".

Potřeba podívat se co je uvnitř je znakem blbě napsané rutiny.
Zvyk, dívat se dovnitř je znakem špatného programátora.

Ale obávám se, že toto nejde dokázat. Buď máte zkušenosti, a pak je vám to jasné, a nebo nemáte, a pak mi nevěříte.

Možná to díky citacím vypadlo z kontextu, ale "uvnitř" je tu použito ve smyslu "uvnitř proměnné". Nevím, co je zlého na tomto:

Kód: [Vybrat]
let x = 100;
let y = "ahoj";
typeof x;
typeof y;

A v jakém smyslu se to liší od tohoto?

Kód: [Vybrat]
if (ptr == NULL)

Z jakého důvodu by to ze mě mělo dělat špatného programátora?

426
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 18:21:52 »
Jinak je ti doufám jasné, že i v JavaScriptu taky můžeš hlídat, jestli jsi dostal číslo, nebo string
Jen za běhu. Fakt budeš "kopat" základy lžičkou, když můžeš použít bagr?
Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D
Interpretovanost nijak nesouvisí s typováním.
Ano, dobrý point - chtěl jsem napsat dynamických (~dynamicky typovaných). Moje chyba. :)
Pak to ale není argument. 1. “Java umí kontrolovat typy na vstupu při překladu - před během.” 2. “V JS taky jdou kontrolovat typy na vstupu.”

Zaprvé se koukni na to, jak šly "argumenty" po sobě. Zadruhé Java je dynamicky typovaná?

Jednak si můžeš zjistit, co uvnitř je, ...

Tohle by slušný programátor nemohl ani vyslovit!

Pročpak? A co je to "slušný programátor".

Pokud by mi těžce šlo o to, aby oba parametry byly Stringy, tak si to prostě ověřím a případně vyhodím výjimku (když už na tom tak trváte). V C si taky ověřuji, jestli pointer není NULL.

427
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 15:35:19 »
Jinak je ti doufám jasné, že i v JavaScriptu taky můžeš hlídat, jestli jsi dostal číslo, nebo string
Jen za běhu. Fakt budeš "kopat" základy lžičkou, když můžeš použít bagr?
Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D
Interpretovanost nijak nesouvisí s typováním.

Ano, dobrý point - chtěl jsem napsat dynamických (~dynamicky typovaných). Moje chyba. :)

428
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 15:26:24 »
Proto to JS dela blbe, pokud chces mit spolehlivy program, musis neustale rucne kontrolovat typy.

A co se tyce cecka, nemej peci, to byl muj prvnin jazyk, na kterem jsem vyrostl.

Nepřijde ti na tvých "myšlenkových" pochodech nic divné?

429
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 15:23:27 »
Jinak je ti doufám jasné, že i v JavaScriptu taky můžeš hlídat, jestli jsi dostal číslo, nebo string
Jen za běhu. Fakt budeš "kopat" základy lžičkou, když můžeš použít bagr?

Jistě, v interpretovaných jazycích se tak nějak věci za běhu kontrolují... :D

430
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 15:22:13 »
Ale tušíš. Jednak si můžeš zjistit, co uvnitř je, druhak je úplně jedno, jak typovaný máš jazyk, ale imho by měl programátor vědět, co má kde v programu. A ano, víš, jak se to + bude chovat, protože existuje něco jako specifikace, kterou tady někteří pohrdají (chtěl bych třeba eee vidět v Céčku).
Já mám pořád pocit, že jsem se špatně vyspal a nepoznám vtip... fakt to myslíte vážně?
Kód: [Vybrat]
function f(a,b) {
  return a + b;
}
Bude to concatovat, nebo sčítat, nebo přetypovávat a konkatovat?

A takhle normálně programuješ v dynamicky typovaných jazycích? Já mám zato, že je fajn si hlídat, co kam předávám. Uživatelský vstup člověk ošetří, zbytek programu mám 100% pod kontrolou. Čili vím, CO té funkci dávám -> vím, co to udělá.
Až budeš mít za sebou zkušenost člověka, který 20 let udržuje stále se měnící kód, na kterém pracuje skupina programátorů, budeš se smát tomu, jak jsi byl naivní.

Takže teď si budeme honit ego, kdo má víc zkušeností? Hlavně že víš, kolik jich mám já... Trošku nevalidní argument. :)

431
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 14:13:25 »
Citace
Já mám zato, že je fajn si hlídat, co kam předávám.
Aha...takže nejen, že se musím zabývat tím, že tu funkci napíšu a odladím, ale ještě ke všemu vlastně k tomu pochopení co ta funkce dělá (a má dělat) musím zkontrolovat, kde všude je volaná.... v pythonu to aspoň zbuchne, když to tím proběhne, ne že to vrátí "něco".
Ano, je to vhodný programátorský návyk. Buď funkci volám tak, že vždycky vím, že jí pošlu korektní vstup, nebo to v ní ošetřím. V C snad taky ve funkci kontroluješ, že jsi nedostal NULL a pak ho tam můžeš poslat, nebo nekontroluješ, ale dáváš si sakra pozor, aby sis byl "jistý", že jí tam nepřijde.
V Javě si parametr označím jako @NonNull a překladač mi případně vynadá. Když tam ten NULL přijde, tak to slítne, ne že to vrátí nějaký poněkud neočekávaný výsledek.

Tohle je mimochodem supr na silných typových systémech - já prostě nemusím řešit, kdo to kde volá. Ta funkce prostě v typu specifikuje, co je korektní parametr a očekávání je, že v rámci těchto mezí by měla vracet korektní výsledky. A pak prostě nemusím řešit, kdo kde jak tu funkci volá.

Nemám dojem, že bych mluvil o Javě. Pointa byla jasná.

Já mám rád "silné" typové systémy, třeba takový Haskell je fakt super. ALE nebudu kvůli tomu odsuzovat jazyky, které na to jdou jinak. Když neumím programovat bez silných typů, tak to nebudu dělat (projde-li mi to), ale nebudu psát, jak jsou všechny "slaběji" typované jazyky na nic. V takovém případě bych byl tak akorát debil.

Jinak je ti doufám jasné, že i v JavaScriptu taky můžeš hlídat, jestli jsi dostal číslo, nebo string, nebo... žejo? :D

Citace
Citace
Uživatelský vstup člověk ošetří, zbytek programu mám 100% pod kontrolou. Čili vím, CO té funkci dávám -> vím, co to udělá.
Super pro větší projekty, nedejbože když tam je víc lidí...
A vidíš, dá se to. :) Je to jen o tom, jak jsou lidi zvyklí programovat. Pokud se někdo takto spoléhá na typový systém, tak si zaslouží, aby ho to vyšplouchlo. Dá se to (a celkem hezky), ale chce to daleko větší sebekázeň, protože programátorovi takové jazyky spoustu dovolí.
Ono se dá škrábat i levou nohou za pravým uchem... ale tak nějak nechápu proč odpověď "dá se s tím žít" by měla být jakkoliv relevantní k tezi "je to stupidní a způsobuje to problémy". Samozřejmě že code review řeší, když tam nějaký user napíše prasárnu. Stejně tak to řeší jazyk tím, že takovou konstrukci vůbec nepřipustí. Ano, holt jazyky nejsou dokonalé a musíme se s tím nějak naučit žít, ale proč tyhle stupidní vlastnosti obhajujete??

Připomíná mi to jednoho kamaráda - trabanty jsou dobrý, že se na nich dá poměrně snadno prakticky všechno opravit. Ale ono by se to nemuselo opravovat, kdyby se to pořád nerozbíjelo....

Nevidím nikde, že bych nabízel odpověď "dá se s tím žít". Spíš odmítám tvé kategorické "nejde" a nabízím "jde to, ale má to vyšší nároky na programátorovu kázeň" v kontextu toho, že pokud někdo píše jako čuně, tak mu to kompilátor z malé části zatrhne.
Řeknu to jinak, abys to pochopil. Jestli ti přijde ok strkat Int do funkce "duplicateString", tak není chyba v typovém systému. Programovat se dá pěkně i v dynamicky typovaných jazycích jako jsou JavaScript, Perl a další. Stupidní jsou tvé teze.

432
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 12:16:09 »
Citace
Já mám zato, že je fajn si hlídat, co kam předávám.
Aha...takže nejen, že se musím zabývat tím, že tu funkci napíšu a odladím, ale ještě ke všemu vlastně k tomu pochopení co ta funkce dělá (a má dělat) musím zkontrolovat, kde všude je volaná.... v pythonu to aspoň zbuchne, když to tím proběhne, ne že to vrátí "něco".

Ano, je to vhodný programátorský návyk. Buď funkci volám tak, že vždycky vím, že jí pošlu korektní vstup, nebo to v ní ošetřím. V C snad taky ve funkci kontroluješ, že jsi nedostal NULL a pak ho tam můžeš poslat, nebo nekontroluješ, ale dáváš si sakra pozor, aby sis byl "jistý", že jí tam nepřijde.

Jinak je fajn si funkce pojmenovávat tak, aby bylo +/- jasné, co dělá. ;)

Citace
Uživatelský vstup člověk ošetří, zbytek programu mám 100% pod kontrolou. Čili vím, CO té funkci dávám -> vím, co to udělá.
Super pro větší projekty, nedejbože když tam je víc lidí...

A vidíš, dá se to. :) Je to jen o tom, jak jsou lidi zvyklí programovat. Pokud se někdo takto spoléhá na typový systém, tak si zaslouží, aby ho to vyšplouchlo. Dá se to (a celkem hezky), ale chce to daleko větší sebekázeň, protože programátorovi takové jazyky spoustu dovolí.

433
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 11:05:54 »
Ale tušíš. Jednak si můžeš zjistit, co uvnitř je, druhak je úplně jedno, jak typovaný máš jazyk, ale imho by měl programátor vědět, co má kde v programu. A ano, víš, jak se to + bude chovat, protože existuje něco jako specifikace, kterou tady někteří pohrdají (chtěl bych třeba eee vidět v Céčku).
Já mám pořád pocit, že jsem se špatně vyspal a nepoznám vtip... fakt to myslíte vážně?
Kód: [Vybrat]
function f(a,b) {
  return a + b;
}
Bude to concatovat, nebo sčítat, nebo přetypovávat a konkatovat?

A takhle normálně programuješ v dynamicky typovaných jazycích? Já mám zato, že je fajn si hlídat, co kam předávám. Uživatelský vstup člověk ošetří, zbytek programu mám 100% pod kontrolou. Čili vím, CO té funkci dávám -> vím, co to udělá.

434
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 11:03:27 »
Z některých příspěvků tady mám celkem strach... to jako staticky typovaný systém někteří používají proto, aby mohli psát jako prasata?

435
Vývoj / Re:Problémy s JavaScript v praxi
« kdy: 04. 10. 2018, 11:00:25 »
Citace
Ne, že bych s tím obecně nesouhlasil. Ale co se má stát když:
Kód: [Vybrat]
 1 + "1"
? Taky výjimka?
ano, zde vyjimka ScitaniJablekHrusekException

Jenze kdyz je jeden z operandu string tak + neni scitani ale concat. Ale to zabednencum nevysvetlis, budou pindat, ze to ma hazet exception :D

Ked su dane veci v promennych tak  ty ako programator netusis ci sa bude scitavat alebo concatovat, o to ide.

Ale tušíš. Jednak si můžeš zjistit, co uvnitř je, druhak je úplně jedno, jak typovaný máš jazyk, ale imho by měl programátor vědět, co má kde v programu. A ano, víš, jak se to + bude chovat, protože existuje něco jako specifikace, kterou tady někteří pohrdají (chtěl bych třeba eee vidět v Céčku).

Stran: 1 ... 27 28 [29] 30 31 ... 54