Я боюсь называть это "микрокомпьютером". По мне так это LISP-машина на минималках. Правда даже не LISP-машина. Ну что я заладил "это не микрокомпьютер".

В принципе моя разработка сойдёт.

Ну синтатикс слабоват... Но мне клавиатура как обычно не позволяет.

Вот небольшой код на моём LISP:

(def 01 5)
(def 02 6)
(def 03 + 01 02)
(+ 03 5 1)

Результатом работы данного кода станет число 17.

Ну перейдём к статье (о боже, за минусуйте меня за то что такой большой текст перед катом).

Средства для разработки этой машины.

Ну, средства то не обязательно. Ну ещё можно говорить много всего. К примеру: сенсоры, модули, дисплеи ну и всё в этом роде.

Работал я в Thonny IDE.

Так что вот эти самые средства разработки и не только:

  • Thonny IDE.

  • 4x4 матричная клавиатура (она меня бесит из-за количества клавиш).

  • OLED дисплей SSD1306 128x64.

  • Также как говорят "Dupont Line" (но вообще проще сказать "проводки").

  • Аккумулятор (НО НЕ БАТАРЕЙКА).

  • Ну и конечно - кнопка включения.

  • Коробка из другого устройства.

Вот набор для создания моей LISP-машины (о нет, этот обзор превратился в туториал).

Дальше: о том как я сделал класс для нуля.

О том как я делал прошивку.

Да. Я и вправду сделал класс для нуля (зачем???).

Так вот. Вот отрывок кода:

class PicoLISP:
    def __init__(self):
        self.tokens = [(r'\(', 'reserved'), (r'\)', 'reserved'), (r'\+', 'reserved'), (r'def', 'reserved'),
                       (r'(0[1-9][1-6]|0[1-9])', 'id'), ('[0-9]+', 'int')]
        with open('env', 'r') as fr:
            self.env = eval(fr.read())

Что вы можете заметить:

  1. ОПЯТЬ РЕГЭКСПЫ ДА СКОЛЬКО МОЖНО (я нечего не могу с этим поделать).

  2. Название моего LISP-а: PicoLISP.

  3. Переменные - загружены с файла env.

  4. Токенов также мало как и команд (логично).

Теперь хочу оправдаться над пустым классом Zero (так ещё и с пустым __init__).

Я его создал из-за того, чтобы не делать всегда переменные в файле env нулём. А делать только тогда, когда значение выражения - это ноль.

Я создал класс display и keyboard для контроля клавиатуры и дисплея (чтобы делать это было легче). Ну. Также я реализовал функцию SYSCALL(sys_call, **args). Для чего? Для SYS_CLEAR, для SYS_WRITE ну и для SYS_INPUT.

SYS_CLEAR (ключевые параметры: display): очистить экран.

SYS_WRITE (ключевые параметры: display, text, x, y): вывести что либо.

SYS_INPUT (ключевые параметры: display, keyboard, text, x, y): спросить что-то (пародия на scanf в C).

Функцию саму не покажу. Почему? Потому что она плохо выглядит.

Главное происходит в функции run в классе PicoLISP.

Там строка проходит через лексинг и парсинг. Дальше процесс заканчивается.

Да в принципе, как то не хочется построчно описывать код в 417 строчек кода.

Главной фичей стало сохранение переменных в файл.

А теперь чуть-чуть дизайна и идей.

Чтобы не смотреть на своё детище со взглядом: как же не красиво это выглядит, я положил всё это в коробку чётко заклеив всю рекламу на ней.

Назвал я свой компьютер названием "PearComputer" (груша теперь компьютер?).

С одной стороны это прикольное название а с другой так себе. Ну ладно.

Кстати! В начале воспроизводится ритмичная мелодия (наверно).

Я то, пишу, а показать внешний вид не могу. Так что вот фотка самого проекта:

Ну вот так вот.
Ну вот так вот.

Надеюсь вам понравится.

Заключение.

Ну вот такой проект получился. Вот вам пару тестов:

(def 01 5)
(01)

Этот код выводит 5.

(def 01 5)
(+ 01 5 5 5)
(+ 2 2 2 2)

А этот выводит с начало 20 а потом 8.

Надеюсь вам понравилось!

Удачного вам дня!

Комментарии (10)


  1. green_fenix
    20.06.2025 19:44

    Мое состояние после прочтения

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


    1. SystemSoft Автор
      20.06.2025 19:44

      Вроде всё исправил


  1. maikuss
    20.06.2025 19:44

    Очень необычный текст.


  1. NekitGeek
    20.06.2025 19:44

    А мне повествование понравилось. Хотелось бы без иронии чтобы так рассказывали о сложных вещах без воды и AI-slop'а.


  1. granv1
    20.06.2025 19:44

    можно грабить корованы?


    1. APh
      20.06.2025 19:44

      Одназночна! Sic!


  1. edyatl
    20.06.2025 19:44

    Заносите в реестр отечественного ПО и оборудования. Срочно. Пока не пришли немцы.


  1. Jijiki
    20.06.2025 19:44

    lisp классный яп


  1. APh
    20.06.2025 19:44

    Удивительно! Но в XXI в. уровень инженеров со светлыми головами и интересными идеями скатился на уровень троечников 50-х, которых со скрипом брали на завод, но метлу доверяли.

    Ведь, можно же нажать F7 в текстовом процессоре перед публикацией. Или воспользоваться бесплатными нейросетям безо всяких Вэ-Пэ-Энов: ГигаЧат, Яндексовая, ДипСик.... Но, нет! Надо поток сознания излить, чтобы удовлетворить жажду графомании.

    Автор, Вы молодец! За изобретение --- пять. Но, за экзамен --- два. Профессор, конечно, лопух. Но аппаратура при нём, при нёммм. (Если Вы помните, конечно, откуда это.)))


  1. SystemSoft Автор
    20.06.2025 19:44

    Вроде все глупые ошибки исправил, если что пишите что вы ещё не заметили.