Online IDE pro Javu s možností debugování

dustin

Re:Online IDE pro Javu s možností debugování
« Odpověď #285 kdy: 08. 08. 2016, 07:00:06 »
Souhlas se vším až na ta pole :-) Ta byla typovaná vždycky, asi myslíš seznamy/množiny/fronty/zásobníky?

Jasně že jo, sorry :-)


dustin

Re:Online IDE pro Javu s možností debugování
« Odpověď #286 kdy: 08. 08. 2016, 07:17:52 »
K čemu je to dobré? Operátor instanceof nepoužívám a nějak mi nechybí.

To je tvá věc. Nicméně tady nejde přesně o instanceof, ale o možnost zjištění typu generika třídy za běhu. Což nejde, protože z generik se do runtimu nic nedostane, je to jen "pomůcka" pro kompilátor. A dost často by se to hodilo. Proto se běžně říká, že má java generika jen napůl.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Online IDE pro Javu s možností debugování
« Odpověď #287 kdy: 08. 08. 2016, 08:22:06 »
Osobne me Java prijde jako ok jazyk, zbytecne uzvanena, ale i to se trochu lepsi. Rozhodne ma hodne much, ktere bohuzel vetsinou vychazeji z one zpetne kompatibility. Ale jak to sleduju z povzdali, tak kazda verze prinasi zatracene dobre veci, vetsinou otestovane jinymi jazyky nad JVM.

Rozhodne me prijde o rad lepsi (na stredni a velke projekty), nez vsechny ty puvodne skriptovaci dynamicke veci - PHP, Python, Ruby, JavaScript, atp.

Ted delam v praci na malem projektu v JS (15k loc), kde je zakazano psat testy, a je to hruza. Refaktoringu se bojim, radeji ho nedelam (no, co si budu namlouvat, oni by me stejne vetsi uklid neschvalili) a uz jen doklepavam bugfixy a male zmeny. Rikal jsem jim nekolikrat, ze z toho bude slepenec, kde se pri kazde druhe zmene neco rozbije a dojde se na to az za tyden. No, chteli to tak mit, maji to tak. Kdyz by se to psalo v nejakem staticky typovanem jazyce, jako treba TypeScript, Scala (ScalaJS) nebo nedejbuh Haskell (PureScript?), tak by mozna ani zadne testy potreba nebyly a zaroven by mira "rozbiti" vyrazne klesla.

K tem generikam a JVM, treba ve Scale to jde (bezi taky na JVM). Sice to neni prehnane elegantni, ale hodi se to. http://stackoverflow.com/questions/18499384/polymorphic-instantiation-in-scala-using-typetag-and-classtag

PS: O Heskellu ve startupu jsem nevadno cetl zajimavy clanek - http://baatz.io/posts/haskell-in-a-startup/. Celkem by me zajimalo, jestli je opravdu tak silna korelace mezi Haskellem a kvalitou uchazecu, kteri jim chodili (udajne byli mnohem kvalitnejsi, nez u "beznych" jazyku).

Kit

Re:Online IDE pro Javu s možností debugování
« Odpověď #288 kdy: 08. 08. 2016, 08:47:07 »
Ted delam v praci na malem projektu v JS (15k loc), kde je zakazano psat testy, a je to hruza.

PS: O Heskellu ve startupu jsem nevadno cetl zajimavy clanek - http://baatz.io/posts/haskell-in-a-startup/. Celkem by me zajimalo, jestli je opravdu tak silna korelace mezi Haskellem a kvalitou uchazecu, kteri jim chodili (udajne byli mnohem kvalitnejsi, nez u "beznych" jazyku).

Zakázané testy v JS musí být pořádná hrůza.

Ta korelace mezi Haskellem a kvalitou uchazečů jistě bude, protože Haskell tě naučí jiný pohled na programování, který si přeneseš i do ostatních jazyků. Totéž se dříve tvrdilo o Lispu, ale Haskell má navíc to silné typování.

dustin

Re:Online IDE pro Javu s možností debugování
« Odpověď #289 kdy: 08. 08. 2016, 08:49:57 »
Zeptám se jakožto JS laik - v čem může být výhodné zakázat testy?


Kolemjdoucí

Re:Online IDE pro Javu s možností debugování
« Odpověď #290 kdy: 08. 08. 2016, 09:06:03 »
K čemu je to dobré? Operátor instanceof nepoužívám a nějak mi nechybí.

To je tvá věc. Nicméně tady nejde přesně o instanceof, ale o možnost zjištění typu generika třídy za běhu. Což nejde, protože z generik se do runtimu nic nedostane, je to jen "pomůcka" pro kompilátor.

To není pravda, správně je to popsané například tady: http://tutorials.jenkov.com/java-reflection/generics.html

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Online IDE pro Javu s možností debugování
« Odpověď #291 kdy: 08. 08. 2016, 09:12:12 »
Zeptám se jakožto JS laik - v čem může být výhodné zakázat testy?
V první fázi vývoje jsou zcela zbytečné, zdržují od produktivní práce, prodlužují čas dodání, zvyšují cenu. Pokud byla aplikace slíbena rychle a levně, je výhodné je vynechat. V druhé fázi, když je aplikace produktivně nasazena a zákazník je na ní závislý, tak naopak neexistující testy pomáhají prodlužovat a tím pádem prodražovat úpravy, pro zákazníka bude těžké předat projekt někomu jinému a firma dodávající řešení může zákazníka efektivně ždímat.

dustin

Re:Online IDE pro Javu s možností debugování
« Odpověď #292 kdy: 08. 08. 2016, 09:20:33 »
To není pravda, správně je to popsané například tady: http://tutorials.jenkov.com/java-reflection/generics.html

Díky za upřesnění, tohle jsem nevěděl. I tak je to zjištění dost komplikované (= nefektivní) a netýká se přímo třídy (což je to, co mě zajímá), ale jejího fieldu/metody. Ale jo, dát se to nahackovat... Jenže to je přesně to, čemu se člověk chce vyhnout :-( Upřímně to už raději udělám toho potomka parametrizované třídy pro jeden konkrétní typ a zavolám si v ní jeho konstruktor natvrdo...

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #293 kdy: 08. 08. 2016, 09:23:05 »
Zeptám se jakožto JS laik - v čem může být výhodné zakázat testy?

V některých firmách si hlídají aby programátor nenapsal ani řádku navíc, než za co je placený. Také jsem se s tím setkal. Případně zaměstnávají specialistu testera, který píše testy.


pepan

Re:Online IDE pro Javu s možností debugování
« Odpověď #294 kdy: 08. 08. 2016, 09:24:57 »
takovej C# ma generika uplne promakany. jina uroven nez ma java. to se musi uznat

gl

Re:Online IDE pro Javu s možností debugování
« Odpověď #295 kdy: 08. 08. 2016, 09:40:32 »
Ted delam v praci na malem projektu v JS (15k loc), kde je zakazano psat testy, a je to hruza. Refaktoringu se bojim, radeji ho nedelam (no, co si budu namlouvat, oni by me stejne vetsi uklid neschvalili) a uz jen doklepavam bugfixy a male zmeny. Rikal jsem jim nekolikrat, ze z toho bude slepenec, kde se pri kazde druhe zmene neco rozbije a dojde se na to az za tyden. No, chteli to tak mit, maji to tak. Kdyz by se to psalo v nejakem staticky typovanem jazyce, jako treba TypeScript, Scala (ScalaJS) nebo nedejbuh Haskell (PureScript?), tak by mozna ani zadne testy potreba nebyly a zaroven by mira "rozbiti" vyrazne klesla.

To, že v Haskellu nejsou třeba žádné testy, je pohádka kterou vám tu v diskuzích mnohokrát vyvrátili. I vědci ověřují správnost svých úvah na konkrétních číslech. Jen vy Haskellisti dáte vše na první dobrou. Divné.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Online IDE pro Javu s možností debugování
« Odpověď #296 kdy: 08. 08. 2016, 10:11:05 »
Ja nerikam, ze v Haskellu nejsou treba testy vubec. Jen ze je jich potreba o nekolik radu mene, nez pri stejne urovni "protestovani" napr. v tom JavaScriptu nebo jinem dynamicky typovanem jazyce. (Kdyz jsem psal o sobe, tak jsem tim myslel, ze i to minimum, ze sedi typy, by me v pripade toho JS projektu neuveritelne usetrilo cas.)

Casto se o Haskellu rika, ze pokud se to prelozi, tak to funguje spravne. A prestoze je to nadsazka, tak IMO neni tak daleko od pravdy.

Kolemjdoucí

Re:Online IDE pro Javu s možností debugování
« Odpověď #297 kdy: 08. 08. 2016, 10:12:39 »
To není pravda, správně je to popsané například tady: http://tutorials.jenkov.com/java-reflection/generics.html

Díky za upřesnění, tohle jsem nevěděl. I tak je to zjištění dost komplikované (= nefektivní)

Nechápu co vidíte komplikovaného a neefektivního na přímočarém použití reflexe.

a netýká se přímo třídy (což je to, co mě zajímá), ale jejího fieldu/metody. Ale jo, dát se to nahackovat... Jenže to je přesně to, čemu se člověk chce vyhnout :-( Upřímně to už raději udělám toho potomka parametrizované třídy pro jeden konkrétní typ a zavolám si v ní jeho konstruktor natvrdo...

Je zajímavé že přesto že evidentně vůbec nerozumíte tomu jako jsou generika v Javě implementovaná tak vám to nebrání v tom veřejně šířit bludy. Správně je to takhle a tím definitivně končím: http://www.java2s.com/Tutorials/Java/java.lang/Class/Java_Class_getGenericSuperclass_.htm

Re:Online IDE pro Javu s možností debugování
« Odpověď #298 kdy: 08. 08. 2016, 10:21:45 »
To je tvá věc. Nicméně tady nejde přesně o instanceof, ale o možnost zjištění typu generika třídy za běhu. Což nejde, protože z generik se do runtimu nic nedostane, je to jen "pomůcka" pro kompilátor.

To není pravda, správně je to popsané například tady: http://tutorials.jenkov.com/java-reflection/generics.html
Tohle ale řeší návratový typ metody, nikoli parametrizovaný typ, o který šlo v předchozích komentářích především. Jde o to, že nemůžete napsat například následující kód:

Kód: [Vybrat]
class Factory<T> {
  public T create() {
    return new T();
  }
}

To se musí obcházet tím, že do té třídy předáte i instanci Class a konstruktor pak voláte pomocí reflexe.

gamer

Re:Online IDE pro Javu s možností debugování
« Odpověď #299 kdy: 08. 08. 2016, 10:35:23 »
Nechápu co vidíte komplikovaného a neefektivního na přímočarém použití reflexe.

V normálních jazycích s normálními generiky na to není reflexe vůbec potřeba a je to mnohem rychlejší a elegantnější:
Kód: [Vybrat]
#include <iostream>
#include <typeinfo>
#include <string>

template<typename RESULT, typename ARG1, typename ARG2>
RESULT sum(const ARG1 a, const ARG2 b)
{
    std::cout << "soucet "
              << typeid(a).name() << " + "
              << typeid(b).name() << " --> "
              << typeid(RESULT).name() << std::endl;
    return a + b;
}

int main()
{
    auto result1 = sum<double>(1.0, 2.0f);
    auto result2 = sum<std::string>(std::string("a"), std::string("b"));
    return 0;
}