Buducnost informatiky za 5-10 rokov

Pavel Tišnovský

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #75 kdy: 18. 01. 2015, 10:56:13 »
Masivní paralelizaci brání užívání konceptu globálních a statických proměnných. OOP s tím nesouvisí. Jakmile v projektu zlikvidujete globální/statické proměnné, masivní paralelizaci nestojí nic v cestě a to s i bez OOP.
Nejen. Ještě důležitější je imutabilita.

Tady pozor na termity :-). Měl jsem docela dlouhou e-mailovou debatu s pár Javisty, kteří pořád mluvili o imutabilitě a jak by to při přidání do stdlib pomohlo například ve Swingu (což na druhou stranu porušuje konvence collection API :-) a já pořád nechápal, proč mě opravují, že předpokládám něco co neplatí a co je podle nich zbytečné. Nakonec to vyšlo najevo - jedna větev OOP (přesněji Java-OOP) programátorů, když napíšou "immutable list", tak tím myslí to, že do toho seznamu se nedají přidávat a ubírat prvky, ne, že jsou immutable i položky seznamu (samozřejmě rekurzivně). Prostě jiný svět, stejné slovo s odlišným významem :-)


Re:Buducnost informatiky za 5-10 rokov
« Odpověď #76 kdy: 18. 01. 2015, 11:04:22 »
Nakonec to vyšlo najevo - jedna větev OOP (přesněji Java-OOP) programátorů, když napíšou "immutable list", tak tím myslí to, že do toho seznamu se nedají přidávat a ubírat prvky, ne, že jsou immutable i položky seznamu (samozřejmě rekurzivně). Prostě jiný svět, stejné slovo s odlišným významem :-)
Jojo, tohle je i v pythonu - např. volá se odkazem, ten nemůžu změnit, ale můžu změnit stav toho objektu. Takže pokud potřebuju změnit parametr, stačí prostě použít singleton. Imutabilita jak řemen :)

Kolemjdoucí

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #77 kdy: 18. 01. 2015, 11:22:49 »

Předávání odkazu na instanci nevadí, odkaz zanikne se zánikem instance kam jsme odkaz předali, globální proměnná není = nemáme problém.

Bohužel immutabilita není použitelná pro reálné projekty, z důvodu současného hardware. Problematika blokování a zámků souvisí právě s nemožností realizovat koncept immutable v praxi.
A bez immutable pravděpodobně nelze ve FP vůbec realizovat paralelizaci.

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #78 kdy: 18. 01. 2015, 11:50:04 »
Předávání odkazu na instanci nevadí, odkaz zanikne se zánikem instance kam jsme odkaz předali, globální proměnná není = nemáme problém.
Neříkal jsem, že to vadí. Byl to příklad, jak vpašovat mutabilitu do formálně imutabilní položky (stejně jako to funguje u immutable arrays, jak říkal PT).

Bohužel immutabilita není použitelná pro reálné projekty, z důvodu současného hardware. Problematika blokování a zámků souvisí právě s nemožností realizovat koncept immutable v praxi.
String v Javě je v praxi nepoužitelný?!

A bez immutable pravděpodobně nelze ve FP vůbec realizovat paralelizaci.
Platí silnější tvrzení: Bez immutability není žádné FP.

atarist

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #79 kdy: 18. 01. 2015, 11:54:27 »
Bohužel immutabilita není použitelná pro reálné projekty, z důvodu současného hardware. Problematika blokování a zámků souvisí právě s nemožností realizovat koncept immutable v praxi.

Jako z duvodu, ze to nepodporuje programovaci jazyk?


Kolemjdoucí

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #80 kdy: 18. 01. 2015, 12:06:10 »
String v Javě je v praxi nepoužitelný?!

Koncept stringů vykazuje stejné nedokonalosti, při intenzivních změnách se masivně kopíruje.

Platí silnější tvrzení: Bez immutability není žádné FP.

Děkuji za potvrzení.

Jako z duvodu, ze to nepodporuje programovaci jazyk?

Jako z důvodu, že hardware neumí efektivně zkopírovat paměť.

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #81 kdy: 18. 01. 2015, 12:07:53 »
Kucííííí, oběéééééééééééééd!
 ;D

Dejte si pokoj alespoň v neděli,  ;)
( z Vás musí mít doma radost,  :) )

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #82 kdy: 18. 01. 2015, 12:09:04 »
Koncept stringů vykazuje stejné nedokonalosti, při intenzivních změnách se masivně kopíruje.
Nedokonalost v jednom konkrétním způsobu užití neimplikuje nepoužitelnost.

Kolemjdoucí

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #83 kdy: 18. 01. 2015, 12:14:07 »
Aby nedošlo k nedorozumění ve speciálních případech je to vhodné, ale nesmí to být jediná možnost.

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #84 kdy: 18. 01. 2015, 12:32:26 »
Aby nedošlo k nedorozumění ve speciálních případech je to vhodné, ale nesmí to být jediná možnost.
To jsme se nějak posunuli od "je to v praxi nepoužitelné" ;)

Metodologicko-logická poznámka: pokud chci o algoritmech něco tvrdit, tak mi každé pevné omezení zjednodušuje situaci. Pokud je nějaké omezení jenom možnost, jsem ve stejně obtížné situaci, jako bych ho neměl vůbec. A paralelizovatelnost není nic jiného než zakuklené tvrzení o algoritmu. Nejobtížněji by se paralelizoval program v assebleru, kde nemám omezení vůbec žádná.

Konkrétní příklad:

Kód: [Vybrat]
1: var x=Y;
2: f(x);
3: ...
Co můžu tvrdit?

pure FP: vím jistě, že řádek 2 můžu vypustit

volnější FP: vím jistě, že na řádku 3 platí x=Y úplně stejně jako před voláním f

Python: vím jistě, že x=Y, pokud je Y primitivní typ. Jinak nevím nic.

Stejně tak např. u FP vím, že můžu v algoritmu nahradit f(x) výrazem f(Y). V jiných jazycích to s jistotou nevím.

Pavel Tisnovsky

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #85 kdy: 18. 01. 2015, 17:42:26 »
Jako z duvodu, ze to nepodporuje programovaci jazyk?

Jako z důvodu, že hardware neumí efektivně zkopírovat paměť.

Jasne ale zakladem nemennych datovych struktur byva sdileni struktury (structural sharing), takze se - samozrejme ne vzdy - da neustalym kopiim zabranit. Priklady - vazany seznam je nejtypictejsi, vektor v Clojure dalsi priklad, podobne i stromy apod. Ma to samozrejme omezeni, ale da se s nimi kupodivu dost dobre vyzit :-) U mutable struktur je sdileni struktury o dost komplikovanejsi.

Kolemjdoucí

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #86 kdy: 18. 01. 2015, 19:46:18 »
To jsme se nějak posunuli od "je to v praxi nepoužitelné" ;)

Jestliže je immutable povinné a jiný způsob neexistuje, tak na momentální praktické nepoužitelnosti tohoto přístupu se nic nezměnilo :-) Že se s tím pracuje lépe teoreticky je jasné.

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #87 kdy: 18. 01. 2015, 19:51:40 »
Že se s tím pracuje lépe teoreticky je jasné.
Nejde o to, že se s tím líp teoreticky pracuje, ale že je vůbec možný něco o tom kódu konstatovat. A např. tu automatickou paralelizaci bez takovýho konstatování prostě udělat nejde, v tom je ta pointa.

Nemám vůbec v úmyslu kohokoli přesvědčovat o tom, že FP je nejlepší věc na světě, ale myslím, že je zbytečný odrazovat lidi od zajímavýho konceptu něčím, co není pravda.

perceptron

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #88 kdy: 18. 01. 2015, 20:22:23 »
a akka + actor model + val v scale?

Kolemjdoucí

Re:Buducnost informatiky za 5-10 rokov
« Odpověď #89 kdy: 18. 01. 2015, 20:40:39 »
automatickou paralelizaci bez takovýho konstatování prostě udělat nejde.

Na paralelizaci A.MakeIt() nebo A=A+1 nepotřebuji konstatování ani immutable.
Že s tím v FP máte problémy je možné, ale ty se mě netýkají ;)