Ideálny programovací jazyk

Re:Ideálny programovací jazyk
« Odpověď #180 kdy: 13. 05. 2019, 16:44:32 »
Tak, jaks to napsal, to vypadá, že async/await je pro tebe jen syntaktický cukr. Ono jde ale hlavně o runtime, třeba v tom JS je obzvlášť důležité, že “blokující” volání kooperativně přenechá jediné vlákno jiné části kódu.
Možná jsem to napsal nejasně, ale myslel jsem "čistě z hlediska výkonu". Když to řeknu úplně polopaticky: pokud něco jde dělat paralelně a udělám to paralelně, získám výkon. Žádný jiný magický mechanismus pro získání výkonu tam není.

I u promisů je to to samé - odstartuju HTTP get a zatímco se na pozadí vyřizuje, běží něco jiného. Ale pořád tohle jde jenom pokud to paralelně běžet může. Pokud ne (jsou tam vazby), tak se stejně musí čekat, s tím nikdo nic magicky nenadělá. Pokud jsou v algoritmu vazby, bude i "neblokující" kód blokovaný.


Re:Ideálny programovací jazyk
« Odpověď #181 kdy: 13. 05. 2019, 17:28:54 »
Tak, jaks to napsal, to vypadá, že async/await je pro tebe jen syntaktický cukr. Ono jde ale hlavně o runtime, třeba v tom JS je obzvlášť důležité, že “blokující” volání kooperativně přenechá jediné vlákno jiné části kódu.
Jenže v tom JS to přenechání vlákna neplyne z async/await, ale z promise a z interní implementace toho blokujícího volání. V JS je async/await prakticky opravdu jen syntaktický cukr. Když se vykašlete na ošetření chyb, můžete v JS async/await přepsat na Promise.then() a nebude v tom žádný rozdíl.

Důležité jsou ty chyby, protože v případě několika do sebe vnořených callbacků nejde udělat návrat z funkce (return by byl jen z lambdy), kdežto v případě linearizace se chyba vrací úplně normálně (jako třeba v Go) nebo normální výjimkou.
V JavaScriptu (předpokládám, že je řeč stále o něm) má Promise dva kanály – then pro validní výsledek a catch pro chybu. Takže prosté probublání chyby až na konec je tam také jednoduché. Složitější může být, pokud se někde v tom zřetězení callbacků chcete z chyby zotavit, případně je snazší tam výjimku úplně zazdít.

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #182 kdy: 13. 05. 2019, 19:52:08 »
Tak, jaks to napsal, to vypadá, že async/await je pro tebe jen syntaktický cukr. Ono jde ale hlavně o runtime, třeba v tom JS je obzvlášť důležité, že “blokující” volání kooperativně přenechá jediné vlákno jiné části kódu.
Možná jsem to napsal nejasně, ale myslel jsem "čistě z hlediska výkonu". Když to řeknu úplně polopaticky: pokud něco jde dělat paralelně a udělám to paralelně, získám výkon. Žádný jiný magický mechanismus pro získání výkonu tam není.

I u promisů je to to samé - odstartuju HTTP get a zatímco se na pozadí vyřizuje, běží něco jiného. Ale pořád tohle jde jenom pokud to paralelně běžet může. Pokud ne (jsou tam vazby), tak se stejně musí čekat, s tím nikdo nic magicky nenadělá. Pokud jsou v algoritmu vazby, bude i "neblokující" kód blokovaný.
Nejlepší příklad je IMHO HTTP server a C10M problém (na jednom vlákně), na tom se nejlépe vysvětluje princip async/await, souvisejícího ošetření chyb a vůbec propastný mezi concurrency a parallelism.

Re:Ideálny programovací jazyk
« Odpověď #183 kdy: 14. 05. 2019, 21:49:13 »
.
« Poslední změna: 14. 05. 2019, 21:51:43 od PetrK »

Re:Ideálny programovací jazyk
« Odpověď #184 kdy: 14. 05. 2019, 23:23:48 »
Java také nebude ten ideální jazyk...  8)
Kód: (Java) [Vybrat]
public class HelloWorld
{
  public static void main(String[] args)
  {
    Integer a = 1024;
    Integer b = 1024;
    System.out.print(a == b); // false
  }
}


Re:Ideálny programovací jazyk
« Odpověď #185 kdy: 15. 05. 2019, 07:09:15 »
Java také nebude ten ideální jazyk...  8)
Kód: (Java) [Vybrat]
public class HelloWorld
{
  public static void main(String[] args)
  {
    Integer a = 1024;
    Integer b = 1024;
    System.out.print(a == b); // false
  }
}
Vzhledem k tomu, že programovací jazyk je nástroj pro programátory, asi by ideální programovací jazyk neměli vybírat neprogramátoři.

Re:Ideálny programovací jazyk
« Odpověď #186 kdy: 15. 05. 2019, 08:17:04 »
Java také nebude ten ideální jazyk...  8)
Kód: (Java) [Vybrat]
public class HelloWorld
{
  public static void main(String[] args)
  {
    Integer a = 1024;
    Integer b = 1024;
    System.out.print(a == b); // false
  }
}
Vzhledem k tomu, že programovací jazyk je nástroj pro programátory, asi by ideální programovací jazyk neměli vybírat neprogramátoři.

"Idealni" znamena "idealni pro programatory"? To je podle me malo. Videl jsem uz spoustu java projektu, ale nevzpomenu si ani na jeden kde by jazyk byl vybran programatory.
Rozsirenost javy je podle me zpusobena tim, ze je zdanlive jednoducha a proto lze na trhu najit dostupne vyvojare a dostatek klientu, kteri si nechaji nabulikovat, ze je to dobry napad.

PS: Se sterkou na Johnyho souhlasim, protoze to byl fakt debilni argument.

Re:Ideálny programovací jazyk
« Odpověď #187 kdy: 15. 05. 2019, 10:36:58 »
"Idealni" znamena "idealni pro programatory"? To je podle me malo. Videl jsem uz spoustu java projektu, ale nevzpomenu si ani na jeden kde by jazyk byl vybran programatory.
Rozsirenost javy je podle me zpusobena tim, ze je zdanlive jednoducha a proto lze na trhu najit dostupne vyvojare a dostatek klientu, kteri si nechaji nabulikovat, ze je to dobry napad.

PS: Se sterkou na Johnyho souhlasim, protoze to byl fakt debilni argument.
Souhlasím, že o výběru programovacího jazyka nerozhodují jen programátoři. Ale vzhledem k tomu, na co jsem reagoval, mi připadalo zbytečné zabíhat do detailů…

Kit

  • *****
  • 853
    • Zobrazit profil
    • E-mail
Re:Ideálny programovací jazyk
« Odpověď #188 kdy: 15. 05. 2019, 11:13:32 »
Java také nebude ten ideální jazyk...  8)
Kód: (Java) [Vybrat]
public class HelloWorld
{
  public static void main(String[] args)
  {
    Integer a = 1024;
    Integer b = 1024;
    System.out.print(a == b); // false
  }
}

Franta má 1024 Kč, Pepa má také 1024 Kč. Pepa je Franta.

Re:Ideálny programovací jazyk
« Odpověď #189 kdy: 15. 05. 2019, 11:39:03 »
Franta má 1024 Kč, Pepa má také 1024 Kč. Pepa je Franta.

No jenže pokud ale mají oba pouze 50 Kč, pak opravdu jo:

Kód: (Java) [Vybrat]
public class HelloWorld
{
  public static void main(String[] args)
  {
    Integer a = 50;
    Integer b = 50;
    System.out.print(a == b); // true
  }
}

Re:Ideálny programovací jazyk
« Odpověď #190 kdy: 15. 05. 2019, 11:51:00 »
No jenže pokud ale mají oba pouze 50 Kč, pak opravdu jo:
Vždyť jo - pokud má Pepa a Franta jenom 50Kč, tak jsou to socky a pro javisty je socka jako socka.

Re:Ideálny programovací jazyk
« Odpověď #191 kdy: 15. 05. 2019, 12:06:00 »
A když to budou tuny zlata?  :o

Re:Ideálny programovací jazyk
« Odpověď #192 kdy: 15. 05. 2019, 12:09:22 »
Franta má 1024 Kč, Pepa má také 1024 Kč. Pepa je Franta.

No jenže pokud ale mají oba pouze 50 Kč, pak opravdu jo:

Kód: (Java) [Vybrat]
public class HelloWorld
{
  public static void main(String[] args)
  {
    Integer a = 50;
    Integer b = 50;
    System.out.print(a == b); // true
  }
}

Nemá smysl se vrtat v těchle profláklejch kravinkách. Každej jazyk a platforma co má něco za sebou obsahuje takovýhle věci, protože co se zdálo dobré tenkrát se za 10 - 20 let ukáže jako špatné rozhodnutí. Java si tím prošla několikrát a už má nasbíráno pěknou řádku kostlivců, na druhou stranu pořád to není tak hrozný právě kvůli její jednoduchosti. Podívej se na specifikaci rovnosti v javascriptu, pochybuju, že řadový JS programátor by to dal dohromady. Podívej se na chytáky v C#, tam to chvíli trvalo, než třeba lambdy udělali blbuvzdorný.

Na jednu stranu můžeme jakožto líní programátoři žádat, aby byl jazyk jednoduchý a bez nástrah, na druhou stranu to vždy bude něco za něco a holt by zatím člověk neměl otevřít editor dokud si nenačte jak se chová rovnost, spojování stringů, přetypování na bool, hashe a equals apod. To jsou věci, který jsou snad v každym jazyku jinak a dost často nějak blbě.

Re:Ideálny programovací jazyk
« Odpověď #193 kdy: 15. 05. 2019, 12:26:52 »
No jenže pokud ale mají oba pouze 50 Kč, pak opravdu jo:
V jazyce, který umožňuje používat hodnoty i reference, musí programátor znát rozdíl mezi hodnotou a referencí. To je celé, nic dalšího k tomu není potřeba dodávat, kdo ten rozdíl chápe, chápe i hloupost vašich příspěvků.

BoneFlute

  • *****
  • 2 046
    • Zobrazit profil
Re:Ideálny programovací jazyk
« Odpověď #194 kdy: 15. 05. 2019, 12:38:32 »
Java také nebude ten ideální jazyk...  8)
Kód: (Java) [Vybrat]
public class HelloWorld
{
  public static void main(String[] args)
  {
    Integer a = 1024;
    Integer b = 1024;
    System.out.print(a == b); // false
  }
}

Franta má 1024 Kč, Pepa má také 1024 Kč. Pepa je Franta.
Což ten kód neříká, že áno. V tom je ten podraz.