Yoda писал(а):
Я думаю, что возможно, но только до тех пор, пока нет давления рынка.
Что значит "давление рынка"? Развитие технологий -- вещь довольно естественная, но точно спрогнозировать всё невозможно: кофейная гуща не обеспечивает необходимого качества предсказаний :) Например, при создании Винды ещё не было PnP, поэтому в NT4 его пришлось "прикручивать сбоку", заодно дорабатывая драйверную модель. Не было и графических процессоров; существовали лишь примитивные видюхи, где всю обработку данных и её запись в буфер кадра осуществлял центральный процессор. Соответственно, с появлением ГП пришлось перерабатывать графическую подсистему, причём, как показала практика, не один раз. Ну и т.д. и т.п. Заметьте, я речь веду о вещах, напрямую затрагивающих нижний уровень ОС; о всяких там свистелках-перделках, которые видит обычный пользователь, речи нет.
Цитата:
Я не понимаю, вы соглашаетесь или возражаете? У мну такое впечатление, что у вас всегда первый порыв - ввязаться в спор.
Я рассуждаю, временами соглашаясь с Вами, а временами не соглашаясь. Кстати, если б у меня существовал этот "первый порыв", то я б, наверное, всё время флудил бы на целой куче форумов :) А так я даже здесь изрядную часть сообщений других участников никак не комментирую, хотя поспорить можно часто... Но это всё лирика-с.
Цитата:
Я отнюдь не возражаю против универсального АПИ для хранения конфигурационных данных и их двоичного представления. Здесь всё нормально. Я возражаю против бесконтрольной свалки и единого файла этой свалки. т.е. против реализации, от которой не отойти.
"Единого файла этой свалки" не существует: реестр состоит из нескольких "кустов", часть из которых -- отдельные файлы на диске, а часть существует только в ОЗУ (там находятся как раз динамические данные).
Что касается реализации, то от неё как раз вполне возможно отойти (и, кстати говоря, чуть ли не самым крупным "внутриядерным" отличием Хрюши от Винды-2000 была работа с реестром: там перелопатили реализацию весьма существенно). Все сколько-нибудь вменяемые программы работают с реестром только через стандартные функции, предоставляемые ОС; следовательно, внутреннюю реализацию можно менять как угодно, лишь бы внешний интерфейс был тот же самый. Ну а невменяемые программы (например, напрямую пытающиеся редактировать те или иные файлы реестра) можно и забить; собственно, к этим файлам доступа вроде как и нету вообще, но проверять лениво.
А вот что реестр превращён в свалку, поспорить сложно. Думается, здесь есть приличная доля вины разработчиков: не надо было давать доступа к реестру любой прикладной программе, а если и давать, то только в строго определённый раздел, создаваемый при установке этой программы штатным установщиком системы, и ни к чему больше. Тогда и вычистить реестр от всякой хрени, попавшей туда в результате установки различных программ, не составило бы труда.
Цитата:
Ничего я не смешиваю.
1. Большинство текст-ориентированного ПО должно УНИФИЦИРОВАННО работать с текстами и не заморачиваться на автодетекты и перекодирования. Если я, как пользователь, запустил текстовый редактор, даже самый простейший, я хочу иметь возможность написать любой текст, не заморачиваясь техническими тонкостями и не впадая в прострацию от неправильных кракозябр на экране вместо ожидаемого текста.
К ОС это прямого отношения не имеет; это вопрос стандартизации представления информации на внешних носителях. В связи с "тяжким наследием проклятого прошлого" решить его без костылей не представляется возможным в принципе. Нельзя, например, априори считать некий файл закодированным в том или ином формате, если этот формат не жёстко стандартизирован (как прикажете рассматривать обычный текстовый файл? Как ASCII? UTF-8? Ещё что-нибудь? 100% стандартов здесь не существует по историческим причинам). Можно, конечно, полностью отказаться от совместимости, но как воспримут это пользователи? Кроме того, что значит "унифицированно"? Простейший текстовый редактор в принципе не способен работать с документами, созданными в Ворде, и не из-за козней разработчиков последнего или там отсутствия унификации в кодировке, а из-за большого количества дополнительной информации, которую сохраняет Ворд и которая описывает оформление, всякие там рисуночки-таблички и прочая.
Цитата:
2. Эту унификацию должна предоставлять ОС и набор системных библиотек. Если ОС нет дела до проблем пользовательского ПО - эта ОС морально устарела.
Знаете, если б Вы были блондинкой-секретаршей, то такое заявление было бы вполне разумным: обычному пользователю, тем более неквалифицированному, трахаться с установкой кучи ПО, кроме самой системы -- удовольствие ниже среднего, и, вообще говоря, он должен быть от этого избавлен. Да и не видит такой пользователь разницы между системой, прикладным ПО, а то и компьютером в целом (если у означенной секретарши Ворд заглючил, что она скажет местному айтишнику? Скорей всего что-нибудь вроде "Вася, подойди сюда, у меня компьютер сломался"). Но Вы же вроде как программист, а не блондинка, а в устах программиста, да ещё системщика, подобное высказывание выглядит, извините, бредом.
Как Вы вообще себе представляете решение проблем пользовательского ПО с помощью системных библиотек? Внедрять поддержку определённых форматов файлов в
системные библиотеки? Но какое отношение формат файлов текстового редактора или там некоего САПР имеет к ОС? Внедрив же поддержку оных в систему, Вы тем самым жёстко завяжете систему на определённые форматы
пользовательских данных, вообще никакого отношения к собственно системе не имеющих. После этого всякая попытка уйти от однажды внедрённых форматов (заменить, например, их на более эффективные или обладающие расширенными возможностями) будет невозможна, ведь они оказались привязанными к системе! Придётся тянуть с
системой кучу древнего кода для обеспечения совместимости с тем, что, может быть, уже никому и не нужно, и т.д.
Или возьмём графическую составляющую. Нужно ли делать частью системы всякие высокоуровневые библиотеки, рисующие готовые окошки, всякие там файловые диалоги и т.п.? Уверен, что нет. Такие библиотеки могут поставляться вместе с системой, т.е. быть стандартными, но они не должны быть системными: ОС должна благополучно работать и без них (а не так, как в Винде, где оторвать графику от ядра весьма и весьма проблематично, хотя эта графика в ряде задач не нужна).
В общем, спасибо, но такая "унификация" мне не нужна. Лучше "морально устаревшая" система, зато компактная, быстрая и хорошо умеющая решать собственно системные задачи: управлять железом, распределять ресурсы между приложениями и предоставлять последним набор довольно низкоуровневых (зато эффективных и универсальных) сервисов. Ну а прикладные задачи пускай решаются прикладными задачами, а не системой. Ту же самую поддержку файлов определённых форматов можно сделать и в виде библиотек, которыми могут пользоваться разные прикладные программы -- вот только не надо эти библиотеки объявлять системными. Если, например, мне на компьютере не нужен машиностроительный САПР, на кой ляд мне устанавливать библиотеки, обеспечивающие работу с файлами в его формате? То же самое касается и любых других форматов, не относящихся прямо к системе.
Цитата:
3. Невозможно провести чёткую грань между ОС и прикладным ПО. Всякий раз, когда ПО пытается создать файл "C:\Мои документы\Письмо начальнику.doc", а особенно если пользователь живёт в Китае, вы ощутите, что ПО и ОС неразделимы. И дело тут не в наименовании мьютексов.
Такую грань не сможет провести вышеупомянутая блондинка, однако профессиональный программист просто обязан её видеть. Обычному пользователю есть дело до наименования файла, но ему нет никакого дела до того, как именно ОС внутри себя обозначает этот файл или как программа должна именовать различные объекты при вызове функций API: этого пользователь просто не видит.
Цитата:
SII писал(а):
На самом деле, и английского алфавита + цифр для имён различных задач, событий и прочих системных объектов вполне хватает, так что в этом плане хватило бы и классического 7-битного ASCII. Использование 16-разрядного подмножества Юникода (без суррогатных пар) вообще более чем достаточно для любого вменяемого применения.
Про достаточность будете объяснять в FAQ пользователю, который в ПО вдруг ввёл русские буквы или йероглифы там, где ПО и ОС этого совсем не ожидают.
Извините, бред. В каких это системах пользователь вводит имена "задач, событий и прочих системных объектов"? Пользователь даже не знает об их существовании, он работает на уровне файлов и выше.
Цитата:
Ааааа, я вижу вы не поняли суть претензии! Системной кодировкой должна быть UTF-8! Это решение снимает проблемы двухбайтовости, двух наборов библиотек и пр.
UTF-8 разработан в 92 году, ещё до выхода WinNT 3.1! Поддержка суррогатных пар добавилась в Win2000.
То, что UTF-8 появился в 1992 году, а WinNT 3.1 вышла позже, ничего не меняет: система разрабатывается не за месяц и даже не за год, и её разработка шла уже несколько лет. Быстро поменять что-либо, протестировать и т.п. проблематично чисто технически, ну а задерживать выпуск системы -- недопустимо с коммерческой точки зрения, надо полагать (а не учитывать требования рынка нельзя: обанкротишься).
Кстати, а Вы в курсе, что UTF-8 неудобен и для программиста, и для машины в силу переменной длины символов? В итоге получаем усложнение подпрограмм обработки таких строк и приличное падение скорости. Идти на это ради поддержания возможности использовать особо редкие символы во
внутрисистемных именах лично я считаю нецелесообразным. Вот для файловых систем обеспечить возможность применения любых символов -- это другой вопрос, там они действительно могут понадобиться, ведь с именами файлов работают сами пользователи, а не только программисты. Но и в этом случае использование UTF-8 является дискуссионным вопросом.