Calc: Basic vs Python

Автор eeigor, 21 ноября 2020, 19:58

0 Пользователи и 1 гость просматривают эту тему.

eeigor

Добрый вечер!
Подскажите, как лучше перейти на Python? Синтаксис языка я знаю. Кто использует? Как лучше организовать среду? Какие есть "за" и "против"?
Сейчас я использую Basic и Xray. Опыта маловато.
Из ссылок нашёл вот эту:
http://www.openoffice.org/udk/python/python-bridge.html

Но внимательно не смотрел и не разбирался. Предложите что-нибудь...
И есть ли в этом смысл? С VBA тоже приходится сталкиваться и поддерживать работающий код.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

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

Тот Python что внутри OpenOffice|LibreOffice - урезан, в него нужно скопировать удаленные pip setuptools sqlite3 из обычного "ставленного" python той же версии. pip ставится и скриптом get-pip, а дальше можно всё установить. Но также поставить свежаковый python отдельно, и иметь две "виртуальные" среды.  

Сам код на Python работает примерно в 3-4 раза быстрее, чем аналогичный код на Basic/VBA, разгоняясь в основном на строковых операциях, жонглированиях списками (lists/sets/dicts) и др. заоптимизированных вещах. Да и кодятся они очень легко. А, например, питоновский С-модуль sqlite3 работает в 10 раз быстрее, чем приложений Base и код на Basic c sqlite через JDBC/ODBC-драйверы. То есть если вам нужна популярная, но при этом самая быстрая "малопользовательская" БД - то это SQLite через пихтон.  

Если нужно еще быстрее - то ставим pandas+numpy и БД в RAM будет еще быстрее, примерно в 100 раз. Быстрее этого уже ничего нет.  

На сайте LO теперь больше инфы по Питону, и она свежее. Обязательно поставьте расширение APSO. Из хороших IDE - MS VS Code и Thonny.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

eeigor

#2
Спасибо за ответ.
На forum.openoffice.org действительно ругают Basic и больше ратуют за Python (некто Villeroy, старожил из Германии)...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

Ругать можно не Basic, а API LO. Python, увы, всё равно обращается к API OpenOffice|LibreOffice (и работает, в общем-то, с его скоростью). А API этот сложный, в нем нет интроспекции и автодополнения кода, короче почти всех преимуществ быстрой разработки Python - в OLO не получить. Мы все тут обречены непрерывно изучать Basic и читать Питоньяка, пока пользуемся OpenOffice|LibreOffice.

Может когда-то случится чудо и кто-то напишет на python "обертку", которая реализует, скажем, очень приятную объектную модель MS Excel как в VBA, как это отчасти произошло с Base (Access2Base) или с опцией 50% совместимости с VBA в Calc. Скорость будет так себе, просто писать будет легче и желающих будет больше.

Но пока героев нет. Думаю нам пока нужно всеми силами двигать LO в массы, и в опр. момент среди вновь прибывших кто-то смелый или богатый решится сам или даст денег другим на такой допил.

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

Про ускорение работы с данными я уже писал. Питон также очень уместен для конвертации данных в разных форматах парсинга TXT-файлов и сайтов, для "прямой" правки DOC/DOCX/ODT/ODS без самих офисных приложений. За питоном стоят 270 тыс свободных библиотек на все случаи жизни, и половину того что хочется написать - можно уже просто "найти". 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

eeigor

economist, а где хранятся макросы (скрипты) на Python, написанные для данного файла, вместе с файлом или нет? При переносе файла ODS надо ли беспокоиться о переносе скриптов на Python? Если да, то это неудобно...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

eeigor

#5
Мы все используем книгу А.Питоньяка, а что скажете о похожей книге от автора Bernard Marcelly, разработчика Xray? К сожалению, она на фр. языке, перевода на английский не нашёл...
"Programmation OpenOffice.org 3 Macros OOoBASIC et API" by Bernard Marcelly & Godard Laurent

Я перешёл на Linux, поэтому есть "затруднения" разного характера. Как говорил, синтаксис Python знаю, прибегаю к нему в разных случаях (он может почти всё), но есть проблемы, связанные с адаптацией в условиях новой ОС.
Ну, а двойной переход вызван предстоящим прекращением закупки лицензий на Windows/MS Office в связи появлением Реестра отечественного ПО и т. д. (это для госорганов). Одним из претендентов на замену офиса может стать "Мой офис" (https://myoffice.ru/), с поддержкой макроязыка Lua и отсутствием встроенной IDE, и он уже установлен на машины пользователей. Но я смотрю только в сторону LibreOffice, другие варианты не рассматриваю.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

Цитата: eeigor от 22 ноября 2020, 15:00где хранятся макросы (скрипты) на Python, написанные для данного файла, вместе с файлом или нет?
- все почти как с Basic-кодом, можно хранить отдельно и локально/по сети, можно внедрить и зашифровать py-код в ODT/ODS (см. APSO). Но править "внедренный" py-код в Basic IDE не получится, придется извлечь/исправить/внедрить еще раз.

Если вспомнить принципы модульного программирования в python - то всё терпимо: кидаем py-файл в \share\Scripts\python  - в котором есть импорты чего угодно и откуда угодно (хоть из Интернета). Все функции из py-файла в либре будут видны как макросы  или модули, а сам py-файл - как Библиотека.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

eeigor

Цитата: economist от 22 ноября 2020, 14:59Мы все тут обречены непрерывно изучать Basic и читать Питоньяка...
И не будет лишним для перехода на Python: новая информация лучше накладывается на имеющуюся базу.

Переход с Basic на Python:
https://wiki.openoffice.org/wiki/Python/Transfer_from_Basic_to_Python
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

greenman

#8
Цитата: eeigor от 22 ноября 2020, 15:16Одним из претендентов на замену офиса может стать "Мой офис"

Скорее уж R7-Office (https://reestr.minsvyaz.ru/reestr/144820/)

(Это спец вариант "для реестра" более известного OnlyOffice; как у него с поддержкой VBA/Basic/Python -- не знаю, достоинство, по отзывам, хорошая совместимость с форматами от MSOffice.)

Update: JS у них, как и следовало ожидать.

eeigor

#9
Всё едино: чем больше инноваций (разнообразия), тем «скуднее мысль». Их подход таков: 90% пользователей используют 10% возможностей пакета, а значит отсутствие «чего-то такого» не критично. И в 10% – макропрограммирование. Хотя JavaScript – хороший язык. Но Python чище; добавили бы тогда уже CoffeeScript.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

economist

#10
Нам есть с чем сравнить:

- Google Docs используют JS-подобный "обскобленный" язык, нет реального макрорекордера и на нем простые пользователи так и не научились ничего писать. С нуля старт очень труден. Без интернета - юзер беспомощен.

- MSO, CorelDraw, AutoCAD, платные WPS, SoftMaker итд - используют VBA - нет скобок, есть макрорекордер, - в результат родились миллионы макросописателей, огромное комьюнити и база кода на том же SO. С нуля - старт легок, ставишь 2 монитора, разносишь окна приложения и IDE и через полчаса "ты программист" (но пока еще без "ж" в середине). Мусор от рекордера начинаешь понимать и сносить через год. И да, можно учиться по книжкам и без интернета. VBA в Excel - это то что сделало Excel программой №1 в бизнесе с 1,5 млрд юзеров, создало понятие ПК и является эталоном во всех смыслах.

- LO - использует Basic/Python/JAVA/BeanShell, для Basic есть "однобокий" макрорекордер, хватающий только команды Dispatcher (т.е. 90% функцонала API можно узнать только в документации или у Питоньяка). Но и это уже здорово, потомоу что нахаляву, и потому что Writer лучше Word, а соединения данных из Base - лучше чем MSQuery32. В итоге - десятки тысяч макросописателей и почетное "второе место". Без интернета на работе - выучить LO Basic нельзя, но прихватывая вечера дома с интернетом - можно, просто вчетверо дольше. Большую помощь может тут дать энтузиаст-коллега рядом. Данный Форум - хороший пример скопления таких людей, по нему хорошо видно что нам сами часто нужна помощь, на пути API ты как в джунглях.

У новых "альтернатив" офисов (OnlyOffice итд) - пока просто "милое личико", но глубокую автоматизацию на них сделать аццки трудно. Пусть растут и приходят через 3-5 лет с чем-то еще боле удобным чем VBA, например с Python/Julia. За этом время LO, пожалуй, ничем не удивит, но он уже прошел все детские болезни и просто работает на "втором" месте.
 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

eeigor

Полностью согласен. Поэтому LO уже ни на что менять не буду. Но MSO тоже знаю хорошо, однако на моём ноуте его нет (Linux).
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community