ать с заданной точностью отрезком, коническим сечением или кривой Безье; это позволило бы распознать элементарные геометрические фигуры, например, просканировав простой рисунок).
Эта функция предусматривает слишком мало параметров, чтобы быть особенно полезной на практике, однако для демонстрации того, в чем состоит процесс векторизации, она вполне подходит.
Пакет 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].
В предыдущей "лекции", посвященной векторной графике и программе OpenDraw, приводились основные факты, касающиеся различия векторной и растровой компьютерной графики:
растровое изображение представляет собой информацию о цвете точек в равномерно размеченном прямоугольнике, а векторное -- информацию о цвете, форме и размере геометрических фигур;
векторное изображение обратимо увеличивается и уменьшается; растровое изображение при увеличении обнаружит лишь свой растр в увеличенном виде, а операция его уменьшения не является обратимой;
векторное изображение может быть без ущерба восприятию преобразовано в растр, но обратное преобразование в общем случае проблематично;
векторное изображение может быть разъято на элементы без каких-либо потерь, а с растровым изображением такое, в общем случае, невозможно;
векторное кодирование хорошо подходит для работы с чертежами, схемами, графиками и т.п., а растровое -- для обработки фотографий и рисунков.
Обычным источником растровых изображений является сканер -- устройство, "проходящее" (сканирующее) лист бумаги или кадр фотопленки точка за точкой и передающее компьютеру значения, соответствующее интенсивности базовых цветов в каждой точке. Все большей популярностью пользуются цифровые фотокамеры -- аппараты, вместо фотопленки фокусирующие изображение на светочувствительной матрице, передающей цифровую запись изображения на энергонезависимый носитель информации (гибкий диск или т.н. флэш-карту), который затем может читаться компьютером.
Растровые изображения могут также создаваться человеком на компьютере с помощью устройств координатного ввода ("мыши" или более подходящего для этой цели графического планшета) или синтезироваться различными программами.
Важнейшими параметрами растрового изображения являются его растровый размер (в точках) и "глубина цвета" (количество бит, используемых для представления цвета каждой точки). Эти параметры часто записывают в виде 1024х728x24, что означает 1024 точки по горизонтали, 728 точек по вертикали и 24 бит на цвет (двадцати четырех бит достаточно для получения "фотореалистичных" изображений, дальнейшее повышение разрядности не приводит к увеличению качества отображаемых или печатаемых современными средствами изображений, хотя в промежуточной обработке или при синтезе изображений иногда используется большие значения глубины цвета). Еще одним параметром, предусмотренным некоторыми форматами хранения растровой графики, является его "масштаб", который принято измерять в точках на дюйм (DPI); это чисто информационный параметр, который может учитываться при печати изображений, но не влиет на возможность их обработки.
За тридцатилетнюю историю компьютерной графики разработано великое множество (сотни) форматов хранения изображений. Большинство из них является плодом несогласованности "технического творчества" отдельных групп исследователей и компаний, а также отражает особенности давно вышедших из употребления специфических устройств. Важными свойствами форматов являются присущие им внутренние ограничения, из которых наиболее значимы ограничения на глубину цвета, поддерживаемые цветовые модели ("мониторная" RGB, "полиграфическая" CMYK и т.д.) возможность сохранения нескольких слоев изображения (понятия слоев, контуров и масок здесь не обсуждаются), наличие т.н. "альфа-канала" (фиктивного "цвета", соответствующего степени прозрачности изображения при наложении его на другое изображение) и поддерживаемые алгоритмы сжатия.
Применяемые в растровой графике алгоритмы сжатия подразделяются на неразрушающие и форматы с потерей качества (последние используют психофизиологическую модель человеческого зрения для того, чтобы избавиться от незначимых деталей изображения, что несколько снижает его качество, но позволяет добиться гораздо большей компактности кода).
Практически универсальными являются форматы TIFF (обычно применяемый в полиграфии, допускает лишь неразрушающее сжатие), PNG (наиболее удобный для представления графических данных в мультимедийных системах и WWW, допускающий неразрушающее сжатие), а также медленно вытесняемые последним JPEG (допускающий сжатие с потерями) и GIF (ограниченный 8 бит (256) цветами). Кроме того, многие графические редакторы (включая описанный ниже 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 способен работать с продвинутыми координатными устройствами -- графическими планшетами, в том числе, моделями, распознающими силу нажатия на перо.
Вероятно, успехом GIMP не в малой степени обязан своей изначально модульной и программируемой архитектуре. Сам по себе этот редактор -- достаточно компактная и простая программа, однако его возможности приумножаются за счет открытости архитектуры и наличия множества модулей (в текущей поставке -- около трехсот), реализующих те или иные дополнительные функции, такие как импорт-экспорт сторонних форматов или обработку изображения или его фрагмента по тому или иному алгоритму.
Такие модули можно разрабатывать как отдельные программы с использованием библиотеки GDK, а можно пользоваться одним из встроенных в GIMP интерпретаторов языков программирования. Именно наличие таких интерпретаторов и делает GIMP программируемым графическим редактором. Можно сказать, что его архитектура подобна архитектуре текстового редактора Emacs, о котором говорилось во второй нашей "лекции".
Таких интерпретатора на сегодня два. Забавное название Script-fu, видимо, следует понимать как английско-китайское выражение, означающее "мастерство сценирования" (напомним, что "сценариями" ("скриптами") называют программы, написанные на интерпретируемых языках). Script-fu -- это первый встроенный в GIMP интерпретатор функционального языка Схема (Schema), являющегося потомком первого языка функционального программирования Лисп. Разработчик скрипта имеет доступ к многочисленным базовым функциям-графическим примитивам.
Схема -- весьма продуманный и стройный язык, однако его методический потенциал не может в полной мере быть раскрыт в сегодняшних курсах информатики в средней школе, программирование в которых вводится в директивной (сентенциональной) парадигме. На Схеме, так же, как и на Лиспе, можно писать в директивном стиле, однако изящества и простоты, столь необходимых в обучении, достичь при этом возможным не представляется.
Директивен другой язык, интерпретатор которого также встроен в GIMP. Это Перл (Perl), его GIMP-овская реализация называется Perl-fu. Хороший программист может писать на Перле чисто и аккуратно, однако синтаксис языка сам по себе настолько гибок (чтобы не сказать "жидок"), что, по нашему мнению, Перл совершенно не годится на роль изучаемых в числе первых (хотя существуют и другие мнения, весьма авторитетные).
Добавление в GIMP еще одного интерпретатора (например, алголо- или паскалеподобного языка) не представляется особо сложной задачей, однако о таких проектах ничего не известно, и, наверное, от программирования обработки изображений "внутри" GIMP как от простой в методическом освоении темы большинству педагогов стоит пока отказаться.
Тем не менее, базовой интерактивной функциональности GIMP (включая доступные модули) вполне достаточно, чтобы покрыть обычно изучаемые в школе вопросы обработки графики.
При запуске GIMP на экране открывается ряд окон (Рис. 1). Главное
окно содержит меню основных функций, панель пиктографически
обозначенных "инструментов" и области, в которых
отображаются текщие значения основного и фонового цветов, формы
кисти, текущего градиента. Окна изображения соответствуют отдельным
открытым графическим файлам (или слоям в них).
Дополнительные инструментальные окна (по какой-то причине названные "диалогами") могут открываться из меню главного окна. Однако их всего десяток ("Слои, каналы и контуры", "Параметры инструментов", "Кисти", "Шаблоны", "Градиенты", "Палитра", "Устройства ввода", "Индекс документов", "Консоль ошибок"), а основной массив функций, применяемых к текущему или вновь создаваемому изображению или выбранному участку изображения (включая функции, реализованные внешними модулями-фильтрами) "достаются" через контекстное меню, открывающееся по щелчку правой кнопкой мыши в окне изображения.
Зато можно воспользоваться (непривычным для пользователей упрощенных графических сред, таких, как Microsoft Windows) свойством графической библиотеки GTK+, называемым "линия отрыва". Каждое меню наверху содержит пунктирную линию, щелкнув мышью на которой можно превратить это меню в самостоятельное инструментальное окно, сохраняющееся, пока пользователь явным образом его не закроет (Рис. 2-3). Таким образом (учитывая настраиваемость самой системы меню) можно в любой момент создать на экране дополнительные "панели инструментов", содержащие функции, которыми в ближайшее время предполагается воспользоваться. Привыкшему к другому стилю работы пользователю это непривычно, однако, привыкнув, эту интерфейсную особенность можно использовать весьма эффективно.
Множественность окон, к сожалению, может создавать некоторые неудобства в средах без развитого инструментария управления окнами. В более развитых средах можно "склеить" несколько окон, чтобы они перемещались как единое целое или "поднять" окно, чтобы оно продолжало оставаться видимым, даже если будет активизировано окно, расположенное "под ним" (собственно, многооконное визуальное решение и создано в расчете на наличие таких средств), а если такие средства отсутствуют (как, например, в Microsoft Windows), пользование редактором на мониторе с малым разрешением может быть отягощено необходимостью совершать какие-то дополнительные действия.
Основная интерактивная функциональность, доступная посредством "инструментов" в главном окне, достаточно традиционна для программ этого класса. Она включает, в том числе:
выделение области изображения (прямоугольной, эллиптической или произвольной формы, а также ограниченной кривыми Безье). Последовательно выделяемые области могут образовывать пересечения, объединения или вычитания;
выделение связной области ("волшебная палочка") с заданием параметров связности;
перемещение, копирование, заливку выделенных областей;
кадрирование (обрезку) изображения;
изменение масштаба отображения на экране;
вращение, масштабирование, искривление и зеркальное отображение изображения;
ввод текста;
выбор текущего цвета ("пипетка");
заливку области сплошным цветом или градиентом;
рисование "карандашом" или "кистью" произвольной формы и очистку "ластиком".
В базовую функциональность GIMP входит также возможность захвата изображения со сканера и с экрана.
Основной прием автоматизированной обработки изображений -- фильтрация их целиком, либо выделенных в них областей. Большая часть упомянутых внешних модулей реализует именно функцию фильтрации. Среди наиболее важных в практической обработке изображений фильтров отметим:
изменение цвета, насыщенности, яркости и контраста изображения;
удаление "шума";
повышение резкости и размывание, выделение краев.
Значительное количество фильтров имитируют различные "эффекты": от просмотра изображения через волнистое стекло до натяжения его на сферу, цилиндр или тор.
Синтез изображений в базовой поставке GIMP и известных нам фильтрах не слишком развит, однако есть ряд фильтров, создающие фрактальные изображения (в том числе, натуроморфные).
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].
Слово "компьютер", означающее буквально "вычислитель" и восходящее к лат. computare, сегодня не нуждается в переводе: повсеместно им обозначают электронные вычислительные машины, и оно понятно даже носителям языков, в которых для компьютера есть собственное слово. Однако в английском, из которого оно и начало свое распространение, это слово имеет и более ранее значение: человек, занятый вычислениями.
Парадоксально, но сколько-нибудь систематического исследования вопроса о динамике совокупной "вычислительной мощи", которыми располагало человечество до появления автоматических вычислителей, в мировой литературе не существует (по крайней мере, с ходу не находится), хотя само содержание общематематического образования и профессиональной подготовки до сих пор наполнено, наряду с теоретическими сведениями о природе и свойствах математических объектов, вполне прагматическими приемами, способами, методами эффективного ручного счета.
Такое исследование будет непростым предприятием, учитывая, что в большинстве случаев вычисления были не отдельной профессией, а частью других профессиональных занятий. Бухгалтер, инженер, техник затрачивали существенные усилия на проведение расчетов, являющихся частью их повседневной работы. Компьютер меняет все это: от профессионала по-прежнему требуется умение применить способ расчета, но сами "вычислительные объемы" выполняются все более и более автоматизированно.
Лишь в относительно небольшом количестве случаев такие вычисления можно сделать полностью автоматическими и централизованными, свалить их на "числомолотилки", а в большинстве случаев расчеты должны проводиться уместно, в том месте и в тот момент, когда это необходимо. Иными словами, от все большего количества профессионалов ожидается умение программировать вычисления.
"Программирование" здесь употреблено не в узком значении, связанном с определенной профессиональной деятельностью, использованием специальных ситем нотаций и интеллектуальной дисциплины, а в самом широком, совпадающем с этимологией слова. "Программировать" означает буквально всего лишь "прописывать наперед" те действия, которые должны быть выполнены.
У маркетологов есть такое сленговое выражение: "убойное применение", или "убойное приложение" (killer application). Оно означает то применение какой-либо многофункциональной в своей основе вещи, которое формирует основную долю спроса на нее и превращает ее из модной новинки в массовый товар.
Появившийся на рубеже семидесятых и восьмидесятых, в сравнении с "настоящим" дорогим компьютером дешевый ПК был всем плох, кроме одного: он быстро выводил данные на экран.
Нужно вспомнить, что в те времена относительно дешевые алфавитно-цифровые терминалы соединялись с машиной последовательными интерфейсами (RS-232), скорость передачи данных по которым обычно измерялась в сотнях знаков в секунду, иногда, в тысячах. Гораздо быстрее обменивались данными X-терминалы, включенные в сеть, но это оборудование другого класса, стоившее совсем других денег.
"Терминал" персонального компьютера -- это (не считая клавиатуры и "мыши") адаптер, интегрированный на системной плате или вставленный в разъем шины с параллельной передачей сигнала со скоростью, как минимум в сотни раз превышающей пропускную способность последовательного интерфейса, а на монитор, находящийся всего в десятках сантиметров от компьютера, сигнал передается по аналоговому кабелю.
Даже на ранних ПК вывод данных на экран был, в масштабах человеческого восприятия, мгновенным (если не "тормозила", конечно, сама программа). Это позволило относительно дешево реализовать различные приложения, сама идея которых в том, чтобы представить пользователю "живую" презентацию каких-либо данных. К числу таких приложений относится полноэкранное редактирование текстов и, в особенности, работа с электронными таблицами. Электронные таблицы -- это, по большому счету, единственное приложение компьютера, которое было придумано для ПК и впервые реализовано на ПК. Сегодня, разумеется, благодаря многократно возросшей скорости передачи данных, редакторами электронных таблиц можно пользоваться в компьютерных системах и сетях практически любой топологии (упомянутый ниже KSpread без проблем заработал на карманном компьютере Sharp Zaurus).
Мы придерживаемся отнюдь не общепризнанной точки зрения, согласно которой популярность электронных таблиц как делового приложения компьютера, обусловлена именно простотой решения задач, требующих программирования.
Электронная таблица -- это двумерный массив, каждый элемент (ячейка) которого может содержать либо значение, либо выражение (формулу), причем выражения в качестве связанных переменных могут содержать ссылки на другие ячейки. (Можно считать значение (константу) частным случаем формулы, однако по историческим и эргономическим соображениям синтаксис этих сущностей различен. Значения, к которым приводятся ячейки, содержащие формулу "=100" (если, как во всех известных нам системах управления электронными таблицами, синтаксис формулы предполагает "=" в первой позиции) и константу 100, равны.)
По сути дела, электронная таблица предполагает использование простого функционального языка программирования (точнее, современные системы управления электронными таблицами как правило реализуют язык формул, функциональный в своей основе, но с элементами инфиксной нотации, т.е. с возможностью вместо "=функция1(функция2((сумма(а; произведение(b;c)))))" написать чуть короче: "=функция1(функция2(a+b*c))").
Синтаксис этого языка очевиден для всех, кто понимает, что такое формула в обычном математическом понимании. Кроме того, форма электронной таблицы снимает с пользователя-"программиста" заботу об организации данных (их организует сама таблица, и вместо имен переменных можно использовать координаты ячеек), о вводе-выводе и о связывании отдельных конструкций в программу (вычисление формул происходит по мере необходимости).
Таким образом, с помощью электронных таблиц в учебный курс информатики можно вводить "нулевую степень программирования", объясняя, что такое выражение и переменная, но откладывая на потом то, от чего можно абстрагироваться (сущности, перечисленные в предыдущем абзаце, и другие, более сложные).
Пробежавшись по каталогам свободных программ (таким, как "кузница кода" Sourceforge, содержащая тысячи проектов), можно обнаружить более двух десятков программ в категории "электронные таблицы". Большинство из них -- незавершенные или более или менее законченные учебные проекты. Работу с электронными таблицами можно, видимо, считать зрелым персонально-компьютерным приложением: оказывается, за полгода-год один программист в состоянии реализовать (разумеется, опираясь на существующие библиотеки) до 90% функциональности, свойственной лидирующим программам в этой категории.
Однако знакомство с содержанием коммуникации на форумах поддержки позволяет предположить, что реальную широкую пользовательскую аудиторию получили три свободных проекта:
OpenCalc -- электронно-табличный компонент уже знакомого нам по "лекциям" 1 и 3 интегрированного прикладного делового пакета OpenOffice.org;
KSpread -- компонент еще одного конкурирующего пакета под названием KOffice, который мы пока обходим вниманием. KSpread сегодня также не будет нами рассматриваться, но по чисто техническим причинам. Ничего плохого мы о нем сказать не можем. И, наконец,
Gnumeric -- компонент слабоинтегрированного пакета (или, скорее, собрания программ) GNOME Office, не слишком популярного в России из-за хронических сложностей с кириллической письменностью, свойственных word-процессорному его компоненту, Abiword. Сразу отметим, что, в отличие от последнего, Gnumeric "русофобией" не страдает.
Упомянутое выше слово -- зрелость самого приложения -- ключевая характеристика. Набор ожиданий пользователя, в общем-то, известен, причем не только в части функциональности, но и в части основных эргономических характеристик программы: помимо богатых выразительных возможностей самих функций, для работы с электронными таблицами важна т.н. "остенсивная" операторика, иными словами, возможность "показать пальцем" на объект, с которым нужно произвести те или иные действия. Например, "суммировать значения вот этих ячеек", а не "... ячеек с A5 по D5". В большей, чем в других приложениях, мере очевидны эвристики, которые должны реализовываться программой в качестве "подсказок"; например, если в ячейку, завершающую длинный столбец чисел, пользователь намерен ввести формулу, скорее всего он суммирует значения, а если он начал ряд "1 2 3" или "январь, февраль, март", скорее всего, он продолжит его очевидным образом.
Соответственно, различий можно ожидать лишь в деталях реализации
функциональности и эргономики. И действительно, большинство
редакторов электронных даблиц, включая и перечисленные, очень похожи.
За две недели, которые готовилась эта "лекция", автор (в обычной жизни не пользующийся этим классом программ), проверяя свои впечатления, "играл" с четырьмя подобными системами, пытаясь решать несложные задачки, которые обычно он решает (ввиду специфики личного профиля навыков) с помощью СУБД, включая 1) элементарные инженерные расчеты (расход материалов и жесткость корпусной мебели), 2) бюджетирование небольшого проекта, 3) бюджетирование личных расходов. Под горячую руку попали и 4) три задачки из учебника алгебры его сына (за 11 класс), две из которых даже удалось с ходу решить.
В
число этих систем вошли три упомянутые свободные программы и, в
качестве контрольного образца, очень популярная несвободная Microsoft
Excel (из офисного пакета Microsoft Office 2000). Вывод: существенной
разницы в возможностях и способах их реализации 99% пользователей не
обнаружат. Некоторые тонкости: самой "интуитивной"
показалась Gnumeric, лучше всего документирована Microsoft Excel, у
последней также наиболее развиты средства визуализации (построение
графиков и диаграмм).
Тем не менее, если бы автору предстояло регулярно работать с электронными таблицами, скорее всего, его выбор пал бы на сравнительно "серенькую" OpenCalc из-за единства интерфейса и интегрированности с OpenWriter и OpenDraw, которыми он пользуется регулярно.
Как и остальные упомянутые программы (за исключением Microsoft Excel), OpenCalc определяет особое приложение языка разметки XML, которое и используется для хранения рабочих книг (почему-то workbook переводится как "рабочая книга", хотя вообще-то это обычная "тетрадь") с подшитыми в них листами электронных таблиц. Как и остальные компоненты OpenOffice.org, OpenCalc упаковывает XML-файл с содержимым (а также ряд вспомогательных файлов) в PKZIP-архив, который и является единицей хранения документа. (О важности стандартизации языков представления данных в "офисных" приложениях мы подробно говорили в первой "лекции", к каковой и отсылаем читателя.)
Кроме "родного" формата, 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. Стили оформления могут определяться для отдельных ячеек, их совокупностей, листов и рабочих книг в целом, а также для включаемых элементов, таких как текст или иллюстрации (в том числе, графики и диаграммы).
Серьезными достоинствами OpenCalc являются:
1) свободное лицензирование и конкурентная поставка (с соответствующими ценовыми последствиями);
2) независимость от ОС (и пользование им не диктует практически никаких ограничений на выбор операционной системы и операционной среды). Более того, навыки работы с этой программой также в большой степени переносимы. Фактически, OO.o выглядит и управляется одинаково под любой стандартной ОС (разработчики говорят о поддержке Linux и Solaris; известно об устойчивой работе пакета под FreeBSD), а также под Microsoft Windows 9x/Me и Microsoft Windows NT/00/XP, есть экспериментальный порт (перенос) на "Макинтоши", под MacOS X (по некоторой информации, в команду уже вошли представители Apple Computers);
3) он использует в качестве языка разметки стандартный XML. В качестве кодировки используется Unicode, что позволяет забыть про третью (после классических "дураков и дорог") российскую проблему с разнобоем в кодовых таблицах, используемых для представления кириллицы в разных системах,
4) в команде разработчиков есть российские программисты и фирмы, которым небезразличны перспективы его применения в школе.
Пакет OO.o входит во все "большие" (многодисковые универсальные) дистрибутивы ОС Linux и во многие "маленькие" (одно-, двух- и трехдисковые, исключая ориентированные исключительно на серверное применение).
Мы рекомендуем обратить внимание на российскую сборку OO.o, поставляемую с ALT Linux ("большой" дистрибутив Master и "маленький" Junior; www.altlinux.ru) и ASPLinux (в различных вариантах, 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 вообще и OpenCalc в частности пока освещены лишь в сравнительно небольшом количестве публикаций. Внимания заслуживают [6-8].
Существует широко распространенное заблуждение, согласно которому графический интерфейс якобы представляет собой высшую и последнюю стадию развития пользовательских интерфейсов, а (командная строка( -- это нечто примитивное и малополезное, если не устаревшее.
На самом деле, эта последовательность отражает не что иное, как порядок, с которым с двумя основными метафорами организации пользовательских интерфейсов познакомились пользователи персональных компьютеров. Вплоть до начала девяностых ПК были простыми и маломощными, поддержка графики и возможность комфортной работы с оконными графическими системами появилась на них недавно (даже в масштабе стремительно развивающейся информационно-технологической отрасли).
Однако за годы до этого графические интерфейсы уже широко применялись на рабочих станциях -- конечно, более дорогом, редком и специализированном оборудовании. Если быть точными, то обе концепции в их более или менее современном виде сформировались примерно в одно время.
В 1967-68 гг. Дуг Энгельбарт представил прототип т.н. WIMP-интерфейса, т.е. интерфейса, использующего понятия окон (windows), пиктограмм (icons), меню (menus) и указателей (pointers), являющихся ключевыми и для сегодняшних графических пользовательских сред.
В 1968-69 гг. Кен Томсон и Деннис Ричи представили первый релиз ОС UNIX, по сути, явившейся прототипом артикулированной системы современных понятий практической информатики, таких, как процессы и файлы, и содержащей непротиворечивый, логичный и лаконичный язык работы с соответствующими им сущностями, который спустя полтора десятка лет стал стандартным пользовательским интерфейсом ОС. (Рубеж шестидесятых и семидесятых -- уже -- прошлого -- века вообще является "осевым временем" информатики и вычислительной техники...).
Разумеется, как одна, так и вторая метафорические системы появились не на голом месте, и их родословную можно проследить назад вплоть до истоков вычислительной техники: до коммуникационной панели первых компьютеров, как вещи твердой и весьма графической (или, во всяком случае, живописной) -- это конец сороковых, и до языков управления заданиями в первых программных планировщиках, загрузчиках и ОС -- это середина пятидесятых, соответственно. Отметим, что идея управления компьютером как "прибором" -- с помощью органов управления (неважно, "в железе" или нарисованных на экране) старше идеи "диалога" при помощи слов.
При этом, для большинства пользователей знакомство с "командной строкой" до недавнего времени отягощалось радикальным упрощением и изменением, которым язык стандартной оболочки ОС был подвергнут при разработке ОС для ПК (таких, как CP/M, MS-DOS (PC-DOS) и клонов последней). Ограничиваясь знакомством со средствами MS-DOS и ее командных файлов, о метафоре "командной строки" можно составить лишь весьма превратное и убогое представление.
Для людей старорежимных, начиная от возраста автора (ему 33) и старше, компьютер удивителен и страшен своей уникальной способностью к символической активности. Мы выросли в мире "глупых" вещей, пассивных или проявляющих свою активность чисто механически (как автомобиль, который может быстро довезти, или же раздавить, если вовремя не увернешься), и неспособных к диалогу в бытовом окружении. К диалогу способны были вещи культуры (книга, картина, симфония) -- но опосредованно, в отдельных, отведенных для этого местах, в назначенное время и при тщательном отборе собеседников.
Возможно, пирожное и говорило, по Курту Левину, на своем кондитерском языке "съешь меня", но ничего подобного продемонстрированной нам недавно упаковке, говорящей "купи меня" уже обычным человеческим голосом (причем, с учетом физиоантропометрических данных приблизившегося покупателя), не было. Вещи были "глупыми", сколь бы изощренный ум своих создателей они не воплощали, а умными были только люди.
Автор до сих пор находится под влиянием первого своего опыта в десятилетнем возрасте общения с компьютером, что-то ему ответившим в ответ на введенную строку. Ответившим осмысленно. (Подробностей он не помнит, но, скорее всего, первым ответом было указание на то, что команда содержит синтаксическую ошибку.) Слово страшен выше -- не случайно, но, в конце концов, компьютеры были тогда надежно заперты в своих вычислительных центрах.
Роль клетки для этого зверя для очень многих сегодня играет гладкая поверхность "графических интерфейсов", скрывающая диалог. Компьютер, прикрытый таким образом, уже не демонстрирует пугающую символическую наготу. Он реагирует на нажатую кнопку с картинкой -- можно успокаивать себя, что это такая хитрая машинка: пылесос после нажатия кнопки сосет, а компьютер -- печатает, связано все чисто механически, и никакого человечка, который с изнанки интерфейса посмотрел, куда же ты нажал и определил, что же сделать с картинкой, нет.
На самом деле призрак маленьких человечков есть -- за кулисами гладкой разрисованной поверхности идет обмен такими же -- mutatis mutandis -- сообщениями, что озадачили автора, когда он был маленьким. От нынешних маленьких их хотят попрятать, как электрический ток за изоляцией. Чтобы не стукнуло. Но в шкафу каждого компьютера, будь он трижды персональный, спрятан скелет искуственного разума, при всей условности последнего выражения.