Книга Александра Пиперски «Конструирование языков»

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

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

Автор этой книги — достаточно известный в определенных кругах популяризатор лингвистики Александр Пиперски, а его книга «Конструирование языков. От эсперанто до дотракийского» была издана уже в далеком 2017 году, а в 2020 вышло второе издание. Именно его я и читал. По сути в этой книге приводится краткий обзор искусственных языков, созданных для различных целей, как для художественных произведений, так и для реального использования. Мне особенно понравилась подача материала про некоторые языки, когда в начале главы приводятся несколько фраз на описываемом языке с переводом, а потом на основе этих данных читателю предлагается найти логику в построении этих выражений и выполнить задания по переводу других приведенных предложений. Затем в тексте главы автор вместе с читателем распутывает этот ребус, выявляя структуру построения фраз на описываемом языке.

Читать далее…

OutWiker 3.3.0.936 beta. Снова новые векторные иконки и мелкие исправления

OutWiker 3.3.0.936 beta. Снова новые векторные иконки и мелкие исправления

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

За последнее время мне несколько пользователей написали сообщения, что нельзя менять горячие клавиши, которые назначены на такие действия как «Выбрать все» (Ctrl+A), «Отменить» (Ctrl+Z), «Вернуть» (Ctrl+Y), а также, что для работы с буфером обмена назначить клавиши Ctrl+Insert / Shift + Insert вместо Ctrl+C / Ctrl + V. Действительно, раньше эти клавиши были привязаны к компоненту редактора внутри программы, но в новой версии их тоже можно переназначать.

Читать далее…

Книга Тиаго Антао «Сверхбыстрый Python»

Недавно дочитал книгу Тиаго Антао, которая в русскоязычном варианте называется «Сверхбыстрый Python», а в оригинале более скромно — «Fast Python». Ее подзаголовок — «Эффективные техники для работы с большими наборами данных». Сразу скажу, что книга мне очень понравилась и я ее всячески рекомендую тем, кто занимается обработкой данных или большими вычислениями с использованием Python.

Как известно, Python обладает репутацией медленного языка, и к сожалению, заслуженно. Его главное преимущество — это удобство работы. Но иногда требуется скорость, которую чистый Python обеспечить не может, а переписывать всю программу на C / C++ / Rust не хочется. К счастью, для таких случаев в Python есть обходные пути, позволяющие вроде бы писать на языке Python (или его подобии), но при этом значительно повысить скорость расчета или обработки данных. Тут надо оговориться, что книга посвящена приемам и библиотекам, работающим с реализацией CPython, не затрагивая другие реализации Python, такие как PyPy, IronPython, JPython и др.

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

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

Далее я коротко пробегусь по главам книги и расскажу о чем они.

Читать далее…

OutWiker 3.3.0.934 beta. Векторные иконки и новое окно настроек

OutWiker 3.3.0.934 beta. Векторные иконки и новое окно настроек

Выложил первую в 2024 году бета-версию OutWiker. В этой версии было сделано достаточно много изменений, в том числе такие, которые в будущем позволят сделать интерфейс намного более удобным. Те, кто читают Телеграм-каналы @outwiker или @jenyaynet, уже в курсе основных изменений в этой версии, хотя и они не знают всей правды, потому что одну возможность я реализовал совсем недавно.

Читать далее…

Книжные итоги 2023

Книжные итоги 2023

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

Читать далее…

OutWiker 3.3.0.932 beta — Контекстное меню меток и более аккуратное главное меню

OutWiker 3.3.0.932 beta - Контекстное меню меток и более аккуратное главное меню

До конца года хочется успеть вложить еще одну бета-версию OutWiker, номер версии предновогодней сборки — 3.3.0.932 beta.

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

Читать далее…

OutWiker 3.3.0.930 beta. Исправление ошибок в библиотеках

OutWiker 3.3.0.930 beta. Исправление ошибок в библиотеках

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

Читать далее…

Про книгу Дэвида Сиббета «Визуализируй это!»

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

Читать далее…

Переписал еще одну статью про Matplotlib

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

Новую версию по сути переписанной заново статьи вы можете прочитать по ссылке — Как рисовать графики в разных окнах.

Все статьи про рисование графиков в Python с помощью библиотеки Matplotlib можно увидеть по ссылке — Использование библиотеки Matplotlib.

Первые впечатления об электронной книжке Meebook P10 Pro

Вчера получил электронную книжку Meebook P10 Pro, которая должна стать заменой моей старой Pocketbook 902, она у меня аж с 2011 года. Из-а того, что я читаю технические книги, то мне мне нужен был принципиально большой экран. Моя старая книжка уже многое пережила, и ей пора на пенсию по инвалидности. Ей и материнку меняли (ровно через месяц после окончания гарантии), и аккумулятор, она уже почему-то перестала сохранять страницу, до которой дошел при чтении (приходилось перед ее выключением добавлять закладку). Про старую читалку я когда-то даже писал обзор.

    

На второй фотографии можете сравнить две книжки. Слева — Meebook, справа — Pocketbook.

Про Meebook я узнал на Хабре и заказывал в AliExpress. В отличие от Pocketbook 902, она работает на Android, имеет подсветку, и, чем она меня подкупила больше всего, она позволяет черкать в книжках стилусом. Это основная причина, почему я до сих пор покупаю бумажные книги. В Pocketbook выделять цитаты можно было, но это была очень медленная процедура. Я думал купить полноценный планшет для чтения, но все-таки глазам приятнее читать книги на электронных чернилах, чем на светящемся экране. А тут вроде как и недопланшет, в котором есть Google Play.

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