pátek 15. října 2004

Články na víkend

Nepravidelná rubrika s tipy na články, které mě za týden zaujaly. Pro tenhle týden převládají odkazy na české bloggery, kteří se pilně činili. Máme tu trochu extrémismu v programování, typologii českých vývojářů a nebo prohledávání lokálního disku velkým Googlem.

středa 13. října 2004

Závidím českým dotneťákům Microsoft

Nevěřím, že by byla technologie .NET o tolik lepší nebo jednodušší a nebo levnější o proti Jave. Na to kolik se .NETu věnuje českých článků a bloggu (především na vyvojar.cz), mi přijde že nám trochu javistům ujel vlak. Vlastně nesejde na tom, jestli je jedna technologie v určitém aspektu horší nebo lepší, limitujícím faktorem je komunita kolem ní.

Pokud je komunita dostatečně velká, existuje celkem slušná pravděpodobnost, že ve svém středu najde jedince - skupinu jedinců, kteří ji budou obohacovat. Na komunitu působí externí vlivy, které mohou komunitu výrazně posilňovat a ve svém důsledku komunitu rozšiřovat.

Vždycky když jsem přemýšlel o tom proč Java "mediálně" zaostává za .NETem, tak mě napadali ve skrze dva důvody. Nás javovských vývojářů je výrazně méně, tedy naše komunita není tak veliká, aby produkovala dostatečné množství jedinců, kteří by ji obohacovali. Nebo na naši komunitu působí výrazně menší vnější vlivy než na komunitu kolem technologie .NET.

Pokud není javovská komunita co do počtu vývojářů větší, o čemž jsem přesvědčen, tak je minimálně srovnatelná s .NET komunitou. Vylučovací metodou mi tedy zůstaly externí vlivy. Externí vlivy za .NET komunitou asi není těžké pojmenovat, stojí za nimi samotný Microsoft resp. u nás jeho česká pobočka.

To co je pro .NET Microsoft, pro nás javisty představuje a nebo by alespoň měl Sun. resp. opět jeho česká pobočka. Je mi smutno, když si vzpomenu na vzletná prohlášení o podpoře komunity vývojářů, která zazněla během Sun Tech Days, mimochodem jediné větší akce, která se konala zhruba před rokem.

Opravte mě pokud se mýlím, ale Sun CZ neudělal pro nás vývojáře takřka nic. Nabízí sice školení a certifikace, ale lokalizovaný materiál o Jave, aby jeden pohledal. Škoda, kdyby projevil větší snahu, mohla se naše komunita ke svému vlastnímu prospěchu a potažmo prospěchu Sunu rozšířit. Takhle mi nezbývá než českým dotneťákům zavidět Microsoft CZ.

Související reakce

Domácí úkol z vláken: filozofové

V nedávném spotu ABC synchronizace pro mírně pokročilé jsem mimo jiné upozorňoval na domácí úkol, který se k článku vztahoval. Jak mi později prozradil Tomáš, problém pěti filozofů patří do kategorie cvičebnicových příkladů.

Zadání (angl. originál)

Five philosophers sit around a circular table. Each philosopher alternates between thinking and eating rice. In front of each philosopher is a bowl of rice that is constantly replenished by a dedicated waiter. Exactly five chopsticks are on the table, with one chopstick between each adjacent pair of philosophers. Each philosopher must pick up both chopsticks adjacent to his/her plate simultaneously before that philosopher can eat.

Create a Java application that simulates this behavior. Avoid deadlock and the problem of indefinite postponement, where one of more philosophers soon starve because philosophers adjacent to the starving philosophers are always eating. Make sure that mutual exclusion is enforced, so that two adjacent philosophers do not use the same chopstick at the same time.

Postup

Abych přiznal barvu, tak musím říci, že mě ten problém zaujal a nechtěl jsem jej opustit, než naprogramuji řešení. Moje řešení je založeno poolu hůlek.

Pokud chce filozof jíst "požádá" stůl o hůlky, stůl pak deleguje žádost na pool. Pokud v poolu hůlky nejsou, je vlákno (filozof) zastaveno a zařazeno do fronty. V případě, že filozof vrátí hůlky, jsou čekající vlákna vzbuzena. Pokud je vlákno zároveň na začátku fronty a jeho hůlky jsou volné, pak jsou mu hůlky vráceny. Program vypisuje jednotlivé kroky do konsole.