Свободные редакторы электронных таблиц

Пробежавшись по каталогам свободных программ (таким, как «кузница кода» Sourceforge, содержащая тысячи проектов), можно обнаружить более двух десятков программ в категории «электронные таблицы». Большинство из них – незавершенные или более или менее законченные учебные проекты. Работу с электронными таблицами можно, видимо, считать зрелым персонально‑компьютерным приложением: оказывается, за полгода‑год один программист в состоянии реализовать (разумеется, опираясь на существующие библиотеки) до 90% функциональности, свойственной лидирующим программам в этой категории.

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

«OpenCalc» – электронно‑табличный компонент уже знакомого нам по предыдущим разделам интегрированного прикладного делового пакета «OpenOffice.org»;

KSpread – компонент еще одного конкурирующего пакета под названием KOffice, который мы пока обходим вниманием. KSpread сегодня также не будет нами рассматриваться, но по чисто техническим причинам. Ничего плохого мы о нем сказать не можем. И, наконец,

Gnumeric – компонент слабоинтегрированного пакета (или, скорее, собрания программ) «Гном» Office, не слишком популярного в России из‑за хронических сложностей с кириллической письменностью, свойственных word‑процессорному его компоненту, Abiword. Сразу отметим, что, в отличие от последнего, Gnumeric «русофобией» не страдает.

Упомянутое выше слово – зрелость самого приложения – ключевая характеристика. Набор ожиданий пользователя, в общем‑то, известен, причем не только в части функциональности, но и в части основных эргономических характеристик программы: помимо богатых выразительных возможностей самих функций, для работы с электронными таблицами важна т.н. «остенсивная» операторика, иными словами, возможность «показать пальцем» на объект, с которым нужно произвести те или иные действия. Например, «суммировать значения вот этих ячеек», а не «... ячеек с A5 по D5». В большей, чем в других приложениях, мере очевидны эвристики, которые должны реализовываться программой в качестве «подсказок»; например, если в ячейку, завершающую длинный столбец чисел, пользователь намерен ввести формулу, скорее всего он суммирует значения, а если он начал ряд «1 2 3» или «январь, февраль, март», скорее всего, он продолжит его достаточно прямолинейно.

 

Рис. 4‑5

 

Рис. 4‑6

 

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

За две недели автор (в обычной жизни не пользующийся этим классом программ), проверяя свои впечатления, «играл» с четырьмя подобными системами, пытаясь решать несложные задачки, которые обычно он решает (ввиду специфики личного профиля навыков) с помощью СУБД, включая 1) элементарные инженерные расчеты (расход материалов и жесткость корпусной мебели), 2) бюджетирование небольшого проекта, 3) бюджетирование личных расходов. Под горячую руку попали и 4) три задачки из учебника алгебры за 11 класс, две из которых даже удалось с ходу решить.

 

Рис. 4‑7

 

В число этих систем вошли три упомянутые свободные программы и, в качестве контрольного образца, очень популярная несвободная «Майкрософт Эксел» (из офисного пакета «Майкрософт Офис 2000»). Вывод: существенной разницы в возможностях и способах их реализации 99% пользователей не обнаружат. Некоторые тонкости: самой «интуитивной» показалась «Ньюмерик», лучше всего документирована «Майкрософт Эксел», у последней также наиболее развиты средства визуализации (построение графиков и диаграмм).

Тем не менее, если бы автору предстояло регулярно работать с электронными таблицами, скорее всего, его выбор пал бы на сравнительно «серенькую» «OpenCalc» из‑за единства интерфейса и интегрированности с «OpenWriter» и «OpenDraw», которыми он пользуется регулярно.

Как и остальные упомянутые программы (за исключением Microsoft Excel), «OpenCalc» определяет особое приложение языка разметки XML, которое и используется для хранения рабочих книг (почему‑то workbook переводится как «рабочая книга», хотя вообще‑то это обычная «тетрадь») с подшитыми в них листами электронных таблиц. Как и остальные компоненты «OpenOffice.org», «OpenCalc» упаковывает XML‑файл с содержимым (а также ряд вспомогательных файлов) в PKZIP‑архив, который и является единицей хранения документа. (О важности стандартизации языков представления данных в «офисных» приложениях мы подробно говорили в разделе 4.1, к каковому и отсылаем читателя.)

Кроме «родного» формата, «OpenCalc» «понимает» распространенный формат, используемый Microsoft Excel разных версий, экспортирует данные в DIF (Data Interchange Format), форматы ранних версий StarCalc, потомком которых она является, SYLK, импортирует – также из форматов dBase и Lotus 1‑2‑3. Книгу (workbook) можно с очень приличным качеством экспортировать в гипертекст (html 3.2).

Текущая версия (1.0) «OpenCalc» позволяет работать с отдельными таблицами (листами) размером до 255 столбцов (пронумерованных буквами и двухбуквенными сочетаниями, от A до IV) на 32000 строк (пронумерованных числами), чего вполне достаточно для большинства офисных применений и уж, во всяком случае, для любых разумных учебных задач. «OpenCalc» допускает абсолютную и относительную адресацию ячеек и их диапазонов.

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

Библиотека функций OCalc достаточно компактна – их около трех с половиной сотен. Она разбита на ряд категорий: управление БД, работа с датами и временем, финансы, статистика и т.п. Имеются средства расширения этого набора.

«OpenCalc» реализует такие средства, как:

автозаполнение однородных рядов данных;

именование ячеек и их групп;

сортировка и фильтрация;

построение графиков и диаграмм.

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

 

4.3 Редактор векторной графики «OpenDraw»

 

 

 

Рис. 4‑8

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

очень простой векторный редактор Xfig для оконной системы XFree86,

sodipodi (обычно поставляется со всеми операционными системами, включающими среду «Гном»),

Kontour (компонент популярного «офисного» пакета KOffice)

и, наконец,

«OpenDraw» (входящая в пакет «OpenOffice.org»).

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

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

Этот пакет доступен для популярных стандартных («ГНУ/Линукс», «Солярис») и нестандартных («Майкрософт Уиндоуз») операционных систем и прилично (хотя и не идеально) локализован.

Самым же существенным недостатком «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» в высшей степени конфигурируемая и настраиваемая под конкретное применение программа. Для использования в учебном контексте может оказаться полезным предварительно настроить ее для некоторого сокращения обилия непосредственно доступных пользователю функций, чтобы ученик в них не затерялся.

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

cоздание, форматирование и преобразование объектов‑графических примитивов: отрезков и стрелок; квадратов и прямоугольников; окружностей, эллипсов, дуг, сегментов и секторов; кривых Безье, «свободных» кривых, ломаных и многоугольников;

cоздание, форматирование и редактирование объектов‑текстовых надписей (при вводе или редактировании текстов доступна большая часть функциональности word‑процессора OpenWord (см. раздел 4.1)). На самом деле, текст может содержаться в любом замкнутом контуре. В состав «OpenDraw» также входит декоративная функция FontWork, позволяющая расположить текст «фигурно» (вдоль дуги или окружности);

импорт растрово‑графических объектов (в том числе, и в качестве текстур заливки векторно‑графических примитивов).

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

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

перемещение, изменение размеров и поворот;

группирование (превращение нескольких в один) и разгруппирование объектов; комбинирование и раскомбинирование объектов (разница между группированием и комбинированием слишком тонка для нашего обзора);

вращение и зеркальное отображение;

преобразование примитивов – линий и контуров – в произвольные кривые или ломаные;

выравнивание и равномерное распределение (по вертикали или горизонтали, относительно края или центра);

специальные операции, некоторые из которых описаны ниже.

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

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

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

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

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

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

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

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

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

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