Песок как универсальный заменитель овса или Каталогизирование наносит ответный удар

Если на всём жизненном пути файла от создания до корзины программе удаётся его скрывать от юзверя — очень хорошо. Задача решена. С другой стороны, признаться сразу в том, что ты якшаешься с файлами в иерархической системе — это значит расписаться в собственном бессилии, ибо упомянутая система в современном сценарии её использования является неприкрытым злом: открывая текстовый редактор, я хочу создать текст, а вовсе не файл. Но не создать файл я не могу, потому что авторы текстового редактора не стали ограждать меня от ненужных подробностей устройства компьютера в целом и операционной системы в частности.

Вот программисты музыкальных плееров, здраво оценивая аудиторию своих продуктов, обычно пытаются замаскировать потроха. Лучше всех справляются те, кто смог окуклиться до двухходовочки типа «музыкальный магазин — проигрыватель». Для таких сферических коней музыка появляется в виде композиций, воспроизводится в этом же виде, и в этом же виде хранится. Слово «файл» не появляется нигде, и все счастливы. Стоит нарушить герметичность системы — и привет, воцаряется хаос: я не знаю, куда приткнуть какой-нибудь левый грязный файлишко, так, чтобы он не осквернил святость автоматически ведущейся библиотеки. Выхода нет, даже если разработчики пойдут мне навстречу, сами же и попадутся в ловушку непрописанных тегов и неполных альбомов.

В реальном мире грехопадение неизбежно. Куда бы ты ни подался, в итоге кончишь файловой системой с её папочками и файликами. Есть, конечно, серебряные гугло-рыцари на белых конях, которые предлагают мне модные удобные костыли для быстрого перекапывания той помойки, в которую превращается любой винчестер через пренебрежимо короткое время. На танцующего медведя водружается обезьяна, выделывающая прикольные коленца, и всё это вместе называется прорывом и технологией двадцать первого века.

Интересно, что робкую попытку не то чтобы избавиться от рудиментов файловой системы, но хотя бы чуть сдвинуть дело с мёртвой точки предприняло не свободно мыслящее красноглазое опенсорс сообщество, а проклятый масдайский микрософт. Попыточка была так себе, с характерным фирменным перегибом и пшиком на выходе, но хоть что-то отличное от мычания. В это же время красноглазые свободные программисты продолжают раскрашивать труп, и теперь, к примеру, окошко любого эксплорера умеет сворачиваться в трубочку.

А вообще я просто хотел сказать, что господа, создающие текстовые редакторы, в которых нет библиотеки документов в каком либо виде, такие же злые буратины, как и те, что для mp3-плееров такие библиотеки создают. Потому что первые не пользуются метаинформацией, густо замешанной в самом документе мною лично, а вторые пытаются пользоваться убогой дурью в неверной кодировке, которую в трек впихнул неизвестный никому музыкальный пират. А вот если бы они скрестили свои айтюнсы с чем-нибудь типа sonyericsson’ского TrackID, вот это было бы уже что-то с чем-то! Может есть где такое уже?

34 комментария

  1. Заходя в текстовый редактор, ты хочешь отредактировать содержимое файла, или, иными словами, изменить файл, содержащий текст. Кстати, и иные оперции над бинарными файлами доступны из текстового редактора в особых случаях.
    :)))

    • Саша, это провокация 🙂 Развёрнутый ответ на твою подначку есть в книжке тов. Купера.

      Но если вкратце, то на самом деле я и редактор-то открывать не хочу. Я вообще совершенно не обязан знать, что он есть. Зачем мне знать такую интимную подробность про компьютер, что чтобы сохранить мой текст, ему придется создать файл на винчестере? Телевизор вот вполне справляется со списком каналов, к примеру, и обходится без редактора каналов и сохранения результатов в файлы 🙂

      • Да, это провокация.

        А про телевизор неправда: ему нужен редактор списка каналов, и он у него есть, правда примерно такой, как у МП3-плееров (слава богу те из них, что на компьютере, позволяют быстро сварганить плей-лист из файлов, которые у меня лежат не в бардаке, а в порядке, потому что это мои данные, и только я знаю, как их правильно структурировать). Ты пробовал когда-нибудь поменять местами два канала? Или сдвинуть все каналы, начиная с некоторого, к началу нумерации (потому что ты хочешь удалить канал, который автоматический поиск нашел дважды)?
        Это я промолчал про то, насколько просты данные, которыми ты манипулируешь в телевизоре, и насколько разнообразны те, что ты используешь в универсальном компьютере, который ты предлагаешь превратить в специальный, умеющий только то, что предоставил производитель ОС.

        • Погодите. Ну во-первых, я не вижу ничего плохого в том, что один из многих моих «универсальных» компьютеров будет заточен под какую-то конкретную задачу. Да мало ли их сейчас, специальных-то. Во-вторых, универсальность компьютера не является оправданием того, что работать с ним неудобно. Поймал ты меня, конечно, верно. Для ПиСи как инструмента аналог в реальном мире подобрать трудно. Поэтому вместо аналогий предложу тебе не защищать то, что имеется (и уже не один десяток лет не развивается!), а представить идеальный мир. Неужели он будет похож на редактор vi? И в-третьих, не вижу никаких технических ограничений на то, чтобы позволить сторонним приложениям бесшовно интегрироваться в систему, так, чтобы пользователь вообще не думал о том, какую программу запускает, а просто работал со своей информацией.

          В скобочках: универсальный обычно означает плохо подходящий для любой из своих возможностей 😉

          • Я не буду ничего защищать.

            Но отмечу, что меня всегда напрягает отсутствие выбора. В том числе и модели пользовательского интерфейса, поэтому я строго против единого look-and-feel, насаждаемого с завидным упорством. Программы решают разные задачи, а потому должны выглядеть совсем по-разному, и даже кнопка Help у каждой должна быть упрятана в уникальное место. Если программы выглядят похоже, значит, в решаемых ими задачах есть много общего. (Признак такой.)

            И меня очень привлекает возможность вмешаться. Я-пользователь компьютера могу вмешиваться в любой процесс, в отличие от меня-пользователя микроволновки (чип которой, я полагаю, гораздо мощнее чипа программируемого калькулятора МК-52, за которым я начинал свой путь тернистый).

            Компьютер — это не бытовой электронный прибор, его трудно поставить с чем-нибудь в один ряд, потому и пользователь его совсем иной совершенно закономерно. При этом я понимаю интерес производителя ограничить все только производимым им, отучить человека от знания, что есть форматы файлов (да-да!), и между ними можно и нужно конвертировать, чтобы решать свои, только одному тебе известные и нужные задачи и пр.

            Именно в связи с описанным выше меня почти не возбуждают карманные органайзеры и прочие электронные словари.

            • Я опять позволю себе отослать тебя к книге про психбольницу в руках пациентов. Ибо ты практически слово в слово повторяешь тезисы, которые автор приводит как типичные для программеров, которые привыкли.

              Но сам промолчать не могу. Потому что подменять понятия не надо. Когда я говорил об интеграции в систему, я в последнюю очередь имел в виду интерфейс и кнопочки. И уж тем более и мысли у меня не было о том, чтобы программы выглядели похоже. Я просто считаю верным тезис о том, что в паре информация-программа первична именно информация. А программисты привыкли думать иначе. Тебя привлекает возможность вмешаться, потому что ты это можешь и хорошо умеешь, это вообще творя работа по сути. Ведь тебя не привлекает возможность вмешиваться в происходящее под капотом твоего автомобиля?

              Я не понимаю, почему у компьютера должны быть иные пользователи, чем у микроволновки. Если человек не программист, это не делает его автоматически имбецилом, он не менее полноценный чем остальные, и отсеивать его по признаку нежелания вникать в детали — это всё равно что запрещать тебе ездить на машине потому, что ты не можешь её разобрать и собрать обратно.

              Кстати, в том самом карманном органайзере Palm долгое время вообще не было файловой системы в привычном понимании этого слова. Это не мешало ему быть одним из успешнейших — сложных, но удобных! — устройств на рынке.

              • Не надо обвинять меня в том, что я привык, когда я говорю, что мне удобно. Я вполне успешно разделяю эти понятия внутри себя. Твои наезды обидны.

                (Да, удобно, когда программа все делает сама так, как тебе надо. Но так не бывает для всех и всегда. Поэтому важна доступность низкого уровня. Иначе ограничений в конечном итоге получается гораздо больше, чем удобства, — ты очень верно про МП3-плееры написал выше. Каждый пользователь, внимание — буквально каждый, в отличие от пользователей микроволновки, уникален.)

                Я не против существования иных пользователей тех же или уже иных компьютеров, но я строго против отметания старых пользователей (полноценных, позволю себе злобно добавить).

                То, что сейчас является моей работой, стало ей заметно после того, как я стал пользователем компьютеров в моем смысле этого словосочетания.

                Книжку твою готов посмотреть, пришли ссылку, пожалуйста.

                🙂

                  • Спасибо, я честно посмотрю.

                    Да, и еще одна мысль меня догнала. Мы что сравниваем? Мы сравниваем МП3-плеер, с помощью которого даже МП3-файлы слушать нормально невозможно (ОК, пусть в идеальном мире будет возможно), с компьютером, с помощью которого можно делать все, включая то, о чем мы даже думать еще не пытаемся. Компьютер — очень удачная реализация математической модели, его возможности безграничны. :))))

                    • Не совсем так. Мы изумляемся. Изумляемся тому, что во-первых mp3-файлы специально написанной для прослушивания mp3-файлов программой невозможно удобно проиграть, а во-вторых, что компьютер, возможности которого действительно безграничны, заставляет человека приспосабливаться к себе, когда он может и должен сам приспосабливаться к человеку. Понятно, что не сам должен, но программисты-то, блин, не чешутся! Им и так удобно!

                    • а по-моему, программисты сейчас чешутся как раз :). только у них пока ни фига не получается. каждый раз, когда они хотят сделать вид, что к примеру, картинки — это только картинки, они делают это криво, и мне приходится искать, куда же они зарыли те файлы, в которые эти картинки попрятаны. а ищу я потому, что никогда не знаю, в каком виде эта картинка окажется в моём вебальбоме, к примеру. точнее обнаруживаю, что явно не в том, в котором она у меня на экране висела при загрузке туда.
                      а Саша, следуя своему представлению о мире и уме окружающих, не верит, естественно, что кто-то успешно решит такую сложную задачу :).

                    • Меня как раз смущает то, что сложность стала препятствием для программистов с каких-то пор. То ли сложность выросла что вряд ли, то ли программисты стали более глупые ленивые.

                    • Вот!!! Я как раз и хотел спросить лично тебя, с каких это пор лично ты жалуешься на сложность? 🙂

                    • Та-а-ак… Наезжать, так всем сразу?.. Логично, впрочем: чего два раза вставать! 🙂

                      Я верю, что эту задачу решат, и не верю, что ее решат, я не знаю, потому что вопрос для меня в другом: не бывает просто картинок, на мой взгляд, или просто текста, это все единицы информации множественного назначения. Даже если смотреть на них просто как на картинки, то их уже можно и грузить с фотоаппарата, и смотреть на экране, и выкладывать в Интернет, и еще многое вытворять. А многое из того, что мне захочется с ними сделать, еще даже и не известно. Например, почему нет в iPhoto функции экспорта картинки как слоя пользовательских данных для накладывания на электронную карту в установленной на компьютере рядышком навигационной системе? Или наоборот фкнции иморта из iPhoto в навигационной системе? Потому что еще никому не понадобилось. Когда понадобится, сделают. Но только эти две функции. А людей в мире шесть миллиардов, и у каждого более одной потребности…

                      Зато концепция файла компактна и непротиворечива, и с файлами умеют работать все программы. И межлу любыми двумя программами можно вставить любой фильтр-преобразователь, чтобы позволить им взаимодействовать. И лично мне это очень удобно, что бы ни утверждал там многоуважаемый цикорий из своей психбольницы. 😉

                      Кстати, мораль (да-да, во всей этой дискусси мне больше всего обидно за файловую систему): файлы — средство общения программ друг с другом, в том числе и не знакомых друг с другом в момент написания.

                    • И про сложность тоже

                      Саша, ты абсолютно прав. С точки зрения программиста. В терминах программирования существует и файл, и файловая система, и базы данных, и сокеты, и чёрта в ступе. И ты сам в конце написал — всё это средства общения программ друг с другом. А не с пользователем. Концепция файла компактна и непротиворечива, как сферический конь в вакууме, и потому совершенно чужда людям-не-программистам, которые, скажем ведут на компе бухгалтерский учёт. Почему они вынуждены постигать все эти программерские премудрости, тогда как им и так забот хватает?

                      Программа может быть сколь угодно сложной в своей структуре и алгоритмах. Но для взаимодействия с пользователем она должна быть проста, эффективна и не вносить в его жизнь лишних сущностей. Согласись, что торчащие повсюду из приложения детали реализации свидетельствуют только о хреновом программировании? Создать сложное приложение, которое бы просто взаимодействовало с пользователем — это серьезный вызов, и мало кто решается его принять. Достаточным считается уже давно некий ограниченный набор фич, условно решающий задачу приложения. Об удобстве, эффективности и приятстве использования мало кто решается думать.

                      Прочитайте уже книжку, ну что я вам тут её своими словами пересказываю? :))

                    • Re: И про сложность тоже

                      я тут теперь занимаюсь тем же — пересказыванием :). сначала я ему рассказывала примерно то же, что ты сейчас (ну попроще, конечно, без привлечения коней :)), потом — зачитывала вслух то, что меня впечатляет в твоей книжке. так вот — большинство приведённых примеров (а) до того места, докуда я дочитала, б)исключая иерархическую файловую систему 🙂 ) похожи на описания багов: на ноль делить нельзя — программа не должна пытаться делить на ноль. нормальное поведение самолёта не должно отражаться на дисплее так же как аномальное. это чудовищно. чудовищно примерно так же, как в сейсмоопасной зоне нельзя строить кирпичные дома. но я почти уверена, что хотя бы один построенный из кирпичей дом там рухнул.
                      про фичи тебе Саша, видимо, завтра ответит. он тут высказал здравую (как мне кажется) финансовую мысль :).
                      а про их нужность-ненужность, мне кажется, у Спольски была здравая мысль. примерно про то, что каждому пользователю нужно примерно 20% существующих фич конкретного продукта, только у каждого эти 20 — свои.
                      итого, лично мне не кажется, что сложность стала для кого-то препятствием. попытки создать что-то предпринимаются. только получается пока криво. может просто потому, что назрело, но не созрело ещё?
                      и ещё — по мнению этого парня, люди либо влюблены в компьютер и его систему либо не способны его понять и чувствуют себя рядом с ним тупыми. ну а он, судя по всему, тот единственный, кто выбивается из этой серой массы 🙂 (ну это уже так, баловство).

                    • Re: И про сложность тоже

                      Я с такой чудовищностью каждый день дело имею. Самолёты не падают, конечно, но плохой русский время от времени вырывается. Да что там далеко ходить, на последнем совещании я видел, как рождается «мы сделаем как можем, а пользователь как-нибудь разберётся».

                      Про пользователей ты просто не дочитала, наверное. Г-н Купер утверждает в книжке своей, что пользователей у программы обычно не больше трех разных, и по здравому рассуждению я готов с ним согласиться. Более того, если пользователей становится больше трёх, он предлагает разделять интерфейсы взаимодействия 🙂

                      Сложность стала не препятствием. Сложность стала оправданием. Когда не охота делать то, что по мнению программиста смысла не имеет, он это саботирует разными способами. При этом он не является как правило ни одним из пользователей своей программы 🙂 (Отсюда, кстати, родился забавный принцип: http://en.wikipedia.org/wiki/Eat_one%27s_own_dog_food).

                    • Re: И про сложность тоже

                      это, Жень, да. управление разработкой программного продукта — это совершенно отдельная вещь. и доступность продукта для для пользователя — не единственная огромная проблема. хотя понятно, что остальные вещи должны худо-бедно работать. ведь проще всего убедить заказчика в том, что пользователь должен изучать(!) продукт. и читать мануал. а вот если фичи нет — тут уже никого и ни в чём не убедишь.
                      Жень, ты же видел как строятся дома? какое кому дело до твоей трубы посреди кухни! бизнес, собака серая, не даёт делать мир идеальным. и даже просто красивым удаётся его делать только единицам.

                    • Re: И про сложность тоже

                      Я тебе подробно потом, может, отвечу. У меня к тебе вопрос. Что, кроме файловой системы, существует на сегодняшний день для того, чтобы я мог решить некую свою задачу, скажем, через год, включающую подготовку данных в программе, которая уже написана, и потом использование их в программе, которая еще не начата? (См. пример про iPhoto и навигационное приложение.)

                    • Re: И про сложность тоже

                      Про файловую систему я, наверное, не очень внятно выразился. На уровне программирования ничего лучше, кажется, пока не придумали. Как к инструментальному средству разработки у меня к ней нет претензий. Но на уровне пользователя уже начинает в коленках жать. Вот лично у меня, не самого придирчивого пользователя, с годами выстраданная структура домашнего каталога не превышает в общем случае двух уровней, и то, чтобы держать это дело в порядке, нужно быть очень организованным человеком. И гуглодесктоп ведь не от хорошей жизни появился.

                    • Re: И про сложность тоже

                      Ты не ответил на мой вопрос. 🙂

                      Я настаиваю на том, что пользователь, чтобы перенести данные из пункт А в неизвестный пока пункт Б, должен знать о файловой системе. Файлы — инструмент перемещения во времени. Работающий, заметь.

                      Держать твои данные в порядке никто за тебя все равно не сможет. Никакой Гугл, никакой Майкрософт.

                      Ты можешь сказать: я, мол, хочу пользоваться этими данными только в этой программе и требовать, чтобы от тебя скрыли файловую систему. Хорошо. Но, я думаю, ты видишь, насколько это сужает круг твоих возможностей. Ты уже даже фотографии с фотоаппарата загрузить в iPhoto не сможешь. Или сможешь, но только с заранее известного списка фотоаппаратов. 🙂

                    • Re: И про сложность тоже

                      Мне казалось, я ответил. Переформулирую: пусть программа сохраняет файл в файловую систему. Или в базу данных. Или загружает на ftp. Или разобьет на триста мелких файлов и распихает по локальной сети. Мне как пользователю это совершенно пофигу. Главное, чтобы я потом мог найти свою картинку там, где оставил.

                      А потом я хочу, скажем, вставить в компьютер флешку и сказать: сохрани картинку на флешку. А потом другой программе сказать: загрузи картинку с флешки. Или с ftp. Или из базы данных. Как они между собой договорятся — это тоже их внутренее дело. Ни на одном этапе мне не надо знать что картинка представляет из себя файл (или несколько файлов! — вот тоже задачка на сообразительность, кстати).

                    • Re: И про сложность тоже

                      Ты говоришь о другом и не отвечаешь на мой вопрос, игнорируя аспект времени, который я подчеркиваю.

                      Мы можем с тобой договориться сейчас, если сядем писать программы, призванные общаться друг с другом. Но если я как простой пользователь захочу потом засунуть картинку от одной программы в другую, которая имеет право ничего не знать, потому что фирма, написавшая ее образовалась, после того как фирма, писавшая первую программу, обанкротилась, так вот в этом случае я должен знать из чего сделана моя картинка. И это как простой пользователь. Вещи, которые я люблю делать как программист я здесь не обсуждаю.

                    • Re: И про сложность тоже

                      Как я могу повлиять на новую программу, даже если знаю, что моя картинка — это на самом деле два файла, один JPEG с прогрессивным сжатием, а вторая TIFF без сжатия? Если новая программа принципиально игнорирует эти форматы, то я и так пойду лесом. А если не игнорирует, то я и не обязан знать ничего про файлы.

                      Не понимаю, где я не ответил на вопрос? Боюсь, без личного [теле]разговора мы зайдем в тупик 🙂

                    • Re: И про сложность тоже

                      Новая программа не знает, где старая хранит свои картинки, а потому не может совершить операцию «возьми у соседа», она может только совершить операцию возьми файлы (!) вот здесь. И я как пользователь заинтересован в том, чтобы она взяла все файлы, сколько их есть.

                      Я же как пользователь же в описанном тобой случае могу понять, что новая программа не знает доисторических форматов JP(E)G и TIFF и найти в Интернете (или что там будет к тому времени?) или в соседнем магазине программу-конвертер и сначала прогнать информацию через нее.

                      Я как программист могу и сам написать конвертер. Заодно и пива попить.

                    • Re: И про сложность тоже

                      Саша 🙂 Я же не предлагаю вовсе отменить навигацию по пространству «внутри компьютера». В терминах «программа-файл-ОС» проблема выглядит именно так, как ты описал. Дело в том, что ты всё же отплясываешь не от картинок, а от программ.

                      Я себе (без некоторых деталей, требующих дополнительного размышления) представляю один из вариантов так: в качестве навигации по компьютеру тебе предлагается drag-n-zoom поверхность, на которой ты волен размещать в произвольном порядке документы. Документы и картинки выглядят на этой плоскости как собственные уменьшенные копии — к примеру, для облегчения навигации. С определённого масштаба тебе становятся доступны некоторые инструменты для обработки документов. Ты не знаешь при этом а) где лежат файлы, б) какая программа(-ы) предоставляет тебе инструменты. В этом смысле каким-то образом получив новый набор инструментов для обработки картинок, ты уже заранее решаешь и вопрос поиска своей конкретной картинки, и вопрос совместимости. Можешь обрабатывать новыми инструментами картинку — обрабатываешь. Не можешь — обращаешься к поставщикам.

                      Разумеется, я осознаю, что не все возможные программы можно свести к обработке документов. Но их обсуждение выходит за рамки вопроса 🙂

                    • Re: И про сложность тоже

                      В том-то и дело, что не выходит. 🙂

                      Ибо
                      а. обращаться к поставщикам мы не можем, ибо они либо умерли, либо все равно не ответят, потому что разных типов пользователей не три штуки, а шесть миллиардов, по количеству людей;
                      б. новая программа вероятнее всего не является программой обработки картинок, а решает совсем другую задачу, в которую можно привнести картинки (это я знаю, что они картинки); для обработки картинок я по-прежнему пользуюсь старой программой.

                      (Срочно нужен телемост.)

                    • Re: И про сложность тоже

                      Да, телемост нужен, потому что а) когда программист не знает, для кого предназначена программа (а он не знает, если его пользователей шесть миллиардов), то программа заведомо обречена, б) программа, не обрабатывающая картинки, а, скажем, засылающая их на веб-сервер, может обладать нужным интерфейсом, вписывающимся в общее поле: скажем, особо выделенной площадкой, при перетаскивании картинок на которую они волшебным образом переносятся в интернет. Не распознала картинку как картинку — сообщила об этом новым разработчикам, которые еще не умерли, и они приняли меры.

                      Мне кажется, мы уже начинаем обсуждать варианты конечного интерфейса пользователя. И это хороший признак 🙂

                    • Re: И про сложность тоже

                      Кстати, еще вопрос.
                      А чем, в твоем представлении, отличаются файлы от компакт-дисков, карточек памяти, кассет с записями любимой группы (которыми ты обменивался с друзьями, не ожидая что два ваши магнитофона, поднесенные друг к другу достаточно близко, сами волшебным образом обменяются различающейся музыкой; это я тут немножко съязвил, частью вопроса не является) и прочих носителей?
                      Вопрос без подвоха, мне действительно интересно, где у тебя рубикон пролегает.

                    • Re: И про сложность тоже

                      Файл — это абстрактная структура в памяти компьютера. Компакт-диск — кусочек пластика. Компьютер умеет прочитать компакт-диск и волен насоздавать в своей памяти сколько угодно файлов и других структур, которые ему нужны для работы. Кажется, мне предлагается отличить теплое от мягкого 😉

  2. Проблема файловой системы в её наличии, ты прав. Возможно, мы ещё когда-нибудь увидим иной взгляд. Но, похоже, не скоро.

    А медиатеки живут и так себе прекрасно. Типичный (=целевой) пользователь того же «ай, самого большого и хорошего» медиамагазина покупает треки только в нем и не испытывает душевных мук. И, судя по темпам роста, таких людей все больше и больше. Так что в этом вопросе, думаю, надеяться на светлое будущее не стоит: оно уже пришло, просто мы к нему, пожалуй, еще не готовы.


    Спасибо за долгожданную ссылку на «психбольницу».
    А Compiz редкостное бесполезное ублюдство — каким был, таким и остался.

Добавить комментарий