Comments 63
Dart можно использовать уже сейчас, об этом была статья пару дней назад:
https://habrahabr.ru/company/wrike/blog/330900/
Вы удивитесь, но именно так работают все компиляторы. Вы пишете на Си, и ваш код превращается в машинный код.
Расскажите поподробнее, какой дискомфорт у вас возникает от того, что код, который вы пишите, превращается в Javascript, который понимает браузер?
Расскажите поподробнее, какой дискомфорт у вас возникает от того, что код, который вы пишите, превращается в Javascript, который понимает браузер?какой дискомфорт? — дикий, у тех кто не знает (или не хочет знать Javascript), и пишет на «TS, Dart, C# etc для фронтенда» — само наличие «окончательного» Javascript вызывает дикий дискомфорт, так как… есть люди которые, «сволочи окаянные и подлюги» просто прямо, ну не подлецы же,… просто прямо пишут сходу на этом самом… Javascript.
Само наличие этих людей просто сносит у них (тех кто пишет на «TS, Dart, C# etc для фронтенда»)… крышу и вызывает дикий дискомфорт!
Дикий!!!
Имхо, конечно, имхо. (С)
Вот чем принципиально затранспайленный JS отличается от собранного wasm? Вы же явно не лазите в собранный код с лупой? Вы используете (надеюсь) сорс-мапы. Какая тогда вообще разница?
Я лазжу. Правда это наброс на бейбель, но не суть.
Вчера буквально наткнулся на странное поведение (с точностью до синтаксиса):
class A extends React.Component {
someCallbackMethod = () => {
const result = false;
console.log('result', result);
return result;
}
}
const a = new A();
a.someCallbackHandler();
и вывод в консоли
> 'result' false
> ReactComponent { ... }
Моему изумлению не было предела, когда функция возвращает не значение переменной result, а this
. Пришлось лезть в сорцы, смотреть что он там накомпилил, наткнулся на эту ошибку https://github.com/babel/babel/issues/5817
Но да, случай невероятно редкий и это ошибка компилятора, во всяких ваших wasm будет тоже самое, только разобраться в том, что он там накомпилил, будет сложнее в разы.
да, нормально, абсолютно нормально
так лучше?
Вы как-то наивно жонглируете какими-то терминами, бэкенды, фронтенды, как будто программирование одного идеологически лучше чем программирование другого. Не все на вебе замыкается, есть десктопы, мобайлы, мейнфреймы.
Вместо того, чтобы создать нормальный язык (или юзать, скажем, Dart, Kotlin etc) в качестве основы для браузеров, мы будем babel.
Пожалуйста, пишите на дарте, вам кто-то мешает?
Вкладка браузера может отжирать немыслимые ресурсы и если писать на ванильном JS, и на Typescript, и на Dart. Это зависит не от используемого языка, а от рук программиста в первую очередь.
Если вы считаете, что переход на компиляцию Dart->WASM вместо нынешнего Dart->JS, волшебным образом даст прирост производительности, то я позволю с вами не согласиться
Вкладка браузера может отжирать немыслимые ресурсы и если писать на ванильном JS, и на Typescript, и на Dart. Это зависит не от используемого языка, а от рук программиста в первую очередь.
На JS всё же труднее создавать монстров. А вот на Dart гораздо проще.
На клиент мы в данный момент грузим около 10 мегабайт сжатого кода, раньше было 5 или 6. И раньше эта цифра выглядела страшно, сейчас и подавно. Но мы тут ничего не можем сделать -продукт активно растет функционально. Разумеется, мы стремимся, чтобы отдельные куски кода грузились по требованию, но в каких-то случаях приходится подгружать весь код сразу...То есть ребята идут на рекорд — сейчас 10, через пару лет 25, через пяток — 50-100 мегов сжатого кода придёт на их клиент. — Именно поэтому им нужен… Dart — Хотя могли с таким же успехом выбрать Java в инкарнации GWT.
Alexeyco
По поводу дискомфорта — я бы назвал это не дискомфортом, а идиотизмом. Это вынужденная мера, я понимаю. 10 дней из жизни Брендана Айка прилетели громадным ментальным страпоном нашим современникам. И снова же — я не виню его, я понимаю, что так уж вышло. Но даже с этим пониманием нельзя отрицать, что в мире JS бардак страшнейший.Попытки внедрить «обработчики» различных языков прямо в броузер — были и неоднократно были — в виде плагинов (апплеты Java и т.п.) — но все они… провалились и сейчас довыпиливают последние остатки Flash из броузера.
Ибо — JS победил окончательно и бесповоротно на клиенте в броузере.
Не знаю, что там происходит во Wrike и что они грузят в браузер.
Зато есть демка от разработчиков Dart: https://webdev.dartlang.org/examples/ng/doc/toh-6/dashboard
Общий вес JS — 500 Кб.
Конечно, на ванильном JS могло бы быть меньше, но если вы не хотите наступать на грабли Javascript, то придется заплатить немножко большим бандлом.
Вашему языку придется подстраиваться под dom. Ну и не будите же Вы писать на чистом, придется ещё подождать, пока пишущие на c# или java выучат весь вэб на отлично и даже лучше, для того чтобы зазубрить основы кривого dom, чтобы написать фраймворк, который тоже нужно обкатать. А потом скажут что все это ерунда и уже придумали что-то новое! И так было, есть и будет всегда! Поэтому совет — учитесь идти в ногу со временем и для начала — научитесь учится.
А вообще умиляет паталогическая нелюбовь C#(С++)-кодеров к JavaScript, и не имеющих понятия об интерфейсах DOM, а также о том, что HTML, CSS, JavaScript и DOM — это единое целое…
Не ожидал знаете-ли такого вопроса. И причём здесь ОС? Браузеры на движке V8 могут работать в разных операционных системах, а операционные системы и не знают о V8. А что такое JavaScript без DOM, HTML и CSS? И зачем DOM без JavaScript, HTML и CSS?
Не так страшен бекендщик, который пришел во фронтендУж поверьте, еще как страшен. Как слон в посудной лавке. И кончается это все в 99% случаев истериками «ой все, идите вы со своим жабаскриптом в *». Проходили, изучали.
Из реального опытаИдиотов полно, на всех стеках.
мы не понимаем, как могут одновременно существовать два стандарта JSСтандарт один — ECMA. Версий языка по этому стандарту несколько. Вас же не удивляяет, что в природе есть одновременно и Java 7, и Java 8?
и самое страшное — coffeescript.Ну классика жанра просто. Наитипичнейшая классика.
Когда мне нужно перевести с английского на русский, я не перевожу сначала с английского на суахили, а с него на русский.Пример что-то совсем корявенький.
Если вы пишете на английском и вас это устраивает — пожалуйста, пишите на английском. Хотите на чем-нибудь, для чего нет прямого перевода на русский — отлично, пишите тоже, только с перегоном через английский. Все же просто.
Или вы не задачи решаете, а в технологии копаетесь?
И лично Вы доказываете что Только Вы не можете вникнуть в клиентскую часть из-за того что препроцессоры Вам мешают. А если бы Вы были капельку осведомлены, то не говорили бы такую ерунду, ведь препроцессоры в клиентскую часть пришли из ruby, который тоже серверсайд. Поэтому в все проблемы только у Вас и у тех кто так же как и Вы не может привыкнуть к новым воротам. Это без обид, мне самому иногда сложно с чем-то мирится, но я стараюсь искать причины в себе.
ы выдумываете в голове какие-то мои фразы, а потом мне на них отвечаете
ВЫДУМАЛ?
придется ещё подождать, пока пишущие на c# или java выучат весь вэб на отлично и даже лучше, для того чтобы зазубрить основы кривого dom
На что Вы пишите —
Когда пишут про то, что бекендеры чего-то там не понимают.
И начиная со второго предложения первого абзаца я объяснил что именно имел ввиду.
Поэтому после заявлений что я пишу на убогом стеке технологий, я могу сказать лишь одно — а на каком Вы, не убогом, пишите gui? И какой по Вашему мнению лучший язык для серверного кода?
Стоит заметить, что Webpack тоже не стоит на месте. Во 2й версии появилась нативная поддержка import
деклараций, без Babel, и соответственно, tree-shaking оптимизация
А в 3й версии (да-да вышла на этой неделе), появился ModuleConcatenatioPlugin, делающий то же самое, что и Rollup. Почитать можно в официальном release post:
https://medium.com/webpack/webpack-3-official-release-15fd2dd8f07b
Короче походу сейчас проще со старичком maven, что для сборки java разобраться, чем с современной сборкой js. Прескорбно очень. Кучи настроек и файлов, чтобы просто проект начать… Капец… Сам страдаю, если что) в java правда на Градо перешел, так что полегче стало. Но js капец… Такое ощущение, что вообще не смотрят на какие грабли уже натыкались в старых топовых языках
А на какие грабли уже натыкались в топовых языках?
Так используйте всякие cli или репозитории-стартеры. Это как аналог архетипов в мавене. Если проект большой и сложный, конфиг будет сложный везде: как в мавене, так и в js-мире. Для небольших проектов готовые решения вполне подойдут.
А чего дурацкого в задаче по конвертации кода в совместимый с более старыми интерпретаторами?
Для Java, например, есть Retrolambda, чтобы фишки Java 8 в более старых версиях работали.
При чем тут русский, при чем тут суахили? Цитирую:
а в мире js под сборкой понимается пляска с бубнами и вызов Ктулху, чтобы превратить один es в другой es
Процесс довольно однозначный, переводим ES6 -> ES5, где тут танцы?
А то в Яве не используют кодогенераторы.
НО.
Если разобраться по сути, то окружение Джавы, С# и JS не так уж принципиально отличаются. В Java и С# существует Виртуальная машина, её ассемблер/intermediate language (e.g. MSIL) и JIT компиляция. В JS тоже самое. Браузер с его V8 или другим движком это собственно та же виртуалка, её ассемблер/IL это и есть тот самый JS, а проблема совместимости версий существует из-за необходимости поддержки старых браузеров (привет Майкрософту). И транспиляторы компилируют код из разных языков в JS так же как компиляторы из Java/Scala/C#/VB в код их виртуалок. А далее за дело берется JIT, который существует во всех них. И то, что код VM не читабелен, а код JS да, принципиального рояля не играет.
Тоже можно сказать и про инструменты сборки проектов. У Java есть Maven/Gradle, у C# — MSBuild у JS много всего на выбор. Часть умирает, часть выживает.
И так практически по всем пунктам. Со временем поутихнет развитие и останутся проверенные временем решения. Уйдут в небытие старые несовместимые браузеры, ужесточатся стандарты, надают по шее Майкрософту. На смену (или в дополнение) интерпретируемому JS придет нормальный IL, например webasm. Напишут компиляторы с разных языков и будет всем счастье. Устаканятся фреймворки. Может кто и до реализации WPF дойдёт (Я его реально люблю). Возможно и с CSS layout что нибудь нормальное сделают (хотя в это мне намного меньше верится, чем в победу разума над JS)
Чисто для инфы, я работал на клиенте, когда серверов (в нынешнем понимании) ещё не существовало, работал на сервере и сейчас пишу на всяческом фронт-энде. Просто в большинстве знаю эту кухню и весь кошмар не по-наслышке. И, если честно, не смотря на все его недостатки, мне нравится JS.
Да уж, еще один инструмент который стал не актуален (с релизом новой версии webpack) быстрее чем о нем перевели статью на хабре)
Ну так es6 уже вовсю движется в правильном направлении. ООП более-менее стало приходить в норму.
ООП в ES6 не изменилось ни на йоту по сравнению с ООП в ES5.
Как создавать компактный и эффективный javascript используя RollupJS