vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner
Есть такой анекдот:

Диалог в бюрократическом учреждении:
- Имею ли я право?
- Конечно имеете!
- Так могу ли я?
- Нет, не можете!

Положение дел в области Free Software чем дальше, тем лучше описывается этим анекдотом.
Имею ли я право исправлять глюки и дописывать нужные мне фичи в Mozillу, OpenOffice, ядро Linux, Gimp etc - да сколько угодно. Лицензия позволяет.
Могу ли я? Увы, трудоемкость, необходимая для вникания в большой проект на несколько миллионов строк - соврешенно prohibitive. Даже при наличии квалификации. А протолкнуть свои изменения в upstream - еще сложнее.

Увы, свободу приспосабливать компьютер под наши потребности мы практически потеряли. Большая часть OpenSource продуктов используется так же, как и проприетарные - не как текст, который можно прочитать и адаптировать к своим нуждам, а как черный ящик.

Еще десять лет назад это было не так. Тогдашние OpenSource проекты были достаточно компактны, лучше документированы, и всё необходимое тайное знание содержалось в коде. Было дело в 99-м году я при каждом новом релизе ядра ветки 2.2 внимательно читал патчи чтобы решить - ставить это срочно на боевой сервер или погодить пока.

Сейчас я пожалуй, не пойму в этих патчах почти ничего. большая часть тайного знания необходимого для написания компонент ядра, из кода без больших усилий не извлекается. А отдельных источников этого знания почти и нет. Ну по ядру еще есть. А попробуйте найти вменяемое описание работы с Bluetooth. Содержащее внятные схемы стэка протоколов, описание общей идеологии и того как это раскладывается на API. Не существует такового в природе.

В 80-е годы, когда Столлман начинал проект GNU, взятая за основу модель - утилиты unix общающиеся между собой ыерез пайпы позволяла легко изолировать кусок кода, четко определить что у него на входе, а что на выходе и таким образом легко разобраться в его работе.

Сейчас reusable компоненты как правило делаются в виде динамических библиотек со сложным API. Где-то это реально необходимо, где-то это явный overkill. Особенно если учесть что с первого раза спроектировать хороший API для рещения любой задачи - весьма нетривиально. Поэтому API у многих opensource библиотек плывут. Совершенствуются. Но это приводит к головной боли при поддержке используещих их программ.

Более того, за последние 10 лет в Open Source пришло множество программистов воспитанных на Visual Basic и прочих изделиях Microsoft, где от программиста не предполагается четкого понимания задачи в целом - это понимание - коммерческая тайна Microsoft.
Вот пример в MSDN, делайте по образу и подобию. Воспринимайте эти слова как магическое заклинание, как ритуал.

Но там хотя бы сидят несколько сот человек, которые это дело документируют.

Заметим что микроядро в Hurd было на самом деле нужно не столько по тем техническим соображениям, которые приводил Таннебаум в споре с Линусом, сколько именно из соображений well-defined interfaces, которые позволили бы множеству независимых разработчиков работать над разными подсистемами ядра. Но ни Таннебаум, ни Столлман этого тогда сфонрулировать не могли. Потому что это на самом деле вопрос социальной психологии а не технологии.

Некторые решения, которые уже фактически приняты сообществом как стандарт, иначе как миной замедленного действия под идею свободного софта я назвать не могу. Ну про CUPS уже Раймонд всё написал. Ага, тот самый Раймонд, который выдумал термин Open Source как менее "страшный" чем "Свобода", чем немало способствовал возникновению данного положения. Еще большей миной замедленного действия я считаю D-Bus. Не то, чтобы плоха была самой идеи общесессионной или общесистемной шины сообщения. Но во-первых, реализация - нету стандартного набора утилит для работы с этим из shell. Не отладочних прибабахов вроде dbus-send и dbus-monitor, а полноценных инструментов для работы класса NetCat. Во вторых, документированность. Уже сколько лет в комплекте bluez, который иначе чем через dbus нынче с пинкодами не работает, идет passkey-agent, написанный настолько криво, что при его завершении libdbus ругается на stderr. И никто не соберется исправить.

К сожалению, в 96-97 году, когда начинались проекты KDE и GNOME не нашлось гения, который бы предложил архитектуру GUI-среды, способную развиватья в условиях Free Software, и при этом оставаться простой и понятной. Впрочем, это как раз был переломнымй момент, когда менялись условия Free Software - вместо немногочисленных, но весьма квалифицированных хакеров 80-х, кончавших одни и те же университеты, и понимавших друг друга с полуслова, повалила толпа любителей, осваивавших программирование на персональных компьютерах самостоятельно.

Как теперь из получившейся ямы вылезать я не знаю. Выкингуть существующие миллионы строк кода просто так не получится. Хотя место большей части этого кода - именно на помойке.

Re: а задумывались вы?

Date: 2008-06-19 08:48 pm (UTC)
From: [identity profile] besm6.livejournal.com
В функциональных языках, заметим, такой подход работает и никого не напрягает. Потому что там можно сказать

(defun sort_int_key (x) (lambda (x) (sort_common :speed :NlogN :memory :N2 :use-cache t :key-func (lambda (x) (car x)) :key-type 'int :list x)))

и дальше пользоваться sort_key_int. В корявых языках это приходится коряво эмулировать, что, понятно, не способствует.

Re: а задумывались вы?

Date: 2008-06-19 10:11 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Осталось сделать эти языки мейнстримом, и при этом не дать их привести в тоже кошмарное состояние, что современные мейнстримные языки :)

Re: а задумывались вы?

Date: 2008-06-19 11:03 pm (UTC)
From: [identity profile] besm6.livejournal.com
Мейнстримом их невозможно сделать по причине недоступности их интеллекту современного промышленного кодера. Мейнстримные языки ему тоже недоступны, впрочем, но в них это умело скрывается. А тут он сразу не может сделать даже видимости работы.

Re: а задумывались вы?

Date: 2008-06-20 07:32 am (UTC)
From: [identity profile] gineer.livejournal.com
а на чем написана реализация этого функционального языка? на чем написана реализация базовых библиотечных фунций?

или может вы будете утверждать что реализация их до конца функциональна, и арифметика в них реализуеться чисто функционально, как что-то типа

1 это ()
2 это (())
3 это ((()))
... и так далее

:))))

ЗЫ Холиварить -- не умно

Re: а задумывались вы?

Date: 2008-06-20 07:46 am (UTC)
From: [identity profile] besm6.livejournal.com
Мы про написание реализации языка или про написание приложений? В принципе, сейчас производительность компьютеров уже позволяет реализовать лисп-машину на уровне (микро)ядра, и даже драйвера писать на лиспе. Другое дело, что по историческим причинам сделано иначе. Но это не повод писать прикладные программы на объектно-ориентированном ассемблере и ссылаться на сложность тестирования и прочих проверок правильности. Их сложно тестировать потому, что они написаны в парадигме, затрудняющей тестирование, при том, что никаких оснований для выбора именно этой парадигмы, кроме нежелания или неумения думать, уже давно нет. Во времена, когда изобретался лисп, они хотя бы были...

Re: а задумывались вы?

Date: 2008-06-20 08:57 am (UTC)
From: [identity profile] gineer.livejournal.com
можно подумать объектно-ориентированные интерфейсы на лиспе отлаживать проще... это даже не говоря о том, что лисп сам по сути низкоуровневый как ассемблер.

Так в чем выгода?
Кроме понятной и приятной эзотеричности.

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

Но это ведь гораздо сложнее, чем огульно хаять то что уже есть...

Re: а задумывались вы?

Date: 2008-06-20 11:42 am (UTC)
From: [identity profile] besm6.livejournal.com
это даже не говоря о том, что лисп сам по сути низкоуровневый как ассемблер.

Это только первые полчаса.

Вот предложите парадигмы не затрудняющие, а способствующие тестированию.

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

Если же у функции необозримая спецификация, это уже архитектурная ошибка, и ее надо исправлять дроблением функции.

Предложите подходы и инструменты одновременно и более простые, и более эффективные чем существующие.

А вот этого не требуется. Требуется из существующих выбирать правильные.

Re: а задумывались вы?

Date: 2008-06-20 11:53 am (UTC)
From: [identity profile] gineer.livejournal.com
//Вот функциональная парадигма способствует.

да но... что если требуется функциональность, которая не представима в виде возвращаемого результата. А ведь с выводом ГУИ так и случается -- функция исполняется, но увидеть её работу можно только на экране, а не по возвращаемому значению.

Кому выбирать? И кто будет определять, что правильно, а что нет? Вы? За всех?

Re: а задумывались вы?

Date: 2008-06-20 01:02 pm (UTC)
From: [identity profile] besm6.livejournal.com
Как в Хаскеле сделано. Все побочные эффекты - в специальный загон, из которого нет пути назад.

На Хаскеле, кстати, как я тут недавно узнал, window manager написан. Гуевее не бывает...

Re: а задумывались вы?

Date: 2008-06-20 01:12 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Монады это тяжкий кошмар, мозгу от них пути назад точно нет.
Я тут пытался проектировать фреймворк для генерации GUI на .NET, приходилось постоянно отгонять мысли "а вот на хаскеле это сделалось бы двумя строчками".

Date: 2008-06-20 03:46 pm (UTC)
From: [identity profile] max630.livejournal.com
> На Хаскеле, кстати, как я тут недавно узнал, window manager написан

ага

реконфигурация через пересборку :)

Date: 2009-10-02 12:48 pm (UTC)
From: [identity profile] --ronin--.livejournal.com
одной кнопкой :)

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

August 2025

S M T W T F S
     1 2
3456789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 3rd, 2025 08:10 pm
Powered by Dreamwidth Studios