вторник, 18 мая 2010 г.

[prog] Microsoft завершила свой проект Software Transaction Memory for .NET (STM.NET)

Сегодня прочитал об этом в заметке на InfoQ: Microsoft’s Experiments with Software Transactional Memory Have Ended (сама заметка от 13-го мая), а официальное уведомление об этом в блоге команды STM.NET было написано 12-го мая.

Самое ценное в сообщении на InfoQ, на мой взгляд, – это ссылка на большой рассказ Джо Даффи об истории экспериментов с STM в MS: A (brief) retrospective on transactional memory. Рассказ, действительно большой. Я смог осилить лишь его половину. И то, не многое из написанного я понимал, т.к. от проблем Transaction Memory был очень далек. Но сухой остаток я понял – попытка внедрить STM в уже устоявшуюся технологию, в реальные проекты, в условия огромного количества унаследованного кода, ничего не знающего про какие-то там TM-ы, завершилась неудачно.

Думаю, что интересующимся темой TM и STM прочитать рассказ Джо Даффи нужно обязательно. Отдельный интерес, думаю, это повествование будет представлять для функциональщиков-хаскелистов. Как я понял, в Haskell-евых реализациях STM посредством системы типов жестко ограничивается контекст, в котором транзакции могут применяться. Т.е. изменять значения чего-либо можно, а вот обращаться к коду с побочными эффектами – нет. Что существенно упрощает реализацию STM и избавляет от кучи проблем, с которыми сталкивались Джо Даффи и Ко. Хотя остается вопрос – а нафиг кому-нибудь тогда такой STM ;)

У меня самого приятное впечатление от этой новости осталось. Разговоры о ТМ (как в виде STM, так и Hardware TM) ходят уже давно. Иногда с легким налетом “серебрянной пули”. Но разбираться с этим времени катастрофически не было. Успокаивал себя отговорками: “мол, когда это приблизится к мейнстриму, тогда и посмотрим”. Не зря, выходит, не тратил время на изучение TM. Не дойдет оно до мейнстрима :)

5 комментариев:

Dmitry Vyukov комментирует...

Он ещё вторую часть написал, где пытается оправдаться :)
http://www.bluebytesoftware.com/blog/CommentView,guid,94778838-3e27-4788-a935-006ae9c8ef94.aspx

Рекомендую ещё посмотреть презентацию с Мариса Херлихуя с BoostCon касательно TM:
http://prezi.com/3rnocqymnf84/tmtoday/

Кстати на BoostCon было вообще дофига презентаций по TM, т.ч. .NET лагерь-то избавился от TM, а вот мы по-ходу наоборот :) Хотя ИМХО было бы гораздо логичнее наоборот.
http://www.rsdn.ru/forum/cpp/3809915.1.aspx

Ещё можешь глянуть QuakeTM:
http://rsdn.ru/forum/philosophy/3617857.1.aspx
Это была попытка как бы применить STM в реальном проекте и поглядеть что получится - по времени разработки, сложности, производительности, масштабируемости. Субъективный вывод - полный провал STM (Хотя Марис Херлихуй был гораздо более оптимистичен в выводах, по-крайней мере исходя из слайдов).

Dmitry Vyukov комментирует...

Ещё по поводу HTM. То HTM, которое нам грозит в ближайшем будущем (если вообще грозит), будет совершенно не та серебряная пуля, о которой говорят апологеты TM.
То, о чём говорят в контексте STM, - это модель программирования (серебряная пуля). HTM же будет не более чем продвинутым примитивом синхронизации, этаким мощным CAS. На его основе нельзя будет писать прикладной код, на его основе эксперты будут создавать такие компоненты, как очереди, аллокаторы памяти и т.д.

eao197 комментирует...

За ссылочки спасибо. То, что на BoostCon много материалов по ТМ, имхо, еще ни о чем не говорит. Бустоводы знатные выдумщики. Помнится, в свое время в приличные журналы отказывались брать статьи про итераторы. Возможно, усилиями бустоводов, тоже самое произойдет с ТМ :)))

А по поводу наоборот, так мне показалось, что изрядную порцию проблем в STM.NET привносят как раз такие вещи, как JIT и GC с финалайзерами. В C++ этой байды нет.

alex комментирует...

13 и 12 всё-таки мая. Я не граммарнаци, и сам пишу с ошибками, но тут как-то глаза резануло - проиндейцев, что ли, пост :)

eao197 комментирует...

2murz: спасибо, а я даже и не заметил, что написал :)