АрдуЛисп: революционное решение в области образовательной робототехники. arduino.. arduino. DIY или Сделай сам.. arduino. DIY или Сделай сам. Lisp.. arduino. DIY или Сделай сам. Lisp. osdlab.. arduino. DIY или Сделай сам. Lisp. osdlab. pinlab.. arduino. DIY или Сделай сам. Lisp. osdlab. pinlab. ардуино.. arduino. DIY или Сделай сам. Lisp. osdlab. pinlab. ардуино. лисп-машина.. arduino. DIY или Сделай сам. Lisp. osdlab. pinlab. ардуино. лисп-машина. образовательная робототехника.. arduino. DIY или Сделай сам. Lisp. osdlab. pinlab. ардуино. лисп-машина. образовательная робототехника. Программирование микроконтроллеров.. arduino. DIY или Сделай сам. Lisp. osdlab. pinlab. ардуино. лисп-машина. образовательная робототехника. Программирование микроконтроллеров. соревновательное программирование.

АрдуЛисп – это революционное решение для олимпиадной и соревновательной образовательной робототехники, основанное на использовании блочного языка программирования и скриптового языка программирования – ЛИСП.

Интерфейс программы АрдуЛисп
Интерфейс программы АрдуЛисп

Все известные решения в области образовательной робототехники в мировой практике имеют возрастной порог:

  • либо 7+ – для быстрого вхождения, в котором используется блочный визуальный язык программирования от компании GoogleBlockly (Блокли). Так Blockly является основой оболочки Scratch (Скретч).

  • либо 14+ – использование скриптовых языков программирования: С++,Java, Python, Lua.

Однако, если ученик сначала осваивает блочный язык программирования, результатом которого является формирование алгоритмического стиля мышления, то это может произойти достаточно быстро, например к возрасту 11-12 лет, то возрастной порог всё ещё не позволяет перейти к полноценному изучению скриптовых языков программирования с высоким порогом вхождения 14+.

Компания Лего, в своё время озадачилась этой проблемой. Так появились конструкторы Lego Spike, которые можно программировать как на Scratch так и на microPython. Однако microPython имеет также порог вхождения 14+. Об этом свидетельствуют производители отечественной IoT платы от компании PinLab на базе микроконтроллера ESP8266.

Всё же, наибольший интерес представляет образовательная робототехника на основе Ардуино, поскольку тут можно достичь знаний языка программирования С++ и возможности работать над проектами любой сложности. Но это базовое решение требует высокого порога вхождения, не менее 14+.

Для снижения порога вхождения в программирования платформы Ардуино на С++ существует отечественное решение – Ardublock, среда в которой можно составить программу в виде блоков и автоматически получить её аналог на языке С++. Это довольно хорошее решение, но оно обладает некоторыми недостатками, к сожалению, в большинстве случаев связанными непосредственно с политикой автора. Но здесь мы на этом останавливаться не будем…

Языки программирования Python, Java, Lua могут также использоваться в Ардуино-проектах, превращая плату в интерпретатор этих языков, что можно расценивать как модельное преимущество, в отличии от компилируемого С++. Недостатком использования этих языков программирования является то, что им требуется более мощный микроконтроллер, например, ESP или STM. Кроме того, эти решения требуют всё-равно возрастного порога 14+.

Язык программирования ЛИСП, «открытый» Джоном Маккарти в 50-х годах прошлого века, способен решить проблему 11+. Следует отметить, что Джоном Маккарти является автором понятия AI (Искусственный Интеллект). То есть его язык программирования изначально создавался для реализации AI подхода в ЛИСП-машинах. Сейчас это совсем не очевидно. Но с другой стороны можно точно сказать, что из любой Ардуино-совместимой платы, в современных условиях, можно сделать интерпретатор языка ЛИСП, т.е. ЛИСП-машину. Для этого нужно обратить своё внимание на проект – uLisp.

LISP, в отличие от других интерпретируемых языков – Python, Java, Lua, в версиях для микроконтроллеров, имеет свои преимущества.

Во-первых, как уже было отмечено, ЛИСП-машину можно собрать из любой платы Ардуино на базе микроконтроллеров AVR, даже на Arduino Nano! Конечно, здесь оптимальным решением будет использование Arduino Mega, но всё же!

Во-вторых, при использовании Arduino UNO, Nano или Mega, мы можем позволить себе задействовать симулятор электрических схем – SimulIDE в качестве среды для экспериментов. Для этого потребовалось добавить в SimulIDE плагин UDP-serial и коррекцию работы с UTF-8.

Работа ЛИСП программы в SimulIDE
Работа ЛИСП программы в SimulIDE

В-третьих, язык программирования uLisp достаточно простой в сравнении с microPython и другими интерпретаторами. Здесь нет пересечения множества парадигм, что оптимально для начинающих программистов. С другой стороны, изначально ЛИСП считается языком функционального программирования, однако при реализации uLisp на Blockly практически 100% всего императивного функционала в нём беспроблемно реализуется.

Перечислим преимущества оболочки АрдуЛисп в сравнении с Ardublock:

  • Не нужно компилировать программу. Программы uLisp запускаются в режиме интерпретатора.

  • Генерируемый язык программирования uLisp более простой, по сравнению с аналогами, что позволяет снизить потенциальный барьер при обучении программированию при переходе от блочного программирования к скриптовому.

  • Возможность использовать имена переменных и функций на кириллице.

  • Возможность выполнять программу непосредственно в симуляторе – SimulIDE через плагин UDP-serial.

Выбор порта для работы с АрдуЛисп и SimulIDE, либо платой Arduino

Выбор порта для работы с АрдуЛисп и SimulIDE, либо платой Arduino
  • Более продуманный функционал для обучения непосредственно программированию, в том числе и для решения олимпиадных задач. Например, грамотное наследования от класса библиотеки Adafruit GFX позволяет использовать единый минимальный набор визуальных блоков Blockly для работы с различными устройствами вывода графической информации.

  • Возможность создавать модули для более удобной работы над большими проектами.

  • Запуск оболочки из ОС Linux, кроме web-версии и версии Wndows. Для обмена данными с COM-портом в АрдуЛисп реализована оболочка на базе Qt (WebEngine) и как альтернатива – flask web-server на базе – Python.

  • Свободно распространяемый продукт с открытым исходным кодом (скачать с gitverse.ru)

    Проект светильника, выполненный с учеником 4-го класса с использованием АрдуЛисп, Arduino Mega и WS2812

    Проект светильника, выполненный с учеником 4-го класса с использованием АрдуЛисп, Arduino Mega и WS2812

Из сравнительных недостатков, которые ограничивают использование оболочки АрдуЛисп прямо сейчас — это недостаток обучающих материалов, которыми изобилует Ardublock. Поэтому в настоящий момент идёт работа над насыщением электронного учебника АрдуЛисп с примерами проектов под платы IoT Pinlab и Arduino Mega в SimulIDE.

Решение олимпиадной задачи для Ардуино учеником 5-го класса, с использованием АрдуЛисп и IoT PinLab

Решение олимпиадной задачи для Ардуино учеником 5-го класса, с использованием АрдуЛисп и IoT PinLab

Постскриптум

Джон Маккарти создавал свой язык программирования – ЛИСП на заре информатизации для решения задачи Искусственного Интеллекта, автором понятия которого он и является. В современном мире эту функцию заменили другие инструменты, а сам язык остался не очень востребованным. Однако его простота функционала и способность, в версии для микроконтроллеров, из любой «железяки» получить ЛИСП-машину, позволяют решить проблему подготовки программистов, начиная с младшего возраста, при переходе от блочного программирования к скриптовому. Кто знает, как изменится Мир, если в недалёком будущем мы получим большое количество ЛИСП-программистов, с его, всё еще, недооценёнными возможностями?

Автор: osdlab

Источник

Rambler's Top100