?

Log in

No account? Create an account

Июль, 12, 2007

Начало обсуждения темы см. в моих предыдущих заметках:
RB18. Как зарождалась свобода открытых исходных текстов
RB19. Разные взгляды на дух свободы программного обеспечения
RB20. Open Research Programming как альтернатива Open Source

Free Software и Open Source — это движения за открытость программирования. И в этом заключается их позитивная роль. Открытость — это инструмент борьбы с узурпированием знаний и технологий крупнейшими компаниями. Открытость нужна прежде всего потому, что при нынешних темпах деградации образования программирование — одна из самых важных областей интеллектуального труда, являющегося локомотивом развития постиндустриального общества, — станет уделом избранных.

В конце января этого года на сайте старейшей в Европе компьютерной ассоциации — Британского компьютерного общества (British Computer Society) — отмечающей в этом году своё 50-летие, была опубликована заметка под броским заголовком "Гибель компьютинга" (Death of Computing).

Её автор, преподаватель информационно-коммуникационных технологий (ИКТ) из английской "глубинки", выдвигает тезис о том, что настало время иначе взглянуть на роль фундаментальных знаний в сфере ИКТ. Если раньше на научный статус компьютерных наук никто не посягал, то теперь мы становимся свидетелями того, как 8-летний карапуз своими руками создаёт виртуальных роботов без знания программирования и математики. Миновали те дни, когда всем заправляло программирование на ассемблере, когда программирование волновало воображение и было передовым рубежом науки, когда создавались сети компьютеров и требовалось заполнить белые пятна на карте мира прикладных программ. Всё это осталось в прошлом. Сегодня корабль получил пробоину ниже ватерлинии. В США число студентов, выбравших компьютерные науки, за период с 2000 по 2005 гг. упало на 39%. В Австралии на повестке дня вопрос о сокращении преподавательского состава по ИТ-дисциплинам. Прерывания, циклы, алгоритмы, формальные методы — всё это уже ничего не значащие слова. ИТ-индустрии нужны ресурсы для удовлетворения всё возрастающих информационных потребностей рынка. Наша жизнь в XXI веке кардинально изменилась по сравнению с тем, что было в 1960-х, 70-х, 80-х и даже в начале 90-х годов. Компьютеры стали неотъемлемой частью нашего существования — они унифицированы и вездесущи.

Что же, по мнению этого "революционера", надо делать? Разумеется, отбросить старые оковы, мешающие двигаться на пути прогресса. Нужны инновации, креативность, "дивергенция мышления". Новые факультеты компьютинга в высшей школе должны стать факультетами междисциплинарными, вбирающими в себя идеи из биологии, дизайна, истории, медицины. Это даст жизнь новой дисциплине — новому компьютингу XXI века!

Что тут сказать? Если бы дело происходило не в консервативной Британии, а по ту сторону Атлантического океана, была бы ещё понятна подобная риторика. Но здесь… Здоровый прагматизм против научного идеализма? На самом деле, подоплёка вопроса лежит гораздо глубже, чем это может показаться на первый взгляд. Будем откровенны, разве нет подобных настроений у нас в стране? Это естественно, поскольку причины-то вполне объективны.

Владимир Игоревич Арнольд (академик РАН, президент Московского математического общества, член Исполкома Международного математического союза) пишет: "Расцвет математики в уходящем столетии сменяется тенденцией подавления науки и научного образования обществом и правительствами большинства стран мира. Ситуация сходна с историей эллинистической культуры, разрушенной римлянами, которых интересовал лишь конечный результат, полезный для военного дела, мореплавания и архитектуры. Американизация общества в большинстве стран, которую мы наблюдаем, может привести к такому же уничтожению науки и культуры современного человечества. Математика сейчас, как и два тысячелетия назад, — первый кандидат на уничтожение. Компьютерная революция позволяет заменить образованных рабов невежественными".

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

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

Такое ощущение, что в вузах (и далеко не только в наших) представлена прикладная математика, есть языки программирования и конкретные подходы (объектно-ориентированное программирование, функциональное программирование и т.д.), а дальше уже идут аморфные информационные технологии и всевозможные причиндалы. Т.е. фундаментальные метазнания подменяются мозаичными знаниями "с миру по нитке". Чтобы получить знания по ИТ, достаточно почитать книги. В свободное время. За чашкой кофе. Чтобы получить фундаментальные метазнания по программированию, надо работать под руководством Учителя и шевелить мозгами. В этом большая разница.

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

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

Наш первый программист-академик Андрей Петрович Ершов выделял три ветви программирования: теоретическое (наука), системное (базис приложений) и прикладное (надстройка приложений). Ничего существенного в этой классификации не поменялось. Просто третье теперь поставлено во главу угла. Homo sapiens (человек разумный) постепенно трансформируется не в Homo intelligens (человек сведущий), а вырождается в Homo rationalis (человек рассудочный). С утратой понимания глубинной причинно-следственной связи вещей и явлений ("почему"), мы всё больше переходим на потребительско-рецептурный образ жизни ("как").

Академик В.И.Арнольд достаточно резко очертил социальную роль математической науки: "Роль доказательств в математике подобна роли орфографии или даже каллиграфии в поэзии. Тот, кто не научился искусству доказательства в школе, не способен отличить правильное рассуждение от неправильного. Такими людьми могут легко манипулировать безответственные политики. Результатом могут стать массовый гипноз и социальные потрясения. Л. Толстой писал, что сила правительства основана на невежестве народа, что правительство знает об этом и потому будет всегда бороться против просвещения".

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

И вот уже известный специалист в области программирования, Диомидис Спинеллис, пишет обстоятельную книгу “Анализ программного кода на примере проектов Open Source” (2004), где раскрывает подходы к тому, как извлекать технические решения и используемые методы, ковыряясь в чужом исходном тексте. Потрясающе! Получается, что исходные тексты — это одолжение, которое делают его разработчики, не удосужившиеся подготовить детальную проектную документацию (некогда, лень, жалко) и при этом не чурающиеся получать деньги за передачу формы, утаив содержание.

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

Вспомним слова Линуса Торвальдса: "... будущее операционных систем будет определяться потребностями пользователей, а не любопытством программистов ... Технология более не управляет рынком. Им движут желания людей..." Насколько мне известно, Линус Торвальдс опубликовал и произнёс около сотни интервью и речей, но он не опубликовал ни одной работы, освещающей структуру ядра Linux. Почему? Если вы посмотрите на деятельность проф. Вирта, который не кричал на каждом перекрёстке о свободе, но делал для неё неизмеримо больше многочисленных болтунов, то в его работах и книгах детально представлено внутреннее устройство систем, подходы к решениям, по винтику разбираются многие механизмы.

Чтобы владеть по-настоящему технологией, надо в её разработке участвовать. Желательно с самого начала. И цениться будет не технология сама по себе, а люди — живые ее носители.

Если помните, раньше, на заре туманной юности, идеологи Open Source проповедовали целую культуру. Она была на первом плане и в BSD-среде, и у Столлмена, и у Торвальдса. Речь шла о культуре созидания. Обратите внимания: созидания, а не распространения. В настоящее время разговоры вокруг Open Source нередко сводятся к обсуждению открытых лицензий. Но что такое лицензия? Это правовая обёртка, в которую надо заворачивать продукт, когда он уже дошёл до кондиции. Раньше ценился процесс. Общение людей, объединённых общей задачей, делающих общее дело. И не во имя будущих отчислений. В центре внимания был процесс творчества.

Если же сейчас некая компания (Microsoft, Sun, IBM и др.) всё сделает втихомолку, даже будет какое-то время продавать продукты без исходников и потом решит перейти в плоскость Open Source, то она с точки зрения лицензий ничем не будет отличаться от тех, кто изначально всё это строил на таких принципах. Понимаете? Т.е. Open Source из культуры превращается в фантик, в удобную обёрточную бумагу, которая позволяет тем или иным компаниям за счёт демпинга решать конкретные рыночные задачи на данном этапе.

Исходники стали ценностью, они ногой открывают дверь в новые рыночные ниши, получают мгновенный доступ к массовой аудитории. Это демпинг по-новому. Демпинг с человеческим лицом. Гуманитарная помощь.

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

Основополагающий принцип открытого исследовательского программирования (Open Research Programming) в другом: здесь важны люди (открытость), идеи (исследования), результаты (программирование). Именно эта тройка и раскрывает суть нового подхода. Для людей важна среда творческого общения. Идеи необходимо формулировать так, чтобы они были отчуждаемы от автора. Результаты выражаются не только и не столько в исходном тексте, сколько в совокупности материалов, важных для их применения, понимания и дальнейшего развития.

Для Open Research Programming как концепции важны три момента:

1. Собственность.
Общественное достояние. Продукт интеллектуального труда передаётся в общественное пользование (public domain).

2. Наука.
Исследования (основанные на науке) первичны. Продукт интеллектуального труда — не просто программный продукт с открытыми исходными текстами, но ещё и открытые технологии.

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

Движение Open Source возникло как основа децентрализованного (кустарного) производства программных продуктов, где открытие исходных текстов является главной мотивацией участия добровольцев. В настоящее время Open Source используется также и в промышленном производстве (как правило, на стадии отчуждения готового результата, полученного традиционным закрытым образом в крупных компаниях). Open Source в случае участия большой группы людей крайне неэффективно при работе с нуля (мнение Эрика Реймонда). Сначала кто-то в очень узкой группе в закрытую создаёт основу, а потом её переводят в публичное развитие Open Source. По сути это своеобразная форма опытного производства (получения опытного образца). Серийным же производством занимаются группы и компании, специализирующиеся, например, на выпуске дистрибутивов Linux.

Free Software и Open Source с их акцентом на результат в виде исходных текстов стимулируют программное производство. Но ведь прежде чем переходить к производству (что кустарному, что промышленному), надо провести исследования. Научно-исследовательские и опытно-конструкторские работы (НИОКР, R&D). Это белое пятно в Free Software и Open Source. Только после прохождения этой стадии можно переходить к опытому и серийному производству. А если её нет — наукоемкость нулевая, продуманность систем сомнительная, работа больше строится на переделке известных вещей, так сказать, из общих соображений.

НИОКР в сфере программирования имеет свои нюансы. Это и теоретические изыскания, и конкурентная разведка, и использование макетирования для проверки идей, и критический анализ разных вариантов решения. Об особенностях исследовательского программирования написано немало статей. Так, в начале 1990-х годов швейцарские ученые из ETH Zurich А.Киральф, К.Чен и Й.Нивергельт выделили следующие важные моменты:

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

Мне могут возразить: но Free Software и Open Source не запрещают вести НИОКР, не запрещают создавать и предоставлять проектную документацию. Ещё бы они это запрещали! Но это не стимулируется. Никак. С таким же успехом там не запрещается и свободно продавать огнестрельное оружие (кстати, здесь проходит точка разногласий между Торвальдсом и Реймондом), или даже давать бесплатно, в нагрузку к софту. Всё это было бы смешно, когда бы не было так грустно…

Безусловно, если брать лицензионный уровень, то Open Research Programming приближено к лицензиям MIT, BSD; оно покрывается требованиями Open Sourсe (является частным случаем). Но это принципиально иное: это другая КУЛЬТУРА, другое мировоззрение, другая система ценностей. Это наиболее крайняя, РАДИКАЛЬНАЯ форма воплощения идей сообщества открытых исходных текстов. На чистом сливочном масле. Не придраться. Потому что из-за отчуждения результатов в общественное достояние (public domain) деньги из рассмотрения изъяты. И собственность авторам остаётся только в головах и бирках (надписях в исходниках и лицензиях). Нечего делить. В этой схеме нет понятия отчислений (роялти). Нет таких отношений. Один оригинал и неограниченное количество бесплатных копий. Если за оригинал платят грантами, добровольными пожертвованиями (donation) — это нормально. Если не платят — тоже нормально. Деньги надо извлекать не отсюда, а из порождённых этим процессом вещей (новых знаний, новых продуктов, новых контактов).

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

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

Если движение Open Research Programming начнёт принимать массовый характер, это существенно изменит ситуацию. Ситуацию с мозгами в первую очередь. Чем больше открываешь ты, тем больше открывают тебе. Возникает конкуренция открытости. А не её имитация ради получения прибыли. Именно поэтому Open Research Programming может стать хорошим катализатором развития наукоёмкого программного обеспечения. Оно в силах изменить нынешнюю безрадостную картину гегемонии бизнеса, подминающего под себя всё: и умы, и чаяния, и даже государственную власть.

Latest Month

Март 2009
Вс Пн Вт Ср Чт Пт Сб
1234567
891011121314
15161718192021
22232425262728
293031    
Разработано LiveJournal.com
Designed by Paulina Bozek