GNU Octave Meets JupyterLite: Compute Anywhere, Anytime
Команда Jupyter представила Xeus-Octave - новый kernel для JupyterLite, позволяющий запускать GNU Octave прямо в браузере. GNU Octave - бесплатный аналог MATLAB, теперь доступный без установки благодаря компиляции в WebAssembly. Для решения технических вызовов потребовался специальный инструмент на базе LLVM Flang и Emscripten для компиляции Fortran-кода, а также реализация BLAS/LAPACK, где выбор пал на Netlib LAPACK из-за меньших сложностей сборки.
Ключевым препятствием стало обширное использование блоков общих символов Fortran во внутренних библиотеках Octave, таких как odepack. Версия LLVM v20 на момент тестирования не поддерживала общую символьную линковку для WebAssembly, что потребовало дополнительных усилий для преодоления этого ограничения.
Комментарии (39)
- JupyterLite позволяет в браузере запускать ядра C++, Python, R, Lua, JavaScript и др. без серверной части.
- Octave и MATLAB — это два разных инструмента, и хотя Octave стремится к совместимости, он не является «клоном» MATLAB.
- Сообщество подчеркивает, что Octave — это полноценный язык для численных вычислений, а не просто «бесплатная замена MATLAB».
- Пользователи отмечают, что Octave и MATLAB различаются в деталях, но для базовых задач они взаимозаменимы.
- Обсуждение подняло вопрос о том, что Octave может быть полезен как встраиваемая библиотека, но это требует дополнительной работы.
Zoo of array languages
Пользователь ktye поделился информацией о языке программирования K, который представляет собой диалект APL, оптимизированный для быстрых вычислений. Язык использует синтаксис, похожий на APL, с операторами для сложения, вычитания, умножения, деления и других операций, включая специальные функции вроде decode и encode.
Код включает примеры работы с массивами, включая создание, манипуляции и агрегацию данных. Есть поддержка условных операторов, циклов и работы со строками. Также представлены ссылки на документацию и другие ресурсы, включая реализацию на разных платформах.
В сообщении показано, что K — это лаконичный и выразительный язык, подходящий для работы с данными и математическими вычислениями. Он имеет функционал, схожий с другими языками программирования, но с акцентом на краткость и эффективность. Интересно, что пользователь адаптировал язык для разных платформ, что делает его универсальным.
Комментарии (46)
- Обсуждение охватывает APL, J, K, Q, BQN, Uiua и другие языки массивов, но не упоминает R, MATLAB, Nial и другие, что вызывает удивление.
- Участники обсуждают, какие языки считаются "массивными", и почему некоторые, такие как MATLAB и R, не упоминаются.
- Обсуждается, какие языки считаются "массивными", и почему некоторые, такие как MATLAB и R, не упоминаются.
- Участники обсуждают, какие языки считаются "массивными", и почему некоторые, такие как MATLAB и R, не упоминаются.
- Участники обсуждают, какие языки считаются "массивными", и почему некоторые, такие как MATLAB и R, не упоминаются.
Show HN: A little notebook for learning linear algebra with Python
Книга представляет собой структурированное введение в линейную алгебру, разбитое на пять глав, каждая из которых последовательно раскрывает ключевые концепции. Начинается с основ векторов и скаляров, включая операции над ними, скалярное произведение и проекции, затем переходит к матрицам и их свойствам, включая умножение, обратные матрицы и специальные типы вроде симметричных и диагональных. Третья глава посвящена системам линейных уравнений, методам исключения и LU-разложению, четвёртая — векторным пространствам, базисам и размерности, а пятая — линейным преобразованиям, их матричному представлению и свойствам вродя обратимости и проекций.
Особенность подхода — сочетание геометрической интуиции (векторы как стрелки, матрицы как преобразования) с алгебраической строгостью, что помогает глубже понять материал. Практические аспекты, такие как вычисление ранга или работа с координатными системами, подчёркивают прикладную ценность темы для машинного обучения, компьютерной графики и инженерии.
Комментарии (35)
- Участники обсуждают учебные материалы по линейной алгебре, отмечая полезность книги "The Little Book of Linear Algebra" и её связи с практическими лабораторными работами.
- Возникает дискуссия о подходах к обучению: одни подчеркивают важность исполняемого кода для экспериментов, другие настаивают на необходимости изучения абстрактной теории с помощью математических учебников и ручных вычислений.
- Критикуются некоторые визуализации и определения в материалах (например, определение вектора), как вводящие в заблуждение или недостаточно строгие с математической точки зрения.
- Обсуждаются практические аспекты: применимость знаний для компьютерного зрения и машинного обучения, сравнение NumPy с другими инструментами (Octave, MATLAB) и важность интуитивного понимания.
- Автор книги отвечает на критику, поясняя свой подход и предлагая ссылки на дополнительные ресурсы (например, 3Blue1Brown) для лучшего визуального понимания.
Is Fortran better than Python for teaching basics of numerical linear algebra?
Современный Fortran может быть предпочтительнее Python для обучения основам численной линейной алгебры из-за строгой типизации и явного управления памятью, что помогает студентам лучше понять внутреннюю работу алгоритмов. В Python студенты часто полагаются на готовые функции вроде np.linalg.solve, что скрывает детали реализации и приводит к ошибкам, связанным с динамической типизацией и неправильной индексацией массивов. Например, путаница между списками и массивами NumPy или неявное приведение типов могут затруднить отладку.
Fortran, напротив, требует чёткого объявления переменных и размеров массивов, что снижает риски ошибок и заставляет студентов продумывать структуру данных. Это особенно важно для таких задач, как метод Гаусса-Зейделя или метод наименьших квадратов, где понимание циклов и операций с матрицами критично. Хотя Python с его экосистемой удобен для сложных проектов, Fortran обеспечивает более прозрачный переход от математических формул к коду, укрепляя фундаментальные навыки.
Комментарии (102)
- Обсуждается выбор языка для преподавания численных методов и линейной алгебры (Python, Fortran, Julia, C++ и др.), где Fortran хвалят за производительность и удобство для математики, а Python — за распространённость и простоту.
- Критикуется чрезмерно объектно-ориентированный подход в C++ для научных вычислений, а также сложности и "бородатость" некоторых языков (например, Fortran) для новичков.
- Поднимается вопрос о важности баланса между теоретической "чистотой" языка и его практической полезностью для будущей работы студентов.
- Отмечаются преимущества Julia и MATLAB/Octave для обучения благодаря близости их синтаксиса к математической нотации и удобным инструментам.
- Упоминаются проблемы с ошибками в Python (например, типизация и сообщения об ошибках), а также сложности отладки в сравнении с другими языками.