Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer. |
Слову persistence я хорошего перевода не знаю. Хотя очень не люблю кальки с английского, придётся, наверное, в данном случае терпеть. Впрочем, очень не хочется, и потому я введу на этот выпуск термин "устойчивость". Будем, для краткости, называть устойчивыми устройства, которые не боятся выключения электропитания. К таким, конечно, относятся многие железки - тот же винчестер, та же флеш-память, но это устойчивость физическая, не очень любопытная штука.
Есть же устойчивость (persistence, напомню) концептуальная. Оформилась она, трепещите ОО-ненавистники :), именно в этой сфере. Понятие объекта довольно быстро привело к понятию устойчивого, вечноживого объекта. Поначалу это была довольно искусственная и кривая идея. Мол, беда с ними, с объектами - каждый раз при запуске их конструировать, связи устанавливать, так давай-ка их научимся закатывать на диск, в файл, сразу кучами и потом всё как есть обратно отколупывать, чтобы окна на экране встали в те же места и тем же цветом, чтобы всё как настроил так и было.
Всё бы здорово, но концептуальная распущенность - очень уж больно отзывающаяся штука. Стоит смешать в одном проекте две концепции, как начинается проблема на проблеме, беда за бедой. От этого, кстати, масса напрягов на ОО, я уж писал. Просто ОО всегда почти вписано в "плоскую" среду традиционных ОС и приложений, и на стыке масса сложностей. Ещё их больше при попытке стыковать концепции, различающиеся подходом к времени жизни или самому течению времени.
Пример - языки с обратным течением времени. С так называемым откатом. Пролог, плэнер, etc. В них, рассказываю для тех, кто не в курсе, программа осуществляет непрерывный поиск решения путём перебора некоторых путей. И если данный путь признан неудачным, то программа, фактически, обращает бег времени внутри себя и откатывается на специальную позицию ветвления, чтобы испробовать другой вариант. "Обратное" течение времени проявляется в том, что все действия, предпринятые при "прямом" его течении отменяются при откате. Все, которые программа может отменить - присвоения переменных, например. А вот если при прямом исполнении кода программа через внешнее устройство включила электромолоток и он расколотил кащеево яйцо да сломал иголку, то никакой обратный ход программы уже это яйцо не восстановит и Кащея к жизни не вернёт. Увы, оборотить вспять время можно только внутри самой программы.
Очевидно, что при стыковке с внешним миром, время в котором назад не пустить, возникают проблемы. Не только с Кащеем - с записью в файл, с выводом на экран - с любыми внешними проявлениями. Частные решения возможны, но не всегда и не без проблем.
Аналогично с устойчивыми объектами - они-то устойчивы, а остальной-то "мир" внутри компьютера - нет. Требуются методы согласования, геморроя от которых случается зачастую больше, чем при полном отказе от устойчивости. Но идея вкусна, и раз попробовав ее на зубок, начинаешь западать всё больше и больше. Итог очевиден - если, к примеру, написать полностью устойчивую ОС, такую, в которой всё живёт вечно и не замечает выключения питания, то программировать станет существенно проще, а понятие "файл" потеряет актуальность - тут все переменные - сами себе файлы, зачем он, убогий, сдался?
С одной стороны интерес к устойчивым системам пришёл из программирования, где потребность в устойчивости возникла концептуально. С другой - удешевление флеш-памяти, которая работает не слишком медленно и не требует питания для сохранения содержимого подтолкнуло дизайнеров к практической реализации этого принципа. Я уж молчу про экспериментальные ОС разного вида и толка, самым, наверное, массовым случаем является PalmOS, система, на которой живёт PalmPilot/Palm XX. В Palm OS понятие запуска и завершения программы, фактически, отсутствует. Ты можешь с ней, с программой, работать или нет, но живёт она вечно. Точнее, в системе есть понятие запуска и завершения программы, но это, скорее, запуск и завершение её интерфейса, так как состояние сохраняется между запусками и приличная программа, когда ты к ней возвращаешься, оказывается в том самом состоянии, в котором ты её покинул.
Эта первая ласточка не одинока, хотя, конечно, другие промышленные проявления устойчивости менее интересны. Например, Windows 95 и OS/2, которые умеют, при некоторых условиях, сохраняться на диск перед выключением компьютера и рестартовать с того же места при включении.
При всей корявости промышленных реализаций устойчивости они уже достаточно заметны и позволяют пользователю оценить преимущества подхода, а создателю железок и софтинок - пошевеливаться в нужном направлении. То есть, резюмирую, сегодня системы энергонезависимого хранения информации обрели ещё одно потенциальное применение, и оно уже осознано. Что флеш можно использовать в mp3-проигрывателях и цифровых фотоаппаратах - ясно всем. Что им бы хорошо заменить обычную оперативную память - мысль для большинства людей новая. Но уже не дикая.
Увы, флеш на это не способен.
На это способен MAGRAM. Уникальная память, которой нет аналогов. Она, фактически, сделала новый шаг в том же направлении, что и флеш, но шаг гигантский. Увы, хоть флеш-память и не слишком медленно работает, применять её вместо оперативной памяти нельзя - низкая скорость доступа и блочный режим стирания ограничивают применение системами класса винчестера, а не класса ОЗУ с батарейкой. Напомню - флеш-память нужно стирать перед записью, и, увы, делать это можно лишь блоками, относительно крупными кусками.
MAGRAM же - уникальное сочетание быстродействия (время доступа измеряется наносекундами, как и у традиционной динамической памяти), полного и безраздельного доступа к отдельным битам без каких-либо ограничений и требований предварительно стирать или ещё как-нибудь готовиться, и энергонезависимости.
Очевидно - MAGRAM нацелен на все те применения, где использовалась флеш-память, и, если окажется дешевле в производстве, легко её заменит в карманных плейерах, фотоаппаратах и компьютерах, в микроконтроллерах, запаянных в стиральные машины и утюги, в материнских платах для хранения BIOS и т.д. и т.п. Это тривиально.
А вот то, что MAGRAM может заменить ОЗУ - менее тривиально и грозит переменами куда более интересными! Дело в том, что на сегодня построение устойчивых систем осложнено дурацкой неприятностью - оперативная память при внезапном выключении компьютера норовит потерять своё содержимое и помешать ей это сделать, увы, сложновато. Можно, но это куча проблем, дороговизна и сложность решения - короче, никто не будет возиться, если не припрёт.
Случись же MAGRAM дешевле или равным по цене обычной памяти, и революция произойдёт сама собой. Для начала, все операционные системы сразу станут устойчивыми (напомню, слово "устойчивый" мы считаем переводом слова persistent) и мы сможем забыть про перезагрузки и шатдауны уже сразу. Но это - дикая, необузданная устойчивость. Во-вторых появится поддержка этой самой устойчивости внутри самих ОС, что резко упростит программирование и... ну, короче, изменит жизнь к лучшему. Детализировать будем в другой раз, и так сегодня на эту тему много написано. :-)
Комптек (эксклюзивный спонсор dz online) открыл новый интерфейс к своей поисковой системе. Называется он "семейный Яndex" и отличается от Яndex-а обычного только тем, что из него исключены "взрослые" ресурсы, коротко говоря - порнография и страницы, содержащие матерные слова. Есть два режима использования - через отдельный "вход" (family.yandex.ru) или через тот же самый, но тогда семейный режим нужно включить, зайдя на специальную страницу и выбрав там линк "установить семейный Яndex". Включение семейного режима реализовано через cookie, которая хранится на компьютере вашего ребёнка и запрещает поисковой системе показывать ему ресурсы, не слишком пригодные для посещения детьми до 16-ти.
Конечно, ушлый ребёнок сумеет обойти ограничение, если захочет, но, с другой стороны, если он уже захотел, ему вряд ли что помешает вообще. Семейный Яndex, как мне думается, скорее предназначен для осознанного отказа от порнографии, чем для накладывания жёстких запретов на неё. Увы или слава богу, но Интернет нельзя запретить частично...
Один из прародителей жанра веб-обозрения, Иван Паравозов, переехал нынче со своим обозрением на адрес inter.net.ru/pn. Наш привет партиарху. "Ты ещё крепок, старик Розенбом!" :-)