JavaScript - идеальный выбор при аналитической обработке данных

По поводу отказа от фото- и видеоаппаратуры в пользу мобильных телефонов, оснащенных камерами, фотограф и предприниматель Чейз Джарвис однажды пошутил: “Лучшая камера  —  это та, которая с вами”. Другими словами, портативность и удобство важнее таких характеристик, как разрешение, глубина цвета, четкость изображения и др. Если вы хотите сделать снимок, камера в вашей руке лучше, чем та, что лежит дома.

Я всегда привожу эту аналогию, когда меня спрашивают, чем JavaScript отличается от Python, R или Julia при аналитической обработке данных. Все эти три языка совершенны. Все они обладают эффективными функциями, такими как перегрузка операторов и многомерные массивы, надежные библиотеки с открытым исходным кодом для вычислений и визуализации, а также активные сообщества. Не составит большого труда доказать, почему любой из них лучше подходит для анализа данных, чем JavaScript.

Однако, на мой взгляд, различия между этими языками не существенны. Хотя бы потому, что JavaScript  —  язык, веб-платформа и экосистема с открытым исходным кодом  —  с каждым годом становится все более продвинутым инструментом. Масса людей выполняет посредством JavaScript колоссальный объем работы. Среди них поставщики браузеров и группы стандартизации, именитые исследователи и простые участники глобальной сети. Не случайно говорят, что JavaScript  —  оперативный язык: люди сделали его таким. Все мы бенефициары этих совместных усилий.

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

Когда кто-то делится анализом данных, реализованным в JavaScript, вы не просто видите снапшот, отражающий все изменения. Вы запускаете этот анализ в реальном времени в своем браузере. Вы можете выйти за рамки пассивного наблюдения, запрашивая данные, корректируя предположения и задавая вопросы.

JavaScript  —  это самая насыщенная информационная среда, которая у нас когда-либо была. Но, благодаря открытой природе интернета, она представляет собой нечто большее  —  пространство, пригодное для исследования и экспериментирования, обучения и взаимодействия. Инструменты разработчиков браузеров позволяют просматривать, вводить и даже изменять запущенный код.

Я заинтересовался программированием благодаря интернету. Сначала я изучал JavaScript через View Source: если веб-страница “цепляла” меня чем-то, то я просматривал ее исходный код и возился с ней часами, чтобы понять, как она работает. Очень хотелось перепрофилировать ее, сделать еще лучше. Оперативность и доступность JavaScript, а главное  —  бесконечные возможности, превратили его в настоящее увлечение.

Что побуждало меня заниматься программным обеспечением в течение последних двадцати с лишним лет, так это возможность создавать что-то в интернете, обучая других. Мы все плаваем в этом “первичном бульоне” идей, даря и получая обратно творческое вдохновение.

Сотрудничество и общение  —  основа интернета. Сеть демонстрирует, как мы работаем, учимся и делимся идеями. Именно интернет делает JavaScript отличным инструментом для анализа данных (и многого другого). В интернете мы можем совместно редактировать и запускать код в режиме реального времени, обмениваться исследовательскими представлениями о данных, отвечать на вопросы и объяснять понятия без особых проблем. У нас есть возможность делать почти все, о чем мы только можем мечтать.

Я восхищаюсь многими замечательными функциями и библиотеками, доступными на других языках, но JavaScript для меня  —  оптимальный выбор из-за его переносимости и удобства. Это самый простой способ поделиться живым кодом, который любой может отредактировать.

Конечно, еще многое предстоит сделать. JavaScript, возможно, не был задуман как язык для анализа данных, но нельзя не признать его способности к развитию, расширению и укреплению поддержки.

Я настроен оптимистично. JavaScript значительно усовершенствовался за последние десять лет. Его функционал существенно обогатился за счет добавления:

  • поддержки асинхронного ожидания;
  • стрелочных функций;
  • промисов;
  • итераторов;
  • генераторов и многого другого.

Благодаря модулям ES и таким сервисам, как Skypack, мы можем насладиться более высоким уровнем совместимости библиотеки Node.js с браузерами (во всяком случае, теперь возникает меньше проблем с пакетами, компиляторами и загрузчиками). С WebGPU, WebAssembly и другими разрабатываемыми стандартами будущее JavaScript обещает быть светлым.

Нам также нужны новые библиотеки и абстракции, которые позволят больше времени посвящать обработке данных и меньше вникать в тонкости программирования. Плодами усилий в этом направлении стали продукты с открытым исходным кодом, такие как Apache Arrow, Arquero, tidy.js, Observable Plot и Vega-Lite.

Гистограмма веса олимпийских спортсменов (кг), сделанная с помощью Observable Plot. Синий цвет символизирует вес женщин, оранжевый — вес мужчин.

Эта гистограмма представляет распределение веса в виде двух перекрывающихся, аппроксимативно корректных (колоколообразных) графиков. Распределение веса женщин центрируется на 60 кг, в то время как распределение веса мужчин  —  на 75 кг.

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

Надеюсь, что с помощью эффективных инструментов и особенно тех, которые обеспечивают сотрудничество в интернете, еще больше людей смогут ощутить преимущества совместной работы с данными.

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Mike Bostock: JavaScript for Data Analysis

Предыдущая статьяСовместное использование компонентов React с различными библиотеками управления состоянием
Следующая статьяЧто делает невозможную фигуру невозможной?