Jupyter Notebooks — отличный инструмент, изначально разработанный, чтобы помочь ученым и инженерам, работающим с данными, упростить работу с данными с помощью языка программирования Python. Фактически, интерактивный характер блокнотов делает их идеальными для быстрого просмотра результатов кода без настройки среды разработки, компиляции, упаковки и т. д. Эта функция имела решающее значение для внедрения в области науки о данных, машинного обучения и статистического моделирования, где навыки разработки были менее важны, чем опыт манипулирования данными.
Ниже приведены некоторые преимущества блокнота Jupyter
Подводя итог, можно сказать, что
Блокноты Jupyter упрощают процесс разработки — от первоначального исследования до готового к использованию кода, обеспечивая гибкость и обратную связь в режиме реального времени.
Учитывая преимущества, которые предлагают блокноты Jupyter, разработчикам программного обеспечения было бы здорово использовать такой подход к блокнотам для разработки, например, ТЕСТОВ ИСПОЛЬЗОВАНИЯ для проектов или предоставления полезных ИНТЕРАКТИВНЫХ ИНТЕРАКТИВНЫХ ИНСТРУКЦИЙ.
Вот вопрос:
МОЖНО ЛИ ИСПОЛЬЗОВАТЬ НОУТБУК JUPYTER ДЛЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ, ДРУГОГО, ЧЕМ PYTHON❓?
Ответ: ДА?.
Инструменты Jupyter были разработаны для поддержки нескольких языков программирования с использованием концепции Kernel, см. диаграмму ниже:
Ядро — это то, как сервер блокнота Jupyter оценивает блоки кода, написанные пользователем внутри документа блокнота (.ipynb), поэтому достаточно иметь ядро, которое может оценивать код языка программирования по вашему выбору, чтобы иметь он поддерживается ноутбуком Jupyter.
Конечно, легко сделать вывод, что каждый потенциальный язык программирования, который может поддерживать ядро Jupyter, должен поддерживать функцию цикла чтения-оценки-печати (REPL).
Возникает вопрос:
СУЩЕСТВУЕТ ЛИ ЯДРО JUPYTER, КРОМЕ PYTHON ONE❓?
Ответ: Да?.
В последнее время я работаю над Langgraph4J, который представляет собой Java-реализацию более известного Langgraph.js, библиотеки Javascript, используемой для создания агентских и мультиагентных рабочих процессов с помощью Langchain. Интересно отметить, что [Langchain.js] использует блокноты Javascript Jupyter на базе ядра DENO Jupiter для реализации и документирования инструкций.
Итак, я столкнулся с дилеммой, как использовать (или, возможно, моделировать) тот же подход в Java, и без особой надежды я начал искать ядро Jupyter, поддерживающее Java, учитывая, что в версии JDK 9 было добавлено JShell, который включил REPL для Java.
После небольшого исследования (и странной мысли о попытке заняться самодельной реализацией) я остановился на rapaio-jupyter-kernel, который представляет собой ядро Jupyter, поддерживающее Java?. В проекте указано:
Ядро Jupyter для языка Java на основе JShell. Он реализует спецификацию сообщений Jupyter версии 5.4 и требует Java = 22.
Это потрясающе; Я начинаю им пользоваться и ВАУ!?. Взгляните на некоторые его особенности, ниже я суммировал наиболее характерные из них:
Вы можете написать обычный Java.
var result = 2 2; result4
// including classes record Complex(double a, double b) { public Complex add(Complex c) { return new Complex(a c.a, b c.b); } } Complex x = new Complex(10,20); x.add(new Complex(1,1))Сложный[a=11.0, b=21.0]
// methods can also be implemented int add(int a, int b) { return a b; } add(2,3)5
Магические команды
Помимо кода Java, ячейка может содержать специальные команды, реализуемые ядром. Они называются магическим кодом и бывают двух типов: магические линии и магические клетки.
Магические линии — это строки с префиксом %. После префикса следует магическая команда и необязательные параметры. Ниже приведен пример волшебной строки:// magic line which asks JShell to list the types defined in this notebook in this moment %jshell /types| запись Комплекса
Интерполяция магических команд
Иногда возникает необходимость выполнить магическую команду более динамично. Это можно сделать с помощью магической интерполяции.
Волшебная интерполяция — это интерполяция размеченного содержимого, которая начинается с \{ и заканчивается }. Любой контент, украшенный этими маркерами, оценивается в jshell, и результат преобразуется в строку, которая заменяет декорированный контент в магической команде.String version = "1.0.2";
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3