- BrainTools - https://www.braintools.ru -

АрдуЛисп: революционное решение в области образовательной робототехники

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: osdlab

Источник [11]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/21081

URLs in this post:

[1] мышления: http://www.braintools.ru/thinking

[2] интерес: http://www.braintools.ru/article/4220

[3] Ardublock: http://ardublock.ru

[4] «открытый» Джоном Маккарти: https://habr.com/ru/articles/428229/?ysclid=mgyyv3xcjr899060023

[5] Интеллект: http://www.braintools.ru/article/7605

[6] внимание: http://www.braintools.ru/article/7595

[7] uLisp: http://ulisp.com

[8] UDP-serial: http://gitverse.ru/osdlab/simulideu

[9] обучении: http://www.braintools.ru/article/5125

[10] gitverse.ru: http://gitverse.ru/osdlab/ardulisp

[11] Источник: https://habr.com/ru/articles/959724/?utm_source=habrahabr&utm_medium=rss&utm_campaign=959724

www.BrainTools.ru

Rambler's Top100