Можно ли использовать JavaScript для Data Science?

JavaScript является основой Интернета. Созданный в 90-х годах прошлого века как способ манипулирования содержимым веб-браузеров, он вырос как по популярности, так и по функциональности. Он стал одним из самых популярных языков программирования в мире.
\r\nВ связи с ростом его популярности многие задаются вопросом, подходит ли он для специалистов по анализу данных и для анализа данных в целом. Ответ на этот вопрос не так прост. Давайте рассмотрим все плюсы и минусы JavaScript как языка Data Science.<\/p>\r\n\r\n

Аргумент против JavaScript<\/h2>\r\n\r\n

Ни один специалист по анализу данных в здравом уме не порекомендует новичкам сначала изучать JavaScript. Python, R, Scala и Julia часто упоминаются как языки программирования для науки о данных. Но почему это так?
\r\nДэвид Бизли, автор книги "JavaScript для Data Science", на первых страницах рассказывает, что изначально он планировал назвать свою работу "JavaScript против Data Science" в знак признания репутации JavaScript.
\r\nJavaScript известен своими многочисленными причудами, некоторые из которых связаны с работой с числами. В качестве примера можно привести стандарт IEEE 754 с плавающей точкой NaN (not a number), который был введен как представление значения, которое не может быть представлено в рамках ограничений числового типа.
\r\nПроще говоря, делите на ноль, и JavaScript вернет NaN. Не самый информативный и полезный ответ. Хуже того, язык все равно распознает NaN как число, так что если вы будете проверять только тип, то не поймаете этого назойливого негодяя.<\/p>\r\n\r\n

\"\"
\r\nЧестно говоря, это небольшое неудобство, но оно указывает на гораздо более широкую проблему: JavaScript является динамически типизированным и имеет довольно свободный способ определения того, что является числом или строкой. Опять же, ничего такого, чего нельзя было бы избежать, но это определенно требует некоторой защиты при кодировании.
\r\nРабота с большими числами также является проблемой. JavaScript не только неточен при работе с большими числами, но и не поддерживает многопоточность и параллельную обработку, поэтому о больших данных можно забыть. Ни JavaScript, ни Node.js не подходят для задач, требующих интенсивных вычислений и привязки к процессору.
\r\nБольшинство из этих проблем можно решить, но последний гвоздь в крышку гроба - это альтернативная стоимость. Зачем вам, как специалисту по исследованию данных, тратить огромное количество времени на изучение JavaScript, если у вас уже есть множество языков, которые делают это лучше и с меньшими усилиями?
\r\nКаждый час, потраченный на JavaScript, - это на один час меньше времени, потраченного на другие языки... но это, возможно, не так уж и плохо.<\/p>\r\n\r\n

Доводы в пользу JavaScript<\/h2>\r\n\r\n

Главным аргументом в книге Бизли является то, что современный JavaScript решает многие из этих проблем и что интерес сообщества JavaScript к науке о данных за последние несколько лет вырос в геометрической прогрессии. Это способствовало появлению инструментов и ресурсов, которые делают JavaScript конкурентоспособным выбором.
\r\nПожалуй, первым аргументом в пользу JavaScript является простота использования и читабельность. Например, если вы читаете эту статью с компьютера, достаточно нажать клавишу F12, и вы сразу же получаете консоль JavaScript, готовую к работе.
\r\nJavaScript очень прост в изучении, а благодаря его популярности существуют буквально тысячи ресурсов, помогающих освоить его тонкости и особенности. Один беглый взгляд на статистику StackOverflow показывает, что объем информации по JavaScript просто ошеломляет.<\/p>\r\n\r\n

\"\"
\r\nЕще одним аргументом в пользу JavaScript является то, что все больше и больше компаний используют веб-технологии со стеком<\/a> на основе Node для создания своих продуктов. Если специалист по исследованию данных собирается работать в тесном контакте с разработчиками продуктов<\/a>, то владение общим языком будет несомненным преимуществом.
\r\nБолее того, тот факт, что все работают с одной и той же технологией, означает, что интеграция с другими продуктами и сервисами становится проще, требуя меньше накладных расходов и подготовки. Точно так же, как легче общаться с человеком, когда все говорят на одном языке.
\r\nTypeScript, супернабор JavaScript, разработанный Microsoft, решает одну из основных критических проблем JavaScript - его слабую типизацию. Фактически, с TypeScript язык стал более строгим, чем любимый Data Scientist'ом Python. Статически типизированные языки, как правило, способствуют лучшей практике и меньшему количеству ошибок в коде, поэтому наблюдается бурный рост компаний и сервисов, занимающихся разработкой TypeScript.
\r\nКстати, о Microsoft: Napa.js - фантастическая альтернатива Node.js, если вас волнует многопоточность. Пока она находится на ранней стадии и не является самым оптимальным решением. Это показывает, насколько высок интерес к продвижению JavaScript в качестве универсального языка программирования, в том числе для науки о данных. Но это еще не все...<\/p>\r\n\r\n

Новые инструменты для науки о данных<\/h2>\r\n\r\n

Одним из наиболее распространенных аргументов против JS является отсутствие в нем библиотек для работы с данными, характерных для более надежных решений, таких как R и Python. Мы абсолютно согласны с этим аргументом. Даже самый ярый защитник Javascript будет вынужден признать, что любому начинающему специалисту по исследованию данных необходим еще один инструмент в его репертуаре.
\r\nПейзаж науки о данных для JavaScript растет в геометрической прогрессии, пять лет назад никто и подумать не мог, что у TensorFlow будет функциональная библиотека JavaScript, и вот мы здесь.
\r\nПри этом экосистема для науки о данных на Javascript растет. Возьмем, к примеру, D3.js, популярную библиотеку для визуализации данных, которая предоставляет фантастический набор инструментов для создания приборных панелей, отчетов и историй данных через браузер.<\/p>\r\n\r\n

Другим прекрасным примером является TensorflowJS. Для тех, кто не знает, Tensorflow - это одна из самых популярных библиотек машинного обучения. С помощью ее JS-варианта можно запускать алгоритмы машинного обучения непосредственно в браузере и\/или на сервере Node.js.
\r\nНо зачем это нужно? Да, браузерная среда - не самое оптимизированное рабочее пространство. Но, с другой стороны, она очень удобна для быстрых прототипов, небольших проектов и приложений, не требующих большого объема памяти. Зачем создавать виртуальную среду, если можно обойтись простым браузером?<\/p>\r\n\r\n

Тот факт, что мы получаем такие инструменты для языка, на котором работает Интернет и веб-приложения в целом, открывает новые возможности. Благодаря браузерной науке о данных мы можем играть с новыми способами обработки и представления данных в дружественной среде.
\r\nПредставьте, что у вас есть веб-приложение, которое служит