Максим Отставнов. Прикладные свободные программы в школе --------------------------------------------------------------- © Copyright Максим Отставнов, 2003 Email: maksim@otstavnov.com WWW: www.otstavnov.com ? http://www.otstavnov.com ISBN5-94842-003-5 Origin: http://www.otstavnov.com/fsft/ISBN5-94842-003-5/ISBN5-94842-003-5.html ? http://www.otstavnov.com/fsft/ISBN5-94842-003-5/ISBN5-94842-003-5.html ---------------------------------------------------------------

УДК 372.800.2

ББК 74.263.2

О80


Использован текст лекций, публиковавшихся автором в приложении к газете "Первое сентября" "Информатика" (http://inf.1september.ru) в 2002-3 г., а также фрагменты статей, ранее публиковавшихся в журналах "Компьютерра" и "Домашний компьютер".

Материалы, представленные в этой книге, также доступны в Интернет на странице www.otstavnov.com/fsft на условиях Свободной лицензии ГНУ на документацию (GNU FDL). Все прочие права сохраняются за автором.


Максим Отставнов

О80 Прикладные свободные программы в школе. -- М.: Издательство "Медиа Технолоджи сервис", 200". -- 96 с.: ил.

ISBN 5-94842-003-5


Курс лекций, включенных в брошюру, знакомит читателя с популярными свободными прикладными программами, полезными при преподавании информатики в средней школе. В обзор вошли пакет "офисных" программ OpenOffice.org, коммуникационный пакет Mozilla, графический редактор GIMP, современные графические среды GNOME и KDE и другие программы.

Для преподавателей информатики, методистов и студентов и аспирантов соответствующих специальностей.


В© 2002-3, Максим Отставнов.

В© 2002, Андрей Добровольский (раздел 10.4).




Оглавление

Зачем программам быть свободными?

Лекция 1. OpenWriter -- свободный word-процессор

Лекция 2. Свободный инструментарий работы с текстом

Лекция 3. OpenDraw -- свободный редактор векторной графики

Лекция 4. GIMP -- свободный редактор растровой графики

Лекция 5. OpenCalc -- свободный редактор электронных таблиц

Лекция 6. Строка длиною в жизнь

Лекция 7. Графический интерфейс пользователя

Лекция 8. ГИП II: "Легкие" графические среды

Лекция 9. ГИП III: Интегрированные графические среды

Лекция 10. Свободные коммуникации

Литература

Об авторе



Зачем программам быть свободными?

0.1 Свободное и несвободное ПО

На сегодня в школе, как и в некоторых других сегментах рынка, доминируют "альтернативные", нестандарные операционные системы и платформы (такие, как MS-DOS, Microsoft Windows, Microsoft Windows NT, MacOS версий до X). Пользование ими описывается в учебниках, на них ориентируются авторы отечественных учебных программ.

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

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

Могут ли сегодня свободные реализации стандартных технологий качественно обеспечить учебный процесс в школе? Вопрос неоднозначный, и мы видим ответ на него двояким:

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

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

0.2 Право и экономика ПО

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

Свободными называются программы, автор (или иной обладатель имущественных авторских прав) которых опубликовал (обнародовал) их в сопровождении так называемой "свободной лицензии", или, если следовать терминологии отечественного законодательства, публичного авторского договора, передающего приобретателю права: 0) пользоваться программой для любых целей (в рамках российского законодательства это тавтология, так как у правообладателя нет правомочия ограничивать цели, в которых собственник экземпляра программы может ее применять) и на неограниченном количестве компьютеров или мест в сети; 1) беспрепятственно получать доступ к ее исходным кодам; 2) изготовлять (производить) неограниченное количество дополнительных ее экземпляров, как для собственного пользования, так и для распространения или сдачи в прокат/аренду на тех же условиях, возмездно или безвозмездно (по своему выбору); 3) модифицировать ее как для собственного пользования, так и для распространения на тех же условиях.

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

Свободные программы (free software) не следует, как это часто делают, путать со "свободно распространяемыми" (shareware, иногда почему-то называемыми у нас "условно-бесплатными") или "бесплатными" (freeware).

Также следует иметь в виду, что, хотя термин "программы с открытыми исходниками" (open source software) часто используется как синоним "свободных программ", им иногда злоупотребляют.

Свободное ПО не следует путать и с "открытым" (open software): "открытость" относится к соблюдению стандартов на интерфейсы, и только, а свобода -- к условиям лицензирования и модели разработки.

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

Узел терминологических тонкостей и концептуальных сложностей можно разрубить, введя альтернативное определение: свободные программы -- это программы, все услуги по разработке, модификации, сопровождению и поддержки которых продаются на свободном рынке. Если вы видите, что, например, свободный дистрибутив какой-либо версии GNU/Linux, включающий, помимо операционной системы и нескольких операционных сред, большое количество прикладных программ, стоит от нескольких десятков до нескольких тысяч рублей, в то время, как "набрать" даже небольшую часть этой функциональности программами несвободными может обойтись и в десять, и в сто раз дороже1, причина этому не в "бесплатности" чего-либо, а в конкурентности рынка.

Мы избавим читателя от обсуждения анатомии рынка (как формируются цены, кто, за что и каким образом вознаграждается), отослав интересующихся к соответствующей литературе [2, 3]. Важно то, что соответствующий рынок успешно развивается уже в течении четверти века, есть примеры исполнения им задач, немыслимых для отдельных корпораций (самый яркий из них -- разворачивание в девяностых на основе свободных программ и систем всемирного сообщества сетей Интернет), и, наконец, то, что после многочисленных колебаний, лидеры компьютерной отрасли сегодня практически однозначно высказазываются в поддержку свободного ПО.

0.3 Применимость СПО при реализации "Обязательного минимума..."

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

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

Упомянутые прагматические рамки заключаются в следующем. Точно так же, как кажется вполне осмысленным предположением, что для освоения грамотности и счета школьнику неплохо бы овладеть ручкой и карандашом и понять, чем одна от другого отличается (вне зависимости от того, выделяется ли чистописание в отдельный учебный предмет, как это было принято ранее, или же, как сейчас, освоение инструментов письма идет на тех же уроках, где ученик знакомится с буквами и их чтением), наличие в "Обязательном минимуме содержания образования по информатике" [1] списка приложений компьютера ("информационных технологий"), с которыми стоит познакомить школьников, протестов у нас не вызывает.

Среди них:

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

Например, для того, чтобы предметно показать учащимся разницу в различных способах представления (кодирования) информации (п. 2 "Обязательного минимума..."), неплохо иметь под рукой соответствующую программу просмотра. Знакомство с языками программирования (п. 5) предполагает и знакомство с интерпретатором или компилятором и другими компонентами инструментальной среды и т.д. и т.п. Ну и, разумеется, чтобы учащийся мог работать со всеми этими программами, ему необходимы базовые навыки обращения с операционной системой/средой (вне зависимости от того, присутствует ли такая тема отдельной строкой в учебном плане).

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

В России, насколько нам известно, наиболее последователен в этом плане опыт Центра компьютерных технологий Московского государственного индустриального университета, сеть которого используется, в том числе, и для практических занятий учащихся московских школ.

В ноябре 2001 года, во время рабочей встречи "Свободное программное обеспечение", проведенной Высшей школой экономики и издательским домом "Компьютерра" в рамках разворачивания федеральной целевой программы "Электронная Россия" [2], было достигнуто принципиальное соглашение о том, чтобы учебные материалы, разработанные в ЦКТ МГИУ и касающиеся применения СПО в учебном процессе, были опубликованы также под свободной лицензией, и коллеги из МГИУ выполнили свое обещание, благодаря чему на их сайте можно найти учебник "Практическая информатика" [4] (также опубликован и выпущен в продажу в виде традиционного двухтомного издания).

0.4 Логика и последовательность освоения СПО

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

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

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

Однако поскольку значительная часть свободного прикладного программного обеспечения портирована (перенесена), в том числе, и в несвободное окружение (включая получившие широкое распространение в наших школах операционные среды Microsoft Windows и MacOS), миграцию можно облегчить, проведя ее в два этапа (которым в учебном заведении могут соответствовать два академических года): сначала прикладная часть, а затем -- системная.

В настоящей брошюре мы ограничились лишь прикладными программами, пакетами и платформами.

Лекция 1. OpenWriter -- свободный word-процессор

Изначально наша первая "лекция" задумывалась как простая презентация ряда свободных word-процессоров (AbiWord, Kword, OpenWriter) и программ, могущих использоваться в качестве таковых (издательская оболочка LyX и т.п.). Однако уже первые шаги по определению структуры таблицы, представляющей их характеристики, и ее наполнения, заставили задуматься: а что вы с этим потом будете делать?

И "Обязательный минимум...", и большинство конкретных учебных планов предусматривает знакомство лишь с базовой функциональностью программ манипуляции текстами, и любой из перечисленных процессоров гарантированно и с избытком перекроет требования (так же, как и масса присутствующих на рынке несвободных программ, таких, как Microsoft Word, "Лексикон", StarOffice или WordPerfect). Поскольку большинство из них так или иначе развивают основные интерфейсные подходы WordPerfect, существенного (и могущего быть выявленным в пределах тех немногих часов, что учитель в состоянии уделить этой теме) эргономического различия между ними нет.

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

Давайте попробуем отложить в сторону программный инструментарий и разобраться с тем, какого рода данные мы им обрабатываем.

1.1 "Плоский" и размеченный

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

<курсив>Предложение, набранное курсивом.</курсив>

а word-процессор визуализирует эти атрибуты, например:

Предложение, набранное курсивом.

Визуализацию иногда путают с так называемым WYSIWYG-принципом (сокращение от "What you see is what you get" -- "Что видишь, то и получишь").

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

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

Предложение, набранное курсивом.

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

Таким образом, один и тот же документ может быть отображен с разметкой, с визуализацией, а иногда -- и с разметкой и с визуализацией.








Один и тот же гипертекстовый документ, отображенный браузером Mozilla с разметкой, с визуализацией и с использованием обоих способов визуализации

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

Учащийся сталкивается с задачей манипулирования "плоским" текстом как минимум два раза (при знакомстве с электронной почтой и при изучении основ программирования), соответственно, успевает познакомиться, как правило, с двумя разными текстовыми редакторами (встроенными в почтовую программу и среду программирования, соответственно). Как минимум два раза он сталкивается и с задачей манипулирования размеченным текстом: один раз его знакомят с word-процессором (как правило, в России под руку подворачивается "пиратский" Microsoft Word, либо бесплатно распространяемый StarOffice 5, либо дешевый "Лексикон", исключения единичны), а затем ему преподносят основы HTML.

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

Значительным шагом к систематизации опыта, вырабатываемого школьным курсом, на наш взгляд, является использование инструментария, позволяющего демонстрировать возможность работы с размеченным текстом разными средствами. Это значит, что к очевидным требованиям, предъявляемым к "учебному" word-процессору (достаточность функций, локализованность, мультиплатформенность, ценовая доступность), добавляется серьезное пожелание: стандартность формата разметки.

Это сильно облегчает выбор. На самом деле, на сегодня всем перечисленным требованиям удовлетворяет, по сути, лишь одна программа. Но сначала -- немного о стандартах.

1.2 Стандарты разметки текста

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

Первый из них, это семейство, называемое *ML-языками: на эти две буквы заканчиваются аббревиатуры их названий -- GML, SGML, HTML, XML, -- а сами по себе эти буквы означают просто "markup language" -- "язык разметки".

Второй -- разработанный выдающимся американским теоретиком и практиком программирования Дональдом Кнутом язык программирования верстки TeX (это греческий корень, он читается как русское "тех", а не как "текс") и его расширения (например, LaTeX). Не будучи официальным стандартом, ТеХ постепенно вытесняет и замещает прочие языки разметки, предназначенные для набора и верстки текстов (TeX и системы на его основе плохо приспособлены для верстки т.н. "иллюстрированных изданий" с характерным для них богатым насыщением текста графикой, сложными обводами и наложениями текста на графику и пр., и этот сегмент рынка остается пока не стандартизованным).

За пределами этих типов -- огромное множество нестандартных (и даже неопубликованных) форматов, зачастую использующих не текстовую, а двоичную форму представления данных (например, файлы Microsoft Word, "Лексикона" и т.п.). Это исключает возможность использования для работы с такими данными обычных текстовых редакторов и обработку их стандартными текстовыми утилитами, а также сильно затрудняет обратную разработку формата с целью обеспечения импорта и экспорта из независимо написанных программ2.

Наверное, TeX имеет потенциал к использованию в качестве примера языка разметки (или, точнее, языка генерации разметки), однако вряд ли в средней школе -- отчасти потому, что ориентирован на печатную форму в качестве окончательной формы представления содержания, что представляет на сегодня если не экзотический, то, во всяком случае, достаточно специальную область применения компьютеров, в отличие от *ML-языков, в равной степени ориентированных и на "экран", и на "бумагу".

1.3 Судьба *ML-языков

SGML достаточно давно (с 1986 г.) является стандартом на разметку документов, принятым Международной организацией стандартизации (серия ISO 8879). Парадокс заключается в том, что до недавнего времени даже частичные реализации SGML были сравнительно немногочисленными, и его использование ограничивалось рамками государственных организаций (в массе своей оборонных и научных) и крупных корпораций. Гораздо более широкое распространение получили "похожие на SGML" языки, а именно, HTML различных версий, являющийся одним из технологических столпов WWW.

HTML был сознательно создан как "игрушечный SGML": он не обладал всей гибкостью и мощью последнего, но был очень компактен и легок в реализации и изучении. Одна из сторон "игрушечности" HTML заключается в том, что он подталкивает пользователя к использованию физической, а не логической разметки, и именно поэтому, на наш взгляд, его не стоит изучать в школе.

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

Параллельное развитие двух близких по назначению языков было очевидно нецелесообразным, поэтому дальнейшее развитие WWW предполагает переход на XML -- "расширяемый язык разметки", который превосходит по мощности, гибкости и согласованности HTML и является полноценным SGML-приложением. Уже сегодня наиболее развитые WWW-серверы генерируют HTML именно из XML; непосредственно "понимать" последний постепенно учатся и браузеры.

1.4 "Молодое поколение выбирает *ML!"

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

Задача доступного изложения основ XML и приемов работы с ним сама по себе непроста, как дидактически, так и технически (в частности, нужны определения типов документов (DTD) для учебных задач, достаточно развитые для демонстрации возможностей языка, но в то же время достаточно простые для понимания XML-документов "с листа" и низкоуровневого редактирования).

Однако одно из основных препятствий на пути использования XML в школе -- неразвитость визуализирующих редакторов -- уже отпало с появлением офисного пакета OpenOffice.org (далее -- OO.o). Он сочетает привычные пользователям ПК пользовательские интерфейсы с поддержкой стандартных XML-приложений, таких, как "текстовый документ" (программа OpenWriter), "электронная таблица" (OpenCalc), "презентация" (OpenImpess), "формула" (OpenMath), "гипертекст" (OpenWeb) и, что уже совсем не характерно для "офисного" софта, "векторный рисунок" (OpenDraw), их взаимного внедрения и связывания.

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

1.5 OpenWriter

OpenWriter (далее -- OW) -- это неофициальное, но уже закрепляющееся название word-процессора из комплекта свободных офисных прикладных программ ОО.о (официальным названием, видимо, следует считать Ooowriter)3.



Простой документ в окне OpenWriter

Как уже говорилось выше, все word-процессоры внешне (по функциональности и интерфейсу) похожи друг на друга, и OW (см. рисунок) -- не исключение. Он предназначен для набора, редактирования и оформления текстов на естественных языках (включая многоязычные) и поддерживает:

За подробностями отсылаю к [6-9].

Интересное, однако, начинается, когда мы посмотрим на OW "с изнанки". Файлы с расширением имени ".sfx", создаваемые им -- это PKZIP-архивы, содержащие (в простейшем случае) набор XML-файлов, соответствующих (в терминах XML) манифесту, содержанию документов, определению стилей и значениям текущих настроек.

Заглянем в файл с содержанием (content.xml). Даже не зная XML, и лишь ориентируясь в синтаксисе языка разметки, можно понять, что файл содержит сначала определения стилей, использованных в документе (даже "жесткое" форматирование имитируется в OW путем создания неявных стилей), а затем размеченного указаниями на эти стили текста. Смотрите, заголовок статьи размечен так:

<text:p text:style-name="P2">
<text:span text:style-name="T1">
Лекция 0.
</text:span>
<text:span text:style-name="T2">
OpenWriter --
</text:span>
<text:span text:style-name="T3">
свободный
</text:span>
<text:span text:style-name="T2">
word-
</text:span>
<text:span text:style-name="T3">
процессор
</text:span>
</text:p>

Понятно, что для форматирования использован один стиль абзаца "P2" и три стиля символов "T1", "T2" и "T3". Выше, в определениях стилей можно найти, что, допустим, "T2" -- это

<style:style style:name="T2" style:family="text">
<style:properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
</style:style>

То есть "текстовый" (символьный) стиль, предполагающий набор и отображение полужирным шрифтом.

Теперь content.xml может обрабатываться любым XML-инструментом уже без использования OO.o. Его можно преобразовать в HTML или проиндексировать, вывести на печать, просмотреть браузером, поддерживающим XML. Произвольные определения документов напрямую пока браузерами не поддерживаются, однако текст (неформатированный) можно уже сегодня просмотреть, просто открыв content.xml в Mozilla или другом браузере, поддерживающем XML.


У OW есть масса недостатков. Он (версия 1.0) выпущен сыроватым, он достаточно "тяжел" для слабой техники, он неидеально отдокументирован и локализован), которые постепенно исправляются. У него есть четыре очень серьезных достоинства:

1) он свободен, поставляется конкурентно (с соответствующими ценовыми последствиями) и может быть использован как база для дальнейших разработок (в том числе, специфически учебных);

2) он изначально платформенно-независим, и пользование им не диктует практически никаких ограничений на выбор операционной системы и операционной среды. Более того, навыки работы с ним также в большой степени переносимы. Фактически, OO.o выглядит и управляется одинаково под любой стандартной ОС (разработчики говорят о поддержке Linux и Solaris; известно об устойчивой работе пакета под FreeBSD), а также под Microsoft Windows 9x/Me и Microsoft Windows NT/00/XP, есть экспериментальный порт (перенос) на "Макинтоши", под MacOS X (по некоторой информации, в команду уже вошли представители Apple Computers);

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

4) в команде разработчиков есть российские программисты и фирмы, которым небезразличны перспективы его применения в школе.

1.6 Ресурсы

Пакет OO.o входит во все "большие" (многодисковые универсальные) дистрибутивы ОС Linux и во многие "маленькие" (одно-, двух- и трехдисковые, исключая ориентированные исключительно на серверное применение).

Мы рекомендуем обратить внимание на российскую сборку OO.o, поставляемую с ALT Linux ("большой" дистрибутив Master 2.0 и "маленький" Junior 2.0; www.altlinux.ru) и ASPLinux 7.3 (в различных вариантах, www.asplinux.ru). В ней раньше, чем в основной ветке, появляются новые возможности, ориентированные на русскоязычного пользователя, в то же время, задержка сборок новых версий (по отношению к основной ветви разработок) минимальна.

Многоплатформенная (Linux и Microsoft Windows) российская сборка доступна в составе сборника OpenOffice.ru, его можно взять на сайте www.openoffice.ru или приобрести (список реселлеров доступен на том же сайте) однодисковую коробку. О российских сборках OOO под "Макинтош", Solaris и другие ОС нам ничего не известно, и их пользователям можно порекомендовать следовать по ссылкам с www.openoffice.org.

Основной русскоязычный ресурс, посвященный OpenOffice, -- это тот же сайт www.openoffice.ru и его сателлиты (включая http://docs.openoffice.ru).

Основной международный ресурс -- это базовый сайт разработки (www.openoffice.org).

OO.o вообще и OW в частности пока освещены лишь в сравнительно небольшом количестве публикаций. Внимания заслуживают [6-9].

Лекция 2. Свободный инструментарий работы с текстом

Обработка "плоских" (неразмеченных) текстов -- одна из первых (после вычислительных задач и управления приборами) и исключительно проработанная область приложений компьютера.

Работа с текстами критична для многих пользовательских приложений. Электронная почта -- это текст. Форматы разметки, посредством которых представлены форматированный текст, векторная графика, ноты и т.п. (практически все данные, за исключением растровой графики и волнового представления звука) -- в основе своей также текст.

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

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

Более того, работа с текстом критична и для развития самих вычислительных и коммуникационных систем, поскольку сами программы в исходной своей форме -- тексты. Для программ на интерпретируемых языках тексты являются и исполняемой формой, так что такие программы -- тексты вдвойне (а типичная стандартизованная ОС почти наполовину состоит из "сценариев", т.е. программ, написанных на интерпретируемых языках).

Эффективные методы и приемы работы с текстом -- неотъемлемая часть компьютерной грамотности, но в подавляющем большинстве случаев они оказываются не освоенными вовремя. Зачастую в курсе средней школы знакомство с обработкой "плоских" текстов ограничивается встроенными редакторами в среде программирования и электронно-почтовой программе, а навыки -- простейшими приемами набора и исправления. Более абстрактные и всеобщие операции изучаются как часть word-процессинга, и хотя иногда при этом и демонстрируются возможности встроенных в word-процессоры языков программирования, область обработки текстов остается "вещью в себе" и никак не интегрируется с другими областями, осваиваемыми в курсе информатики.

2.1 Размеченный и "плоский"

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

Word-процессор определенным образом интерпретирует разметку, визуализуя указанные атрибуты.

Текстовый редактор отображает текст "как есть", хотя он вполне может быть "в курсе" синтаксиса языка разметки (если текст размечен, например, XML, HTML или TeX) или даже самого текста (например, синтаксиса языка программирования) и каким-то образом на него реагировать (например, расцвечивать теги разметки HTML или зарезервированные слова Pascal). В принципе, он может быть "в курсе" синтаксиса, грамматики и лексики даже естественного языка, хотя для работы с естественными языками "плоский", неразмеченный текст используется все реже, или, по крайней мере, неразмеченный текст все реже используется как первичная форма представления текста на естественном языке.

Отказаться вовсе от работы с "плоским" текстом затруднительно по давно известной эргономистам причине: использование визуализации "позволяет демонстрировать лишь результат форматирования, по нему невозможно определить задачи форматирования, поставленные пользователем системе. Например, если пользователь замечает, что система не делает переносов ... невозможно определить ... является ли это простым совпадением или же при форматировании данной главы перенос запрещен" [10].

2.2 Редакторы

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

С удешевлением компьютерной техники и разработкой многопользовательских систем появилась возможность посадить оператора за подключенный к машине телетайп. Для удобства операторов (часто ими оказывались сами программисты) разрабатывались программы редактирования текстов (или, попросту, текстовые редакторы), как правило, выводившие текст построчно и ожидавшие клавиатурной команды (зачастую на особом изощренном языке), сообщающей, следует ли оставить строку неизменной, либо внести в нее какие-то изменения.

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

2.3 Vi и Emacs

Интересно, что два, по-видимому, первых экранных редактора, созданных в начале семидесятых, и явились родоначальниками "семейств" таких программ, до сих пор наиболее популярных в профессиональной среде. Это vi Билла Джоя (тогда аспиранта Университета Калифорнии в Беркли, а затем основателя Sun Microsystems) и Emacs Ричарда Столлмена (тогда сотрудника Лаборатории искусственного интеллекта Массачуссетского технологического института, а ныне -- президента Фонда свободного программного обеспечения и лидера проекта GNU). Оба они, по сути, происходят от экранных режимов работы популярных тогда редакторов ed и TECO, соответственно.

Милая Лена!
Ты не откажешься поужинать со мной в ночь с пятницы на воскресенье?
- Максим
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
-- INSERT -- 3,1 All

Редактор vi

Первый ныне стандартизован и, в той или иной реализации (наиболее популярна, видимо, vim Брама Мооленаара) доступен в составе любой стандартной операционной системы (в том числе, свободных). Второй под названием GNU Emacs поддерживается Фондом свободного ПО (www.fsf.org) и выдержал с тех пор более двадцати изданий (релизов).

Исходная идеология и эргономическая модель этих двух выдающихся разработок серьезно различается, что служит поводом для шутливой "священной войны" между их приверженцами. Vi(m) относится к так называемым "многорежимным" редакторам. В режиме редактирования оператор вводит и исправляет текст. Перемещение по тексту, контекстный поиск и замена, более сложные операции выполняются в командном режиме. Между этими режимами (а также, унаследованным от ed и редко применяющимся режимом построчного редактирования) нужно явное переключение нажатием клавиатурной комбинации. Зато большинство команд привязаны к нажатиям одной клавиши, и даже перемещаться по тексту в командном режиме можно, не сбрасывая кисть на дополнительную клавиатуру со стрелками, а нажимая алфавитные клавиши в центре клавиатуры. Адепты vi -- программисты и системные администраторы -- очень серьезно относятся к экономии времени и энергии за счет минимизации движения пальцев.

Emacs -- пример "безрежимного" или, если угодно, "однорежимного" редактора: пользователь всегда находится в режиме непосредственного редактирования текста в точке курсора, а команды издает, нажимая сложные сочетания клавиш и, при необходимости, вводя параметры команд в отдельном окне. Из-за стремления обеспечить прямую клавиатурную привязку как можно большему количеству команд и следующей из нее сложности используемых клавиатурных сочетаний был даже пущен слух о том, что Emacs расшифровывается как "Esc-Meta-Alt-Ctrl-Shift" (хотя на деле, конечно, клавиатурные аккорды все же не так сложны, а Emacs -- это просто Editing MACroS, т.е. "макрокоманды редактирования").

В действительности различие это скорее идеологическое, чем прагматическое: в современных версиях vi в большинстве случаев также можно осуществить привязку часто употребляемых команд к клавиатурным комбинациям и выполнять их из режима редактирования, а в Emacs можно достаточно точно (если кому-то это потребуется) сымитировать командный режим, характерный для многорежимных редакторов.

2.4 Дидактика редакторов

Реальное очень значимое отличие заключается в том, что по своей архитектуре vi -- более или менее монолитная программа (с вытекающей отсюда компактностью), а Emacs -- на самом деле, расширяемая (программируемая) коллекция макрокоманд редактирования, написанных на Emasc Lisp (диалекте известного языка функционального программирования). Лишь небольшое количество часто выполняемых и требовательных к ресурсам команд встроены в саму программу и написаны на компилируемом C, большинство же команд написаны на Lisp и могут изменяться или дополняться пользователями (или профессиональными программистами по заказу пользователей).

За четверть века существования Emacs, благодаря свободной модели лицензирования и открытой модели разработки, "оброс" невероятным количеством макрокоманд, "затачивающих" его под синтакcические особенности различных формальных языков (включая, но не ограничиваясь языками программирования и языками разметки), а также реализующих приложения, традиционно слабо ассоциируемые с "просто редакторами". Например, не выходя из Emacs, можно работать с электронной почтой и службами новостей USENET (а также с гипертекстом со страничек WWW).

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

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

Все это (доступность, расширяемость, интегрируемость) делает его серьезным претендентом на организацию "учебного" рабочего пространства программиста .

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

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

Почему в обычных учебных курсах vi изучается раньше Emacs? Дело в том, что vi, во-первых, стандартизован (и доступен во всех без исключения открытых системах), а во-вторых, компактен. Администратор системы может оказаться в среде, где ему из экранных редакторов доступен только vi. Поэтому для сисадминов базовые навыки работы с ним обязательны (вне зависимости от личных предпочтений).

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

2.5 Редактирование "без редакторов"

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

Рассмотрим очень формальную задачу. Допустим, в файле note сохранен текст записки:

Милая Лена!
Ты не откажешься поужинать со мной в ночь с пятницы на воскресенье?
- Максим

Если жизнь пошла по диагонали, и планы резко изменились (и мы отдаем себе отчет, как именно), можно открыть файл с этим текстом в текстовом редакторе, например, vi, и издать команду:

:s/Лена/Ира/g

Текст (предсказуемо) приобретет вид:

Милая Ира!
Ты не откажешься поужинать со мной в ночь с пятницы на воскресенье?
- Максим

Однако, то же самое действие можно выполнить и "без редактора", а точнее, без интерактивного редактора, с помощью редактора потокового. Стандартный потоковый редактор называется sed, и синтакис его команд схож с синтаксисом командного режима стандартного интерактивного редактора vi, команда при этом издается непосредственно из командной строки:

$sed -n 's/Лена/Таня/g' note

Если у нас подготовлен не один файл, а множество (например, note.1, note.2, note.3), и нужно внести в них единообразные замены (и ничего не пропустить, и нигде не ошибиться), мы обойдемся также всего одной командой.

$sed -n 's/Лена/Вера/g' note.*

Если файлов будет тысяча, а требуемые изменения будут посложнее, нам, скорее всего, понадобится опять-таки всего одна команда (хотя, возможно, и потребуется серьезное изучение синтаксиса). Это называется потоковым редактированием, и оно интенсивно применяется, например, для наложения "заплаток" на исходные тексты программ (однако, как было продемонстрировано, может использоваться и для обработки текста на естественном языке).

2.6 Автоматизированная обработка текстов

UNIX был во многом "рожден для обработки текстов" (прежде всего, это была система для программистов, а программы -- с чего мы начали сегодняшнюю лекцию -- это тексты). Набор служебных программ (утилит) современных стандартных ОС продолжает эту традицию, и в их составе можно найти десятки программ, ориентированных на работу с текстом. Многие из них (но не все) являются построчно-ориентированными, то есть текст понимается как последовательность строк. Подробное обсуждение этих возможностей см. в "лекции" 6 "Строка длиною в жизнь".

2.7 Ресурсы

Дистрибутив любой современной стандартной ОС (включая свободные) содержит все упомянутые программы. Многие из них портированы (перенесены) и в альтернативные ОС.

Для Microsoft Windows рекомендуется установка пакета Cygwin, содержащего утилиты GNU (включая предназначенные для работы с текстом) и некоторые другие программы (включая редактор vim), позволяющие организовать стандартную рабочую среду. Следует учесть, что при работе в версиях MS Windows, основанных на MS-DOS (MS Windows 95/98/Me), у многих программ возникают сложности из-за отсутствия контроля за правами доступа к файлам и каталогам (версии, основанные на NT -- MS Windows NT/00/XP, лишены этого недостатка), а также то, что локализованная для русской среды сборка Cygwin в настоящее время не поставляется. Для поддержки кириллических символов необходимо в каталоге пользователя создать файл с именем ".inputrc", содержащий строки:

set meta-flag on
set convert-meta off
set output-meta on

Альтернативой Cygwin (по ряду причин менее предпочтительной) является использование системы Interix UNIX Tools for Windows, также содержащей утилиты GNU (ее можно приобрести через Microsoft на диске либо скачать с их сайта).

GNU Emacs для MS Windows можно скачать с сайта GNU (www.gnu.org).

Хорошее описание стандартных утилит (в том числе, для работы с текстом) содержится в недавно переведенной книге [11], да и почти в любом толстом учебнике, руководстве или справочнике по Unix или Linux. Серьезных отличий при их использовании в контексте других ОС нет.
То же относится и к интерактивным редакторам. Кроме того, в 1999 г. издан русский перевод шестисотстраничного Руководства по GNU Emacs [12], его текст можно найти и на сайте GNU (www.gnu.org); как и сам Emacs, эта книга свободна.

Лекция 3. OpenDraw -- свободный редактор векторной графики


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

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

Элементарная обработка (создание и редактирование) изображений (как векторных, так и растровых) входят в число приложений, перечисленных в "Обязательном минимуме содержания образования по информатике" [1] в качестве обязательных к освоению в курсе средней школы.

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

3.1 Векторное и растровое кодирование изображений

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

Например, растровое изображение окружности может быть таким: "заполняем квадрат 5х5: белая точка (Б), черная точка (Ч), Ч, Ч, Б, Ч, Б, Б, Б, Ч, Ч, Б, Б, Б, Ч, Ч, Б, Б, Б, Ч, Б, Ч, Ч, Ч, Б". (Более умные "форматы со сжатием", возможно, позволят сократить запись до чего-нибудь, подобного: "заполняем квадрат 5х5: Б, 3Ч, Б, 3(Ч, 3Б, Ч), Б, 3Ч, Б", а то и еще более компактно, но суть не в этом).

Векторное ее изображение совсем другое: "черная окружность с центром в (3,3), радиусом 2 и толщиной линии 1".

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

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

3.2 Применение векторной и растровой графики

Разница может проявиться тогда, когда мы начнем обрабатывать элементы изображения.

Векторное изображение может без ущерба масштабироваться (увеличиваться или уменьшаться), причем эта операция обратима. В приведенном примере мы можем без труда увеличить векторную окружность в пять раз: "черная окружность с центром в (15,15), радиусом 10 и толщиной линии 5", и она останется окружностью.

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

Кроме того, векторное изображение, содержащее более одного элемента (например, изображение двух пересекающихся окружностей), может быть разъято на элементы без каких-либо потерь. С растровым изображением такое, в общем случае, невозможно: программа "не знает" об элементах изображения и о принадлежности тех или иных точек отдельным элементам.

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

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

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

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

3.3 Свободные программы для работы с векторной графикой

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

и, наконец,

Рекомендуется при возможности хотя бы вкратце ознакомиться с каждой из них, чтобы понять, какая лучше подходит для конкретного учебного курса. В этой лекции далее будет обсуждаться OpenDraw, исходя из преимуществ, уже описанных в "Лекции" 1, посвященной другому компоненту того же пакета -- word-процессору OpenWriter, но это не в коей мере не означает непригодность для учебных целей прочего из перечисленного.

3.4 Общие характеристики OpenDraw

Как и остальные компоненты пакета OO.o, OpenDraw использует в качестве "родного" формата специально разработанное XML-приложение (об XML и о том, почему ориентация на этот стремительно набирающий популярность формат данных важна при выборе учебных программ, см. материалы "Лекции" 1).

Этот пакет доступен для популярных стандарных (Linux, Solaris) и нестандартных (Microsoft Windows, MacOS) операционных систем и прилично (хотя и не идеально) локализован.

Самым же существенным недостатком OpenDraw являются относительно высокие требования к аппаратным ресурсам, поэтому его использование затруднительно на старых или маломощных компьютерах (для комфортной работы над несложными учебными упражнениями должно быть достаточно Intel P-II, Celeron или K6-2 с частотой от 500 МГц или G3 с частотой от 350 МГц при памяти от 64 MБ). Если нужна демонстрация векторно-графических возможностей на таких компьютерах, мы рекомендуем sodipodi или еще более "легкую" XFig.

Сохранение в "чужих" векторных форматах (экспорт) на сегодня реализовано только для ранних версий предшественника OpenOffice.org пакета StarOffice (и StarDraw как отдельной программы). Зато импорт (чтение "чужих" форматов) возможен не только из универсальных векторных форматов, но и из DXF, используемого в популярных системах автоматизированного проектирования (САПР).

OpenDraw также позволяет экспортировать рисунок во многие растровые форматы или в гипертекстовую страницу.

Следует понимать, что StarDraw, на основе которого разработана программа, задумывалась как "офисный" графический редактор, прежде всего предназначенный для создания и редактирования графических элементов оформления документооборота (сопровождающих документы рисунков, карт, диаграмм, графиков и пр.). Поэтому действия, типичные для такой работы, максимально облегчены и "вынесены на первый план", и OpenDraw содержит массу готовых деталей, широко употребимых в "офисной" графике (например, готовых стрелок и множества соединительных линий, часто используемых в таких случаях). Для технического черчения и схемотехники OpenDraw не приспособлена (хотя при случае в ней можно создать простой чертеж или электронную схему).

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

Рисунок сохраняется в файле, который технически представляет собой PKZip-архив, включающий стилевые определения и собственно содержание документа на языке XML. Какой-либо инструментарий, специально предназначенный для обработки OpenDraw XML, нам не известен.

Как и остальные компоненты OpenOffice.org, OpenDraw в высшей степени конфигурируемая и настраиваемая под конкретное применение программа. Для использования в учебном контексте может оказаться полезным предварительно настроить ее для некоторого сокращения обилия непосредственно доступных пользователю функций, чтобы ученик в них не затерялся.

3.5 Основные возможности OpenDraw

Функциональность OpenDraw сопоставима с большинством других редакторов векторной графики и включает:

Преобразование объектов включает:

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

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

3.6 Механизм стилей

Важной особенностью OpenDraw является использования механизма стилей для форматирования графических элементов. Использование стилей в векторной графике вполне сопоставимо с использованием того же механизма при оформлении размеченного текста (см. "Лекцию" 1) и имеет те же преимущества перед "жестким" форматированием/оформлением.

Этот прием позволяет серьезно облегчить вариантное оформление рисунков, отказавшись от "жесткого" (такого, при котором для каждого объекта или группы объектов характеристики задаются вручную) форматирования объектов.

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

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

3.7 "Логические операции" над объектами, "3D" и морфинг

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

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

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

3.8 Векторизация растровых изображений


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

OpenDraw обладает функцией векторизации, "спрятанной" в меню "Преобразовать" под кличкой "В многоугольник". Если применить данный пункт меню к импортированному растровому изображению, появится окно предпросмотра с возможностью задать некоторые параметры и увидеть результат.

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

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

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

3.9 Ресурсы

Пакет OO.o входит во все "большие" (многодисковые универсальные) дистрибутивы ОС Linux и во многие "маленькие" (одно-, двух- и трехдисковые, исключая ориентированные исключительно на серверное применение).

Мы рекомендуем обратить внимание на российскую сборку OO.o, поставляемую с ALT Linux ("большой" дистрибутив Master и "маленький" Junior; www.altlinux.ru) и ASPLinux (в различных вариантах, www.asplinux.ru). В ней раньше, чем в основной ветке, появляются новые возможности, ориентированные на русского пользователя, в то же время, задержка сборок новых версий (по отношению к основной ветви разработок) минимальна.

Многоплатформенная (Linux и Microsoft Windows) российская сборка доступна в составе сборника OpenOffice.ru, его можно взять на сайте www.openoffice.ru или приобрести (список реселлеров доступен на том же сайте) однодисковую коробку. О российских сборках OO.o под "Макинтош", Solaris и другие ОС нам ничего не известно, и их пользователям можно порекомендовать следовать по ссылкам с www.openoffice.org.

Основной русскоязычный ресурс, посвященный OpenOffice, -- это тот же сайт www.openoffice.ru и его сателлиты (включая http://docs.openoffice.ru). Основной международный ресурс -- это базовый сайт разработки www.openoffice.org).

OO.o вообще и OpenDraw в частности пока освещены лишь в нескольких публикациях. Внимания заслуживают [6-8].

Лекция 4. GIMP -- свободный редактор растровой графики

В предыдущей "лекции", посвященной векторной графике и программе OpenDraw, приводились основные факты, касающиеся различия векторной и растровой компьютерной графики:

4.1 Источники и параметры растровой графики

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

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

Важнейшими параметрами растрового изображения являются его растровый размер (в точках) и "глубина цвета" (количество бит, используемых для представления цвета каждой точки). Эти параметры часто записывают в виде 1024х728x24, что означает 1024 точки по горизонтали, 728 точек по вертикали и 24 бит на цвет (двадцати четырех бит достаточно для получения "фотореалистичных" изображений, дальнейшее повышение разрядности не приводит к увеличению качества отображаемых или печатаемых современными средствами изображений, хотя в промежуточной обработке или при синтезе изображений иногда используется большие значения глубины цвета). Еще одним параметром, предусмотренным некоторыми форматами хранения растровой графики, является его "масштаб", который принято измерять в точках на дюйм (DPI); это чисто информационный параметр, который может учитываться при печати изображений, но не влиет на возможность их обработки.

4.2 Источники и параметры и форматы представления растровой графики

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

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

Практически универсальными являются форматы TIFF (обычно применяемый в полиграфии, допускает лишь неразрушающее сжатие), PNG (наиболее удобный для представления графических данных в мультимедийных системах и WWW, допускающий неразрушающее сжатие), а также медленно вытесняемые последним JPEG (допускающий сжатие с потерями) и GIF (ограниченный 8 бит (256) цветами). Кроме того, многие графические редакторы (включая описанный ниже GIMP) обладают собственным форматом, позволяющим сохранять в том же файле массу вспомогательной информации, полезной при продолжающейся более одного сеанса работе с файлами.

4.3 Общие сведения о GIMP

GNU Image Manipulation Program (Программа ГНУ для манипуляции изображениями), или сокращенно GIMP (читается "гимп") -- потомок курсового проекта двух студентов, Питера Маттаса и Спенсера Кимболла (1985-86 гг.).

За восемь лет и при участии десятков программистов GIMP вырос в один из самых насыщенных функциональностью графических редакторов, уступающих лишь "под завязку" набитому сторонними модулями редактору Photoshop6. Текущая стабильная версия -- 1.2 (как и в некоторых других проектах нечетным "малым" номерам соответствуют экспериментальные (разработческие) версии, а четным -- стабильные).

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

GIMP, доступный для всех популярных настольных платформ (включая Linux, MacOS, Microsoft Windows и др.), широко используется для работы над WWW и мультимедийной графикой, обработки любительского, репортажного и даже художественного фото, ретуширования кинокадров. Правда, для последней цели чаще используется модификация, известная как FilmGIMP, ее, в частности, активно эксплуатировали при монтаже первого фильма о Гарри Поттере.

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

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

4.4 GIMP -- программируемый графический редактор

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

Такие модули можно разрабатывать как отдельные программы с использованием библиотеки GDK, а можно пользоваться одним из встроенных в GIMP интерпретаторов языков программирования. Именно наличие таких интерпретаторов и делает GIMP программируемым графическим редактором. Можно сказать, что его архитектура подобна архитектуре текстового редактора Emacs, о котором говорилось во второй нашей "лекции".

Таких интерпретатора на сегодня два. Забавное название Script-fu, видимо, следует понимать как английско-китайское выражение, означающее "мастерство сценирования" (напомним, что "сценариями" ("скриптами") называют программы, написанные на интерпретируемых языках). Script-fu -- это первый встроенный в GIMP интерпретатор функционального языка Схема (Schema), являющегося потомком первого языка функционального программирования Лисп. Разработчик скрипта имеет доступ к многочисленным базовым функциям-графическим примитивам.

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

Директивен другой язык, интерпретатор которого также встроен в GIMP. Это Перл (Perl), его GIMP-овская реализация называется Perl-fu. Хороший программист может писать на Перле чисто и аккуратно, однако синтаксис языка сам по себе настолько гибок (чтобы не сказать "жидок"), что, по нашему мнению, Перл совершенно не годится на роль изучаемых в числе первых (хотя существуют и другие мнения, весьма авторитетные).

Добавление в GIMP еще одного интерпретатора (например, алголо- или паскалеподобного языка) не представляется особо сложной задачей, однако о таких проектах ничего не известно, и, наверное, от программирования обработки изображений "внутри" GIMP как от простой в методическом освоении темы большинству педагогов стоит пока отказаться.

4.5 Интерактивная функциональность и эргономика

Тем не менее, базовой интерактивной функциональности GIMP (включая доступные модули) вполне достаточно, чтобы покрыть обычно изучаемые в школе вопросы обработки графики.



При запуске GIMP на экране открывается ряд окон (Рис. 1). Главное окно содержит меню основных функций, панель пиктографически обозначенных "инструментов" и области, в которых отображаются текщие значения основного и фонового цветов, формы кисти, текущего градиента. Окна изображения соответствуют отдельным открытым графическим файлам (или слоям в них).

Дополнительные инструментальные окна (по какой-то причине названные "диалогами") могут открываться из меню главного окна. Однако их всего десяток ("Слои, каналы и контуры", "Параметры инструментов", "Кисти", "Шаблоны", "Градиенты", "Палитра", "Устройства ввода", "Индекс документов", "Консоль ошибок"), а основной массив функций, применяемых к текущему или вновь создаваемому изображению или выбранному участку изображения (включая функции, реализованные внешними модулями-фильтрами) "достаются" через контекстное меню, открывающееся по щелчку правой кнопкой мыши в окне изображения.




Зато можно воспользоваться (непривычным для пользователей упрощенных графических сред, таких, как Microsoft Windows) свойством графической библиотеки GTK+, называемым "линия отрыва". Каждое меню наверху содержит пунктирную линию, щелкнув мышью на которой можно превратить это меню в самостоятельное инструментальное окно, сохраняющееся, пока пользователь явным образом его не закроет (Рис. 2-3). Таким образом (учитывая настраиваемость самой системы меню) можно в любой момент создать на экране дополнительные "панели инструментов", содержащие функции, которыми в ближайшее время предполагается воспользоваться. Привыкшему к другому стилю работы пользователю это непривычно, однако, привыкнув, эту интерфейсную особенность можно использовать весьма эффективно.

Множественность окон, к сожалению, может создавать некоторые неудобства в средах без развитого инструментария управления окнами. В более развитых средах можно "склеить" несколько окон, чтобы они перемещались как единое целое или "поднять" окно, чтобы оно продолжало оставаться видимым, даже если будет активизировано окно, расположенное "под ним" (собственно, многооконное визуальное решение и создано в расчете на наличие таких средств), а если такие средства отсутствуют (как, например, в Microsoft Windows), пользование редактором на мониторе с малым разрешением может быть отягощено необходимостью совершать какие-то дополнительные действия.

Основная интерактивная функциональность, доступная посредством "инструментов" в главном окне, достаточно традиционна для программ этого класса. Она включает, в том числе:

В базовую функциональность GIMP входит также возможность захвата изображения со сканера и с экрана.

4.6 Фильтрация и синтез изображений

Основной прием автоматизированной обработки изображений -- фильтрация их целиком, либо выделенных в них областей. Большая часть упомянутых внешних модулей реализует именно функцию фильтрации. Среди наиболее важных в практической обработке изображений фильтров отметим:

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

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

4.7 Ресурсы

GIMP входит во все "большие" (многодисковые универсальные) дистрибутивы ОС Linux и во многие "маленькие" (одно-, двух- и трехдисковые, кроме ориентированных только на серверное применение). Интерфейс GIMP переведен на русский язык (хотя есть отдельные модули, доступные только с иноязычными интерфейсами).

GIMP доступен для Linux и других открытых систем -- на www.gimp.org; для Microsoft Windows -- на www.wingimp.org; для MacOS -- на www.macgimp.org. Основной русскоязычный ресурс, посвященный GIMP -- www.gimp.ru.

Краткое сорокастраничное введение в GIMP есть в книге [9]. Из англоязычных книг посоветуем две свободно доступные [13, 14].

Лекция 5. OpenCalc -- свободный редактор электронных таблиц

Слово "компьютер", означающее буквально "вычислитель" и восходящее к лат. computare, сегодня не нуждается в переводе: повсеместно им обозначают электронные вычислительные машины, и оно понятно даже носителям языков, в которых для компьютера есть собственное слово. Однако в английском, из которого оно и начало свое распространение, это слово имеет и более ранее значение: человек, занятый вычислениями.

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

Такое исследование будет непростым предприятием, учитывая, что в большинстве случаев вычисления были не отдельной профессией, а частью других профессиональных занятий. Бухгалтер, инженер, техник затрачивали существенные усилия на проведение расчетов, являющихся частью их повседневной работы. Компьютер меняет все это: от профессионала по-прежнему требуется умение применить способ расчета, но сами "вычислительные объемы" выполняются все более и более автоматизированно.

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

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