X Window – восполняя пробелы. Часть 1

Комментарии: 63

Масштабность X Window как программного проекта выражается даже не столько объемом кода (хотя последний впечатляет и нарушает каноническое представление о непригодности языка программирования C для создания больших систем — более 1,5 млн. строк), сколько бездной, отделяющей временную отметку начала и масштаб проекта от его сегодняшнего состояния.

Не углубляясь в исторические дебри, уделим несколько строк короткой исторической справке. Первые десять (!) версий X Window создавались фактически всего тремя людьми — Робертом Шейфлером (Robert Sheifler), Джимом Геттисом (Jim Gettys) и Роном Ньюменом (Ron Newman). Три "основоположника" представляли в разумной пропорции главные движущие силы технологического развития IT-индустрии — академическую науку (двое — из Массачусетского технологического института, MIT) и знаменитую в те давние времена своими инновациями корпорацию DEC. Еще один примечательный исторический момент — технологическая трансформация, которую претерпела система на ранних этапах развития. Возможно, что без нее вся история X Window, как действительно удачного (хоть и спорного) программного проекта, потеряет всякий "вкус". Все дело в том, что в далеком 1984 году первый разработчик X Window использовал весьма привлекательный и совершенный по сегодняшним меркам… объектно-ориентированный язык программирования CLU. И только затем совсем молодой проект был перепрограммирован на "компьютерной чуме XX века" — языке C. Факт "сдачи технологических позиций" и последовавший за ним успех системы мы пока обсуждать не будем, как и мотивацию разработчиков X Window. Воспримем это пока как ошибку — впоследствии мы подробно поговорим о "секретном" оружии, использовавшемся как при проектировании, так и при реинжениринге системы, и позволившем спасти проект от, казалось бы, неминуемого поражения со стороны главного врага программиста — сложности.

Эволюция пользовательских интерфейсов, построенных на основе X Window, наглядно доказывает преимущество выбранного разработчиками системы подхода. Свобода в определении политик и простота использования механизмов позволили X Window ПО пройти эволюционным путем от внешне примитивного вида OpenLook к де-фактно стандартному экранному представлению примитивов пользовательского интерфейса Motif, к гибко настраиваемому современному виду KDE и, наконец, к прообразам трехмерного интерфейса

Начиная с 11-й версии системы, той, с которой сегодня имеют дело многочисленные пользователи рабочих станций под управлением ОС Unix или ее клонов, проект X Window утратил характер "малой рабочей группы" и превратился фактически в транснациональную смешанную академическо-корпоративную организацию, расширившую представительство со стороны академической науки университетами Карнеги-Миллан и Беркли, а со стороны корпоративного сектора — компаниями Sun, Hewlett-Packard, Siemens, Stellar, Tektronix, Wyse, BBS… (список слишком велик, чтобы его целесообразно было продолжать).

В нашем коротком историческом обзоре остался упущенным один важный момент — название. Действительно, почему именно "X"? И наступило время для первой оговорки — "основоположники" X Window, естественно, "стояли на плечах гигантов". Несмотря на то что разработки их предшественников канули в Лету, не упомянуть имен этих программистов автор не может. Заодно мы найдем и объяснение "тайне" названия системы. А она, как это водится, весьма прозаична: "X" — потому что в английском алфавите эта буква следует за буквой "W". А вот графическую подсистему W, сегодня полностью забытую, создали в Стэнфордском университете два талантливых программиста (впоследствии ставших сотрудниками исследовательских лабораторий DEC) — Поль Асентэ (Paule Asente) и Брайан Рейд (Brian Reid).

Что же такое X Window?

Увы, короткий ответ на этот вопрос найти трудно (если вообще возможно) по одной простой причине — X Window настолько насыщенная и разносторонне функциональная система, что любой краткий ответ гарантированно будет страдать неполнотой.

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

С функциональной точки зрения X Window часто называют "не зависящей от платформы растровой графической оконной системой, обеспечивающей прозрачное использование ее ресурсов с помощью сетевых соединений". В этом определении кроется много ответов на много вопросов, но все же далеко не все. Очевидно, что X Window работает только с растровыми устройствами отображения информации, очевидно, что система образует некоторый дополнительный, более высокий по сравнению с примитивным понятием "пиксел", уровень абстракции — "окно", ну и, наконец, X Window обеспечивает удаленное использование ресурсов графической подсистемы. Расхожее определение оставляет вне поля зрения идеологическую основу X Window — "врожденную" поддержку взаимодействия между разными программными компонентами, выполняющимися в разных защищенных областях памяти одного компьютера или на разных компьютерах — характерную особенность систем класса middleware. Скрытая в упоминании о сетевых "способностях" X Window суть на деле означает, что система является, выражаясь современными терминами, распределенной клиент-серверной. И наконец, такое простое понятие, как "растровый", куда сложнее, чем это может показаться на первый взгляд. С 1984 г. растровые графические системы неузнаваемо изменились, а X Window продолжает работать фактически на любом вычислительном устройстве, обладающем графической подсистемой. И при этом X Window надежно защищает порой бесценные разработки программистов прошлого от влияний этих изменений, гарантированно обеспечивая работоспособность даже очень старых, но не утративших актуальности программ. Возможно, пользователю современного ПК упоминание подобного достоинства покажется надуманным, а напрасно — мир компьютеров все-таки был, есть и будет очень разнообразным. Да и действительно хорошие программы остаются таковыми, несмотря на их "преклонный" возраст.


Принципы и инструменты

Наступила пора "выстрелить" секретному оружию, о котором было упомянуто. Авторы "неоклассических" толкований искусства программирования небезосновательно утверждают, что предел сложности реализуемого на языке C проекта составляет несколько сотен тысяч строк исходных текстов. Наиболее строгая оценка — 100 тыс. строк. За этим пределом программный проект становится неуправляемым, утрачивает пригодность к реинжинирингу, и затраты на его сопровождение астрономически возрастают. Все эти оценки, естественно, не взяты "с потолка" и отражают опыт создания реальных программ. Но действительность слишком многогранна, чтобы они были той самой правдой, которая "всегда одна". X Window — яркий пример "другой правды" — упорно нарушает неоклассические каноны. И, как ни странно, благодаря элементарным "секретам". Впрочем, давайте прислушаемся к самим разработчикам X Window, а именно, к принципам и подходам, которые использовались ими при проектировании системы, благо, никаких тайн в открытом проекте нет. Эти "выжимки" из стандартной документации X Window (естественно, не в дословном переводе) можно смело называть "Евангелием X".

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

Второй принцип — "от обратного" — также заимствован из классики инженерной практики и заключается в предпроектном поиске четкого ответа на вопрос "чем не будет являться проектируемая система?". Удачный ответ на него позволяет точнее определиться и с назначением проектируемой системы, и избежать безуспешных попыток создать "абсолютную систему, реализующую все".

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

Четвертый принцип — это целая философия, но между тем он прост и также не нов для инженера: "единственное, что хуже обобщения, основанного на одном реальном факте, — это обобщение, основанное на отсутствующих фактах или предположениях". В проекте X Window соблюдение этого принципа было исключительно важным фактором из-за… объектно-ориентированного подхода при проектировании.

Пятый принцип — принцип здравого смысла: "если проблему невозможно полностью понять, лучше не пытаться предлагать ее решений".

Шестой принцип — "ленивой эффективности": если для достижения 90% желаемых показателей эффективности системы нужно затратить всего 10% ресурсов, достижение оставшихся 10% эффективности целесообразно просто игнорировать. Или, иначе, простое решение, всего на 10% менее эффективное, но более надежное и доступное для понимания (а значит, и более долговечное), предпочтительнее, чем сложное, независимо от его эффективности. Это правило также является классикой инженерного проектирования и имеет не только более чем вразумительные обоснования в теории многокритериальной оптимизации, но и богатейшую базу практических доказательств. К последним, например, относится ОС Unix, разработчики которой никогда не стремились к "выдающимся" показателям производительности своего детища, что исключительно положительно сказалось на жизнеспособности ОС как программного проекта.

Седьмой принцип также общеизвестен — его называют по-разному, но мы будем придерживаться оригинальных терминов X Window — "изоляция сложности". Учитывая объектно-ориентированное проектирование системы и ее глубинные ООП-корни (первый язык реализации — CLU), здесь можно было бы ограничиться термином "инкапсуляция" и… ввести читателя в заблуждение. Разработчики X Window под "изоляцией сложности" понимали вполне определенное свойство, основывающееся на рациональном и очевидном соображении: систему, состоящую из множества взаимодействующих друг с другом частей (компонентов) трудно понять и еще труднее модифицировать (сопровождать). Соответственно, принцип "изоляции сложности" означает не только и не столько "упрятывание" функциональности в "компонентные" или объектные "обертки" (что, собственно, и называется инкапсуляцией), сколько максимальное сокращение связей между компонентами — даже за счет "перекладывания" ответственности за часть функциональности на разработчиков приложений.

И последний принцип, за который яростно ругают X Window, — "принцип свободы", предусматривающий реализацию исключительно механизмов, а не политик использования этих механизмов. Так как X Window является подсистемой, "ответственной" за взаимодействие человека с компьютером, то "принцип свободы", в частности, означает возможность самостоятельного выбора пользователем (или разработчиком) политик использования/реализации графического интерфейса.

Итак, "Евангелие X" завершилось. Но семь достаточно очевидных инженерных принципов — это, естественно, не все, что гарантировало успех проекта. Вторая составляющая успеха — использованные инструментальные средства. Им можно посвятить не одну отдельную статью (а некоторым — не одну книгу), поэтому здесь остается только заметить — истории о гуру, с реактивной скоростью "отстукивающих" в терминальных редакторах по несколько тысяч строк абсолютно гениального кода в день, к X Window имеют весьма отдаленное отношение, разве что к самому раннему периоду разработки. Сложность есть сложность… и в ход давным-давно пущена "тяжелая артиллерия" программной инженерии (software engineering) — метаязыки описания модульной структуры проекта, поддерживающие автоматическую генерацию тестов и автоматическое тестирование, трассировщики выполнения программ с графическим выводом результатов, специализированные библиотеки контроля за управлением памятью и т. д. и т. п. Короче говоря, вся та атрибутика, которая сегодня считается чуть ли не уникальной для "суперсовременных" интегрированных сред разработки.

Белое и черное


Концептуальная схема X Window

Как любой большой и долгоживущий программный проект, имеющий к тому же и смешанный инструментально-системный характер, X Window обладает массой весьма специфических достоинств и недостатков. Говорить о преимуществах этой системы трудно — не потому что их нет, а из-за ее большой "разноплановости", допускающей множество точек зрения.

Но некоторые достоинства очевидны — X Window работает, X Window хорошо работает (в том числе и в первую очередь — в приложениях mission critical), X Window работает на всем, "что движется", X Window развивается, и наконец, X Window остается уникальной системой, для которой нет реальной альтернативы с 1984 г.

Недостатки системы охарактеризовать намного проще — они, как говорится, у всех "на слуху". X Window ругают обоснованно и необоснованно, но чаще всего ругают конкретные реализации системы. Исторически первый прецедент обоснованной критики был связан с сетевым характером X Window и элементарностью получения удаленного доступа к компьютеру, использующему эту графическую подсистему. С тех пор утекло много воды — появились и специализированные средства защиты (например, прокси-серверы X-протокола), да и в самих спецификациях/реализациях X Window значительно улучшился арсенал "защитных" средств. Но противоречие между функциональностью и защищенностью остается актуальным — сетевые возможности X Window при некомпетентном администрировании системы оставляют потенциальные "лазейки", угрожающие безопасности вычислительной системе в целом. Впрочем, некомпетентность умудряется оставлять "лазейки" всегда, и сегодня этот недостаток X Window стал больше историческим фактом. Второй недостаток куда более серьезен и курьезен одновременно — X Window часто объявляют "зависимой от аппаратных средств системой", подразумевая под этим… растровую модель отображения. Впрочем, пока векторные устройства не вернулись на дисплейную арену, а разрешение реальных экранов не достигло предельной возможности сегодняшних реализаций X Window (65535 65535 точек), и этот "недостаток" можно не принимать во внимание. Как и "недостаток", вытекающий из незнания "принципа свободы", — растровый минимализм X Window не позволяет в базовой системе поддерживать и, например, унифицированный "прозрачный" для программиста вывод на устройства печати. Такая критика хоть не беспочвенна, но — это не недостаток, а свойство X Window. Другое дело, что для решения проблемы унификации печати и отображения на экране не нашлись столь же талантливые разработчики… Если предыдущие недостатки можно было применить к X Window как набору спецификаций, то последний, наиболее известный, касается исключительно конкретных реализаций системы. "X Window — медленный прожорливый монстр, обеспечивающий надежный способ заставить работать вашу 100-мегагерцевую рабочую станцию со скоростью IBM PC 4 MHz". К счастью, эта особенность X Window давно осталась в прошлом — сегодняшние реализации могут быть и микроминиатюрными (например, всего 600 KB), и скоростными, и какими угодно вообще (впрочем, как и неудачными, медленными и даже содержащими грубые ошибки).

Базовые концепции X Window

Системы масштаба X Window не поддаются изучению "наскоком" и потому многим кажутся неоправданно сложными. И сложности начинаются с того, с чего принято начинать изучение любой сложной системы, — с терминологии. В терминах X Window слишком многое привычное становится непривычным, а расхожие понятия "вдруг" обретают неожиданную степень детализации.

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

Второе "самое главное понятие" — событие. X Window — система, основанная на абстракциях "события" и обработке потока событий. Условно можно выделить три класса событий — генерируемые при изменении состояния физических устройств пользовательского ввода, генерируемые при изменении состояния отображаемых окон и события поддержки взаимодействия между программами-клиентами.

Процесс "общения" между сервером и клиентом осуществляется с помощью специального сетевого протокола — так называемого "X-протокола". Это весьма скромный как по количеству понятий, так и по требованиям к пропускной способности сети протокол. В нем всего 4 базовых типа сообщений с простейшими форматами — запрос, ответ, оповещение о событии и сообщение об ошибке. На этом базисе и строится все "общение": описание стандарта X-протокола — более чем скромный документ с "немодным" для сегодняшней компьютерной индустрии объемом в 176 страниц. Главная особенность X-протокола, революционно отличавшая самую первую реализацию X Window от своей предшественницы системы W, — асинхронный характер взаимодействия клиента с X-сервером. Она означает, что ни клиент, ни X-сервер не должны ожидать завершения/подтверждения какой-либо атомарной операции "общения" для выполнения других действий. И если это свойство можно назвать замечательным, вторая особенность X-протокола весьма спорная и заключается в неспособности X Window "сохранять состояние" протокола — при потере связи между клиентом и X-сервером, состояние последних на момент потери связи не сохраняется. Такая особенность, с одной стороны, ограничивает применение базовой X Window в беспроводных системах (где замирания и пропадания сигналов не редкость), с другой — стимулирует создание многочисленных расширений системы, ликвидирующих этот недостаток.

Комбинация X-сервера с соответствующим аппаратно-программным обеспечением образует в терминах X Window "дисплей". Дисплеем может быть рабочая станция или специализированный бездисковый компьютер весьма экзотической архитектуры — это не важно. Главное, чтобы дисплей мог выполнять программу X-сервера и обслуживать одну-единственную клавиатуру и позиционирующее устройство (мышь, световое перо, трекбол, многокоординатный рычаг и т. д.). Еще одна особенность дисплея — принципиальная способность поддержки множества физических "экранов" — комбинаций отвечающего за отображение растровой картинки "железа" и мониторов. Количество обслуживаемых экранов в сегодняшних реализациях X Window ограничено максимальным значением целого числа, поддерживаемым системой (для 32-битовых машин — 231 соответственно). Каждый экран дисплея может содержать множество перекрывающихся окон — прямоугольных или произвольной формы (с учетом расширений системы X Window) отображаемых областей растровой памяти. Окна образуют строгие иерархии на основании простого правила — в каждом экране по умолчанию существует одно уникальное окно-родитель (корневое или root-окно), каждое окно должно иметь "родителя" и само может быть "родителем" для других окон. Окно обладает собственной системой координат с начальным положением в левом верхнем углу окна, обозначением вертикальной оси как "y", горизонтальной как "x" и отсчетом в пикселах. X Window реализует целый ряд операций как над окнами, так и над содержимым окон — окна можно создавать, перерисовывать на экране, удалять, в них можно выводить текст и графические примитивы.

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

Собственно, базисные понятия на этом исчерпались. Наступило время отвечающих за эффективность реализации всей X Window нюансов. Сетевой характер системы, как очевидно, требует очень бережного отношения к трафику — пропускная способность сетей хоть и растет, но остается ограничивающим ресурсом. А даже такое "простое" понятие, как прямоугольная область отображаемой растровой памяти — окно, требует минимальной передачи его положения в системе координат родительского окна, размеров по горизонтали и вертикали и весьма обширной дополнительной информации. Учитывая, что окна — относительно "дешевый" (в терминах вычислительной мощности и объемов памяти для описаний) ресурс, и современные пользовательские интерфейсы построены именно на основе множества окон (да-да, все эти кнопочки, ниспадающие меню, строки ввода и даже обрамления вокруг окон реализованы с помощью… окон), передача описаний окон по сети может превратить требования к пропускной способности в нереальные. А ведь кроме окон, существует еще ряд абстракций, без реализации которых ценность графической подсистемы равна нулю. Разработчики X Window нашли эффектное решение этой проблемы с помощью создания двух обобщающих понятий — "ресурса" и "идентификатора ресурса".

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

Теперь о ресурсах можно говорить подробнее — в эту категорию попадают такие понятия, как окна, пиксельные карты (pixmap), курсоры, шрифты, графические контексты и палитры. Окна как объекты X Window мы кратко рассмотрели, пиксельные карты на деле являются специальным форматом представления растровых картинок, курсоры и шрифты в дополнительных комментариях на этом уровне ознакомления не нуждаются.

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

Если предыдущие понятия были относительно просты, то палитры, как и все, что касается управления цветом в X Window, исключительно сложная тема. Дело в том, что система создавалась для потенциальной поддержки любых устройств растрового графического вывода, которые существенно отличаются принципами формирования цвета из кода пиксела. Не вдаваясь в подробности, здесь целесообразно только определить "палитру" как таблицу, ставящую в соответствие коду пиксела тройку значений itc_drupal_R,G,B — интенсивностей трех базовых цветов. X-сервер поддерживает как разделяемую между всеми клиентами общую палитру, так и возможность создания для каждого клиента собственной виртуальной палитры (это высказывание справедливо далеко не для всех аппаратных средств).

И вот, последние и почти самые главные понятия — "свойства" (properties) и "атомы" (atoms). Это одни из ключевых абстракций X Window. "Свойства" представляют собой именованные наборы данных, а атомы — компактные идентификаторы этих наборов данных. Схожесть с моделью "ресурс-идентификатор" здесь, на первый взгляд, очевидна, но и различия весьма существенны — если "ресурсы" можно потенциально разделять между программами-клиентами, работающими с одним X-сервером, то "свойства" являются общедоступными (для клиентов одного сервера). В этом же правиле можно заметить и дополнительный нюанс — атомы, в отличие от идентификаторов ресурсов, уникальны только для одного окна — ведь одно "свойство" может быть присуще разным окнам. С точки зрения программного архитектора, реализацию свойств можно отнести к нечасто встречающейся разновидности архитектуры — "классной доске" (иначе называемой "доской объявлений"). Ни к "содержимому" свойств, ни к их именам X Window не предъявляет фактически никаких особых требований, но существует фиксированное множество имен и соглашения о содержимом свойств, которые необходимы для нормального функционирования любого приложения в среде X Window, эти соглашения об именах/содержании свойств с предопределенными атомами называются ICCCM — "Соглашения о взаимодействии между программами-клиентами".

  • Moderator

    Комментарии к статье [url="http://itc.ua/8934"]X Window — восполняя пробелы. Часть 1[/url]

    • Pavlosh

      Статья хорошая, ОЧЕНЬ хорошая.

      С более конкретными комментариями, м-м-мммм… — подождём часть 2,…,N :)))))))))))))))))))))

      «Восполняя пробелы» — эти слова можно добавить и к названию рубрики ;-)

    • Guest

      Да , мне тоже понравилась. А когда будет часть 2?

    • Guest

      М-да… Г-н Зубинский не дает никому расслабиться, в том числе и себе. Здорово!

    • Guest

      ув. Андрей З. спасибо за вашу статью, я наконец-то понял, кто же такой А. Зубинский, и почему он входит в двадцатку самых популярных запросов в поисковике ITC.
      Одного не могу понять — я часто встречаю в КО статьи такого толка, но вот как они пишутся? Складывается ощущение, что автор чуть ли не присутствовал при работе людей, делающих эти программные продукты (читай: историю).
      Очень увлекательно.
      И, повторюсь — подождем часть №2.

    • Guest

      Статья интересна, я только хотел бы остановиться на нескольких деталях.
      Во-первых, «пробелов» в почти двадцатилетней истории X Window как таковых почти нет — вся информация в той или иной форме доступна из материалов X Consortium или Usenet, не говоря уже о других источниках. Так что восполнять, собственно, нечего… Хотя звучит неплохо.
      Во-вторых, о принципах и инструментах. Те, кто утверждают, что что разработка больших и очень больших проектов на C нецелесообразна, «из-за астрономических затрат», в значительном числе относятся к сторонникам закрытой, или корпоративной, модели разработки ПО. Это объяснимо с точки зрения адаптивной теории предельной полезности: когда выгода от осуществления некоего мероприятия перекрывается расходами не его сопровождение, проект нерационально поддерживать. Однако в мире Open Source мерки другие. Есть огромное число талантливых программистов по всему миру, желание творить, и CVS. Я не считал строки кода в ядре Linux, но их там достаточно — сто с лишним мегабайт исходного кода говорят о многом. Хотя и ошибки там никогда не переведутся.
      И в третьих, шестой принцип — «ленивой эффективности» — также называют принципом разумной достаточности. И говорит он, что выше головы прыгнуть можно, да больно падать, и что незачем ставить на карту всё — это глупо и совершенно бессмысленно (перефразировано со слов Дж.Сороса).
      А если в целом, то прочёл с удовольствием. Хотя X Window — это скорее концепция, чем готовое решение, поэтому было бы очень неплохо во 2-й части немного отойти от теории и рассказать о практических реализациях стандарта X11R6 — и в первую очередь, но не в последнюю, об XFree86. Хотя вам решать, а я сказал.

    • Guest

      Статья хороша :-))
      Только совсем непонятны наскоки в сторону CASE систем и отделениее их от Software Engneering, хотя их «тлетворное» влияние на ум автора весьма заметно …

      В этом контексте хотелось бы получить ответ на простой вопрос:
      Как молодой начинающей _команде_ начать использовать ту самую «тяжелую артилерию» SE , без десятилей проб и ошибок, не создавай этот самый «тяжелый велосипед » ?

      Кстати если мне покажут не CASE программера, создающего програмный продукт, буду очень рад :-))
      (Computer Aided Software Egineering)

    • Guest

      Хоть в последнее время мне крайне не хочется реагировать на анонимные постинги, вы («доброжелатель») с вашими «адекватными реакциями» мне уже даже стали забавны :-)

      Ну, я право и не знаю, где вы в ней наскоки какие-то усмотрели? Очень по-моему мягко было сказано в одном-единственном предложении.

      Впрочем, о наскоках — «…вы просите песен — их есть у меня».

      Отделение CASE-систем от SE имеет такое же право, как отделение «самой лучшей логарифмической линейки, произведенной самой передовой компанией XYZ» от понятия «инженерия».

      «Программеров» я вам не покажу :-) (как и Келдыша :-), тем более — прилюдно…) А хороших программистов из до-CASE периода десяток-сотню знаю. По памяти — Д.Кнут с «продуктом» TeX. Б.Керниган с «продуктом» компилятор C. Н.Вирт с «продуктом» транслятор Modula-II. Страустрап с «продуктом» препроцессор C++. Мур с FORTH и его крохотными программами проектирования класса silicon compilers.

      Все эти как вы изволили выразиться «программеры», — из до-CASE эпохи, и все эти «продукты» живее всех живых. Дай Бог и вам что-нибудь подобное написать — оно ведь всё равно, с CASE или без, лишь бы хорошее было. А время потом покажет — хорошее оно или нет, может, в старости глубокой, и о вашей «нетленке» чего с удовольствием напишу.

      А как молодой начинающей команде быть… Так ведь это вы с вашим непритязательным PR’ом буквально с изяществом слона в посудной лавке спросили. Ясное дело, — как… Отдать деньги за семинары, где объяснят прелести того, что надо купить. Потом отдать деньги за это самое что надо купить. Потом надо учить все что купили, обновлять его версии, посещать семинары… while(1)… Может, мне надо еще и подсказать молодым начинающим — куда и кому именно деньги относить? Или это уже как-нибудь без меня устроится — с вашей-то изящностью пиара…

      Впрочем, для молодых и начинающих значительно интереснее будет ответ на вопрос «почему Кнут писал TeX 10 лет?». Ведь вовсе не из-за того, что у него «велосипеда не было» [(c) Печкин], то есть — не потому, что он Буча не читал :-))))) А потому, что прикладная область была слишком сложной, неизученной — и потому — неформализованной (это не я так придумал — это Кнут так говорит сам). В этом случае как быть? Предлагать молодым начинающим на манер О.Бендера астролябии — «сами меряют, было бы что мерять»?

      Так может побольше на семинарах рассказывать о перспективных прикладных областях — где прикладное ПО интерес представляет, — в платежеспособных странах, безотносительно страны разработки? То есть, — где за прикладное ПО будут реально платить? И за какое ПО. Вот за такой семинар и денег заплатить не жалко, не то, что за истории про новую астролябию…

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

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

      Кроме трудов «неизвестного программиста Г.Буча», — имя его известно, программы его неизвестны…

    • Guest

      По поводу семинаров это хорошо сказано :-)
      Да толко бесплатные они в основном :-))
      Да и материалов в инете тоже предостаточно , не по исходникам X Window же в конце концов SE учится :-))) (да и артилерии там все равно не накапаешь)

      К сожалению связка CASE — Есть программирование(SE) с помощью(Aided) компьютера (Computer ) оказалась не понятна (Видимо поэтому чистых математиков прикладников я в перечисленных программерах не углядел )…
      А ведь это тоже огромная прикладная область изучением которой на западе занимаются не один десяток лет ( и результатом во многом являются те самые CASE системы и стандарты )….
      А представлять ее как терра инкогнита или продолжение прикладной математики мне кажется не совсем точно …

      По поводу Программеров ( с большой буквы ) тех, кто на интуитивном уровне смог во время задействавовать «тяжелую артилерию», в нужный моент!(чтоб проект на ней не накрылся), хватит того самого byte :-(( ( лично я не знаю и сотни )
      Я думаю что это те самые исключения, которые только подтверждают правило ..
      Т.к. продуктов значительно превосходящих по сложности все перечисленное море и за каждым из них стоит почти безликая команда …

      SE это уже давным давно не одиночная игра а Коллективный вид спорта …
      А по сему помимо фехтования не плохо было бы все таки занятся кому-то и тактикой и стратегией и родами войск ( привет «тяжелой артиллерии»)

      Вот в кртаце и все что я хотел сказать :-)
      P.S. Я так и думал что по поводу тлетворного влияния возражений не последует …

    • Malx

      > Да толко бесплатные они в основном :-))

      Бесплатный сыр? ;)

      А по поводу толпы/не толпы — Толпа принципиально новое не создаст.
      А сложность — это может и интересный параметр, но реально потребность в другом ;)

    • Guest

      > Бесплатный сыр? ;)

      Стоит ровно столько сколько стоит твое время ….
      ( И это что называется невосполнимый ресурс )

      > Толпа принципиально новое не создаст.
      Страный вопрос :
      Как говорится толпа не создаст , а команда даст фору любому одиночке ..
      Только ее (команду) еще из толпы сделать надо :-)))
      За примерами далек ходить не надо
      Один из самых сложных и классических аспектов применения системного подхода являются ЦПУ ( Я так понимаю товарищь не с 8086 сообщение запостил).
      В данный момент многие устройства и программы которые активно используются насчитывают сотни человеколет разработки , Конечно отсутствие необходимости взаимодействия между членами команды может сократить этот срок — но не в разы , а значит эти устройства просто никогда не увидели бы свет ( или по крайней мере нам бы не пришлось ими пользоватся )

    • Pavlosh

      Ммм… дааа…, и что ж за любовь такая к анонимности? :-)))

      Несомненно, тема «CASE» это не тема «X-Window», но тоже несомненно важная и раз уже «сцепились» (и в такой тёплой компании завсегдатаев :)))
      то:

      давайте (по японской рекомендации) проведём анализ:
      1) Мы говорим о разных вещах но (хотелось бы думать) на одном языке;
      2) Мы гворим об одном и том-же но на разных языках;
      3) Спор о мировозрениях (японцы советуют таковые … и не начинать ;-)

      CASE — это что (что имеется ввиду)?

      Это просто средство
      > взаимодействия между членами команды
      и прочие классические, входящие в «джентльменский набор» (включая «архивные» средства типа CVS…)?

      Или это некий «магический порошок»?

      Или просто нечто вроде Delpi — средство для экспресс-писания (без «команды» часто, а наоборот, усилитель «ентузазизЬма» одиночек :-), такого, которое принесло в программисткий мир понятие «лабать программы)?

      ???

      ЗЫ: Только давайте не начинать опять о ООП, UML… (позиции «присутствующих» по этим вопросам хорошо известны ;-)
      :-))))))))))

    • Guest

      > Ммм… дааа…, и что ж за любовь такая к
      > анонимности?
      Можно подумать регистрация что-то принципиально меняет …

      > CASE — это что (что имеется ввиду)?
      Суть моего изначального постинга проста.
      Если есть:
      «Инженерные стандартные практики »
      «тяжелая артилерия»
      и т.д.
      Что по моему мнению в мировой практике нашло отражение в методологии современных CASE систем ( с учетом опыта и X Window и многих других)

      То почему не говорить прямо о методологии, стандартах и практиках ???
      Тем более что Автор явно с этой кухней очень активно знакомится .

      Или просто жаба давит назвать Западный институт или Коммерческую фирму вложивших многие человеко годы в разработку методологии опираясь непосредственно на свой и чужой опыт Разработки ????

    • Guest

      О!
      Спасибо
      Иногда правильно поставленный вопрос стоит многих часов спора :-)

      Хоть сам понял что имено так раздражает во всех наскоках Зубинского на Case, OOP и т.д.
      Хотя надо признать что в этой стотье наезд был скрыт филигранно
      ;-)

    • Pavlosh

      > Можно подумать регистрация что-то принципиально меняет …
      Ну, на мой взгляд (то бишь то самое ИМХО ;-) — меняет, и именно принципиально, то есть ежели [b]Принципиально[/b], особливо в тех случАях, когда нужно делать «достаточно острые выпады» (назовём это так мягко ;-)

      Что касается
      > современны[х](е) CASE систем(ы)
      и, особенно,
      > методологии
      а также
      > Западный институт
      и
      > Коммерческую фирму вложивших многие человеко годы
      > в разработку [b]методологии[/b]
      то примеры, pls (с указанием, насколько они [i]современны[/i] и сколько там «своего» (то есть того, что является личным вкладом, предположительно действительно новаторским) и «чужого» опыта)

    • Guest

      Ну что у вас за лексикон такой маргинальный — «жаба давит» — мы же не на базаре и не торгуемся…

      А вы что, всерьёз считаете, что есть некий Один Институт или Одна Фирма, могущие претендовать на звание Единственной Верной и Истинно Правильной? Как КПСС? Интересно…

      Мне всё-таки кажется, что никакой такой Единственной нет и быть не может. Естественно, в смысле — «Единственной для всех». Для вас, например, единственная — та самая Коммерческая фирма :-) Для кого-то весьма уважаемого в мире (Д.Кнут) — это literate programming. Кому-то не менее уважаемому (Пайк + Керниган + Ричи) единственной кажется расширенная Z-нотация + Spin. Кому-то — ADL (Assertion Definition Language, который использовался в проекте X Window). И т.д. и т.п., включая совсем новомодные веяния, как-то: TARGET, RDD-100, STOOD и т.д. и т.п. — этих единственных коммерческих фирм слишком много — [url="http://www.qucis.queensu.ca/Software-Engineering/tools.html"]http://www.qucis.queensu.ca/Software-Engineering/tools.html[/url].
      Так которую из этиго списка вы имеете в виду и почему? Из-за коммерческого успеха сегодня? DEC была тоже очень успешной компанией, а при продаже стоила дешевле Netscape — это со всеми-то заводами, исследовательскими лабораториями и прочими атрибутами мощи. Sic transit gloria mundi… и это пройдёт…

      К сожалению (или к счастью) всё это только следствие одного глубокого заблуждения — что программы в идеале можно бездумно собирать из готовых полуфабрикатов по принципу чуть ли не случайного подбора структуры, удовлетворяющей requirements (а почему бы не пойти дальше — генерировать случайные структуры и оценивать их соответствие requirements?). Заблуждение хотя бы потому, что никто ещё не опроверг теорему Гёделя о неполноте. И хотя бы потому, что само формирование requirements — такая наука страшная (кто занимался экспертными оценками и методами принятия решений — знают), от только прикосновения к которой UML кажется действительно наскальной живописью (особенно, в части requirements).

      Так что никакой Единственной Компании нет и быть не может — это, батенька, опять начинается приступ торговли астролябиями.

      А вот что плохо — зависимость процессов проектирования и реализации от Единственной Компании. Это отвратительно. Почему? А на это есть множество точек зрения — перечислять скучно.

      Sic.

    • cless

      > [b]Принципиально[/b],
      Для анонимного автора ( У меня нет никакой информации говорящей о том что господин [b]Зубинский[/b] не псевдоним и вообще одно лицо а не удачный эксперимент ITC ) анонимные выпады , и заполнение анкеты никаких гарантий никому не дает ….

      >[b]методологии[/b]то примеры, pls
      CMM Собственно должно говорить само по себе
      RUP
      Там есть замечательный reference list на чем базируются данные рекомендации вообще и в разрезе по дисциплинам , из знакомства с некоторыми изданиями из него смею вас уверить что содержимое по конкретным разделам [b]Наиболее современно[/b] .
      Собственно по сути: по моим оценкам мне физически не хватит активного времени жизни чтобы проработать самостоятельно весь этот список ( и за каждым пунктом скрыаются годы практической работы) и иного пути чем коллективная системная работа я не вижу .
      Если есть реальное желание могу выслать этот список лично …

      Как говорится за сим прощаюсь …

    • cless

      Давайте опустим понятие единственно верных :-)
      Вас не смущает случайно наличие «единственно верных» Теорий в физике математике ?
      Это же ламерство полное :-) признать что конкретное явление может иметь верное с определенной точки зрение объяснение в соответсвии с причинно следственными связями …
      Я хочу сказать что теорема Пифагора остается теоремой пифагора в Евклидовой геометрии
      Чтобы не углублятся в гносеологический спор перейдем дальше.

      > DEC была тоже очень успешной компанией, а при
      > продаже стоила дешевле Netscap

      И это промах
      При оценке вклада компании в науку , использовать в качестве мерила курс акций при продаже :-)))
      Вы бы еще Palo Alto похаяли …

      Причем тут к методологии единственность компании ?

      Компания первоисточник или просто популяризатор, а на том же движке есть море продуктов взять хотя бы дисциплину Управления изменениями …
      Заслуга например Ratioanl например в том что она не только собрала по всему миру успешные пракики используемые при разработке ПО но и не спрятала их под грифом сов-секретно (или используется для военных целей )

      Процессы зависят в первую очередь от людей а не от какой-то там компании ,
      поверте Андрей если бы вы действительно разобрались с Дисциплиной управления требованиями то не использование для этих целей Requisite Pro просто доставило бы вам ряд [b]неудобств[/b], но не более того …

      Как говорил Pavlosh давайте определим что вы понимаете под зависимостью процессов проектирования ?

      Лично для меня это звучит как поставить себя в зависимость от сил притяжения земли
      :-)))

      Законы есть и они действуют хоти вы того или нет , и те кто пользуется ими имеют значительное преимущество по сравнению с теми кто действует наощупь.

      Вот много,сумбурно нонадеюсь не бесполезно :-)

    • Pavlosh

      > никаких гарантий никому не дает ….
      Ничего другого не приходится ожидать от того, кто сам прибегает к анонимности.
      Добавлю лишь, что речь не о «гарантиях» а, пожалуй, больше о, гмгм… правилах хорошего тона, что ли…

      > коллективная системная работа я не вижу
      Это настолько общие и настолько красивые слова (особенно первые два), что не согласиться с таким утверждением нельзя ;-)

      > CMM
      (как же, «говорит, говорит само за себя» ;-)
      > RUP
      Нуууу… и что?

    • Pavlosh

      Нуууу, раз уж я вошёл в число «цитируемых авторов»:
      > Как говорил Pavlosh
      (сделаю вид, что не замечаю «оттенок прошешего времени» :-)
      то, сударь, не обессудьте :)))))))

      1)
      > сумбурно
      … а вот без этого бы лучше обойтись. Не к лицу это г-ну Инженеру-Системотехнику. Не стоит ставить под сомнение такую квалификацию (и для меня родную) ;-)
      Думать, и, соответственно, выражать свои мысли лучше без субура/суматохи… тогда и можно надеяться, что будет
      > не бесполезно
      :-)))))))))))))

      2)
      > Это же ламерство полное
      Есть предложение обходиться и без подобных выпадов, а то как то навевает встречно-»зеркальные» аналогии:
      ламер=[b]злобный[/b] чайник
      :)))))))

      3)
      Это после
      > [b]знакомства[/b] с [b]некоторыми[/b] изданиями
      из некоего супер-
      > замечательный reference list
      г-н инженер
      >смеет вас (то есть нас :-) уверить
      что CMM|RUP=теорема Пифагора ???
      Сударь, окститесь! Чур меня, чур!!! :))))))))))

      4)
      > Заслуга например Ratioanl например в том что она
      > не только собрала по всему миру успешные пракики
      Собрала ли? Кто сортировал на успешные/неуспешные? Все ли были просмотрены?
      Эйштейн (кстати, тоже не последний «парень» в фундаментальных науках :-)
      сказал «Никогда не прекращайте задавать вопросы» ;-)
      Что RUP — венец мироздания? И т.д и т.п.

      _______________________________
      Что же, если
      > если бы вы действительно разобрались с Дисциплиной…
      то давайте разбираться…
      Например, может ли один Инженер-Системотехник (то есть я ;-) попросить другого Инженера и тоже Системотехника сообщить мне и всей «честнОй компании» теорию
      > процессов проектирования
      и, особливо, их (ентих процессов)
      > [b] Законы [/b]
      (проектирования программного обеспечения, знамо дело, но можно и автомобилей ;-)
      в таком виде, чтобы это было сравнимо с Эвклидовой (хотя бы) геометрией и/или классической физикой Ньютона (опять хотя бы). Я согласен даже не поднимать вопросы о сравнении периодов до Лобачевского и после него, до Эйнштейна и после него ;-).
      … чтобы я (и всё «обЧество» программеров) больше НИКОГДА в своей «тёмной» жизни не действовал «наощупь» а постоянно имел «значительное преимущество» в больших количествах и жил счастливо…
      Кстати, в этих-же терминах:
      в чём проблема Microsoft — в том, что они не «проходили» RUP+CMM, или, наоборот, познали их глубоко, а вот мы не в силах понять их достижениев, поскольку мы есть тёмные=недооRUPленные сарматы?
      :))))))))))))))))))))))))))

    • Guest

      Pavlosh,

      по поводу requirements могу рассказать, как они формировались в нашем НИИ в рамках НИР, целью которых было ТЗ — то есть, те самые requirements (по секрету — с этой спецификой как раз знаком хорошо).

      Во-первых, исходя из специфики задачи, проектировался процесс «выработки требований» (это так назывались requirements). Потому как он, естественно, зависел и от задачи, и от доступных данных о ней. Затем этот процесс «запускался» в виде рекурсивной человеко-машинной многоэтапной продолжительной процедуры. В этапы включались: сбор информации и стат. обработка (проверка выборок на репрезентабельность, устранение шумов, выделение трендов), сбор и обработка экспертных оценок, любимый факторный анализ, построение моделей на основе полученных данных (кстати, использовался и МГУА — наш киевский аналог генетического программирования), любимая же оптимизация моделей (поиск области Парето-оптимальности, ранжирование критериев экспертными оценками, однокритериальная оптимизация внутри Парето-области по самому важному по оценке экспертов критерию), и, наконец — получение заветных requirements в результате оптимизации.

      Такой процесс в принципе нейтрален по отношению к объекту проектирования, но требует работы в весьма формализованной области. Скажем, в некторых аналогичных организациях именно так формировали requirements на ПО для бортовых вычислителей… которое тс-с-с-с… потом успешно писали девочки — в машинных кодах, сидя за дисплеями ЕС7920. Это я серьёзно, даже ассемблера не было — только картонные карточки, FF EA C7 9F 20 20… и редактор из OS/370…. А вот писали действительно успешно, и, по-моему, именно из-за requirements. Девочек-то было много (в одном зале — больше 200 человек, а атких залов — пруд пруди), инструментальной поддержки почти никакой — ни ассемблера, ни отладчика путёвого, тестовые «прогоны» разве что по ночам — а ведь работало и работает…

      Вот такая вот Дисциплина… Впрочем, товарищу «доброжелателю» можно позавидовать — у него все проще — астролябия помогает.

      PS

      А не купить ли нам с вами по астролябии? Глядишь, и жизнь наладится, и я до вас доеду, наконец (мои большие sorry — на следующей неделе — как штык, ей-Богу).

      Жаль только, что «доброжелатель» какой-то неубедительный, с лексиконом подростка и такой же манерой ведения дискуссии… А доехать — доеду непременно. И пива выпьем тоже непременно :-)

    • Pavlosh

      > по поводу requirements могу рассказать…
      1) Андрей, отличная текстовка, наводящая на мысль, а почему Вы не пишете статей на отечественном, и, в том числе, личном материале? Судя по всему, будет что почитать!!! ;-)
      2) Да я же не «Фома неверующий» какой-то!!! Надеюсь, что и не «темнота дремучая»!!! :)))))))))
      2.1) Сказанное Вами насчёт requrements мне глубоко понятно и, более того, близко (и соответствует моему собственному опыту)
      2.2) CMM — глубоко уважаю и, более того, мечтаю (и работаю над этой мечтой) «вырастить» фирму, которая будет аттестована по CMM Level999, поскольку (в частности) слова «mature software process» трогают мою изболевшуюся душу по самое… (ну, думаю, понятно… :) А от того, что мои свежеиспечённые коллеги тоже знают о CMM (правда, больше любят RUP :-) на мои измождённые от вглядывания в экран (а всё, кубыть, потому, что RUP ещё не освоил ;-) глаза наворачиваются слёзы умиления… :)))))))))

      Но вот в «магическую астролябию» — НЕ ВЕРЮ (видно духом слаб)!!!

      И в то, что RUP**CMM (в FORTRAN-IV нотации) === «магическая…» тоже.

      И (также как и Вы, Андрей, судя по всему) не прекращаю усилий обратить внимание тех, кто помоложе, насколько опасно быть «опъянённым риторикой» (не только Буча, но и, в том числе, своей собственной!!!)

      И, как говорят англичане — the last, but not least и с надеждой на «принцип Штирлица» (особенно запоминается то, что сказано в самом конце ;-)
      надеюсь, что обещание, тем более публичное, «доехать…» — не «разойдётся с делом» :))))))))))))))

      Потому (всему вышеизложенному) и предложение
      > не купить ли нам с вами по астролябии?
      with all due respect лишён возможности поддержать:
      поскольку астролябиев не бывает, то лучче деньги не тратить на всякие гадости, а на пиво оставить :)))))))))))))))))))

    • Malx

      [url="http://www.advogato.org/article/434.html"]http://www.advogato.org/article/434.html/url

      А то что-то весь спор как-то затих :)

      А что до групп/одиночек.
      Кому нравится хор слушать… А кому и одиночных певцов. Кто-то сам пишет и играет рок (может не столь качественно), а кто-то всегда поет под фонограмму, над которой не один человек трудился…

      Разные люди нужны.

      А толпа — это показатель жадности. Если бы
      люди не жадничали знаниями делиться, то каждый одиночка мог бы создать систему любой сложности. А так….

    • Pavlosh

      > Если бы люди не жадничали знаниями делиться, то
      > каждый одиночка мог бы создать систему любой
      > сложности
      Тэкс, тэкс, тээээээкс, давайте проанализируем :)))
      Первая реакция: так уж и «каждый» (Андрей вон приводит примеры: Кнут…, а это далеко не каждый ;-) так уж и «любой».
      Вторая реакция — фраза противоречивая: зачем «одиночке» надо, чтобы с ним делились информацией, если он сам «всё могёт». А «сеть» классных программистов (уровня Кнута, например ;-) с активным взаимообменом информацией (а в «информацию» могут входить, видимо и наработанные компоненты, библиотеки…) между ними — это уже дааалеко не «одиночки».

      ЗЫ: А ссылка — очень хорошА (как сама по себе, так и как пример того, что можно «жадничать поменьше» :-)
      :))))))

    • Guest

      Ну, ссылка себе как ссылка. Есть намного серьёзнее, например, risks digest ([url="http://catless.ncl.ac.uk/Risks"]http://catless.ncl.ac.uk/Risks[/url]).

      А вот насчёт requirements…

      Маленькое соображение:

      допустим, что критериальные оценки того самого «нечто», что сформируется на основе requirements, таковы:

      1. Важность (Range). Формально определить очень легко (IMHO) — достаточно намалевать графы разных вариантов общей системы ПО, отображая программы (включая «нечто») -вершинами, а ветвями — пусть не очень чёткие, но легко выявимые отношения «прямо или косвенно используется», и посчитать степень графа в вершине «нечто» (число ветвей, инцидентных или «подключенных» к вершине «нечто»). Вот эта-то цифра и будет «важностью» — ядро ОС «прямо или косвенно используется» всеми программами (кроме bootloader’a), системный транслятор и редактор связей — тоже (а иначе откуда бинарные файлы взялись?) и т.д. и т.п. А вот GUI-морда перед программкой начисления сложных процентов используется только пользователем (который с точки зрения разработчика ПО есть большая помеха сеянью светлого, чистого и вечного :-)

      2. Range определяет срок жизни программы (Lifecycle) — действительно «важные» программы не бывают однодневками (или же не должны быть :-)

      3. Range и Lifecycle определяют (как — не знаю, никто не знает, но определяют — в конце концов, чем я хуже Буча — у него было бы просто «на основе передового опыта») критерий простоты (Simplicity) — чем выше «важность» и продолжительнее «срок жизни», тем проще должна быть программа. Или же, если смотреть с другой точки зрения, Simplicity означает активное интеллектуальное участие человека в процессе эксплуатации «нечто» — только за счёт полной утилизации способности человека учиться и думать можно добиться простоты инструментов. То есть, Simplicity — это одновременно и простота реализации, и простота использования, подкреплённые активным интеллектуальным участием пользователя в период Lifecycle.

      4. Производительность — она же — Пользователь, она же — Evil. Интегративный показатель, отражающий всё сразу, что высказывается типовым пользователем фразой «чтобы интуитивно, красиво и быстро» (к вычислительной производительности никакого отношения не имеет — последняя никого не интересует, потому как требует интеллектуального вмешательства в процесс — осознания самого понятия «вычислительной производительности»). Увлечение Evil приводит к тому, что Simplicity уменьшается => Lifecycle сокращается => Range уменьшается. Это называется стагнацией. По сути Evil является антонимом к Simplicity и в идеале сводит участие человека в эксплуатации «нечто» к чисто моторным «интуитивным» навыкам. В качестве оправдания Evil обычно используются аналогии с изделиями предметного, вещественного характера — атомобилями и проч. и абстрактные рассуждения о «демократичности технологии» (или «доступности» — но это мне меньше нравится, оно как-то девиц с Окружной дороги напоминает). О социальных последствиях Evil’изации requirements судить трудно, но они наверняка есть — evil’изация (IMHO) — больше следствие очень выского уровня развития производства и сверхвысокой производительности труда в индустриально развитых странах — ведь в них в сфере материального производства заняты считанные единицы процентов населения, а остальных 90+ надо чем-то занять и дать им денег, чтобы они «Аврору» не угнали :-) Вот, значится, и «завелась» evil’изация — уже не первый раз, как одна из естественных реакций на естественную же проблему технократической цивилизации — использование массовых моторно-»интуитивных» возможностей («За 24 часа… для чайников…») как оплачиваемого ресурса.

      5. Функциональность (Power). Самый гадкий критерий — зависит от всех остальных (а не наоборот). Чем Range выше, тем Simpilicity должна быть выше, тем Lifecycle должен быть дольше, тем Power должна быть меньше — угу. То есть, классическая задача многокритериальной оптимизации, в которой не может быть одного наилучшего решения, а может быть множество «не хуже заданных требований». Найти его и выбрать из него что-то одно — ба-а-альшая наука + большая удача + … + почёт и слава + ACM award :-) (гениям это удавалось за счёт гениальности, но не все ведь гении).

      А теперь можно в эту «модель» (ну ничем не хуже любой иной методологии) уложить факты.
      MS Windows — типичный пример последовательного претворения «в жисть» идеи «супер-интуитивной» системы, то есть, в приведенных выше терминах — супер-evil’изированной — «чтоб интуитивно, красиво и быстро» — главный девиз. Но — сложность растёт безобразно (до такой степени, что уже поведение «затычек»-сервиспаков непредсказуемо), Lifecycle уже просто смешной (кто помнит все эти Windows Me, «Windows бе-е-е» и прочие однодневки, у которых рекламная кампания, предшествующая выходу, была дольше, чем Lifecycle), Range начинает уменьшатся (угу, начинает, начинает — свидетельство тому — «кардинальные изменения» в Windows XP), и при снижении Simplicity новой функциональности (Power) фактически нет давным-давно (с Windows NT или всё-таки OS/2 или всё-таки DEC VAX VMS?).

    • DitchCowSky

      [url="http://computing.ee.ethz.ch/.soft/secprog/"]http://computing.ee.ethz.ch/.soft/secprog//url

    • Pavlosh

      Супер!!! БравО!!!!!!!

    • Guest

      Спасибо, Павел

      Жаль, за статью «не зачтётся» :-))) (IMHO, тоже очень неплохо — но не в «струе», посему — узкому кругу читатлей форума).

    • Pavlosh

      Гм,
      > не в «струе»
      дык енту «струю» (… «светлей лазури» :-) надо, стал быть, подкорректировать. Мы же ещё не забыли, как «реки вспять поворачивать»???
      Я не имею ввиду превращать всё в «камерную» (а тем более «сектантскую»)тусовку для избранных, но между «Компьютерным обозрением» (в состоянии as is) и, скааааажем, московской «Компьютеррой» — бааальшое пространство для манёвра. Для начала — ышо одну «рубричку» завести ;-)))

    • Malx

      Я не о той жадности.
      То, что получается в итоге хуже, чем ничего (я конечно не говорю про абсолютно все сделанное, но про большинство).
      Вопервых — _такие_ методы представления знаний (библиотеки, компоненты, книжки) требуют коллосальных трудозатат на изучение интерфейсов к ним (уж лучше то же время потратить на основы, хотя не всегда хватает базового уровня знаний — это про мат. алгоритмы).
      Вовторых — тот самый начальный уровень знаний, т.е доступно не всем. И изучить недостающее (только его, а не весь курс Мат. анализа того же) проблематично (затраты времени.
      К сожалению это уже неьзя назвать «свободно доступнымизнаниями». Точно так же , как SAMBA уже нельзя назвать ПО со свободными исходниками…. Они то свободны, но вот их столько, что на изучение и добавление чего-то серьзного уйдет больше времени, чем МС потратит на выпуск новой технологии :) Т.е привычный метод добиться свободы — fork new project — в этом случае объективно не работает.

      А как эту информацию предсталять? Так чтобы ею было оперировать удобно. Чтобы записать данные на CD-r (куча разных файлов) — мне совершенно не надо азбираться во нутренних форматах файлов.
      Я просто использую привычный простой интерфейс файловой системы. Мне не надо _больше_ знаний для этой операции.

      Так же и в случае знаний — должны быть интерфейсы разных уровней (а не одного , как в случае с библиотекой/компонентом).

      А статьица (это как applet/aplication уменьшительное ;) получелась интересная. Только пополитическим мотивам ее печатать нельзя — это ж надо 90% людей лоботрясами обозвать :)
      Они и обидится то могум…. А нам то уже всеравно….

      А насчет «активного интллектуального участия» — ты бы видел напряженные лица слушателей курсов по Оффис и Графике ;) То что для тебя элементарщина — для других темный лес. Даже самое элементрное — мне бабушка сказала — «да я вижу, что оно показывает кучу цветных пятен» … Куда там уже говорить про кнопочки псевдо3Д и тем более pipes ;) Тебя же булочки не заставляют печь… или хотя бы делать осмысленный выбор между черным хлебом и батоном (хотя нет — в газетах писали про разницу для здоровья :)

      (1) Важность зависит не от «важности», а от способа проектирования системы. А то получится , что gettext важная, почти что как ядро — поскольку каждая строка интерфейсной программы обернута в эту обертку :)))))))))

      (2) Да? Но зато бывают клоны, при появлении которых те-не-однодневки исчезают без следа — yacc/? , flex/lex , less/more, vim/vi …. etc

      (3) Реализации? Захотелось как-то дописать в супер-простую утилитку «cut» возможнось менять местами столбики…. Посмотрел я на код и мне расхотелось это делать …. Уж лучше я буду cut + paste использовать ;)

      А что до Evil/Power и WinNT …. так это ты глазами user-а смотришь … это всеравно как по КДЕ про Юних судить …. Ты бы покопался в VB , из которого все внутренности приложений доступны (а не окошки). И как можно ими пользоваться, чтобы мордочки программок не показвались (того же Ворда), но тем не менее все делалось и само…..
      Но снова — это все не то …. разделяй и властвуй — power для power developers, а Evil для Users. А вот simplicity ….. А кому она нужна ? :)

      А между тем до сих пор не существует нормальных типов данны — масса(которая всегда >0, скорость, угол (который прямой никогда не достигнет 100′ ни в военное время ни из-за глюков… ) и др). С нормальной системой отслеживания несоответствий типов и конвертаций (вместо окна юзеру — А ну быстро исправил число, а то я тебе работать не дам! Бо не умею я с таким работать ;) Да хотя бы даже обычная система конфигов единых (а не 10-ка раззных для post/pre/во время компиляции/инсталляции/запуска/работы, админов , юзеров , ……..) не создана.
      Системы зависимотсей (который обычно находятся в неудовлетворенном состоянии ;) а не как привык считать make), которая бы работала с объектами любой величины, а не только файлами, и давала информацию о времени удовлетворения эависимостей, способах, времени оценки времени удовлетворения … ;)

      Хотя кому оно все надо? Пусть булочками пекарь занимается (~c) Зубинский

      А остальным оно должно прийти в кулечке и с хрустящей корочкой ….

      [url="http://www.advogato.org/article/436.html"]http://www.advogato.org/article/436.html[/url]
      (говоришь надо интеллектуально пользователей в процесс вовлекать? а как ? :)

    • Guest

      Класс!!! Найважнейшее «нечто» обязано быть нефункциональным! И наоборот — самое функциональное не важно! Надо это Билли отправить — а то он никак не может доделать Винду «до предела». Ведь как просто сделать самую «всемпонятнодоступную» ОС — m: goto m;! Ну, может еще для красоты кукиш на экране нарисовать. А потом внедрить ее на всех компьютерах!!! :-))

    • Guest

      > ….А насчет «активного интллектуального участия»
      > — ты бы видел напряженные лица слушателей курсов
      > по Оффис и Графике ;) То что для тебя
      > элементарщина — для других темный лес.
      Вспомните, сколько лично Вы потратили времени на начальное освоение компьютера — не важно с чего начинали, школьных/вузовских курсов информатики/программирования или «методом тыка»+книжки. А ведь слушателям курсов предлагают пройти тот же путь за пару десятков часов. Да и тот же Офис не такая уж элементарщина, мне как-то пришлось в Ворде разбираться с многоуровневыми списками («по просьбе трудящихся») — пару часов на это угрохал, хоть вроде и не дилетант.
      Проблема пользователей ведь не в неспособности «активного интеллектуального участия» , а в их воинствующем нежелании этого самого «участия» (мол, «Так с этим еще разбираться и изучать это надо! Неохота и некогда!.»).

    • Guest

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

    • Guest

      Стёб это — нефункциональность наиважнейшего. Наиважнейшее в сегодняшней модели имеет самую примитивную функцию и выражается ассемблерной псевдокомандой MOV Ri, Rj. Что ничего не отрицает. А изменится модель вычислений — изменится и всё прочее. Но только — когда изменится.

      Насчёт того, что программы создаются для «удовлетворения нужд пользователя». Я бы не стал так безапелляционно утверждать — по крайней мере, это всего лишь одна составляющая — и явно недостаточная. Главная ценность программ IMHO — не сиюминутное удовлетворение острой нужды Иванова-Петрова-Сидорова в одновременном просмотре порносайта, прослушивании любимых mp3 группы «Руки вверх» и заполнении товарной накладной. Ротшильды умудрялись делать деньги без всего этого, Форд умудрялся делать машины и пережить тяжелейший кризис — тоже без этого, Шекспир, Толстой и Достоевский не пользовались этим, Сикорский и король истребителей Поликарпов тоже в использовании этого не замечены, как и Бах, Бетховен, Шопен… И вот самое интересное — эти люди (несомненно выдающиеся в своих областях) как-то обходились без «удовлетворения нужд», а Иванов-Петров-Сидоров уже не может накладную выписать без 256 MB памяти и 1 GHz процессора. А вот обойтись без формализованный знаний все перечисленные никак не могли — это я к тому, что без программ — они могли, а без знаний — не могли. Так что и программы нужны для формализации знаний, а не «для удовлетворения нужд»…

      Кроме того, отправная точка — «удовлетворение нужд» подразумевает сиюминутность. Сейчас, глядя в финансовый отчёт, Иванов-Петров-Сидоров «нуждается» в одном, через 10 сек., увидев краем глаза бюст секретарши — в совершенно другом. Это, конечно, я сам уже стебаюсь — но принцип именно таков.

      PS

      А кукиш уже нарисовали, вы о нем сами говорите, но из принципиальных соображений не хотите его замечать: «как-то пришлось в Ворде разбираться с многоуровневыми списками … — пару часов на это угрохал». Пару часов — на многоуровневые списки, пару часов на то, пару часов — на сё, пару месяцев — на реестр, год — на библиотеку C++, ещё год — на нюансы конкретного компилятора в версии N, ещё год — на STL, ещё год — на понимание STL, ещё три года — на CORBA, … Так что оно в результате на экране-то нарисовано, а?

    • DitchCowSky

      >>[i]Пару часов — на многоуровневые списки, пару часов на то, пару часов — на сё, пару месяцев — на реестр, год — на библиотеку C++, ещё год — на нюансы конкретного компилятора в версии N, ещё год — на STL, ещё год — на понимание STL, ещё три года — на CORBA, … Так что оно в результате на экране-то нарисовано, а?[/i]

      Ну і ?

      Перейдем до аналогій — стандартна бібліотека C, рідні(кращі) компілятори на кожній платформі, і портабельний gcc, ковиряння в начинці X-Window, gsdl, ковиряння в Юніксах, вивчення особливостей кожної системи….
      Ну це про Вас
      :-)
      І скільки на це часу витратили ?
      Те що це все надоїло, і надоїдає — однозначно.
      Пора йти на пиво і шашлики

    • Malx

      > Вспомните, сколько лично Вы потратили времени на начальное освоение компьютера
      Ну это смотря что понимать под начальным… ;)
      Если сидеть за ним без посторонней помощи, то 5 минут.
      Мне рассказали как включить питание, потом что надо
      набрать «BRUN BOLO» а потом стрелочками и пробелом — ездить
      по лабиринту и стрелять ;)

      >Так что оно в результате на экране-то нарисовано, а?
      Кучка цветных пятен ;)

      Вопрос ко всем — можно ли создать линейно развивающуюся систему
      разработки ПО?
      То что существует сейчас — скачкообразное. Выходит IDE/lang/lib,
      живем на нем некоторое время.. Ругаемся, комментируем, баги отправляем.
      Потом скачек — выходит новая версия (X+1).0. И снова по новому, но
      с другого уровня.
      (кто не понял вопрос? или точнее — кто понял ? :)

    • Pavlosh

      > можно ли создать линейно развивающуюся системуразработки ПО?

      > (кто не понял вопрос? или точнее — кто понял ?
      Не следует переоценивать «заковыристость» вопроса :)))
      Вопрос понятен. Ответ — УГУ ((с) Зубинский ;-), то есть [практически = "почти" ;-)] можно (если не очень придираться к слову «линейно» — новые фичи — то надо добавлять (мы же говорим о «развитиии» всё таки)).

      Да, можно но довольно (если не «очень») [b]трудно[/b]/
      Надо очень постараться, в частности, надо освоить суть (не придираясь = «толерантно»относясь к «букве») того, что пишет (как «выколупывая» для нас из всяческих анналов/скрижалей (ну типа «во глубине сибирских руд…») так и генерируя собственными мозговыми клетками (или там извилинами между ими — я не спец ;-))Зубинский (I mean that!!! без усяких там «смайлЫков»).

      ЗЫ: Далёк от мысли зачинать «культ» личности Зубинского, сам полюбляю на него временами наезжать (то бишь спорить с ним), ещё и Мэтром при этом обзываю :))))))))))))
      Но, желающим советую быть осторожными — «случаи бывают разными»:
      «Ну-ну, сказала собака Баскервиллей, повстречав Герасима, ну-ну…» :)))))))
      Это я прошу понимать _очень_ иносказательно, в духе «поднявший меч…» альбо «не уверен, не …» а не вычислять, кто есть (или может быть) кем… :))))))

    • Pavlosh

      Дорогой Malx,
      ну давайте как-то тщательнЕЕ и спокойнЕЕ (чтобы, например, перед теми самыми «бабушками» не позориться) :))))))

      Например(ы):

      1)
      > вот simplicity ….. А кому она нужна ?
      а, с другой стороны
      > должны быть интерфейсы разных уровней
      и прочий «крик души» по поводу «запутанности» и т.п.
      Ну уже или — или, а то как в известном анекдоте: «Вас не поймёшь, ей нравится — тебе не нравится…» ;)))

      2)
      Про «бабушку» — не стоило бы: «гордыня»… :-(((
      Например:
      > Посмотрел я на код и мне расхотелось это делать …
      Чё, слабо??? А вот однин норвежский (то бишь как бы с «лесного хутора» :-) [b]студент[/b] так и перед переписыванием ядра не остановился.
      А раз «слабо» так нечего и над бабушкой изгаляться :)))

      3)
      > привычный метод добиться свободы — fork new project
      … дааа, не все понимают, что «не надо путать свободу с анархией и вседозволенностью» ((с) Е.К Лигачёв ;-). Я не против «fork new project», я только ближе к «последний довод [b]королей[/b]«, а слово «последний» говорит о том, что много усилий предшествовало…, а не «чуть что — сразу…» ;-)

      4)
      > бывают клоны, при появлении которых
      > те-не-однодневки исчезают без следа
      Да, и «…» бывает» и «…» бывает ;-)
      «Естественный отбор» назывется. И если посмотреть, то в этой борьбе погибает (на _много_ порядков) больше клонов, чем «не-однодневок», да и последние зарабатывают _почётное_ право так именоваться _после_ того, как они выстояли в этой борьбе
      Андрей больше говорил о том, что грех за недолго живущую боковую ветвь (-Меееее….) с людёв трудовую копейку брать :)))

      5)
      > То, что получается в итоге хуже, чем ничего
      Плохой злой дядька обидел? Недодал, не в том виде, кондиции,…? А что _Вами_ было сделано, чтобы он дал другое???????? Письмецо ему написать, для начала попробовать «порозумітися», а (в процессе) и предложить новый способ «многоуровневого…» Не всё же Бучу кичИться своими достижениями в способах спецификации ;-)

      …)

      :))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

    • Malx

      Что то Вы, уважаемый Pavlosh, кудато не в ту степь пошли ……

      То меня на «слабо» берете, то совершенно второстепенные слова во главу угла выносите, то разные тематики в одно предложение смешиваете….

      (хоят не спорю — я тоже не больно последователен :)

      За «УГУ» спасибо — значит можно продолжать движение. Свет уже виден — и даже снизу и сверху виден, но вот посредине между ними пока темно :(

      1 — Да не про запутанность речь. А про то, что никто тебе не даст яблоко без обертки, да еще и потребует, чтобы ел только вставными зубами его фирмы (всмысле поинтересоваться — «а может у меня свои зубы есть» — они как-то не соизволили).

      А simplicity — это не «простота», а термин, описанный Зубинским (со всеми своими оттенками :) — Она ведь на самом деле компромисс «и не вам и не нам» — «мы вас всеравно заставим учить всякий бред, но выучить наш бред легче, чем ихний».

      2 — что есть «гордыня»? Помоему это в Библии используется. А в простонародье это называется «гордость», только цвет у него белый, а не черный. А причем тут?

      А насчет слабо — Вы загляните в cut.c А потом поговорим :) Снаружи — простой интерфейс, а реализован как клубок переплетенный…. Оно идеологически не может переставлять местами столбцы — это там нельзя реализовать без переписывания >50% кода (а значит делать свой не оптимальный клон).

      3 — НЕТ! Я говорю не про «думать надо», а про «думай не думай , но ты _не сможешь_ вообще никогда физически (даже за деньги) сделать fork Samba». (src — lkcl рассказывал это на Advogato и в Subma-mail-list с численными характеристиками человеко-часов, уже затраченных и постоянно вносимых by M$, последний раз это обсуждалось, когда решали — делать ли клон .NET и до какого числа еще есть смысл начинать это делать…. Создали проекты MONO и POLY ;)

      4 — а за долгоживущую, так вообще грех — это же общественное достояние :)))))
      Кстати — Вы пользуетесь спичками? А Вы за них деньги отдавать любите ? ;)

      5 — (не в том виде) — да.. именно …
      А мною … да вот все ищу с какой стороны этот клубок распутывать (помните разговоры про кучу, которую можно или достроить или перекопать или новую рядом насыпать, забыв про старрую? :)
      Так вот досыпать сверху — глупо. Посему только за деньги (по аботе) делаю.
      Перекапывать — надо знать как. Новую — опять же, не просто так, а с приложенной идеологией насыпки.
      Как для примера идеологии — та самая линейно развивающаяся среда разработки, универсальный конфигуратор + зависимости (с точностью до байта файла, если требуется), разграничение прав доступа не по Юзверно, а по Програмно (каждой программе свой независимый UID — и чужие файлы низя писать! Если не разрешили)… ну и многое другое….

      Но вот это все завязано на такую штуку «как начать это все реализовывать так, чтобы каждый последующий шаг отталкивался от всего, сделанного ранее» ? А не от кусочка… Только в этом случае есть шанс одному реализовать тот базис, который удержит дальнейшее развитие системы от разброда и шатания… Вот ……
      А так … даже умные бумажки нет смысла писать…. Даже бумажки должны падать сверху (или сбоку) на КУЧУ, чтобы они были комуто нужны (бумажки Андрея падают сбоку :).

    • Guest

      Гм….
      > существует множество
      > «искривителей» (wrappers),
      warp — искривлять
      wrap — упаковывать, заворачивать в обертку
      или я не прав?
      Поставил lavaps в качестве screensaver-а — очень полезно!

    • Guest

      Игра слов — есть такая фраза :)

    • Guest

      > Насчёт того, что программы создаются
      > для «удовлетворения нужд пользователя». Я бы не
      > стал так безапелляционно утверждать — по крайней
      > мере, это всего лишь одна составляющая — и явно
      > недостаточная.
      Извините, Андрей, если эта составляющая и недостаточная — то наверняка необходимая. Поскольку ВСЕ, что создается «человечеством», создается всего лишь для двух целей — удовлетворения «нужды» творца в творении (процессе) и удовлетворения «нужды» потребителя (независимо от объективной необходимости этой самой «нужды») в предмете/услуге .
      > Главная ценность программ IMHO —
      > не сиюминутное удовлетворение острой нужды
      > Иванова-Петрова-Сидорова в одновременном
      > просмотре порносайта, прослушивании любимых mp3
      > группы «Руки вверх» и заполнении товарной
      > накладной.
      Думаю, Иванов-Петров-Сидоров с Вами не согласится. :-)
      > Ротшильды умудрялись делать деньги без
      > всего этого, Форд умудрялся делать машины и
      > пережить тяжелейший кризис — тоже без этого,
      > Шекспир, Толстой и Достоевский не пользовались
      > этим, Сикорский и король истребителей Поликарпов
      > тоже в использовании этого не замечены, как и
      > Бах, Бетховен, Шопен… И вот самое интересное —
      > эти люди (несомненно выдающиеся в своих областях)
      > как-то обходились без «удовлетворения нужд»,
      Да? Т.е. они исключительно питались святым духом, ходили пешком нагишом и творили путем рисования схем на песке? И почему Вы уверены, что все они не пользовались бы компьютером, кабы у них была такая возможность?
      Тем более упоминать при этом Сикорского с Поликарповым, когда сейчас даже «любители» вроде Берта Рутана на полную катушку используют компьютер при проектировании ЛА, не говоря уж о «фирмах».
      > Иванов-Петров-Сидоров уже не может накладную
      > выписать без 256 MB памяти и 1 GHz процессора.
      Может, но предпочитает это делать это с помощью 256 MB памяти и 1 GHz процессора, раз есть такая возможность. Кто сказал, что микроскопом невозможно забивать гвозди? Степень утилизации инструмента напрямую зависит от уровня культуры потребителя, специфической(культуры) для данного инструмента. Микробиолог и столяр могут иметь совершенно различные взгляды на сферу применения микроскопа.
      > вот обойтись без формализованный знаний все
      > перечисленные никак не могли — это я к тому, что
      > без программ — они могли, а без знаний — не
      > могли.
      Паворотти вон до сих пор гордится, что нот не знает, а ведь «величайший».
      Да и интересно, без каких таких _формализованых_ знаний не могли обойтись большинство Ваших «примерных»? Весь фокус в том, что ВСЕ они сами творили знания, которые потом различные «теоретики» «формализовывали» .
      > Так что и программы нужны для формализации
      > знаний, а не «для удовлетворения нужд»…
      Как по мне, хождение на руках не самый удобный способ передвижения,
      хотя, очевидно, Вы придерживаетесь иной точки зрения. ИМХО, программы создаются на основе формализованых знаний для использования этих самых знаний в прикладных целях, в т.ч. для формализации знаний . Или упоминаемая Вами программа для бортового вычислителя использовалась для формализации знаний?
      > того, отправная точка — «удовлетворение нужд»
      > подразумевает сиюминутность.
      Эта сиюминутность может быть периодической с относительно малым периодом на протяжении длительного интервала времени. В конце концов что есть жизнь как не сплошная «сиюминутность»!
      Кстати, интересно, как Вы оцениваете «нужду» в потреблении произведений «искусства», в т.ч. Шекспира и Баха.
      > PSА кукиш уже нарисовали, вы о нем сами
      > говорите, но из принципиальных соображений не
      > хотите его замечать.
      Да нет, я таки его вижу, даже очень четко. И он мне не нравится :-) Иначе не читал бы Ваши статьи. Только вот пытаюсь принимать мир таким как он есть.
      Всех по своим меркам не переделаеш.
      > Так что оно в результате на экране-то нарисовано, а?
      А это смотря под каким углом смотреть :-)

    • Guest

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

    • Pavlosh

      > Что то Вы, уважаемый Pavlosh, кудато не в ту степь пошли ……
      А по-моему, очень даже нормальная «степь»: и «уважаемым» остался, и «спокойнЕЕ» разговор пошёл :)))

      У нас (то есть среди завсегдатаев клуба «Зубик» (= «Зуб и Ко» ;-)) завсегда разговор широко идёт, как в том анекдоте:
      » — Слушай, ты знаешь, что XXX купил велосипед и теперь ездит как молния?
      — Что, так быстро?
      — Да нет — зигзагами»

      … и ничего, вроде небесполезно ;-)

      > Только в этом случае есть шанс [b]одному[/b] реализовать
      … ну что так уж одному да одному?
      Я тоже толпы не люблю, но я — за [b]ЕДИНОЧЕСТВО[/b]
      (первая буква — существенна!!! и это НЕ ошибка)
      То бишь как насчёт того, чтобы «… стоять на плечах …» ??? ;-)
      А то уж — одно из двух, если уж «одному» так одному, так зачем и статьи Зубинского читать (=»умные бумажки», да ещё и падающие якобы «куда-то не туда»), и Ваш любимый Javascript изучать, и т.д. и т.п. ….? :-)))
      В том числе касательно:
      > всмысле поинтересоваться — «а может у меня свои зубы есть» —
      > они как-то не [b]соизволили[/b]
      … а с чего бы это «им» стал быть «соизволять» ни с того ни с сего? Надо с «ними» общаться (как-то: по «мылу», в форумах…), надо им эти свои «зубы» показать (в самом хорошем смысле — как «тот норвежец» :-) они глядишь и задумаются, потом зауважают, а пооотооооомммм… :)))))

    • Pavlosh

      > Кстати — Вы пользуетесь спичками? А Вы за них
      > деньги отдавать любите ?
      Я (почти :-) с радостью отдаю деньги за всё, что «стоит денег», то есть нормально удовлетворяет мои «потребности» (то есть моё имя стоит в ряду «Иванов, Петров, Сидоров» ;-). А вот, скаааажем, за коробку сырых спичек, да ещё и ломающихся при попытке их зажечь… нуууу…. типааа…. становлюсь хуже собаки Баскервилей :)))
      А «скоропалительный» боковой fork — бывает и похуже сырых спичек

    • Pavlosh

      > А насчет слабо
      … да — да, насчёт слабо:

      > Вы загляните в cut.c А потом поговорим
      да не хочу я туда заглядывать — доверяю Вашему мнению: если Вы говорите, что
      > Снаружи — простой интерфейс, а реализован как
      > клубок переплетенный…. Оно идеологически не
      > может переставлять местами столбцы
      то я доверяю Вашему мнению (то есть [i]пока что[/i] по этому вопросу постою на Ваших плечах ;-)
      При этом:
      1) Обращает на себя внимание слово «идеологически». Так если такова идеология родителей, то может и не «тулить» (как говорят в Одессе) туда енти «столбцы»?
      2)
      > это там нельзя реализовать без переписывания>50%
      > кода
      ну, и в чём проблема? Если посмотреть на «Собор и базар», то енту почтовую компоненту таки да, «пару раз» таки переписали! И «никто не умер», даже наоборот! :)))
      См. также п. 1: так соответствует идеологии или нет?
      3)
      > не оптимальный
      ну, это дело как раз с наличием зубов и связано!!!

      ____________________________
      На вопрос: «Или у вас есть приличных бомб?»
      правильный ответ:
      «Их есть у меня!!!»
      :)))))))))))))))))))))))))))))

    • Pavlosh

      > зачастую
      Ой, «зачастую», почти всегда :-(((

      > если он захочет продавать микроскопы столярам
      Вопрос в том: если mainstream клепателей «мелко[скопоф|софтов]» так делает, так какова позиция каждого из нас: вливаться в эти ряды?
      Мне НАМНОГО ближе позиция, скажем, пекаря: если я пекарь, то я пеку таки булки и такие, чтобы мои соседи их покупали, ели (то есть удовлетворяли сколь угодно ежесекундные потребности ;-) и меня хвалили =>уважали
      Тоже самое можно переложить на пивовара (поскольку среди нас ценителей пива побольше будет :)

      ______________
      ЗЫ: При этом я далёк от мысли из себя «уникума» делать: нас ведь много таких (и в этом форуме тоже ;-), которые «кукиш видят и он не нравится»
      ЗЫ№2:
      [i]«На фоне неутихающей битвы гигантов, сопровождающейся блеском доспехов, шумом восторженной толпы и прочими, модно именуемыми «аудио-визуальными», эффектами, трудно заметить далекое копошение маленьких людей, строящих пирамиды. Но вот наступает вечер, представление закончено, деньги с благодарных зрителей собраны, гиганты отправляются отдохнуть, а пирамиды остаются.»[/i] (кто угадает, откуда это? ;-)
      … я — соглсен быть (то есть оставаться) «маленьким человеком» в этом смысле
      ЗЫ№3: Тост (например, к пиву :-) «Ну, за ЕДИНОЧЕСТВО!!!»

    • Guest

      > > зачастуюОй, «зачастую», почти всегда :-(((
      Да нет, далеко не всегда! Если производитель не захочет «потерать лицо» в среде «микробиологов», то не решится на массовый выпуск «микроскопов-молотков». А не захочет он только в том случае, если доходы от «натуральных микроскопов» будут превышать доходы от «-молотков». «Рынок есть рынок», леший бы его побрал! Самое противное в этом то, «микробиолог», попользовавшись «м-молотком», постепенно «остолярничивается», и в дальнейшем кроме как с молотком за микробами гонятся, ни на что не годным.
      >
      > если он захочет продавать микроскопы
      > столярамВопрос в том: если mainstream клепателей
      > «мелко[скопоф|софтов]» так делает, так какова
      > позиция каждого из нас: вливаться в эти ряды?
      См. выше. Тут выбор сугубо личный. Как по мне, надо быть «ближе к народу», но не опускаться до «попсни».
      > Мне НАМНОГО ближе позиция, скажем, пекаря: если я
      > пекарь, то я пеку таки булки и такие, чтобы мои
      > соседи их покупали, ели (то есть удовлетворяли
      > сколь угодно ежесекундные потребности ;-) и меня
      > хвалили =>уважали
      А если они (соседи) непременно желают , чтоб применяемые Вами дрожжи исследовались исключительно микроскопом-молотком?
      > маленьких людей, строящих пирамиды. Но вот
      > …, гиганты отправляются отдохнуть, а пирамиды остаются.»
      > (кто угадает, откуда это? ;-)… я — соглсен быть
      > (то есть оставаться) «маленьким человеком» в этом
      > смысле
      Ну, моя позиция в этом вопросе зависит от того, из чего и зачем пирамиды строят. Если из папье-маше как фоновые декорации для битвы гигантов, то — звыняйте, я лучше облачком прикинусь. :-)
      > ЗЫ№3: Тост (например, к пиву :-) «Ну, за ЕДИНОЧЕСТВО!!!»
      «Ага , за ЕДИНО- (и-ик) -НОЧЕСССТВО» :-)

    • Pavlosh

      > «Рынок есть рынок», леший бы его побрал!
      ДеВствительно!!! И именно из ентого и следует, что «почти всегда» :-)))

      > Если производитель не захочет «потерать лицо» в среде «микробиологов»,
      > то не решится на массовый выпуск «микроскопов-молотков». А не захочет он
      > только в том случае, если доходы от «натуральных микроскопов» будут
      > превышать доходы от «-молотков».
      Вот-вот, о том и речь (в духе «о времена, о нравы»): а если прибыль «превышает», то черт с ним, с тем «лицом» :-)))

      > Как по мне, надо быть «ближе к народу», но не опускаться до «попсни».
      В самую «бубочку»!!! Вот только труднінько бывает уследить «грань» ;-)

      > А если они (соседи) непременно желают , чтоб
      > применяемые Вами дрожжи исследовались
      > исключительно микроскопом-молотком?
      Желают — святое дело! Вот и Зубинский согласен, что «швейцарский» нож — полезная штука (а там много «прибамбасов» бывает) :-))))
      Ну, типа:
      - назвался «груздём» — полезай в кузовок;
      - назвался клизмой, полезай в … :-)))
      Однако же (чтобы, в том числе, и не сбиться на «попсу» :-) я бы побеседовал бы с ними — «поизучал» что значит «хотят»: :
      1) просто привыкли,
      или
      2) «им так сказали»
      или

      а потом (если нельзя переубедить аргУментом) предложил бы всё-таки что-то в виде toolkit — либо в виде «швейцарского» комбайна либо набор чего-то…

      > Если из папье-маше
      Дык ИМХО Зубинский вон для того и «надрывается», чтобы, в частности, «народ» знал из чего стоит строить, а к чему не стоит, кубыть, и приближаться (несмотря на «шумиху» любого сорта), в духе:
      ребята, не всё, что плавает на поверхности воды — лебедь ;-)

      > звыняйте, я лучше облачком прикинусь
      охотно «звыню», так как опять согласен!!! :)))

      > (и-ик)
      Нууу, чтобы не обижаться ;-) скажу лишь, что «справный моряк должОн знать свою ватерлинию» :))) что опять-таки возвращает нас к вопросу об отслеживании «грани»
      ___________________
      Доброй охоты {строительства|…}!!! ;-)

    • Glider

      >>кто угадает, откуда это?
      [url="http://itc.ua/article.phtml?ID=4114"]http://itc.ua/article.phtml?ID=4114[/url]

      >>если я пекарь, то я пеку таки булки и такие
      А если пекарь — один, и «других булок» соседи просто не пробовали, то устоит ли пекарь перед искушением печь «ниже» некоего эталона (если ему, конечно, известен этот эталон)?

    • Pavlosh

      > >>кто угадает, откуда это?
      > [url="http://itc.ua/article.phtml?ID=4114"]http://itc.ua/article.phtml?ID=4114[/url]
      С меня пиво (кубыть и с автора — тоже (за «промоушн»))!!! :-)))

      > устоит ли пекарь перед искушением печь «ниже»
      > некоего эталона (если ему, конечно, известен этот
      > эталон)?
      Как говорят американцы — платиновый вопрос!!!
      Искус — ОГРОМНЫЙ!!! Причём общеизвестный психологический фенОмен (усложняющий дело) — человек, поддающийся такому искУсу — не напрягается, а расслабляется (и плывёт себе по течению…;-)

      > А если пекарь — один, и «других булок»
      > соседи просто не пробовали
      Ну, дык мы вот ща как… :)))))

    • Guest

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

    • Pavlosh

      > когда знакомы … «крайности»
      приятно иметь дело с «бывалым» :)))

      > эмпирически — по глазам клиентов
      Угу. Я только говорил о том, что (всё же) следует вести с «обладателем глаз» [b]активный[/b] (ОК, ОК, «в разумных пределах»… ;-) и (по возможности) рациональный диалог: пусть не только глазами сверкает, а и аргументирует, а, в ответ, выслушивает и аргУмент разработчика (если он у него есть и более глубокий, чем (1) Билл — такой-растакой и/или (2) «поддержим отечественного разработчика» :-)
      _____________
      ЗЫ: Хотя мы ещё больше отклонились от темы «Х-окна» ;-) но я по прежнему не вижу в этом проблемы (тем более, что «мосты не сожжены» и, кубыть, вернёмся) :)))

    • Guest

      > в ответ, выслушивает и аргУмент разработчика
      Ну, мой основной аргУмент в том, что писать проги под Винду иначе как для консоли (и то при крайней нужде), я попросту отказываюсь, независимо от настроения начальника и суммы вознаграждения (в 100 раз больше чем «оно» стоит они все равно не заплатят :))
      > Хотя мы ещё больше отклонились от темы «Х-окна»
      > ;-) но я по прежнему не вижу в этом проблемы (тем
      > более, что «мосты не сожжены» и, кубыть,
      > вернёмся) :)))
      Касаемо Х-ов, то с ними я «плотно» не «общаюсь» (только изредка через tcl/tk, а большинство интерфейсов делаю через веб), однако расклад может и поменяться, надо быть готовым.

    • Guest

      Для повышения готовности :-) оченно хороший склад документации в pdf на X Window:

      [url="http://www.x-docs.org"]http://www.x-docs.org[/url]

      А при некоторых допущениях можно у меня выпросить книжку O’Reilly в html по программированию для Xlib…

    • Guest

      Ой, можно немножко подробнее о «некоторых допущениях»?

    • Guest

      Прислать на мой e-mail просьбу с увказанием, куда слать tar.gz

    • Pavlosh

      > Касаемо Х-ов, то с ними я «плотно» не «общаюсь»
      > (только изредка через tcl/tk, а большинство
      > интерфейсов делаю через веб),
      Мы (в целом) — тоже самое (за исключением tcl/tk (надеюсь, временно, то есть «не добрались ышо» :)) и (хотя мы и не настолько воинственны ;) в части Виндов наши усилия «коллинеарны» (ой, я правильное слово употребил? :) то есть не
      > иначе как для консоли
      что для нас означает, например, средства экспорта отчётов, демонстрируемых Mr. Evil’у
      > «через веб»
      в такой «апплетик» как MS Excel
      Уф, длинноватое вступление получилось. Так вот, это всё хорошо, но нужно этому «мистеру» и окошки хорошие «показать», значитца, «через веб» (он хотя и злой, но мы его, всё-таки любим ;)
      В этой связи мысль/вопрос:
      Кто-нить сравнивал модель взаимодействия с пользователем, реализованную в Х-ах с моделью, из которой «пляшут» стандарты «поведения», разработанные для Web-интефейсов — ECMAScript и т.п.? И в какую сторону первую «подгибают» (warp|wrap ;) Tcl/Tk ежели ею пользоваться «через них» ;)?
      Иначе говоря, Андрей (в некоторых статьях) говорит: «правильное «междуличье» настоящий программер делает только на Х-ах», в других (партизанско-клифтовых ;) такую же фразу заканчивает «типа» :))) «только на Web-интефейсах», в третьих статьях: «никуда (в том числе «напрямую» в Х-ы) не ходите — в Tcl/Tk всё есть». Где правда? Хочется же (при таких разных «мордах») серверную часть как-то правильно (в смысле архитектуры — ведь и иё надоть бдить) построить… :)))
      __________
      Sorry за нечёткие формулировки (хотя я же призывал «спойнЕЕ и тщательнЕЕ» :), но так или иначе я имею ввиду разного рода
      [url="http://www.linux.org.ru/view-vote.jsp?vote=5&back=votes.jsp"]«муки выбора»[/url] с добавлением «проистекающих» из «вэб-интерфейса» опций по host environmet’ам, как их называет ECMAScript и иже с ним. Этим мы, в частности, мучаемся, чтобы правильно построить presentation layer.

    • Pavlosh

      А куда слать
      > увказания
      насчёт того, что, всем известно: «обещанного три года ждут», но за такой, однако же, срок «штык» может совсем изоржаветь, и, соответсвенно, клятва «как штык…» совсем девальвирует, в «0″ :)))

    • Malx

      > То бишь как насчёт того, чтобы «… стоять на плечах …» ??? ;-)

      Ну на чьих-то плечах прийдется стоять всеравно…
      Небуду же я новую реализацию микросхем придумывать.. или там
      3-ичную логику использовать ;)
      Вопрос только на чьих именно… Плечей томного…
      Только у некоторых колоссов глиняные… даже не ноги (их
      то не поправишь особо), а плечи…. Всмысле основываются
      на некоем допущении (ex : что дождя не будет), а потом,
      когда дождь таки идет — всем раздают зонтики ;)

      > так зачем и статьи Зубинского читать
      А вот чтобы с выбором нужных плечь определиться.
      Чтобы не спускаться ниже чем достаточно. Т.е найти
      самый самый высокий уровень, который все еще не насаждает
      своей идеологии, растущей из глиняных допущений.

      > > Кстати — Вы пользуетесь спичками?
      > Я (почти :-) с радостью отдаю деньги за всё, что «стоит денег»

      Но ведь спички то одноразовые ;)
      Одноразовый (одногодний) soft тоже денег стоит… Но только на
      год ;)

    • Pavlosh

      Насчёт «плечей»… — нет предмета для спора, хотя… [url="http://3ton.com/mobile/reklama/Pinguin3.jpg"]какие МЫ все же разные :)))))[/url]

      > Но ведь спички то одноразовые
      Ежели я [b]честный[/b] (в профессиональном смысле) пекарь, пивовар, «спичечник» (или «спичник»? ;), «программер» (самый раскулый/разудалой, какой только можно представить) то я честно называю свой товар: спички ОДНОРАЗОВЫЕ.
      И произвожу при этом самые одноразовые спички (интересно, а кто-то видел многоразовые? ;) но такие, что в 100% случаев зажигаются (а не «глючат» ;) и имеют полный список прочих «фичей», который хотя бы 80% (принцип Парето ;) покупателей ожидают от «просто хороших одноразовых спичек».
      Гурманы почувствуют разницу :)))))))))

    • Malx

      Не глючат?! Спички, когда отсыреют (если errors in environment) тоже глючат :)))
      И их можно и по много раз использовать… если не поджигать ;) например для жребия…

    • Guest

      Очень неплохая статья. Понравилась. Как раз для навичков.

Новости партнеров