Nejžádanější programátorské znalosti na českém pracovním trhu

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #180 kdy: 23. 11. 2016, 06:23:18 »
Prasit sa da v kazdom jazyku, ked sa chce. V jave vsak na prasenie nie je dovod.
Aha... to je škoda, že to vývojáři neví, doporučuji vám na toto téma udělat pro javisty přednášku, bude o ni zájem a třeba se konečně dočkáme alespoň průměrných aplikací v Javě.
Jinak většina prasení vychází ze špatného použití špatného jazyka pro špatné účely a v tom je Java výjimečná, protože díky svým (ne)mocným principům takový postup nejen dovoluje, ale dokonce k němu nabádá a maximálně jej zjednodušuje. Potom tu ze sebe dělají "různí javameni" v různých jazykových mutacích blbečky s výroky typu "java je nejlepší na všechno". Není. Bohužel, není dobrá ani na polovinu z toho, co se v ní prasí. Jejím největším úspěchem je to, že dokáže z každého dělníka s nedokončenou základkou udělat "vývojáře".


noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Nejžádanější programátorské znalosti na českém pracovním trhu.
« Odpověď #181 kdy: 23. 11. 2016, 07:12:39 »
Nekterym zretelne ano. Kdo by jinak napsal Linphone v C, ze jo? ...

Androidi verze je podle jejich stranek v Jave. To, ze se bezne pouzivaji knihovny v C/C++ z Javy jsem zminil, ta aplikace je ale porad v Jave. BTW nevyvratil jste si prave to vase hrube generalizovani o nevykonosti aplikaci v Jave?

Jede na tom kompletni Linuxove distro s LXDE, utahne to i Xfce4, ale to jsem zrusil jako porad jeste zbytecne nenazrane. Jedou na tom celkem slusne vsechny browsery, krome Chrome, ktery zrusil 32 b verzi. Pouzivam vetsinou Pale Moon, protoze ostatni browsery, vcetne Chrome, maji nesmyslne velke pametove naroky, pricemz nenabizeji zadne plus, kvuli kteremu bych jim dal prednost. Opravdu nevidim duvod k upgradu jen proto, aby nekdo mohl prasit aplikace v Jave a to jeste kdovi jak.

Takze tam neprovozujete normalni prohlizec, myslel jsem si to. Mit vecne rozbite stranky (Pale Moon je 7 let nerozvijeny FF, pouze par bezp. updatu), to si radsi koupim za par tisic tablet s Androidem a povali mi tam v podstate vsechno.

Pokud nevidite duvod k upgradu, protoze na vetsinu veci a asi i stranek ten srot nestaci, tak pak nenadavejte na vetsinu veci, ale nadavejte sobe, ze jste jeste neupgradoval ;).

Ivan Nový

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #182 kdy: 23. 11. 2016, 08:00:49 »
Prasit sa da v kazdom jazyku, ked sa chce. V jave vsak na prasenie nie je dovod.

Java je plná prasáren, tady máš jednu ukázkovou: http://docs.oracle.com/javase/tutorial/java/data/numberclasses.html
Smutné na tom je, že java "programátoři" takové věci považují za normální.

Proč by to byla prasárna, naopak, kompilátor má více podkladů pro optimalizaci, to, že v Javě je to objekt, neznamená, že kompilátor s tím zachází ve vygenerovaném kódu jako s objektem.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #183 kdy: 23. 11. 2016, 08:11:02 »
Treba ve Scale (take nad JVM), pokud si dobre vzpominam, tak rozdeleni na primitivni typy a objekty neni. Prekladac sam rozhodne, jestli jde pouzivat primitivni typ, nebo se musi boxovat.

lopata

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #184 kdy: 23. 11. 2016, 08:58:29 »
Treba ve Scale (take nad JVM), pokud si dobre vzpominam, tak rozdeleni na primitivni typy a objekty neni. Prekladac sam rozhodne, jestli jde pouzivat primitivni typ, nebo se musi boxovat.

Je dobré uvědomit si, na co to vede. Pokud v Javě zruším primitivní typy a všechno bude objekt, nebude mít bool dvě hodnoty, ale tři (true, false, null). Takže všude, kde použiju v Javě Boolean bych měl psát:
Kód: [Vybrat]
if(bool != null && bool)
paráda, že? Musím řešit hnusné okrajové podmínky, které s primitivním typem nemůžou nastat. Java way...


JSH

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #185 kdy: 23. 11. 2016, 09:00:08 »
Proč by to byla prasárna, naopak, kompilátor má více podkladů pro optimalizaci, to, že v Javě je to objekt, neznamená, že kompilátor s tím zachází ve vygenerovaném kódu jako s objektem.
To, že je něco v Javě objekt znamená, že to je alokované na haldě a uklízí to GC. Nebo se to tak aspoň z pohledu programátora musí chovat ať se děje co se děje.
Hypoteticky to překladač vyoptimalizovat může, ale jak moc to zvládne je otázka. U immutable věcí ve funkcionálních jazycích to jde fajn. Ale bez immutable je jakýkoliv objekt spíš sdílený stav, který se předává referencí, než hodnota.

dustin

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #186 kdy: 23. 11. 2016, 09:24:13 »
Je dobré uvědomit si, na co to vede. Pokud v Javě zruším primitivní typy a všechno bude objekt, nebude mít bool dvě hodnoty, ale tři (true, false, null). Takže všude, kde použiju v Javě Boolean bych měl psát:
Kód: [Vybrat]
if(bool != null && bool)
paráda, že? Musím řešit hnusné okrajové podmínky, které s primitivním typem nemůžou nastat. Java way...

Jen se neboj, že by byli tvůrci javy takoví idioti, aby takovou zpětně nekompatibilní změnu udělali. Trendem není, aby všechno bylo objekt, ale aby se k primitivním typům dalo v určitých aspektech chovat jako k objektu - např. zpřesňovat jejich význam generiky (velice užitečné), umožnit s nimi pracovat v kolekcích bez boxingu (tj. místo pointeru přímo hodnota - omezení trashingu CPU keší) atd. Řešilo se to tu nedávno...

JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Nejžádanější programátorské znalosti na českém pracovním trhu.
« Odpověď #187 kdy: 23. 11. 2016, 09:44:16 »
Nekterym zretelne ano. Kdo by jinak napsal Linphone v C, ze jo? ...

Androidi verze je podle jejich stranek v Jave. To, ze se bezne pouzivaji knihovny v C/C++ z Javy jsem zminil, ta aplikace je ale porad v Jave. BTW nevyvratil jste si prave to vase hrube generalizovani o nevykonosti aplikaci v Jave?

Jestli to nebude tim, ze je to Android, kde je to jaksi normalni. Kdyby se tam daly snadno portovat aplikace v C, nevim, proc by se s tim prepisovali. Urcite ne proto, ze by si mysleli, ze Java je rychlejsi a uspornejsi. Nejaky dalsi blby argument byste nemel?

Citace
Takze tam neprovozujete normalni prohlizec, myslel jsem si to. Mit vecne rozbite stranky (Pale Moon je 7 let nerozvijeny FF, pouze par bezp. updatu), to si radsi koupim za par tisic tablet s Androidem a povali mi tam v podstate vsechno.

Tady zalezi na tom, cemu rikate normalni prohlizec. Co me se tyka, tak to urcite neni Chrome se svym dementnim UI a impotentnimi a casto nefunkcnimi rozsirenimi. Nejsou to ani napodobeniny Chrome a ani FF se svym krasnym Australisem a kazdou chvili dalsimi vifikundacemi, ktere je nutno odstranovat pomoci jakychsi rozsireni a ktery je "zdokonalovan" ke stale vetsi pomalosti. V PM mi funguje vse, co potrebuji, v nejhorsim pripade obcas nastartuji Vivaldi.

Citace
Pokud nevidite duvod k upgradu, protoze na vetsinu veci a asi i stranek ten srot nestaci, tak pak nenadavejte na vetsinu veci, ale nadavejte sobe, ze jste jeste neupgradoval ;).

Kdyby ten srot na vetsinu stranek nestacil, asi bych si toho uz vsimnul. Zijete asi v zajeti strasne predstavy, ze PM je cosi jako Links. No neni.

balki

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #188 kdy: 23. 11. 2016, 10:17:19 »
Treba ve Scale (take nad JVM), pokud si dobre vzpominam, tak rozdeleni na primitivni typy a objekty neni. Prekladac sam rozhodne, jestli jde pouzivat primitivni typ, nebo se musi boxovat.

Je dobré uvědomit si, na co to vede. Pokud v Javě zruším primitivní typy a všechno bude objekt, nebude mít bool dvě hodnoty, ale tři (true, false, null). Takže všude, kde použiju v Javě Boolean bych měl psát:
Kód: [Vybrat]
if(bool != null && bool)
paráda, že? Musím řešit hnusné okrajové podmínky, které s primitivním typem nemůžou nastat. Java way...

Ked je hodnota nenanicializovana, je to chyba. Bud to opravnene spadne na nullpointri, alebo o tom vieme a zaradime sa yoda vyrazom  Boolean.TRUE.equals(bool) , pripadne  Boolean.FALSE.equals(bool). Primitivna hodnota v jave pri nenainicializovani je default false, co tiez nie je dobre. Aj v c-cku nas ucili, aby sme inicializovali premenne (lebo tam byvaju random hodnoty z pamate), pri objektoch je to forcnute.

lopata

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #189 kdy: 23. 11. 2016, 10:27:13 »
Ked je hodnota nenanicializovana, je to chyba. Bud to opravnene spadne na nullpointri, alebo o tom vieme a zaradime sa yoda vyrazom  Boolean.TRUE.equals(bool) , pripadne  Boolean.FALSE.equals(bool). Primitivna hodnota v jave pri nenainicializovani je default false, co tiez nie je dobre. Aj v c-cku nas ucili, aby sme inicializovali premenne (lebo tam byvaju random hodnoty z pamate), pri objektoch je to forcnute.

Na tom je krásně vidět, jak Java deformuje myšlení a Java evangelisti se snaží obhájit každou blbost... Pokud dostanu zvenku zawrapovaný Boolean, tak MUSÍM řešit, jestli je nebo není null, protože nevím, kdo a jak ho vyrobil a co s ním provedl. Zavádí to extra stupeň volnosti a extra chybový stav, který u boolu většinou nemá vůbec žádný smysl. Co s tím jako mám dělat, když to bude null? Je to chyba, není to chyba? Proč to mám řešit, když potřebuju jenom true nebo false? Mimochodem tohle znáš?
https://www.lucidchart.com/techblog/2015/08/31/the-worst-mistake-of-computer-science/
Java nejenom že se z toho nepoučila, Java navíc zavádí null i pro primitivní typy, aby byla situace ještě horší...

balki

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #190 kdy: 23. 11. 2016, 10:37:43 »
Prasit sa da v kazdom jazyku, ked sa chce. V jave vsak na prasenie nie je dovod.
Aha... to je škoda, že to vývojáři neví, doporučuji vám na toto téma udělat pro javisty přednášku, bude o ni zájem a třeba se konečně dočkáme alespoň průměrných aplikací v Javě.
Jinak většina prasení vychází ze špatného použití špatného jazyka pro špatné účely a v tom je Java výjimečná, protože díky svým (ne)mocným principům takový postup nejen dovoluje, ale dokonce k němu nabádá a maximálně jej zjednodušuje. Potom tu ze sebe dělají "různí javameni" v různých jazykových mutacích blbečky s výroky typu "java je nejlepší na všechno". Není. Bohužel, není dobrá ani na polovinu z toho, co se v ní prasí. Jejím největším úspěchem je to, že dokáže z každého dělníka s nedokončenou základkou udělat "vývojáře".

Nemusim robit prednasky o objektovom navrhu a o nepraseni, su na to publikacie.
Eckel - Thinking in Java
Gang of four - Design patterns ...
Martin - Clean code
Fowler - Refactoring..
(plus nieco o algoritmizacii, Wilf, Knuth, Wirth)

Odporucam to aj ludom, co kodia v C++ , pythone atd., az na toho eckela. Kto nevie citat, je lopata a je odsudeny k vecnemu prasenu.

balki

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #191 kdy: 23. 11. 2016, 10:50:49 »
Ked je hodnota nenanicializovana, je to chyba. Bud to opravnene spadne na nullpointri, alebo o tom vieme a zaradime sa yoda vyrazom  Boolean.TRUE.equals(bool) , pripadne  Boolean.FALSE.equals(bool). Primitivna hodnota v jave pri nenainicializovani je default false, co tiez nie je dobre. Aj v c-cku nas ucili, aby sme inicializovali premenne (lebo tam byvaju random hodnoty z pamate), pri objektoch je to forcnute.

Na tom je krásně vidět, jak Java deformuje myšlení a Java evangelisti se snaží obhájit každou blbost... Pokud dostanu zvenku zawrapovaný Boolean, tak MUSÍM řešit, jestli je nebo není null, protože nevím, kdo a jak ho vyrobil a co s ním provedl. Zavádí to extra stupeň volnosti a extra chybový stav, který u boolu většinou nemá vůbec žádný smysl. Co s tím jako mám dělat, když to bude null? Je to chyba, není to chyba? Proč to mám řešit, když potřebuju jenom true nebo false? Mimochodem tohle znáš?
https://www.lucidchart.com/techblog/2015/08/31/the-worst-mistake-of-computer-science/
Java nejenom že se z toho nepoučila, Java navíc zavádí null i pro primitivní typy, aby byla situace ještě horší...

Nie som java evangelist, len nemam rad, ked niekto pouziva chybnu argumentaciu.
Viem, ten clanok je popularny. Nenainicializovane hodnoty su zle a maju sposobit chybu. 
Eifel taketo stavy riesi kontraktami, len to by zasa tuxik nadaval, ze co je to za zmrdizmus.
Podla mna primitivne typy by mali z javy vyhodit, ako sa planovalo. Blbe mozgy s oraclu vyhodili manazerov a rozhodli sa inak, je to smutne.

lopata

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #192 kdy: 23. 11. 2016, 11:03:50 »
Nie som java evangelist, len nemam rad, ked niekto pouziva chybnu argumentaciu.
Viem, ten clanok je popularny. Nenainicializovane hodnoty su zle a maju sposobit chybu. 
Eifel taketo stavy riesi kontraktami, len to by zasa tuxik nadaval, ze co je to za zmrdizmus.
Podla mna primitivne typy by mali z javy vyhodit, ako sa planovalo. Blbe mozgy s oraclu vyhodili manazerov a rozhodli sa inak, je to smutne.

bool je defaultně inicializovaný na false, nejde nenainicializovat. Má dva stavy true, false.

Boolean je defaultně inicializovaný na null, nejde nenainicializovat. Má tři stavy, true, false, null.

Podle tebe je správné, aby se dvoustavový bool zrušil a používal se jenom třístavový Boolean? Takhle by se to mělo podle balkiho dělat? Děkuji, nechci, je to úchylné, třístavový bool může myslet vážně jenom Java lopata.

JSH

Re:Nejžádanější programátorské znalosti na českém pracovním trhu
« Odpověď #193 kdy: 23. 11. 2016, 11:10:19 »
Nie som java evangelist, len nemam rad, ked niekto pouziva chybnu argumentaciu.
Viem, ten clanok je popularny. Nenainicializovane hodnoty su zle a maju sposobit chybu. 
Eifel taketo stavy riesi kontraktami, len to by zasa tuxik nadaval, ze co je to za zmrdizmus.
Podla mna primitivne typy by mali z javy vyhodit, ako sa planovalo. Blbe mozgy s oraclu vyhodili manazerov a rozhodli sa inak, je to smutne.
No ale inicializace proměnných řeší naprosté minimum problémů s null. Null je problém primárně proto, že jakýkoliv parametr funkce může být null a jakákoliv funkce může null vracet. Někdy je to dokonce i legální chování a pak je čistě na programátorovi, aby se pak toho null nějak rozumně zbavil. Z pohledu typového systému pak nic nebrání tomu, aby null probublával dál. Největší průser je to na hranicích modulů.
Jak moc se dá věřit dokumentacím u kódů třetí strany jsme si myslím různě bolestivými způsoby zjistili všichni.

Null je problém bez ohledu na jazyk. I v C++ je to (v omezenější míře) tak. Proto taky vznikla šablona not_null v GSL, aby se ta záruka dostala do typu. Jak to není součástí typu, tak je jen otázka času, než to bouchne.

Že je to průser se ví i v Java světě. Jen to nejde přidat k typu, tak udělali druhou nejlepší věc. Přidali anotaci @NotNull.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Nejžádanější programátorské znalosti na českém pracovním trhu.
« Odpověď #194 kdy: 23. 11. 2016, 11:12:48 »
Nekterym zretelne ano. Kdo by jinak napsal Linphone v C, ze jo? ...

Androidi verze je podle jejich stranek v Jave. To, ze se bezne pouzivaji knihovny v C/C++ z Javy jsem zminil, ta aplikace je ale porad v Jave. BTW nevyvratil jste si prave to vase hrube generalizovani o nevykonosti aplikaci v Jave?

Jestli to nebude tim, ze je to Android, kde je to jaksi normalni. Kdyby se tam daly snadno portovat aplikace v C, nevim, proc by se s tim prepisovali. Urcite ne proto, ze by si mysleli, ze Java je rychlejsi a uspornejsi. Nejaky dalsi blby argument byste nemel?

Ten argument jste udelal za me - vykonostne dulezite veci, jako kodeky, jsou bezne knihovny v C/C++, ktere se z Javy jen pouzivaji. Takze i Java aplikace muze byt rychla, protoze hezke GUI je v Jave a megaoptimalizovane vypocty v C/C++/asm.

Ja nerikam, aby se prepisovaly. Ale nove aplikace logicky budou vznikat spise ve vysokourovnovych jazycich, protoze neni duvod to psat v jazyce, ktery je zbytecne slozity, pouziva jej mene lidi (=mene potencionalnich prispevatelu) a vyvoj potrva dele. Navic vykon beznych PC (to se vas netyka) je dostatecne vysoky na to, aby i cast vykonostne narocnych ukolu byla psana v Jave - jednoduseji se to bude udrzovat, pokud je to dobre psano, tak bude i mene problemu s jinymi platformami a projekt nebude mix nekolika jazyku.

To, ze zkousite pomale aplikace v Jave neznamena, ze vsechny aplikace v Jave jsou pomale. Navic k tomu pridavate silne podprumerny HW pro ktery se nevyviji. I kancelarske pocitace jsou vykonejsi...

A ten vas prvni argument, ze neexistuje nesekajici se video kecatko v Jave, jsem vam vyvratil uz pred radou prispevku - Jitsi na procesoru za 200Kč to zvladne bez sekani ;).

Citace
Takze tam neprovozujete normalni prohlizec, myslel jsem si to. Mit vecne rozbite stranky (Pale Moon je 7 let nerozvijeny FF, pouze par bezp. updatu), to si radsi koupim za par tisic tablet s Androidem a povali mi tam v podstate vsechno.

Tady zalezi na tom, cemu rikate normalni prohlizec. Co me se tyka, tak to urcite neni Chrome se svym dementnim UI a impotentnimi a casto nefunkcnimi rozsirenimi. Nejsou to ani napodobeniny Chrome a ani FF se svym krasnym Australisem a kazdou chvili dalsimi vifikundacemi, ktere je nutno odstranovat pomoci jakychsi rozsireni a ktery je "zdokonalovan" ke stale vetsi pomalosti. V PM mi funguje vse, co potrebuji, v nejhorsim pripade obcas nastartuji Vivaldi.

Normalni prohlizec ma zastoupeni v procentech. Nebudu to dohledavat, ale jsem si jisty, ze v PM budete mit problemy se spoustou JS a HTML5 veci. K provozovani 32b procesoru se snad ani nema cenu vyjadrovat, kdyz i linuxova distra, povestna dlouhou dobou podpory ruzneho hw, 32b CPU prestavaji podporvat.

Citace
Pokud nevidite duvod k upgradu, protoze na vetsinu veci a asi i stranek ten srot nestaci, tak pak nenadavejte na vetsinu veci, ale nadavejte sobe, ze jste jeste neupgradoval ;).

Kdyby ten srot na vetsinu stranek nestacil, asi bych si toho uz vsimnul. Zijete asi v zajeti strasne predstavy, ze PM je cosi jako Links. No neni.

Minimalne JS engine tam bude prehistoricky, pochybuji, ze bezne stranky na tom pujdou provozovat (youtube, g+, facebook atp.).



K Jave a problemum s null a booleanem - neni to jak ve Scale, tj. ze se ma pouzivat Option (v Jave myslim Optional)? Tzn. ze kdyz nekde mate null, tak pro to neni funkce/metoda definovana a je to chyba volajiciho?