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, [email protected], http://tapikuv.blogspot.com