JSR166 je podle mne také jeden z důvodů, proč se aplikace
distribuovaně nepíší. Použil někdy někdo z Vás balík
java.util.concurrent? A pokud ano, používáte to běžně?
ConcurrentHashMap je dobrá a často ji používám, uznávám, ale jinak?
Proč je vytvořen opravdu silný a IMHO složitý a těžko čitelný
mechanismus pro paralelizaci a konkurentní přístup místo jednoduché
konstrukce zavedené přímo do syntaxe jazyka?
Proč se nikdo neinspiroval třeba takovými jazyky, jako jsou Oz, Alice či E?

Jak by se krásně programovalo a paralelizovalo pri konstrukci jako

int result1,result2,result3;
concurrent {
    thread 1: result1 = method1();
    thread 2: result2 = method2();
    thread 3: result3 = method1()*method2();
}
if (result1==result2) {
 ...
}

, proč k tomu používat šílené Future? Nebo by to šlo krásně vyřešit
pomocí anotace - jak by bylo jednoduché a elegantní přidat anotaci
@Future k metodě? A nebo zavést Ečkové eventuální volání metody
myObject<-futureMethod()

a nebo rovnou Ečkový slib

int futureResult <- myObject.futureMethod()
when (futureResult) {
   if (futureResult == 4) {
      ...
   }
}

Věřím tomu, že většina programátorů by tyto jednoduché konstrukce
velice ráda a často využívala. A paralelizovaný kód by byl daleko
čitelnější. Jednu dobu jsem uvažoval, že bych si zkusil napsat něco,
co by to nějak inteligentně schovalo. Ale nakonec jsem to zavrhl...
Třeba to v Javě 1.10 bude...

PS:  Od dob foreach používám reverzní procházení pole jenom v J2ME a
všichni, kteří kdy takovýto kód četli,
velice rychle zjistili, že je to moje úchylka :-P

-- 
Oto 'tapik' Buchta, ta...@buchtovi.cz, http://tapikuv.blogspot.com

Odpovedet emailem