Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder

gl

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #75 kdy: 20. 07. 2016, 17:45:00 »
javaman:
Jo tak java je luxusny jazyk? Ako vyvojar s 6 rocnou praxou v Jave a 7 rocnou praxou v C#/.NETe mozem s istotou povedat, ze luxusny jazyk je skor C#, ako Java. Jedina nevyhoda je platforma, ale uz aj to sa meni nakolko vysiel .NET Core 1.0. Keby si bol naozaj guru, tak nerobis v jave, ale C/C++ a ASM. Vies java ma vela kniznic uz hotovych, ty ako NElopata by si si mal vsetko pisat sam. Nechapem ale potom, preco pouzivas Javu :D

Podle téhle definice je nelopat ještě mín než podle javamana.


Platon

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #76 kdy: 20. 07. 2016, 17:55:08 »
To ma tesi, ze nas je este menej :). Ale javaman je troll, takze jemu netreba nic verit. Ani obycajny bubble sort nevedel napisat, ktory od neho chcel jeden z diskutujucich. Povedal, ze to je pre lopaty. On by mal pouzit lopatu na tie hovna co tu vysral v diskusiach.

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #77 kdy: 20. 07. 2016, 18:22:43 »
Nutnost používání monád je také problém, který v jiných jazycích neexistuje.
Monády nejsou problém, monády jsou řešení. Velice efektivní způsob, jak pomocí vysoké abstrakce řešit spoustu rozdílných věcí jednotným způsobem. "Být monádou" je vlastnost nějaké struktury (ta struktura splňuje "monadické zákony") - buď tyto abstraktní vlastnosti umíš využít pomocí obecného kódu, nebo neumíš. Když neumíš, je to vždycky horší, ne lepší.

Třeba ty mnou už x-krát zmíněné promisy v JS taky monadické zákony splňují, ale JS nemá pořádný aparát na práci s obecnou monadickou strukturou. X let zkoušeli dělat asynchronní věci přes callbacky, až je konečně napadlo použít monadický přístup. Ale bohužel ad hoc, ne obecně.

Žádná "nutnost" používání monád ani v Haskellu není. Ale je to asi nejefektivnější způsob, jak spoustu různých problémů vyřešit pomocí jedné abstrakce.

Je to jako bys měl spešl fci mapint na mapování fce přes integery a spešl mapstr pro mapování přes stringy. Není to zbytečný? Není lepší použít jednotnou abstrakci "mapuju přes jakýkoli typ, který funkce přijímá jako parametr"? S monádama je to přesně stejný. Nemusíš je používat, ale byla by to veliká hloupost, pokud to jazyk umožňuje.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #78 kdy: 20. 07. 2016, 19:55:06 »
javaman:
Jo tak java je luxusny jazyk? Ako vyvojar s 6 rocnou praxou v Jave a 7 rocnou praxou v C#/.NETe mozem s istotou povedat, ze luxusny jazyk je skor C#, ako Java. Jedina nevyhoda je platforma, ale uz aj to sa meni nakolko vysiel .NET Core 1.0. Keby si bol naozaj guru, tak nerobis v jave, ale C/C++ a ASM. Vies java ma vela kniznic uz hotovych, ty ako NElopata by si si mal vsetko pisat sam. Nechapem ale potom, preco pouzivas Javu :D
Nekrmme prosím trolly

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #79 kdy: 20. 07. 2016, 19:59:16 »
Nutnost používání monád je také problém, který v jiných jazycích neexistuje.
Monády nejsou problém, monády jsou řešení. Velice efektivní způsob, jak pomocí vysoké abstrakce řešit spoustu rozdílných věcí jednotným způsobem. "Být monádou" je vlastnost nějaké struktury (ta struktura splňuje "monadické zákony") - buď tyto abstraktní vlastnosti umíš využít pomocí obecného kódu, nebo neumíš. Když neumíš, je to vždycky horší, ne lepší.

Třeba ty mnou už x-krát zmíněné promisy v JS taky monadické zákony splňují, ale JS nemá pořádný aparát na práci s obecnou monadickou strukturou. X let zkoušeli dělat asynchronní věci přes callbacky, až je konečně napadlo použít monadický přístup. Ale bohužel ad hoc, ne obecně.

Žádná "nutnost" používání monád ani v Haskellu není. Ale je to asi nejefektivnější způsob, jak spoustu různých problémů vyřešit pomocí jedné abstrakce.

Je to jako bys měl spešl fci mapint na mapování fce přes integery a spešl mapstr pro mapování přes stringy. Není to zbytečný? Není lepší použít jednotnou abstrakci "mapuju přes jakýkoli typ, který funkce přijímá jako parametr"? S monádama je to přesně stejný. Nemusíš je používat, ale byla by to veliká hloupost, pokud to jazyk umožňuje.
Co je míněno tou absencí aparátu? Mám za to, že v každém dynamickém jazyce, tedy i v JS, není obecná implementace monád problém.


Kit

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #80 kdy: 20. 07. 2016, 20:36:14 »
PHP nepoužívám, tak si nemusím zvykat. Jak jsem psal výše, na PHP mi vadí, že se snaží zakazovat užitečné featury (ty jim říkáš prasárny).

Které užitečné featury ti nové PHP zakázalo? Osobně nic nepostrádám. Možná proto, je jsem zvyklý psát skripty tak, jak se psát mají.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #81 kdy: 20. 07. 2016, 20:47:10 »
Java se hodí na úplně všechno. Proto je tak oblíbená. Nemusíš vůbec střídat jazyky, když ji máš.

Monkey patching chybí :D OK.

Výýýýýborně, takže mi velmi rád řekneš, jak v javě napíšeš OS, že? Hlavně mě zajímá ta část, jak bez JVM zavedeš javou JVM, aby jsi mohl vůbec použít javu a potom by mě zajímal low lewel přístup k HW při psaní ovladačů. A další téma k zamyšlení, jak budeš programovat v javě třeba pro ATmega 48/88/168? Nebo ta java není zase tak dokonalá, jak se nám snažíš říct?

gl

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #82 kdy: 20. 07. 2016, 21:51:25 »
PHP nepoužívám, tak si nemusím zvykat. Jak jsem psal výše, na PHP mi vadí, že se snaží zakazovat užitečné featury (ty jim říkáš prasárny).

Které užitečné featury ti nové PHP zakázalo? Osobně nic nepostrádám. Možná proto, je jsem zvyklý psát skripty tak, jak se psát mají.

Ne, že by mi to vyloženě chybělo, ale občas jsem narazil na situaci, kdy by se mi hodilo něco dynamicky změnit a v PHP to nešlo. Například ta situace s injektováním singletonů o které jsi psal výše, by možná šla vyřešit pouhým přepsáním některých funkcí. Asi to není úplně správný způsob, ale proč to zakazovat.

Lama

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #83 kdy: 20. 07. 2016, 22:09:48 »
Teoreticky nic nebrání vytvoit VM přímo pro dané železo bez nutnosti použít jiný OS. Někde jsem četl, že takto fungují i jisté odnože Smalltalku, kdy Smalltalkovský VM běží přímo na daném železe bez podpory nějakého OS a na něm už jen Smalltalk.

Krom jsou k dispozici i Java kompilátory do nativního kódu/binárky dané platformy.

Mimochodem, existuje speciální odnož Javy pro real time aplikace.

...jak budeš programovat v javě třeba pro ATmega...
Že by nějak takto?
http://www.harbaum.org/till/nanovm/index.shtml

Takže v Javě se dá dělat opravdu všechno.

pista_sk

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #84 kdy: 20. 07. 2016, 22:13:07 »
mozno mozes, ale bude to stat za hovno, presne akoo stoji aj javaman. Btw. staci sa pozriet na tie javovske aplikacie, SQL Developer. To si teda neviem predstavit, ako by vyzeral OS pisany v Jave. To by musel byt ozaj vtip a firma, ktora by to robila, by si strelila do kolena :D

Kit

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #85 kdy: 20. 07. 2016, 22:31:10 »
PHP nepoužívám, tak si nemusím zvykat. Jak jsem psal výše, na PHP mi vadí, že se snaží zakazovat užitečné featury (ty jim říkáš prasárny).

Které užitečné featury ti nové PHP zakázalo? Osobně nic nepostrádám. Možná proto, je jsem zvyklý psát skripty tak, jak se psát mají.

Ne, že by mi to vyloženě chybělo, ale občas jsem narazil na situaci, kdy by se mi hodilo něco dynamicky změnit a v PHP to nešlo. Například ta situace s injektováním singletonů o které jsi psal výše, by možná šla vyřešit pouhým přepsáním některých funkcí. Asi to není úplně správný způsob, ale proč to zakazovat.

Singleton se v PHP dá napsat i jako funkce, která se následně dá injektovat. Nevýhodu vidím jen v tom, že to přidá další WTF do aplikace, což považuji za nežádoucí.

V PHP se toho dá dynamicky změnit hodně. Obvykle jen stačí podívat se na problém z trochu odlišného úhlu. Pokud by sis přesně vzpomněl, co ti scházelo, můžeme to prodiskutovat třeba v jiném vlákně. Mnoho problémů se dá elegantně vyřešit použitím polymorfismu.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #86 kdy: 20. 07. 2016, 22:40:30 »
Teoreticky nic nebrání vytvoit VM přímo pro dané železo bez nutnosti použít jiný OS. Někde jsem četl, že takto fungují i jisté odnože Smalltalku, kdy Smalltalkovský VM běží přímo na daném železe bez podpory nějakého OS a na něm už jen Smalltalk.

Krom jsou k dispozici i Java kompilátory do nativního kódu/binárky dané platformy.

Mimochodem, existuje speciální odnož Javy pro real time aplikace.

...jak budeš programovat v javě třeba pro ATmega...
Že by nějak takto?
http://www.harbaum.org/till/nanovm/index.shtml

Takže v Javě se dá dělat opravdu všechno.

Ano, teoreticky můžu udělat HW, u kterého přesunu JVM do ROM a po postu už bude java použitelná, ale to nevypovídá nic o použitelnosti javy na cokoliv, ale o možnosti zprasit cokoliv. Mimochodem, podobně bych mohl jednoduše do ROM vrazit třeba interpreter perlu a tvrdit, že perl umí všechno. Ostatně, spousta 8bitů obsahovala v ROM Basic, který byl ihned použitelný, ale nikdo si asi dnes nedovolí tvrdit, že je Basic univerzální nejlepší jazyk. Ale dobrá, pokud je java na všechno, tak to upřesním, chci ten OS napsat pro standardní x86(64), aby si jej mohl kdokoliv nainstalovat a nemusel kvůli tomu hackovat HW. 

What the NanoVM is and what it isn't
It is not a full featured Java VM and it will never be. It will always be limited to a small subset of the java language and the standard java libraries and a few application specific methods. Furthermore, it is not meant to replace C as the standard way of programming microcontrollers. It is less flexible and has a lower performance than C or assembler programs.


Realita je taková, že jediné dva způsoby, které jsou univerzální zcela na cokoliv, co daný HW umožňuje, jsou strojový kód a assembler. Nicméně to neznamená, že jsou na všechno nejvhodnější - například portace mezi platformami znamenají v podstatě vše přepsat. Stejně jako není univerzálně nejvhodnější java, ani žádný jiný jazyk. Kdyby totiž takový jazyk byl, nikdo by neměl důvod, ani potřebu, používat cokoliv jiného. A světe div se, jazyků existují stovky, možná tisíce, každý byl vytvořený za nějakým účelem, některé jsou úlet, některé se na některé úkoly hodí víc, na některé míň, něco v nich nemusí být vůbec možné a světe div se, ani jejich autoři snad nikdy nebyli tak debilní, aby prohlásili, že ten jejich je nejlepší, nejuniverzálnější a vše ostatní je zbytečný crap.

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #87 kdy: 20. 07. 2016, 22:44:54 »
mozno mozes, ale bude to stat za hovno, presne akoo stoji aj javaman. Btw. staci sa pozriet na tie javovske aplikacie, SQL Developer. To si teda neviem predstavit, ako by vyzeral OS pisany v Jave. To by musel byt ozaj vtip a firma, ktora by to robila, by si strelila do kolena :D

SQL developer je jedna z mých nejzamilovanějších aplikací, díky ní jsem se opravdu naučil Oraclí syntaxe, abych mohl dělat v SQL*plus a nemusel tu java zrůdnost vůbec spouštět :D

Kit

Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #88 kdy: 20. 07. 2016, 22:56:47 »
Realita je taková, že jediné dva způsoby, které jsou univerzální zcela na cokoliv, co daný HW umožňuje, jsou strojový kód a assembler. Nicméně to neznamená, že jsou na všechno nejvhodnější - například portace mezi platformami znamenají v podstatě vše přepsat. Stejně jako není univerzálně nejvhodnější java, ani žádný jiný jazyk. Kdyby totiž takový jazyk byl, nikdo by neměl důvod, ani potřebu, používat cokoliv jiného. A světe div se, jazyků existují stovky, možná tisíce, každý byl vytvořený za nějakým účelem, některé jsou úlet, některé se na některé úkoly hodí víc, na některé míň, něco v nich nemusí být vůbec možné a světe div se, ani jejich autoři snad nikdy nebyli tak debilní, aby prohlásili, že ten jejich je nejlepší, nejuniverzálnější a vše ostatní je zbytečný crap.

Ještě existuje pár jazyků s tak minimalistickou VM, že se dají vypálit do BIOSu. Basic patřil k těm méně povedeným, ale fungoval a svého času v něm byla napsána hromada aplikací. Dále zmíněný Smalltalk, který ukazuje, že i v minimalistickém jazyce se dá programovat objektově. Forth se dodnes používá k programování jednočipů, Lisp se zase ukázal výhodným pro umělou inteligenci. Kdo by se dnes patlal se zdrojákem v Assembleru, který má již popsané nevýhody, když si může vybrat nějakou VM a na ní programovat mnohem pohodlněji?

Tuxik

  • *****
  • 1 473
    • Zobrazit profil
    • E-mail
Re:Rozdíl mezi návrhovými vzory Přepravka x Obálka x Holder
« Odpověď #89 kdy: 20. 07. 2016, 23:10:00 »
Ještě existuje pár jazyků s tak minimalistickou VM, že se dají vypálit do BIOSu. Basic patřil k těm méně povedeným, ale fungoval a svého času v něm byla napsána hromada aplikací. Dále zmíněný Smalltalk, který ukazuje, že i v minimalistickém jazyce se dá programovat objektově. Forth se dodnes používá k programování jednočipů, Lisp se zase ukázal výhodným pro umělou inteligenci. Kdo by se dnes patlal se zdrojákem v Assembleru, který má již popsané nevýhody, když si může vybrat nějakou VM a na ní programovat mnohem pohodlněji?
Kdo by se patlal s assemblerem... kdokoliv, kdo potřebuje naplno využít možnosti a výkon daného HW, přičemž nemusí psát v asm celou aplikaci, ale pouze kritické části? Ale nejde ani o to, kdo se s čím chce patlat, ale o to, jestli je java (případně jakýkoliv jiný jazyk) použitelný a dokonce nejlepší (nevím, co to má znamenat, já si pod tím představuji především efektivitu vývoje i běhu) na jakýkoliv úkol. Něco takového si myslím nemůže o žádném jazyku prohlásit nikdo příčetný, kdo má alespoň hrubou představu o tom, o čem mluví.