Главная » Статьи » Иногда JavaScript — неправильный ответ

Иногда JavaScript — неправильный ответ

От автора: давайте поговорим о некоторых случаях, когда вам лучше не использовать JS. JavaScript может делать что угодно, по крайней мере, мы так думаем. Однако, хотя это звучит круто и потенциально может быть правдой, есть несколько вещей, которые нам не следует делать с JavaScript, даже если мы сможем найти обходной путь для его внутренних ограничений.

В этой ситуации на ум приходит фраза «ваши ученые были так озабочены тем, могут ли они, что они не остановились, чтобы подумать, а следует ли?». Я знаю, это звучит ужасно, и ясно, что это не конец света, но тут применимы те же рассуждения: просто потому, что вы можете это сделать, не означает, что вы должны это делать.

Хотя я и рискую получить после этого поста несколько очень интересных комментариев, давайте рассмотрим 4 варианта использования, в которых вам, скорее всего, лучше использовать что-то другое, чем JavaScript.

Машинное обучение

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

Есть веская причина, по которой профессиональные специалисты по данным используют в своей работе R или Python: экосистема гораздо более зрелая, чем в JS.

Другой большой проблемой машинного обучения является то, что для него требуется много вычислительной мощности. Этап обучения, вероятно, является одним из самых трудоемких с точки зрения ресурсов, и JS не был создан для этого.

Фактически, большинство этих библиотек предназначены для того, чтобы дать вам возможность выполнять машинное обучение из самого браузера, что в теории звучит великолепно. Однако небольшое преимущество, которое реализовал Node.js для рабочих потоков, недоступно в браузерах, так что это не вариант. Вместо того, через эти библиотеки вы взаимодействуете только с предварительно обученными моделями. И не поймите меня неправильно, вы сделаете свою работу, но на самом деле это не машинное обучение, это просто эквивалент использования внешнего API, который делает за вас тяжелую работу.

И это прекрасно, заметьте, позвольте мне повторить еще раз: вы все-таки сделаете свою работу. Но есть разница между заявлением о том, что вы занимаетесь Data Science/ML, и тем, что действительно делаете.

Робототехника

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

Так, подходить ли JavaScript в качестве входной площадки для робототехники? Да, безусловно! Найдет ли это свое место в Boston Dynamics? Едва ли.

Робототехника с помощью JS — отличный инструмент, назовем это так. Но если вам нужны «сложные вещи», вам придется перейти на более низкий уровень, получить что-то, что значительно быстрее запускается, обычно это C или C++. Вот где настоящие деньги.

JavaScript — фантастический способ создания роботов и электроники в целом, ориентированный на хобби. Доступно, да, но не более того.

Разработка игр

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

Но правда в том, что не существует игр AAA, построенных на JavaScript. И если есть такие, о которых я не знаю, то они скорее исключение, чем норма. Почему? Потому что люди не хотят играть в игры в браузере.

Это и часть производительности и доступа к оборудованию, как и в случае с робототехникой. И заметьте, браузеры далеко ушли от своей первоначальной цели. Они похожи на мобильные телефоны с программным обеспечением. Изначально вы могли просто использовать их для работы в Интернете, вот и все. Есть ли у браузеров сейчас доступ к GPU? В смысле, блин!

Если я не ошибаюсь, Unity, который к настоящему времени помог выпустить некоторые игры AAA, действительно позволяет вам использовать некую разновидность JS для своего кода (по крайней мере, это было несколько лет назад), но это была убогая и устаревшая версия языка, поэтому, я бы не стал называть ее JS.

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

Настольные приложения

И, наконец, мы подошли к самому большому неправильному варианту использования JavaScript, ИМХО: настольным приложениям.

Скажем так: если вам нужно создать простое настольное приложение и сделать это быстро, то это допустимый вариант. Вы хотите использовать Electron и JS? Хорошо, вы можете это сделать.

Но если вы хотите создать сложное приложение и обеспечить хорошее впечатление для пользователей настольных компьютеров, я бы не пошел с решением, которое просто открывает окно браузера без заголовка, чтобы вы могли писать там HTML, CSS и JS или что-то еще.

Я понимаю искушение выйти на новую платформу без необходимости изучать новый язык. И в некоторых конкретных случаях использования это действительно возможно. Черт возьми, с Electron они создали Slack! Конечно, вы можете открыть Slack, нажать Ctrl+R и посмотреть, как обновляется весь пользовательский интерфейс. Возможность?
Шутки в сторону, правда в том, что вы предоставите своим пользователям некачественный продукт и потенциально низкую производительность. Или вам придется очень усердно работать, чтобы достичь того уровня, который было бы изначально у нативного приложения. В любом случае, это не идеально.

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

Хорошо, если у вас все получилось, я хотел бы повторить то, что я сказал в статье: мне нравится JS, и я понимаю, почему вы (или кто-то из ваших знакомых) захотите использовать его для всего. Сам язык и синтаксис очень универсальны и позволяют добиться отличной производительности при разработке, если вы знаете, как его использовать.

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

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

Автор: Fernando Doglio

Источник: blog.bitsrc.io

Редакция: Команда webformyself.

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