Введение

Еще в 2018 году Tensorflow представила интерфейс JavaScript в своем списке поддерживаемых языков. Я думаю, что это стало большим сюрпризом для многих специалистов по Data Science, но такое решение, безусловно, имеет смысл. JavaScript - очень популярный язык программирования, и, безусловно, те, кто разрабатывает на нем, хотят воспользоваться преимуществами библиотеки Tensorflow. Конечно, машинное обучение - это вообще не совсем приложение JavaScript, поэтому возникает вопрос, почему именно эта реализация произошла.

Какое место занимает JavaScript в экосистеме машинного обучения? Есть ли шанс, что в ближайшие годы мы сможем писать JavaScript вместо Python? Это лишь некоторые из вопросов, которые я хотел затронуть и попытаться начать разговор в этой статье. В Data Science всегда важно быть в курсе последних технологий в этой области, и даже если это может показаться не так, JavaScript не является исключением из этого правила. Поэтому я хочу обсудить некоторые недостатки использования JavaScript для машинного обучения, а также обсудить его потенциальное влияние на Data Science в целом.

Возможности JavaScript

JavaScript хорошо известен своими способностями в веб-разработке, но как эти способности могут быть перенесены в приложение в Data Science? Прежде всего, мы должны учитывать, что JavaScript не является языком статистического программирования. Этот язык был в значительной степени создан для веб-разработки, в чем язык превосходен. Это означает, что JavaScript с точки зрения типичного статистика может быть немного сложным для понимания. Однако раньше так было и с Python. Сам Python никогда не был предназначен для того, чтобы стать мировым лидером в области машинного обучения, но занял это место благодаря тому, что в целом был отличным языком. Есть ли шанс, что JavaScript займет такую ​​позицию?

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

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

Закрытие разрыва

Что действительно круто в Tensorflow.js, так это то, что он демонстрирует некоторую инициативу по сокращению разрыва, который разделяет нас и команды веб-разработчиков. Большинство приложений с полным стеком, использующих машинное обучение, обычно отправляют запрос к внешнему API, который возвращает прогнозы из моделей, написанных на других языках, таких как Python. Это означает, что часто команды веб-разработки полагаются на конечную точку для запроса, чтобы получить входные данные для своих полнофункциональных приложений.

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

Научные программисты и JavaScript

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

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



Я думаю, что в JavaScipt есть несколько действительно интересных способов обработки данных. Я, конечно, имею в виду массивы данных JavaScript, которые можно рассматривать как объект, содержащий именованные данные, например словарь. Я думаю, что это было бы здорово применить к научным вычислениям. Во многом они похожи на базовую версию классов данных, которые больше встроены в сам язык. У меня тоже есть статья о классах данных Python, которую я недавно написал, и я думаю, что ее стоит прочитать, вы можете проверить ее здесь:



Вывод

Учитывая все обстоятельства, я думаю, что реализация Tensorflow на JavaScript - долгожданное дополнение к семейству Tensorflow. Я действительно очень рад увидеть, где JavaScript пойдет в сфере машинного обучения. Я думаю, что специалисты по данным довольно часто знают JavaScript, а сам язык очень похож на Python. При этом мне любопытно, сколько специалистов по анализу данных на самом деле будут использовать этот язык для науки о данных. Конечно, есть и недостатки. Основными проблемами, безусловно, являются отсутствие инструментов экосистемы для даже обработки данных в первую очередь и скорость языка. Я думаю, что у обеих этих проблем есть решения, но, вероятно, потребуются годы, чтобы решения воплотились в жизнь.

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

Конечно, есть множество примеров других замечательных языков программирования, которые можно использовать для статистического анализа и машинного обучения. Одним из таких примеров является R, который, как мне кажется, имеет преимущество, когда дело доходит до анализа и даже визуализации. Кроме того, shiny - это просто потрясающий пакет, который создает несколько довольно крутых информационных панелей, а RStudio - просто отличная среда для работы. Еще один язык, который вы могли бы рассмотреть, - это Julia. Хотя Julia по-прежнему остается самым маленьким языком, о котором я еще не упоминал в этой статье, за последние несколько лет он быстро вырос. Конечно, я бы все же порекомендовал в первую очередь Python, поскольку он наиболее удобен для пользователя и имеет максимальную онлайн-поддержку через такие сайты, как StackOverflow. Посмотрите эту визуализацию, сравнивая вопросы, заданные на разных языках:



Я думаю, что любой доступный инструмент стоит изучить, если у вас есть время. Конечно, в мире Data Science могут быть более важные вещи только потому, что есть ТАК МНОГО, что нужно изучать все время. Но я думаю, что JavaScript - это навык, который можно применить ко многим различным приложениям, что он обязательно пригодится. Если вы относитесь к тому типу специалистов по анализу данных, которые в конечном итоге работают с веб-разработчиками, полезно знать, о чем они говорят, когда что-то спрашивают, так что это, безусловно, ценный язык для изучения по множеству разных причин. Спасибо за чтение, и я надеюсь, что эта статья предоставила важную информацию и несколько полезных советов по JavaScript. Я очень рад за будущее JavaScript в области машинного обучения, потому что я думаю, что у него есть потенциал и, безусловно, было бы классным языком для работы!