Какие вы видите перспективы в развитии js «оберток»?
Вопрос в первую очередь к практикующим "обертки" в своей работе.
На данный момент существует и доведено до стадии промышленного внедрения ряд "оберток" вокруг javascript. Таких как: typescript, jsx, coffescript, dart(? не уверен что его стоит ставить в список с остальными) наверняка у них у всех есть свои преимущества(я не заходил далее небольших экспериментов ни с одним из них), но не делают ли они в итоге монстрозное "нечто" из доселе языка с низким порогов вхождения, интерпретируемый, динамической типизацией, прототипной модели и достаточным уровнем синтаксического сахара.
Я понимаю зачем он был "портирован" на сервер(node.js, io.js), но как-то не вижу в нем "смертельных недостатков" которые нельзя было бы решить посредством сахара и естественного эволюционного развития, но я конечно могу ошибаться.
Собственно вопрос: в чем вы видите преимущества перечисленных и других надстроек/оберток, какую вы считаете наиболее перспективной и почему(вот angular 2 будет на typescript, например)?
Также, конечно, интересны ваши общие размышления на означенную тему.
В моем представлении о препроцессорах ниша для coffescript занята теми, кто предпочитает философию ruby.
В сторону typescript смотрят те, кто перешел из типизированных языков и на
данный момент не может представить, как можно сделать крупное приложение не программируя
"на интерфейсах", каковым является философия типизированных языков.
Поклонники Babel, это третья сторона силы, которая сейчас учится будущему.
Лично я смотрел coffe и скомпилированный код мне понравился меньше, чем чисты, как слеза,
скомпилированный код typescript.
И я остановился на Babel, потому что js беден без последних новшеств, а выбирая между написания целой библиотеки или использовать точно такую же плюс учась завтрашнему синтаксису, я выбрал второе.
Евгений Попов: это лучший на сегодняшний день компилятор 6to5. Он совсем недавно так и назывался 6to5, но его популярность и скорость развития, которая уже приблизила его к 7 версии, вынудило авторов отвязать название от контекста версий.
А вообще я больше чистый люблю, но как сказал ранее, пока во всех браузерах не будет реализована 6 версия, он скудноват. А так же я считаю, что настоящий разработчик должен владеть всеми препроцессорами. И я не согласен, что тот же coffee компилируется в код хуже того, который пишут девяносто пять процентов кодеров.
copal: суть не в том, во что компилируется Кофескрипт — вас же не волнует, во что превращается код после минификации, например — проблема в том, что при непосредственно написании кода он выглядит как Perl/Ruby-помойка.
SEO и js? Эмм, да поисковики научились отрабатывать js(в итоге на сайте ведь после компиляции из "обертки"), но причем здесь оно?
1. Важный момент, собственно в промышленной эксплуатации: простота поддержки и скорость разработки-внедрения крайне важны.
2. По вашему мнению если оперировать обозначенными вами аргументами - какую цель преследуют разработчики ставя их во главу угла?
Хохо, низким? То-то люди приходят на собеседование и ни слова о JS сказать не могут.
Использую сейчас ES6 как будущее JS. Планирую использовать TypeScript как только выйдет Angular2. Может и раньше, но пока лень.
Преимущества банальны - меньше кода, все скучное генерируется. Самым сладким для меня лично являются стрелочные функции, сахар над объявлением своих типов (типа классы), проки и викмэпы и модули как основная фича которую я использую.
От typescript мне интересно только описание типов для переменных и аргументов/возвращаемых значений. Аннотации - возможно.
Евгений Попов: по поводу порога вхождения - вы верно заметили, пропасть огромна... даже слишком. Есть еще кривая обучения и у PHP скажем эта кривая больше похожа на линию, а у JS на определенном этапе обучение будет происходить крайне медленно и только после определенной планки уже нормально. Большинство не доходят даже до понимания прототипной модели наследования, а уж говорить про каррирование или другие вещи вообще не выходит. В ES6 к примеру организовали оптимизации хвостовой рекурсии, как думаете, сколько людей научатся писать свои алгоритмы так, что бы интерпритатор разворачивал рекурсивные алгоритмы в циклы?
Сергей Протько: Я вот собственно этот вопрос задал только узнав про то что angular2 будет на нем и видимо так же будет сейчас аргументом чтобы изучить именно его, хотя до этого хотел глянуть react(при всей моей ненависти к xml и религиозном не понимании зачем его пихат в js на пару с разметкой компонентов).
Сергей Протько: полностью с вами согласен. На заданный вами вопрос: в том то и "особенность" чтобы писать и успешно запускать проекты ответа на подобные вопросы в подавляющем числе случаев не понадобиться, это если утрировать - сравнение практических знаний с академическими, знать теорию и использовать крайне разные вещи. Языки с низким порогом вхождения позволяют без "теории" - практиковать, но проблема в том, та самая пропасть, что мало кто будет иметь желание развиваться и копать в глубь.
Очень спорное это дело такие обертки. Во-первых для использования требуется компиляция, во-вторых усложняется поддержка кода и взаимозаменяемость разработчиков. Angular может потерять популярность из-за необходимости использования оберток. Что-то по-настоящему хорошее со временем внедрят в обычный js - притом в более удобном и продуманном виде.
В целом согласен, но на примере того же less в css могу сказать что если данный инструмент позитивно сказывается на производительности разработчика и структурированности данных - это плюс. Но обертка должна дополнять и улучшать действующие механизмы, а не переворачивать все с ног на голову.