OpenCalc — вільний редактор електронних таблиць
Слово «комп'ютер», що означає буквально «обчислювач» і походить від лат. 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, якими він користується регулярно.
Огляд можливостей 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 є:
- вільне ліцензування і конкурентне постачання (з відповідними ціновими наслідками);
- незалежність від ОС (і користування ним не диктує практично ніяких обмежень на вибір операційної системи і операційного середовища). Більш того, навики роботи з цією програмою також у великій мірі переносимі. Фактично, OO.o виглядає і управляється однаково під будь-якою стандартною ОС (розробники говорять про підтримку Linux і Solaris; відомо про стійку роботу пакету під FreeBSD), а також під Microsoft Windows 9x/Me і Microsoft Windows NT/00/XP, є експериментальний порт (перенесення) на «Макінтоші», під MacOS X (за деякою інформацією, до команди вже увійшли представники Apple Computers);
- він використовує як мову розмітки стандартний XML. Як кодування використовується Unicode, що дозволяє забути про третю (після класичних «дурнів і дорiг») російську проблему з різнобоєм в кодових таблицях, що використовується для представлення кирилиці в різних системах
- у команді розробників є російські програмісти і фірми, яким небайдужі перспективи його застосування в школі.
Ресурси
Пакет OO.o входить у всі великі (багатодискові універсальні) дистрибутиви ОС Linux і в багато маленьких (одно-, двох- і трьохдискові, виключаючи орієнтовані виключно на серверне застосування).
Ми рекомендуємо звернути увагу на російську збірку OO.o, що поставляється з ALT Linux («великий» дистрибутив Master і «маленький» Junior; http://www.altlinux.ru) і ASPLinux (у різних варіантах, http://www.asplinux.ru). У ній раніше, ніж в основній вітці, з'являються нові можливості, орієнтовані на російськомовного користувача, в той же час, затримка складок нових версій (по відношенню до основної гілки розробок) мінімальна.
Багатоплатформена (Linux і Microsoft Windows) російська збірка доступна у складі збірки OpenOffice.ru, його можна узяти на сайті http://www.openoffice.ru або придбати (список реселерів доступний на тому ж сайті) однодискову коробку. Про російські складки ТОВ під «Макінтош», Solaris та інші ОС нам нічого не відомо, і їх користувачам можна порекомендувати слідувати по посиланнях з http://www.openoffice.org.
Основний російськомовний ресурс, присвячений OpenOffice, — це той же сайт http://www.openoffice.ru і його сателіти (включаючи http://docs.openoffice.ru). Основний міжнародний ресурс — це базовий сайт розробки http://www.openoffice.org). OO.o взагалі і OpenCalc зокрема поки висвітлені лише порівняно невеликій кількості публікацій. Уваги заслуговують .