Столлман проснулся
Sep. 22nd, 2009 11:40 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Почитал тут отчет о Software Freedom Day в Бостоне.
Обратил внимание на впечатление о речи RMS
Блин, где был Столлман 10 лет назад, когда Иказа начинал свое предательство - проект GNOME.
Тогда RMS отзывался об Иказе с куда большим энтузиазмом. Mono - это фигня, это мертвому припарки.
Лицензионные и патентные проблемы где-то как-то преодолимы. А вот принципиальная проблема
Windows-подобного десктопа, который все делает за юзера сам, и если он что-то делает не так, хрен разберешься кто виновать - десктоп, hal или настройки конкретного дистрибутива.
В принципе, понятно что на протяжении многих лет control казалался естественным и неотъемлемым правом пользователя. Free Speech - это на самом деле как раз про control - это возможность изучить систему настолько, чтобы полностью её контролировать.
Но оказалось, что кроме внешних, юридических ограничений на этот процесс, бороться с которыми можно посредством принципов свободы слова, есть и внутренние, технические. Искусственно переусложненная, или просто непродуманная, архитектура.
Заметим что последнее время Столлман также борется с проприетарным Javascript. Там в общем-то картина почти та же самая - код по определению открыт для пользователя, чай не флэш. А вот разобраться в нем далеко не всегда возможно.
Обратил внимание на впечатление о речи RMS
Control has replaced Free Speech in Stallman’s the rhetoric. This is one of the most noticeable things I took away from today, that there has been a cultural shift from the way proponents of Free Software talk and communicate about the ideas and rationalities of Free Software principles. Although I’ve been picking up on the same advantages to using control language instead of freedom of speech in my own advocacy.и
Miguel de Icaza “is basically a traitor to the Free Software community”
Блин, где был Столлман 10 лет назад, когда Иказа начинал свое предательство - проект GNOME.
Тогда RMS отзывался об Иказе с куда большим энтузиазмом. Mono - это фигня, это мертвому припарки.
Лицензионные и патентные проблемы где-то как-то преодолимы. А вот принципиальная проблема
Windows-подобного десктопа, который все делает за юзера сам, и если он что-то делает не так, хрен разберешься кто виновать - десктоп, hal или настройки конкретного дистрибутива.
В принципе, понятно что на протяжении многих лет control казалался естественным и неотъемлемым правом пользователя. Free Speech - это на самом деле как раз про control - это возможность изучить систему настолько, чтобы полностью её контролировать.
Но оказалось, что кроме внешних, юридических ограничений на этот процесс, бороться с которыми можно посредством принципов свободы слова, есть и внутренние, технические. Искусственно переусложненная, или просто непродуманная, архитектура.
Заметим что последнее время Столлман также борется с проприетарным Javascript. Там в общем-то картина почти та же самая - код по определению открыт для пользователя, чай не флэш. А вот разобраться в нем далеко не всегда возможно.
no subject
Date: 2009-09-23 08:21 am (UTC)no subject
Date: 2009-09-23 08:31 am (UTC)То место, где для инструмента кончается его освоение и начинается рутинное использование (т.е. конец вхождения) для игры - это конец прохождения. После этого остается только спойлеры писать. (если мы об обычной игре, а не о многопользовательской).
Собственно, именно потому я и говорю "не надо играться с инструментом", что большая часть софта в нынешнем мире пишется людьми, которые не освоили используемые инструменты. Это касается в первую очередь библиотек и фреймворков, и в меньшей степени, но тоже касается, языков. Результаты - соответствующие.
Работа - это когда мы решаем задачи, внешние по отношению к используемому инструменту. Игра - когда мы решаем задачи, внутренние для игровой программы.
no subject
Date: 2009-09-23 08:39 am (UTC)Для игры порог вхождения - понять задачи и освоить интерфейс.
По последнему абзацу: когда я пишу скрипты для vim - я работаю или играю? :-)
no subject
Date: 2009-09-23 08:40 am (UTC)no subject
Date: 2009-09-23 09:00 am (UTC)Вот это по-моему неправильный подход. Идеологически. На практике, конечно, без него не обойтись, всегда бывает что задачу решать надо срочно, и лучше решить её неэффективно используя приспособленный для неё инструмент, чем решать совсем неподходящим, но знакомым инструментом. Но стремиться надо к тому, что если уж перед тобой стоят задачи, которые решаются данным инструментом, то инструмент надо освоить так, чтобы пользоваться им эффективно.
Зависит от того, что это за скрипты, и зачем они тебе.
Если я пишу себе в .vimrc автокоманду, которая при создании нового HTML-файла автоматически врисовывает туда некий темплейт, то я работаю.
Я решаю (в общем виде, на метауровне) внешнюю по отношению к vim-у задачу "создание html-файлов". Дотачиваю инструмент, чтобы в дальнейшем при решении этой задачи использовать его более эффективно.
Если
Игра с инструментом на самом деле - не совсем бесполезное дело. Это достаточно эффективный способ этот инструмент освоить. Но из этого ни разу не следует, что инструмент надо затачивать в первую очередь под это.
no subject
Date: 2009-09-23 09:06 am (UTC)Витус, покажы всё-таки хоть один не-ООП GUI тулкит. Если найдёшь — объясни, почему им никто не пользуется.
no subject
Date: 2009-09-23 09:13 am (UTC)Правда, "гигабайты и гигагерцы" были действительно выгодны компании, на которую я работал ранее, с 2003 по 2008. Вот только с тобой мы на эту же тему спорили явственно до 2003 :)
У меня, однако, действительно есть причины желать оптимальности для людей, не умеющих программировать - просто они связаны не с работой. Так получилось, что большинство моего круга общения, включая семью, не умеет программировать. И я не вижу у себя морального права требовать от них учиться программировать, посколько в их профессиональной области я сам понимаю не лучше.
Заметим, что реально Gnome и KDE, как среды, я ни для себя, ни для семьи не использую. Зато многие программы, разработанные на их библиотеках - ещё как.
no subject
Date: 2009-09-23 09:29 am (UTC)Угу, все мы знаем, сколько эта корпорация вкладывалась в проект GNOME.
А я вижу. И академик Ершов - видел, когда выдвигал лозунг "программирование - вторая грамотность".
Понятно, что речь идет не о зубрежке развесистых API всяких фреймворках, а об умении сформулировать свою задачу так, чтобы её мог выполнять компьютер, без дополнительных усилий со стороны человека. Это удобно и выгодно даже если реально никакой компьютер ты к этой задаче приспособить не сможешь, а будешь эту программу сам выполнять.
Где-то до начала 80-х IT развивалась именно в сторону упрощения этого подхода. Потом пошло развитие в противоположную сторону. Собственно об этом - противостоянии подхода "программа = высказывание того, чего ты хочешь добиться" vs "программа это изделие, сделанное профессионалом" я писал в статье о вреде дружественных интерфейсов.
Поэтому я считаю наиболее важной задачей - создание таких средств программирования, которые бы позволяли пользователю максимально легко научиться переводить регулярно выполняемую руками последовательность действий в программу, которая выполняется сама.
Оптимальность для пользователя достигается только тогда, когда пользователь может сам решать, что он делает сам, а что - делает за него компьютер.
Ну так других-то нет. Я тоже вынужден использовать всякие evince.
no subject
Date: 2009-09-23 09:34 am (UTC)no subject
Date: 2009-09-23 09:44 am (UTC)А большинство - интерактивные. "Пообщаться с таким-то". "Написать и оформить текст".
Или пакетно-интерактивные - "найти и прочесть информацию", но вот тут алгоритмизация весьма нетривиальна и одноврменно - уже выполнена на хорошем уровне в онлайновых сервисах. Доступ к которым - тоже интерактивная задача.
Программистский подход требует сводить интерактивные задачи к пакетным. Но это зачастую попросту неудобно. Даже мне неудобно, хотя как только задача действительно оказывается пакетной, я тут же хватаюсь за Питон. (В работе это регулярно приходится делать - благо документы там на XML).
no subject
Date: 2009-09-23 10:10 am (UTC)Это свойство не только GUI. Посмотри, к примеру на перловый модуль DBI - то же самое.
Беда в том, что разработчики библиотек далеко не всегда заботятся о том, чтобы пользователь мого не связываться с ООП.
no subject
Date: 2009-09-23 10:12 am (UTC)no subject
Date: 2009-09-23 10:17 am (UTC)Вот это - признак неумения программировать- неумение разбить задачу на подзадачи, и выделить среди них те, в которых интерактивность нафиг не нужна.
Плюс к тому, современные средства программирования крайне хреново позволяют автоматизировать пакетно-интерактивные задачи. То есть даже если ты выделишь пакетные подзадачи, прикрутить их к удобному интерфейсу для решения оставшихся интерактивных тебе будет сложно.
no subject
Date: 2009-09-23 10:53 am (UTC)Проблема именно этой задачи в том, что её предельно сложно формализовать. Тигр сливается с фоном. Компьютеру доступны для анализа только цвета. О существовании тигра, как животного он и не подозревает. Поэтому я, чертыхаясь и шипя, обведу этого самого тигра, а компьютер, даже с моей подсказкой, выделит набор цветных пятен.
Это я к тому, что быстрее обвести руками, чем пытаться "сказать ему, что надо, чтобы сам обвёл". Более того, это зачастую относится не только к компьютерам. :)
Т.е. есть область задач, где использование скриптов нецелесообразно.
no subject
Date: 2009-09-23 10:53 am (UTC)no subject
Date: 2009-09-23 11:27 am (UTC)>какому-нибудь аффинному преобразованию. Пользуясь
>базовым иксовым API.
Есть два варианта. Первый: Получить соответствующим образом отмасштабированный шрифт. Матрица преобразования (точнее, левый верхний квадрант этой матрицы, без третьей строки и третьего столбца. Они считаются равными 0/0/1 и 0/0/1) задаётся вместо параметра POINTSIZE в имени шрифта, в квадратных скобках, перечислением значений через пробел.
Т.е. что-то вроде '-microsoft-verdana-medium-r-*-*-*-[12 4 4 12]-*-*-*-*-koi8-r'. Затем следует открыть оригинальный шрифт через XLoadQueryFont ('-microsoft-verdana-medium-r-*-*-*-120-*-*-*-*-koi8-r'), получить его размеры из CharInfo, и выводить по сиволу, пропуская его оригинальный размер через это жэ афинное преобразование.
Другой вариант — сначала вывести строку в Pixmap как обычно, затем через XIE создать PhotoFlo (xieCreatePhotoflo), добавить в него через xieFloImportDrawable этот pixmap, поворот через xieFloGeometry (не забыв в sample_tech поставить xieValGeomAntialias), вывод в окно через xieFloExportDrawable, затем запустить это на выполнение через XieExecutePhotoflo. Кстати, практически вся мутота выполняется один раз, в последёющие — только выводишь строку в Pixmap и поворачиваешь его через XieExecutePhotoflo.
no subject
Date: 2009-09-23 11:31 am (UTC)О как. И что - это реально поддерживается хоргом?
Спасибо за объяснение, узнал что-то новое... Но проблема визивига от этого, конечно, никуда не девается...
no subject
Date: 2009-09-23 11:38 am (UTC)Кстати, в рамках юниксов было бы логично визифигу тащить потребный ему X-сервер с собой. Чтобы если штатный не справляется с чем-то (со шрифтов тех жэ нехватает или OpenGL у него не той системы), он мог отобразиться на чём угодно.
no subject
Date: 2009-09-23 11:40 am (UTC)Ну да, это ещё не отломали. Как ни странно. xfontsel -pattern вполне покажэт.
no subject
Date: 2009-09-23 11:43 am (UTC)Насколько я понимаю, при том что авторы библиотек рендеринга хотят независимости от того, куда рендерить.
> тащить потребный ему X-сервер с собой
А еще можно было DPS развивать. Но не прижилось..
Но Вы все-таки ответьте - почему хорговская команда всяко продвигает клиентский рендеринг? Они тоже спеков не читали?
no subject
Date: 2009-09-23 11:55 am (UTC)>библиотек рендеринга хотят независимости от того,
>куда рендерить.
А такжэ что рендэрить и для чего рендэрить. В общем, они бы хотели написать такую сферическую библиотеку рендэринга в воздухе, типа HAL — чтобы она что-то делалала, но при этом ничего полезного. Верю.
>Но Вы все-таки ответьте - почему хорговская команда
>всяко продвигает клиентский рендеринг? Они тоже спеков не читали?
Ну, во-первых, хорговской команде в цэлом по-моему пофиг. Во-вторых, продвигает скорее не хорговская команда, а гткшная/гномовская. Собственно, для этого грёбанного антиальясинга(анафема!) в gtk(анафема!) в своё время сделали libXft, а к нему потом под него написали Xrender(анафема!).
В-третьих, те, кто продвигает (Паккард, как самый яркий пример) по-моему таки да, не читали, в графических технологиях не разбираются и вообще думать верхней головой не обучены. Но имеют много свободного времени чтобы писать всякий говнокод.
no subject
Date: 2009-09-23 11:58 am (UTC)no subject
Date: 2009-09-23 12:05 pm (UTC)no subject
Date: 2009-09-23 12:18 pm (UTC)>того, куда идет картинка.
Ну, в том-то и дело, что мне не нужна такая жэ картинка в выводе таблички на экране и не принтэре. То есть, собственно, такой жэ она в любом случае не получится, а жалкие попытки симитировать одно на другом кончаются довольно жалко.
no subject
Date: 2009-09-23 12:48 pm (UTC)Как происходит порча внутреннего состояния библиотеки? Если через вторжение в память, то разделение на процессы поможет. Если через законные вызовы, то разделять на процессы нет смысла.
Кстати, ООП предусматривает защиту на уровне синтаксиса: программа не может испортить внутреннее состояние объекта иначе, чем через законные вызовы.
Интересно, чем тут поможет запуски библиотек в отдельных процессах? Как Вы хотите организовать взаимодействие библиотек, выполненных в виде процессов? Как в этом случае различить версии библиотек?
А как уменьшить количество функций, если суть задачи пока не удалось свести к малому числу функций?