Как вы, наверное, знаете, JavaScript был создан Бренданом Эйхом в 1995 году всего за десять дней. Многие разработчики любят подшучивать над ним, но это отличный язык, если учесть, как мало для этого потребовалось проектирование. Большинство из нас не могут завершить спринт за десять дней, не говоря уже о реализации языка программирования.

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

Мы уже видели первые преимущества этой работы с ES6. Все новые функции (стрелочные функции, генераторы, модули,…) делают его почти похожим на новый язык.

Несмотря на все эти усилия, JavaScript по-прежнему отстает по сравнению с другими языками программирования, и ему будет очень сложно наверстать упущенное. Нет поддержки типов данных, сложно работать с числами двойной точности, нам нужно использовать библиотеки, такие как Lodash или Moment, чтобы иметь достойную стандартную библиотеку. Он функционален, но меркнет по сравнению с другими языками, такими как Haskell или Elixir.

У этого списка нет конца. В конце концов, его первоначальная цель заключалась в том, чтобы позволить создавать базовые интерактивные страницы, далекие от того, что мы создаем сегодня.

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

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

Одним из языков, наиболее близких к принятию браузерами, был Dart. Когда Google выпустил его, люди опасались, что это часть секретного плана по замене JavaScript в Chrome. Излишне говорить, что этого никогда не было.

Даже если все поставщики браузеров решат перейти с JavaScript на новый язык, разработчикам все равно придется поддерживать старые браузеры. Другими словами, нам нужно было бы создать две версии одного и того же приложения. Помните, когда нам приходилось создавать мобильную версию для веб-сайтов или добавлять определенный код CSS для одного браузера? Это было бы в 1000 раз больнее.

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

Я присутствовал на выступлении Джафара Хусейна на последнем Full Stack Fest в Барселоне. Его доклад был о будущем ES6 и, в частности, о новых способах обработки асинхронного кода.

Во время Q / A я задал этот вопрос:

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

Он также добавил, что, поскольку у нас есть исходные карты, нам даже не нужно больше иметь дело с транслируемым кодом.

Через 5 лет JavaScript будет сильно отличаться от того, что есть сейчас. Тем не менее, этот код будет перенесен на ES6 или даже 5.

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

Вы можете возразить, что, поскольку мы выполняем перенос на JavaScript, этот новый язык не может сильно отличаться и будет привязан к внутренней логике JavaScript. Это было бы просто синтаксическим сахаром поверх всего этого. Похож на TypeScript или JSX.

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

Подумайте, что такое сборка для C, но создана для Интернета.

Итак, я не знаю, какой язык программирования я буду использовать через 5 лет. Elm в настоящее время является лучшим кандидатом, и он выразил намерение поддержать WebAssembly в какой-то момент. Что я могу вам сказать, так это то, что в будущем вместо новой интерфейсной среды каждую неделю у нас будут новые интерфейсные языки. И это, если вы спросите меня, хорошо.