В
число этих систем вошли три упомянутые свободные программы и, в
качестве контрольного образца, очень популярная несвободная Microsoft
Excel (из офисного пакета Microsoft Office 2000). Вывод: существенной
разницы в возможностях и способах их реализации 99% пользователей не
обнаружат. Некоторые тонкости: самой "интуитивной"
показалась Gnumeric, лучше всего документирована Microsoft Excel, у
последней также наиболее развиты средства визуализации (построение
графиков и диаграмм).

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


5.4 Обзор возможностей OpenCalc


Как и остальные упомянутые программы (за
исключением 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) в команде разработчиков есть российские
программисты и фирмы, которым небезразличны перспективы его
применения в школе.


5.5 Ресурсы


Пакет 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].


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


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


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


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


В 1967-68 гг. Дуг Энгельбарт представил прототип
т.н. WIMP-интерфейса, т.е. интерфейса, использующего понятия окон
(windows), пиктограмм (icons), меню (menus) и указателей (pointers),
являющихся ключевыми и для сегодняшних графических пользовательских
сред.


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


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


При этом, для большинства пользователей знакомство
с "командной строкой" до недавнего времени отягощалось
радикальным упрощением и изменением, которым язык стандартной
оболочки ОС был подвергнут при разработке ОС для ПК (таких, как CP/M,
MS-DOS (PC-DOS) и клонов последней). Ограничиваясь знакомством со
средствами MS-DOS и ее командных файлов, о метафоре "командной
строки" можно составить лишь весьма превратное и убогое
представление.


6.1 Текстофобия


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


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


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


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


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


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


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


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


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


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


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

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


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


Однако мысль о том, что пиктограммами и жестами
можно заменить полноценный язык, напоминает нам лишь одну из
гениальных идей академии наук в Лагадо, описанной Свифтом в "Третьем
путешествии Гулливера":


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

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


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

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


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

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


6.2 Командная оболочка: основные понятия


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


Пользователю эта функциональность доступна только
опосредованно, через особую программу, которая "общается"
с ним посредством терминала и вполне логично называется "оболочкой".
Теоретически оболочка могла бы реализовать замкнутый язык диалога (и
ранние архитектуры ОС носят следы таких попыток), но в открытых
системах принята другая философия -- разделения, специализации и
минимизации программ. Поэтому на практике оболочка используется
вместе с утилитами -- набором самых часто употребляемых программ
-- и лишь синтаксис и семантика оболочки вкупе с синтаксисом и
семантикой используемых утилит и образуют полноценный формальный язык
диалога пользователя с системой. В июне 1993 г. этот язык был
стандартизован Международной организацией стандартизации (документ
ISO/IEK IS 9945-2:1993), но известен он больше под своим "отраслевым"
названием POSIX.2.


Существует множество реализаций стандартного языка
оболочки и утилит, восходящих к системам Unix, BSD, проекту GNU и
некоторым другим проектам. Наиболее популярной на сегодня является
bash в составе GNU Tools, разработанных частично в Фонде свободного
программного обеспечения и частично при его поддержке. GNU Tools
являются, наряду с ядром Linux, основой операционных систем на этом
ядре, но доступны и для других ОС, включая альтернативные
архитектуры.


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


6.3 Командная оболочка как инструмент


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















$ ls
! k7m-104.old tmp.sh
EPIA_Manual_v1.0.pdf k7m-104.pdf wget-log
[0-11-9].jpg words-to-avoid.ru.html.1 army_engl.txt
names words-to-avoid.ru.html.2 dengi.rar
opensource.mit.edu www.computerra.ru econ.pdf
ruspunk.swf www.ctc.msiu.ru firewalls.tar
school tmp gosorgan.amursk.ru
tmp.1 www.oreilly.com j463_k7m.pdf
tmp.html
$_


Рис. 1





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















$ ls -l
total 3707
drwxr-xr-x 2 maksim None 4096 Oct 29 2001 !
-rw-r--r-- 1 maksim None 19743 Nov 5 00:08 EPIA_Manual_v1.0.pdf
-rw-r--r-- 1 maksim None 39 May 27 2002 [0-11-9].jpg
-rw-r--r-- 1 maksim None 666120 Nov 12 2001 army_engl.txt
-rw-r--r-- 1 maksim None 12402 Oct 11 2001 dengi.rar
-rw-r--r-- 1 maksim None 101873 Oct 8 2001 econ.pdf
-rw-r--r-- 1 maksim None 2129920 Aug 15 2001 firewalls.tar
drwxr-xr-x 2 maksim None 0 Nov 10 08:48 gosorgan.amursk.ru
-rw-r--r-- 1 maksim None 768086 May 1 2002 j463_k7m.pdf
-rw-r--r-- 1 maksim None 340016 May 1 2002 k7m-104.old
-rw-r--r-- 1 maksim None 2543572 Dec 9 2001 k7m-104.pdf
-rw-r--r-- 1 maksim None 23 Nov 28 03:44 names
drwxr-xr-x 5 maksim None 4096 Nov 7 07:08 opensource.mit.edu
-rw-r--r-- 1 maksim None 855480 Jun 7 17:01 ruspunk.swf
drwxr-xr-x 5 maksim None 0 Oct 14 2001 school
-rw-r--r-- 1 maksim None 16000 Aug 25 02:24 tmp
-rw-r--r-- 1 maksim None 467 Oct 29 2001 tmp.1
-rw-r--r-- 1 maksim None 67888 Sep 26 2001 tmp.html
-rwxr-xr-x 1 maksim None 198 Aug 23 04:48 tmp.sh
-rw-r--r-- 1 maksim None 835 Nov 27 2001 wget-log
-rw-r--r-- 1 maksim None 12698 Jun 16 2000 words-to-avoid.ru.html.1
-rw-r--r-- 1 maksim None 12698 Jun 16 2000 words-to-avoid.ru.html.2
drwxr-xr-x 6 maksim None 4096 Sep 26 2001 www.computerra.ru
drwxr-xr-x 3 maksim None 0 Oct 9 2001 www.ctc.msiu.ru
drwxr-xr-x 12 maksim None 4096 Apr 26 2002 www.oreilly.com
$_


Рис. 2



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


Причина очень проста: как и любая другая
стандартная утилита, ls гораздо чаще используется не оператором, а
какой-нибудь другой программой, поэтому ее вывод приспособлен для
наиболее удобной его последующей обработки. Подача команды с
клавиатуры -- исключение, а не правило, и для удобства оператора
предусмотрен соответствующий ключ. Если пользователю часто нужно
выводить список файлов на экран, он запрограммирует оболочку,
определив для себя синоним (например, синонимом конструкции ls -al
--color=always | less, постранично выводящей список файлов со всеми
атрибутами и с выделением типов файлов цветами, может быть определена
команда lls).


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


















$ cat
Петя
Петя
Яна
Яна
Вася
Вася
Маша
Маша
^D
$_


$ cat >names
Петя
Яна
Вася
Маша
^D
$ ls names
names
$ cat <names
Петя
Яна
Вася
Маша
$_


Рис. 3



Рис. 4






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



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


Еще одним мощным средством оболочки является так
называемый "конвейер" (или "канал") --
соединение вывода одной команды с вводом другой.















$ cat names names >names2
$ cat <names2
Вася
Маша
Петя
Яна
Вася
Маша
Петя
Яна
$ sort <names2
Вася
Вася
Маша
Маша
Петя
Петя
Яна
Яна
$ uniq <names2
Вася
Маша
Петя
Яна
Вася
Маша
Петя
Яна
$ sort <names2 | uniq
Вася
Маша
Петя
Яна


Рис. 5



На рис. 5 приведен развернутый пример. Командой
cat names names >names2 мы создаем файл names2, содержащий
удвоенное содержимое ранее созданного файла names. Утилитой sort его
можно отсортировать в алфавитном порядке, а про утилиту uniq