image

80% наших курсов — это практика, в том числе в Jupyter Notebook. Сегодня кратко представим расширения визуального программирования и управления роботами Nyrio. За подробностями приглашаем под кат — к старту нашего флагманского курса по Data Science.

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

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

Что же такое Blockly?


Скриншот JupyterLab-Blockly с запуском простого кодаЗапуск простого цикла в расширении JupyterLab-Blockly и соответствующий код на Python в окне  

Blockly — библиотека с открытым исходным кодом от Google. Благодаря управляющей графике она делает программирование проще и доступнее. Связи графических блоков друг с другом представляется в виде кода, а все требования языка к синтаксису в этом графическом интерфейсе устранены. Пользователь получает полную свободу творчества.  

Начало работы: установка расширения Blockly


Для установки расширения выполните команду:

mamba install -c conda-forge jupyterlab-blockly

После установки откройте Blockly прямо из программы запуска и начинайте творить!

Функциональность расширения


Пользовательский интерфейс прост: слева панель инструментов, справа — рабочая область, куда можно перетаскивать блоки, которые вы хотите использовать в своём коде. Когда вы закончите, просто нажмите кнопку запуска, и внизу экрана появится синтаксически корректный код на выбранном языке с готовыми выходными данными!

Короткое видео о том, как пользоваться расширением JupyterLab-BlocklyКороткое видео про JupyterLab-Blockly 

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

JupyterLab-Blockly без проблем интегрируется со стеком Jupyter: при выполнении генерируемого кода с помощью ядер Jupyter, а также при повторном использовании компонента ячейки кода JupyterLab (code cell) для отображения сгенерированного кода и т. д.

При этом JupyterLab-Blockly согласуется с остальным интерфейсом пользователя (согласуются подсветка синтаксиса, выбор тем и жизненный цикл ядер Jupyter).

Изучение робототехники


На основе JupyterLab-Blockly мы собрали ещё одно расширение для управления роботами с помощью средствами визуального программирования. Точнее, мы создали набор инструментов с необходимыми блоками для программирования роботов Niryo One. Формат ROS требователен ко времени загрузки, однако готовые визуальные блоки упрощают и ускоряют создание прототипа любого задуманного проекта.

Для установки расширения выполните эту команду:

mamba install -c conda-forge jupyterlab-niryo-one

Остаётся только переключиться с набора инструментов 'default' на 'niryo' — и вы сразу получите доступ к 42 новым блокам. Если у вас есть доступ к одному из этих роботов, попробуйте!

Короткое видео о том, как пользоваться расширением JupyterLab-NiryoOneКороткое видео про JupyterLab-NiryoOne  

Оба расширения можно найти на GitHub. Расширение JupyterLab-Blockly готово стать основой для ваших проектов. Регистрируйте новые блоки, наборы инструментов и генераторы. Используйте расширение JupyterLab-Niryo-One как пример и экспериментируйте в своё удовольствие!

Управление роботом Niryo One из расширения JupyterLab-blockly

Вы можете пользоваться расширением JupyterLab-Blockly уже сейчас и прямо из браузера с помощью JupyterLite! Просто перейдите по этой ссылке.

Об авторах
Дениза Чечиу изучает робототехнику на QuantStack. Готовится к защите дипломной работы бакалавра. Основные дисциплины — робототехника и интеллектуальные системы, дополнительная дисциплина — информатика.

Карлос Херреро — разработчик учебного и исследовательского программного обеспечения на QuantStack. Увлечён ИИ и его робототехническими задачами. Его текущая работа посвящена стеку JupyterLab и расширениям экосистемы Jupyter для интеграции JupyterLab с ROS, а также работе с Voil.


Поможем разобраться в программировании, чтобы вы прокачали карьеру или стали востребованным профессионалом в IT:
Чтобы увидеть все курсы, нажмите на баннер:



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


  1. HemulGM
    28.09.2022 08:51
    +1

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


    1. weko
      28.09.2022 10:24
      +1

      это скорее для детей,чем для состоявшихся(типо начало ,обучение, - простота и интерес)


      1. SADKO
        28.09.2022 15:53
        +1

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


    1. stranger777
      28.09.2022 10:37
      +1

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


      1. KizhiFox
        28.09.2022 11:13

        Вот так уже понятнее становится, спасибо. Хотя всё равно если упрощать, то тогда уж лучше сделать что-то более обобщённое (см. мой коммент ниже)


  1. KizhiFox
    28.09.2022 09:59
    +2

    Всё же "сделать для каждой функции рамочку с плейсхолдерами" — это не совсем визуальное программирование. С таким же успехом всё это можно гораздо быстрее и удобнее писать руками. Вот если бы блоки были более общими / более крупными (типа не "откалибровать моторы" → "повернуть ногу на 120°" → ..., а просто "идти туда-то") и ставились бы не только друг под друга, а произвольными блок-схемами с ветвлением, тогда я бы сказал, что в этом есть смысл, а так...

    Помню, в игре Kerbal Space Program с тамошним программированием ракет подобным образом намучился. Так и хотелось закричать: "если у вас один блок — одна функция, почему вы не сделаете это тупо текстом? Мне написать быстрее, чем среди 100500 блоков искать!" Всё равно человек без навыков программирования не разберётся, что за чем идти должно, хоть ты функции блоками таскай, хоть руками пиши.


  1. SADKO
    28.09.2022 15:54

    И как только люди не изгаляются, лишь бы кода не писать ;-)