How to Build Executable Common Lisp Apps? [EN Subs]

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 พ.ย. 2024

ความคิดเห็น • 15

  • @jacekjacenty
    @jacekjacenty ปีที่แล้ว +3

    Very good, as usual. Thank you for the good-quality tutorials.

    • @40Ants
      @40Ants  ปีที่แล้ว

      Soon I'll make another video about packaging Common Lisp apps for OSX and Homebrew.

  • @gassechen
    @gassechen ปีที่แล้ว +1

    Muchas gracias. Maravilloso video

  • @free_air_lines1633
    @free_air_lines1633 ปีที่แล้ว +2

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

    • @regrin
      @regrin ปีที่แล้ว

      Очень хорошо для графического интерфейса использовать библиотеку cl-cffi-gtk. Её легче установить, чем CommonQt (эту вообще не весть как запустить), а за одну только документацию авторов можно на руках носить. Там полноценный туториал, практически учебник. Сама библиотека представляет из себя обёртку над GTK-3, если не ошибаюсь. Так что используйте cl-cffi-gtk.
      Филипп

    • @40Ants
      @40Ants  ปีที่แล้ว +1

      Я хочу сделать проект - небольшое приложение для запоминания карточек, и попробовать реализовать для неё UI с использованием разных библиотек. И конечно про все расскажу. Наверное начну этот проект ближе к концу июля.

    • @free_air_lines1633
      @free_air_lines1633 ปีที่แล้ว

      @@40Ants спасибо! Ждем с нетерпением!

    • @free_air_lines1633
      @free_air_lines1633 ปีที่แล้ว

      @@regrin спасибо, я уже пытался в Portacle использовать CL-CFFI-GTK, но когда загружал её через quicklisp, появилось сообщение об ошибке типа "библиотека не может быть загружена, не найден файл LIBGLIB-2.0-0.DLL". Хотя если посмотреть папки через проводник Windows, то в папке .../win/glib/bin файл libglib-2.0-0.dll присутствует.

    • @regrin
      @regrin ปีที่แล้ว

      @@free_air_lines1633 Это прискорбно. Хотя, может оказаться так, что для других библиотек GLIB тоже нужна. Внесите жалобу на гитхабе. Я бы рад помочь но у меня Линукс. Хотя могу попробовать установить на компьютер родственников.

  • @gassechen
    @gassechen ปีที่แล้ว +1

    En español también funciona la traducción

  • @KMiNT21
    @KMiNT21 ปีที่แล้ว

    Привет. Подсажи, есть ли где-то видео или статьи, раскрывающие силу LISP с точки зрения построения крупных проектов? Т.е. практические примеры того, как понижается сложность восприятия, упрощается работа с проектом. Я подразумеваю случай, когда всего один человек его разрабатывает.

    • @40Ants
      @40Ants  ปีที่แล้ว +1

      Для меня важны три особенности Lisp ускоряющие разработку:
      - интерактивность: можно быстро посмотреть что происходит с программой и исправить её (про интерактивность: th-cam.com/video/JklkKkqSg4c/w-d-xo.html)
      - макросы: можно создавать свои "под языки" и писать программу в терминах бизнес-логики. Код получается более сжатый и эффективность разработки возрастает (пример языка для CI: th-cam.com/video/j2d5hYGVI7M/w-d-xo.html)
      - CLOS и мультиметоды позволяют очень гибко использовать ООП: gigamonkeys.com/book/object-reorientation-generic-functions.html, ну и в целом рекомендую Practical Common Lisp почитать, я именно с этой книги начал и подсел на Common Lisp)

    • @KMiNT21
      @KMiNT21 ปีที่แล้ว

      @@40Ants
      >интерактивность: можно быстро посмотреть что происходит с программой и исправить её
      Что-то вроде такой интерактивности дает Jupyter Notebook. Бывает много ситуаций, когда каждый раз целиком какой-то python скрипт перезапускать становится крайне неудобным. Особенно, когда ты с нейронками что-то делаешь. И тогда переходишь на Jupyter, которого как раз достаточно, чтобы "по кусочкам" дальше что-то дописать и смотреть моментально результат, запуская только отдельные ячейки. Очень удобно. Итеративно двигаешься дальше и дальше, дописывая всякую логику, не перезапуская предыдущие этапы обработки данных.
      > макросы: можно создавать свои "под языки" и писать программу в терминах бизнес-логики.
      Вот это я пытался в примерах "присмотреть", но что-то все не то... Я макросы еще 20 лет назад любил писать на C, чтобы делать код проще и короче. Сейчас вот пытался увидеть что-то такое вдохновляющее на LISP, но так и не увидел ничего понятного и наглядного, чтобы сразу почувствовать -- ВОТ!
      Попробовал придумать что-то на своем коде. Даже пооткрывал всякое свое на питоне, пытаясь найти места, где можно было бы что-то реализовать более высокоуровнево. На уровне синтаксиса, а не функций. Я, кстати, и на Nim когда-то тоже открыл про макросы почитать, когда хотел частично и его использовать для некоторых задач. Думал-думал... И тогда тоже не увидел мест, где они бы мне пригодились. :)
      Сейчас только подходящее место в телеграм-боте вижу, где сначала идут функции-обработчики, а затем внизу целый список последовательного добавления их в диспатчер... Типа вот такого (и так для каждой команды):
      dispatcher.add_handler(CommandHandler('remove', remove_player))
      Вот там -- да, я бы сделал макросом. Я там, конечно, пробовал и в функциональном стиле, кишками наружу, так сказать, применяя map на list команд, но потом переделал обратно. Никак это код не улучшает, так как список приходится поддерживать все равно вручную.
      Вместо простого объявления функции (и последующего вызова dispatcher.add_handler для каждой)
      def remove_player(update, context):
      код функции
      можно было бы что-то вроде
      register_handler_for_command 'remove':
      код функции
      Чтоб и регистрировала в диспатчере ее сразу, и еще когнитивную нагрузку снимало даже тем, что скрывает и имя функции и шаблонные параметры (одинаковые для всех обработчиков).
      В общем, не так-то и просто найти место, где будет адекватно вводить новую лишнюю абстракцию, которая упростит код, а не усложнит его.