Začátky v Javě

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Začátky v Javě
« Odpověď #120 kdy: 01. 04. 2014, 12:22:41 »
Já dělal roky v Javě, C++ a ObjC (snad jen v .NET méně) a ze zkušenosti vím, že rozdíly mezi platformami (=jazyk+knihovna) se projeví při použití na omezeném hardwaru (pomalý procesor a/nebo málo paměti), například první iPhony nebo v poslední době Raspberry Pi apod. Na serveru s osmijádrem a 32GB paměti se případná nevýhoda projeví jen u velké aplikace a dost nedeterministicky. Ovšem zvolením lepší technologie by třeba pro stejnou aplikaci stačil méně výkonný server a hravě by ji zvládl, do toho už ovšem málokdo vidí. Až budeme mít použitelné chytré hodinky s SDK, opět se ukáže rozdíl mezi různými platformami.

On je ale i rozdíl v rychlosti vývoje. Takový server s osmijádrem a 32GB paměti vyjde asi levněji než programátor navíc.

A v čem přesně se ta rychlost vývoje liší (za předpokladu, že vždy použijeme dostupné knihovny pro rutinní záležitosti)?


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Začátky v Javě
« Odpověď #121 kdy: 01. 04. 2014, 12:24:18 »
Já dělal roky v Javě, C++ a ObjC (snad jen v .NET méně) a ze zkušenosti vím, že rozdíly mezi platformami (=jazyk+knihovna) se projeví při použití na omezeném hardwaru (pomalý procesor a/nebo málo paměti), například první iPhony nebo v poslední době Raspberry Pi apod. Na serveru s osmijádrem a 32GB paměti se případná nevýhoda projeví jen u velké aplikace a dost nedeterministicky. Ovšem zvolením lepší technologie by třeba pro stejnou aplikaci stačil méně výkonný server a hravě by ji zvládl, do toho už ovšem málokdo vidí. Až budeme mít použitelné chytré hodinky s SDK, opět se ukáže rozdíl mezi různými platformami.

On je ale i rozdíl v rychlosti vývoje. Takový server s osmijádrem a 32GB paměti vyjde asi levněji než programátor navíc.

Dodatek: Jaký programátor navíc? Předpokládám, že nám jde o shodnou funkčnost.

gamer

Re:Začátky v Javě
« Odpověď #122 kdy: 01. 04. 2014, 12:32:55 »
na to by sa dalo reagovat analogicky, ze kolko ludi denne programuje dijkstrove algoritmy
Programuje asi málo, ale používá docela dost (já ano :) ). Když potřebuju dijkstru, použiju třeba tohle:
http://programmingexamples.net/wiki/CPP/Boost/BGL/DijkstraComputePath
Programovat to by bylo znovuvynálézání kola. Mimochodem právě jsem dodal ten kód, který od včerejška slibuje RAII :).

Jakub Galgonek

Re:Začátky v Javě
« Odpověď #123 kdy: 01. 04. 2014, 12:35:59 »
A v čem přesně se ta rychlost vývoje liší (za předpokladu, že vždy použijeme dostupné knihovny pro rutinní záležitosti)?

Dobře napsat a odladit program v C++ prostě dá více práce. Proč je například v Javě možná napsat foo(bar[j], bar[++j]), zatímco v C++ je to cesta do pekel (které si většina programátorů ani nevšimne)?

Pak tu může být ještě otázka snadnoti použití těch knihoven. Je třeba v C++ něco (a tu otázku myslím vážně, ne jako chyták), co lze použít tak snadno jako RMI?

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Začátky v Javě
« Odpověď #124 kdy: 01. 04. 2014, 13:07:00 »
Pak tu může být ještě otázka snadnoti použití těch knihoven. Je třeba v C++ něco (a tu otázku myslím vážně, ne jako chyták), co lze použít tak snadno jako RMI?

S RPC mám zkušenosti spíše v ObjC (kde to je jednodušší než v Javě), ale co si tak matně vzpomínám, v C++ jde jednoduše napsat proxy pomocí variadic templates.


perceptron

Re:Začátky v Javě
« Odpověď #125 kdy: 01. 04. 2014, 13:11:59 »
Citace
Dodatek: Jaký programátor navíc? Předpokládám, že nám jde o shodnou funkčnost.
on myslel to, ze server stoji 2000 eur, a to je cena, za ktoru si zaplatite mesiac programatora

onu moju rest ulohu si v pythone nasadite asi na 10 riadkov

lebo nejde len o rychlost do dodania, ale aj udrzovatelnost, a hlavne to, ake schopnosti a znalosti ma vas team, a co sa stane, ked team nebude.

Citace
rmi kde to je jednodušší než v Javě
v jave je to uz tiez easy (jeden interface, jedna implementacia, tusim styri riadky bootstrapu pre server), aj ked zhodou okolnosti soap server deploynete este rychlejsie :-)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Začátky v Javě
« Odpověď #126 kdy: 01. 04. 2014, 13:17:12 »
Citace
Dodatek: Jaký programátor navíc? Předpokládám, že nám jde o shodnou funkčnost.
on myslel to, ze server stoji 2000 eur, a to je cena, za ktoru si zaplatite mesiac programatora

onu moju rest ulohu si v pythone nasadite asi na 10 riadkov

lebo nejde len o rychlost do dodania, ale aj udrzovatelnost, a hlavne to, ake schopnosti a znalosti ma vas team, a co sa stane, ked team nebude.

Můžu těch 10 řádků vidět? Python sice není moje parketa, ale předpokládám, že rozdíly budou jen v syntaxi.

RAII

Re:Začátky v Javě
« Odpověď #127 kdy: 01. 04. 2014, 16:47:34 »
Tak tady je ten program: http://uloz.to/xbxoSz7K/shortestpath-zip.
Rychlost běhu programu je od 1000 ms až do 1200 ms.
IDE: Code::Blocks
Compiler: GCC 4.8.2

Při kompilaci nastavit release mód a -O3 optimalizace.

RAII

Re:Začátky v Javě
« Odpověď #128 kdy: 01. 04. 2014, 16:49:32 »
Zapoměl sem, výpis z /proc/cpuinfo

Kód: [Vybrat]
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Pentium(R) CPU G860 @ 3.00GHz
stepping : 7
microcode : 0x29
cpu MHz : 1830.000
cache size : 3072 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 5986.36
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 42
model name : Intel(R) Pentium(R) CPU G860 @ 3.00GHz
stepping : 7
microcode : 0x29
cpu MHz : 1830.000
cache size : 3072 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid
bogomips : 5986.36
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

Jakub Galgonek

Re:Začátky v Javě
« Odpověď #129 kdy: 01. 04. 2014, 17:14:04 »
Tak tady je ten program: http://uloz.to/xbxoSz7K/shortestpath-zip.

Hmm, koukám, že jsi použil specializovanou knihovnu. Kouknu se, co nabízí Java. Ale nemohu slíbit, jak brzo se k tomu dostanu.

mrw

Re:Začátky v Javě
« Odpověď #130 kdy: 02. 04. 2014, 00:29:57 »
Mohl bys RAII dodat ten projekt v zkompilovatelné podobě? Nainstaloval jsem si kvůli tomu CodeBlocks a nic. Zaprvé tam chybí volba -std=c++11, ale budiž, možná mám starší g++, ale pak když dám rebuild, tak to vyhodí tohle:
Kód: [Vybrat]
/home/mrw/programovani/shortestPath/lemon/list_graph.h|26|fatal error: lemon/core.h: No such file or directory|
Předpokládám, že to je tím, že list_graph.h v lemon includuje core pomocí #include <lemon/core.h> a kompilátor to nemá v cestě. Ale jak jsi to zbildil ty? Já když někam dám projekt v NetBeans tak to nemá problém  :)

Jinak pro úplnost, mám CodeBlocks 12.11, g++ 4.8.1, na Linux Mint 16.

...

Re:Začátky v Javě
« Odpověď #131 kdy: 02. 04. 2014, 09:11:38 »
kdyz uz se tu nakousla cena, tak zalezi taky na tom kdo ji plati, kolikrat se plati a z jakeho zakladu. treba u carrier grade v nejnizsi kapacite to je kolem 100tis za kus levnejsi pouzit nemuzes, protoze to nesplnuje certifikace a mas pak na triku minimalne obecny ohrozeni. za maximalne osazeny modularni uzel pak 4mil a takovych uzlu podle velikosti uzemi a osidlenosti / poctu zakazniku pak od kusu az po tisice kusu. to je ukazkovy priklad, kde se nava nechyta ani financne ani technologicky, protoze komu by se libilo polozit hovor a mit zauctovanu i stop-world garbage kolekci nad 36GB heapem. pripadne naopak volat tisnovou linku a pockat si nez dobehne GC a hovor spoji az po ni.
i kdyz ani bych se nedivil, kdyby prvni pausalni flat-tarif vznikl prave tak, ze obchodak prodal neco co neexistuje od vic dodavatelu a nakonec to vyvoj slepil uzel u jednoho z nich pres rozhranni napsane v jave, ktere bylo urceno k interaktivnim offline ukonum a nesplnovalo pozadavky na garantovane maximalni doby zpracovani. vubec by me neprekvapilo, kdyby  se handrkovali dodavatel se zakaznikem o penale vs. zadani a nakonec to vyresili salamounsky pres flat tarify.
ale jinak budme radi za javu... aspon to vsude okolo neni php vs. asp/.net.

Re:Začátky v Javě
« Odpověď #132 kdy: 02. 04. 2014, 09:42:56 »
Pokud potřebujete systém s garantovanou maximální latencí, nemůžete vzít běžný OS, ale musíte použít realtime OS. Úplně stejně nemůžete použít běžnou desktopovou Javu od Oracle, ale musíte použít realtime JVM. Stop-the-world na potenciálně neomezenou dobu totiž není principiální vlastnost GC, je to vlastnost pouze některých implementací.

Java na tom vlastně není vůbec špatně, když většina její kritiky pramení z neznalosti.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Začátky v Javě
« Odpověď #133 kdy: 02. 04. 2014, 09:59:35 »
ale jinak budme radi za javu... aspon to vsude okolo neni php vs. asp/.net.

Svatá pravda :)

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Začátky v Javě
« Odpověď #134 kdy: 02. 04. 2014, 10:01:30 »
Pokud potřebujete systém s garantovanou maximální latencí, nemůžete vzít běžný OS, ale musíte použít realtime OS. Úplně stejně nemůžete použít běžnou desktopovou Javu od Oracle, ale musíte použít realtime JVM. Stop-the-world na potenciálně neomezenou dobu totiž není principiální vlastnost GC, je to vlastnost pouze některých implementací.

Java na tom vlastně není vůbec špatně, když většina její kritiky pramení z neznalosti.

Kritika všeho pramení obvykle z neznalosti. Pak je problém, když je založená na znalostech a zkušenostech a naváží se do ní trotli...