Как стать автором
Обновить

Комментарии 250

Разработчики IE всё правильно делают.
Мир сошёл с ума.
Что они правильно делают? Высказываются против Dart? Верят, «что стандартное окружение может быть расширено и можно будет использовать JavaScript для масштабируемых приложений без отказа от самого стандарта JavaScript.»?
Да это же именно то, что нужно! Почему бы всем остальным разрабочикам не присоединиться к разработчикам IE в этом нелегком деле? Если разработчики всех браузеров начнут высказываться против Дарта и верить, то это фантастически ускорит развитие Javascript, и через год, нет, через полгода, мы будем поражаться его новым возможностям!
Давайте же еще раз поблагодарим разработчиков IE за то, какой хороший пример они всем подают!
>Что они правильно делают? Высказываются против Dart?
Да.

>Верят, «что стандартное окружение может быть расширено и можно будет использовать JavaScript для масштабируемых приложений без отказа от самого стандарта JavaScript.»?
Да.

>Да это же именно то, что нужно!
Да.

>Если разработчики всех браузеров начнут высказываться против Дарта и верить, то это фантастически ускорит развитие Javascript, и через год, нет, через полгода, мы будем поражаться его новым возможностям!

Если разработчики всех браузеров бросят JS и начнут заниматся дартом то черех полгода у не будет ни фантастических возможностей JS, ни дарта в более-менее стабильном состоянии. Что такого предлагает дарт, чего никак нельзя добавить в станарт JS?
У меня такое ощущение, что разработчики могут разрабатывать либо JS, либо Dart. Мечутся туда-сюда стадом и работают над одним продуктом. Не надо разрабатывать только Dart, не надо разрабатывать только JS. Подумайте, может есть еще какой-то третий вариант?
Угу. Не делать ни то, ни другое)
Был уже когда-то vbscript. Тоже кому-то не понравилось делать как все, а захотелось своего, и аргументы, наверняка, были… Хотя против Dart я ничего не имею, как и за него.
Я вот тоже вспомнил, что MC уже проталкивала альтернативные скрипты для веба :) гугл по крайней мере открыт к сотрудничеству с другими браузерами.

Если продукт будет востребован, то разработчикам IE придется включить его в браузер. Хотя вероятность этого и мала, но мне кажется что разработчики IE боятся именно этого, а не нового языка. Сколько таких языков было и сколько их умерло? И ни один из них не удостаивался чести быть официально преданным анафеме разработчиками IE.

И это не первая инициатива гугла которая вызывает ярость у MC — вебсотеты, WebGL, нативклиент. Но что плохого в том, что гугл выпускает много альтернативных инновационных технологий. Он ведь вкладывает в это свои деньги без гарантии успеха. Зачем критиковать альтернативные технологии? Хотя конечно это риторический вопрос. Потому что это делает не МС :)
Ну конечно, всяк кулик своё болото хвалит :) У M$ свои мысли и доводы, а об истинных причинах мы можем только гадать.

Конкретно по этому вопросу — мне понравилось одно из предложений в комментариях ввести некоторый промежуточный элементарный исполняемый код, в который можно компилировать из других языков.
Но как уже было сказано здесь же в комментариях, интернет сегодня довольно инертный ко всем нововведениям, особенно в корпоративном плане (и это, кстати, вполне также относится и к Европе). Поэтому при корпоративной разработке приходится ещё и на IE6 оглядываться, что весьма печально. Хорошо, хоть сейчас уже соглашаются повесить для IE6 заглушку с текстом об устаревшем браузере, а не требуют совместимости.
> Что такого предлагает дарт, чего никак нельзя добавить в станарт JS?

Ну вот, классы, например, хотели добавить в ECMAScript, да передумали.

И потом, добавлять не убавляя — не лучший вариант.
Согласитесь, питоновский слоган

There should be one-- and preferably only one --obvious way to do it.

весьма хорош и вне рамок питона.

Но добавляя новые возможности и не запрещая старые мы провоцируем нарушение этого принципа.
Слоган правильный, но сам Python не лучший. Уже 3 года как вышла стабильная версия Python 3, а большинство крупных библиотек под нее так и не портированы (Django, PIL например). Может, с Python 3.3 дело изменится, но сейчас все продолжают пользоватся Python 2.7, который как раз-таки добавли все новые возможности не запрещая старые.

И потом, запретить старые возможности можно и в рамках JS. «use strict» — вполне элегантное решение. Если вам нужна обратная совместимость — не используйте его, и старый код будет работать вместе с новым. Хотите чтоб вас били по рукам за небезопасный и устаревший код — пожалуйста, всего лишь добавтье одну строчку вначале файла/функции.
Кстати, хороший пример того, что иногда надо переосмысливать имеющиеся технологии. КТо-то считает Python3000 полным провалом, потому что много библиотек на него до сих пор не портировано, а другие (я в том числе) считают его новым шагом в развитии Python. Не нравится новый шаг — сиди на второй ветке, нравится — добро пожаловать, помоги своим друзьям и просто хорошим людям с переносом кода на третью ветку!
>> все продолжают пользоватся Python 2.7
Кто-то и 2.4 продолжает пользоваться, но явно не «все».
>>Кто-то и 2.4 продолжает пользоваться, но явно не «все».

Хоть какой-нибудь дистрибутив Linux сделал Python 3 дефолтным интерпретатором? Хоть какой-нибудь интерпретатор, кроме CPython поддерживает Python 3? Хоть какой-нибудь сайт, написанный на Python портировался с 2.x на 3?

Как раз таки показательный пример обратного. Имеем Python 3, который все сломал и сделал по новой. Имеем Python 2.7 в который добавили практически все теже фичи, не сломав при этом совместимость. Если, как вы предлагали выше, будет разрабатыватся Dart, и параллельно в JS добавять статическую типизацию и классовое ООП + сохранят совместимость со старым кодом, зачем нужен будет первый? Разница с Питоном только в том, что 2.x ветку скоро перестанут поддерживать и переписать весь код под Python 3 все-таки придется. А что заставит мигрировать на Дарт, при его параллельном развитии с JS?
>>Хоть какой-нибудь дистрибутив Linux сделал Python 3 дефолтным интерпретатором?
да, Arch например
Что, надо сказатьЮ очень иногда мешает.
Тут наши ребята целую операционку пишут на Питоне, а вы говорите.
Лично мне бы хотелось использовать унифицированный подход к классовому ООП а не

habrahabr.ru/blogs/javascript/132698/#comment_4404597

а так же полностью запретить неявное приведение типов.

Увы, но в двух вышеприведенных случаях директива «use strict» бессильна =(.
> Слоган правильный, но сам Python не лучший. Уже 3 года как вышла стабильная версия Python 3, а большинство крупных библиотек под нее так и не портированы (Django, PIL например). Может, с Python 3.3 дело изменится, но сейчас все продолжают пользоватся Python 2.7, который как раз-таки добавли все новые возможности не запрещая старые.

Я вот не согласен. В случае с Python сообщество вполне довольно версией 2.7, только поэтому и сидит на ней дальше. А на Python 3 побежим «всем скопом», чтоб бежать было как можно меньше.
Проще говоря, Нет смысла менять шило#1 на шило#2, если шило#1 просто можно наточить и сделать ручку поудобнее. Разработчики с одним JS не могут справится а тут ещё и DART

Удивительно, но это один из тех не многих моментов когда я на стороне Microsoft.
Давайте я менее сумбурно напишу свои мысли. Все это напоминает спор «Долой Похапе, Питон рулит!!! Долой Питон, Раби адски рвет его в скорости разработки!!! Долой Раби, Сишарпы рулят всех вдоль и поперек!!!!». Я не за то, чтобы JS умер, я за то, чтобы Dart тоже стал нативно поддерживаться браузерами.

Да, я понимаю, что многие скажут «Нас и так все устраивает, зачем плодить сущности без надобности? *картинка про 15 разных стандартов*»

Скажите мне тогда, почему ты используем разные языки программирования? Есть же простой и понятный Бейсик, почти все программисты его в какой-то степени знают, почему же мы беремся за другие языки?
Ответ: потому что ты это можем! Разные задачи требуют разных инструментов. JS уже давно не язык для «гыгы, кнопачка выезжает и мигает!!!». Dart тоже способен занять свою нишу, просто предоставьте ему возможность!
На самом деле правильный ответ на ваш вопрос — эволюция. Просто тут два варианта — либо внедрение нового языка происходит более-менее естественным путем, через «накипело», либо какая-то корпорация (бобра) пытается насадить язык искусственно (в угоду своим корыстным интересам).
С этим согласен. Тут дело скорее всего в том, что Dart мне и правда очень понравился, и я в упор не замечаю, то что его пытаются насадить искуссвенно.
На самом деле правильный ответ на ваш вопрос — эволюция.
ну и получится что нить типа плюсов.
Сделайте пи код — и появится туча всяких удобных ЯП для веба, а разрабы уж будут решать, что кому что удобнее.
Или javascript--, если так важно, чтобы скрипты оставались человеко-читаемыми.
НЛО прилетело и опубликовало эту надпись здесь
Так пусть выпустят стандартный промежуточный язык, а сообщество к нему прикрутит любые языки, какие захочет (как у .Net и JavaVM).
Спасибо огромное понимающим людям.
Да, я высказался немного резко, просто действительно это как-то странно. Одна группа разработчиков делает что-то новое, толпа смотрит с недоверием и тайным страхом, что придется учить что-то новое. Другая группа говорит: «Не взлетит», и все взрываются в аплодисментах «Дааа, я думал так же как эти крутые чуваки! (фуф, пронесло, ничего новго учить не надо и явсе еще ценный спец)»
Я лично не очень понимаю в чем заслуга разработчиков IE
>Мир сошёл с ума.
Я начал это подозревать с анонса WinRT в Win 8.
Поздно. Мир сошёл с ума, ещё когда начали делать вёрстку на языке разметки гипертекста.
С точки зрения разработчика компиляторов (работал над GCC и JDK), я могу понять инженеров Google. JS все же создавался для удобного доступа к DOM и не был рассчитан на те задачи, которые на него взваливают сейчас — игровой процесс, решение вычислительных задач, вроде игровой физики и т.д. И изменить его в эту сторону, с учетом поддержки предыдущего синтаксиса, очень непросто, есть риск получить еще один монстроязык.
с учетом поддержки предыдущего синтаксиса


При чём тут синтаксис вообще? Синтаксис даже в рамках JS можно изменить (см. CoffeeScript).
вот кто-кто но IE лучше бы молчали )))
имхо странно, что человека минусуют с такой же яростью, с какой ненавидят IE
не говорите мне что меня минусуют поклонники Микрософта, если у них такое количество поклонникв то 2012 онец света совсем рядом
И правильно делают, пускай лучше все сосредотачиваются на том, что бы JavaScript работал одинаково во всех браузерах и улучшают стандарты — и будет нам счастье :)
Один из тех уникальных случаев, когда Microsoft ближе мне по идеологии, нежели Google. Dart не нужен.
Да пускай будет, но не в качестве нативной поддержки в браузерах. А потом время покажет.
Да просто разработчики IE с JavaScript'ом справиться не могут, а тут им ещё Dart :)
Во многом все будет зависеть от того будут ли разработчики использовать Dart. Если разработчики будут его использовать то браузеры с нативной поддержкой получать прирост в производительности и тогда IE снова будет самым тормозом из всех и MS опять побегут догонять.

Интересно было бы действительно понять дает ли Dart что-нибудь разработчикам как было заявлено. По некоторым тестам получалось что VM дарта может быть в несколько раз быстрее JavaScript на V8:
dart vs js
Так что потенциал есть.
Не удивительно что быстрее. Код Dart, пропущенный через dartc, превращается в такой ахтунг… Разработчики обещали улучшить генерируемый код, так, что вскоре цифры могут уровняться.
В текущей версии не все так плохо с hello world'ом. Стоит понимать что сейчас разработка находиться в alpha стадии. На язык и на среду разработки стоит будет действительно смотреть когда ситуация стабилизируется. Google вкладывает значительные ресурсы для того чтобы Dart «взлетел.»
это проценты от производительности оригинальной JS версии. больше = лучше.
Разработчики IE поддерживают кроме JS еще и VBScript, так что кому как не им знать о нескольких языках в браузере. А разработчики пока, что сами не могут толком поддерживать JS. Взять ту же банальнейшую поддержку колесика мышки, вообще зоопарк, чуть ли не для каждого браузера по костылю. Изучать еще костыли для каждой версии Dart'а, не очень хочется.
Как бы поддержка колесика не относится напрямую к языку JavaScript.
А ещё jscript
А мне вот кажется, что к повсеместной победе JavaScript и HTML 5 над «сами знаете кем» остро не хватает возможности скомпилировать JS в байт-код на сервере и отдать его клиенту в уже транслированном виде.

И пусть VM байт-кода будет не очень быстрой и передовой, но зато сильно усложнит восстановление исходного кода, что в корпоративных приложениях очень важно. Особенно если реализовать полиморфные компиляторы, которые каждому клиенту будут отдавать свою версию байт-кода.
Дааа!
В javascript бизнес-логики быть не должно. А поэтому скрывать там нечего.
С чего это её там не должно быть? Вполне может быть, другое дело что вся присланная инфа от клиента должна проверяться на сервере, и ей нельзя полностью доверять.
Вы будете сожжены на сватом костре инквизиции реального мира. К сожалению, бизнес логика всегда должна быть недоступна клиенту. Это заповедь. Которую нарушают ради оптимизации (прощаем), ради быстрого разрешения проблем (багфикс, клиент всегда прав), но чаще ради лени — и тут вам гореть в аду.
А мне вот кажется, что к повсеместной победе JavaScript и HTML 5 над «сами знаете кем» остро не хватает возможности скомпилировать JS в байт-код на сервере и отдать его клиенту в уже транслированном виде.

Привет, вирусы на на сайтах! Ставим КасперскиАнтиБайтКод даже на телефоны!
А я не понимаю о каких фундаментальных изъянах идёт речь.
Я не спорю, что гипотетически возможно существование более удобного и мощного языка для веба нежели JS.
Но пока я такого не встречал и мне сложно предположить то, каким он должен быть.
Но это точно не Dart и не кофескрипт.

Вот DOM я бы переделал немного — дабы отпала нужда в использовании, например, jQuery.
Но сам JS очень даже устраивает.

PS: а ни кто не вкурсе — IE всё ещё поддерживает VBScript?
Не проверял, но по логике — какой смысл МС убирать его? Кушать он не просит
А я не понимаю о каких фундаментальных изъянах идёт речь.
Ну как же, ребята из Google нашли в JavaScript фатальный недостаток — его придумали не они.
Сразу скажу, что я люблю JavaScript, но рассуждаю здраво, без фанатизма.

Проблемы:
— По сути в JavaScript есть только функции на скоупах и хэши на прототипах остальное это сахар.
Поэтому VM часто приходится читать мысли разработчика.

— Прототипы (Классы в ECMA.Next это синтаксический сахар)
Мы с пеленок мыслим классами, нам сложно принять прототипы. Почти все библиотеки так или иначе эмулируют классы. К чему бы это?

— Динамические прототипы и объекты, манкипатчинг
Страшная головная боль виртуальных машин. Когда вы работаете с объектом как со словарем VM ненавидит вас.

— Не декларативные классы
Код класса приходится инициализировать даже если он не используется вообще (как в Java)

— Нет разделения на декларацию и исполнение
Какой бы ни был у вас скоростной интернет 1 Мб пожатого(без eval) JavaScript инициализируется 600-3000мсек (даже если он не используется вообще). 1 Мб это объем пожатой библиотеки Ext4.

— [не такая уж и проблема]На все приложение выделяется 1 куча, GC тормозит все приложение.
Воркеры, построенные на Isolate, в принципе вариант, но они не могут работать с DOM
> Мы с пеленок мыслим классами, нам сложно принять прототипы.

Вон из профессии
Не говорю про себя (научился, привык). Но попросите любого, скажем Python, программиста пописать пару дней на JavaScript :) Парадигму Класс принять в разы проще(она есть во всех языках), чем Делегирующий прототип. Еще он скажет вам спасибо за this, есть и другие «очевидные» вещи, которые в JavaScript совсем не очевидны.

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

Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы — функциональные подходы, генераторы, метапрограммирвоание, паттерн матчинги, разные подходы к типам и типизации, разные подходы к наследованию и т.п. Это из первого, что взбрело в голову. Причем вне зависимости от языка — Питон, Руби, Скала, и даже «старички» типа Java (как!!!111 в Java нет множественного наследования? Что такое интерфейсы? :) )

И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.

Я лично считаю, что в конесерватории надо что-то срочно менять. Причем не JS, а восприятие оного программистами.
а восприятие оного программистами

Для меня JavaScript — основной язык и пишу я на нем не первый год(пишу не на jQuery, а именно на JS) и я вас прекрасно понимаю. Меня окружают 90% людей для которых JS второстепенный и когда им приходится работать с JS я вижу как они ненавидят этот язык, но альтернатив у них нет(JS — монополист). Зачастую в условиях рынка проще начать писать на CoffeScript, чем ломать мозг и учить основы JS. Знать особенности JavaScript(не jQuery) это true, но зачастую это сложно и затратно.
Если они с JS работают постоянно, то для них то не второстепенный язык, а один из основных ;)

В этом проблема JS, как языка — его все считают неосновны. Даже в случае, когда с ним приходится работать или постоянно или даже больше, чем с «основным» языком.

В случаях, когда с JS приходится работать не постоянно, да, хотелось бы нормальной трансляции текущего языка в JS, чтобы хоть с этим голову не морочить :)
Ну тогда вы просто обязательно должны выучить Haskell до того же уровня, что знаю его я.
А иначе, как там вы сказали… Ах да, вон из профессии.

Если я пишу 3 строчки кода на JavaScript'е в месяц, я всё равно должен вникать в это жуткое прототипное Perl-наследование?
> Ну тогда вы просто обязательно должны выучить Haskell до того же уровня, что знаю его я.

С какого перепугу? Я с ним не работаю. Если я с ним буду работать, я не буду ныть по поводу отсутсвия в нем классов, например.

> я всё равно должен вникать в это жуткое прототипное Perl-наследование

Если вы работаете с языком, от вас ожидается, что вы понимаете этот язык, не? И да, наследование там даже близко не из Perl'а.
Вы не ответили на мой вопрос :)
Я ответил на оба вопроса — и про Haskell и про наследование.

Если вам непонятно, то отвечу понятнее: да, вы должны понимать, хотя бы в общих чертах, что такое прототипное ООП. Потому что вы будете ожидать понимая хотя бы базовых принципов Haskell'а от человека, который пишет три строчки в месяц на Haskell'е.
В общих чертах я понимаю, что такое прототипное наследование, но оно мне не нравиться т.к. я не понимаю какие приемущества оно мне даёт в сравнении с ванильным наследованием.
Я не понимаю, что такое монады, и какие преимущества они мне дают по сравнению с любыми другими ванильными средствами.

Повторю
Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы…

И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.


;)
Объясните мне, чем прототипное наследование лучше обычного и я с удовольствием расскажу вам про назначение монад.
> Объясните мне, чем прототипное наследование лучше обычного

Что значит «обычное»?

Оно не лучше, не хуже. Он просто другое. В любом виде в любой реализации у любого ООП есть свои преимущества и свои недостатки.

Про назначение монад мне рассказывать не надо, потому что я могу точно так же ответить: «мне надо три строчки на Хаскеле написать, мне что, андо разбираться в сугубо матемотической хрени под названием монады?»

То есть, иными словами: почему вы считаете, что для работы с Хаскелем вам нао учить Хаскеллевские подходы и используемые парадигмы, а для работы с JS — «мне это непонятно, дайте мне то, что удобно»? :-\
Приношу извинения за опечатки типа «матемотической» :)
Так получилось, что слишком уж JavaScript отличается от того, что вокруг него(прототипное наследование один из примеров). Именно по этой причине Erlang или Haskell никогда не будут повсеместно использоваться в промышленном программировании.

Какой смысл сохранять прототипное наследование, если оно не давая никаких приемуществ при этом блокирует вразумительную статическую типизацию? Нет смысла.

И я отнюдь не один, кто так считает. Это реальность.

Так почему же тогда я должен продолжать кушать JavaScript-кактус, если он ни разу не вписывается в экосистему, в которой существует?
> Так получилось, что слишком уж JavaScript отличается от того, что вокруг него(прототипное наследование один из примеров).

Не слишком он отличается. Единственное — это прототипное наследование. Но если программист не может разобраться, что это такое, как это тогда программист?

> Какой смысл сохранять прототипное наследование, если оно не давая никаких приемуществ при этом блокирует вразумительную статическую типизацию?

Кто сказал, что преимущест не дает?
stackoverflow.com/q/4428503
lee.fov120.com/ecoop.pdf
waltersmith.us/newton/OOPSLA95.pdf
programmers.stackexchange.com/q/110939

Это так, бешлый взгляд по первой странице гугла.

Насчет статической типизации: кто сказал, что она нужна в обязательном порядке?

> И я отнюдь не один, кто так считает. Это реальность.

Ну и не я один считаю, что попытка натянуть на JS ООП в стиле С++ — это бредовая затея (включая комитет по стандартизации).

> Так почему же тогда я должен продолжать кушать JavaScript-кактус, если он ни разу не вписывается в экосистему, в которой существует?

Он прекрасно вписывается в свою экосистему — веб-програмимрование. Так, если развить вашу идею, то любой язык, который не вписывается в ООП в стиле С++, надо переделать, чтобы вписывался.
Скажу, что в любом мэйнстримовом языке написав кусок кода я могу быть уверен в том, что если этот кусок кода скомпилировался/прошёл синтаксическую проверку, значит он с некоторой вероятностью делает то, что я имею ввиду.

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

Таким образом головная боль в случае ошибки увеличивается в несколько раз при программировании на JavaScript, нежели на другом языке программирования.
> Скажу, что в любом мэйнстримовом языке написав кусок кода я могу быть уверен в том, что если этот кусок кода скомпилировался/прошёл синтаксическую проверку, значит он с некоторой вероятностью делает то, что я имею ввиду.

Питон, Руби и PHP считаются мейнстримными или нет?
*_cast'ы в C++ и (obj) приведение в Java — это мейнстримно или нет?

;)

> В JavaScript'e эта вероятность близится к нулю из-за несоответствия реализаций, никакой проверки типов и попросту неправильных решений разработчиков стандарта.

В Javascript достаточно ввести строгую типизацию, как в Питоне, чтобы избежать большого количество ошибок, связанных с динамической типизацией. Можно дополнительно ввести аннотации типов, чтобы компилятору было типа легче. Сверхнеобходимости в статической типизации не вижу.

> Это немного роднит его с Perl'ом, который доказано не может быть проанализирован статически.

Дался вам этот Perl :-\ С чем Javascript и можно породнить, так это с Self'ом и Схемой (из них его ноги и растут)

> Таким образом головная боль в случае ошибки увеличивается в несколько раз при программировании на JavaScript, нежели на другом языке программирования.

На другом — это на каком? Чем на динамически типизируемом Питоне? Чем на динамически типизируемом Руби? Чем на динамически типизируемом PHP? Чем на динамически типизируемом Erlang'е?

Или для вас другими языками могут считаться только языки со статической типизацией и с ООП в стиле С++?

;)

И всё же головная боль при программировании на JS была сильнее, чем при програмировании на Python, Ruby и даже PHP.
В Javascript достаточно ввести строгую типизацию, как в Питоне, чтобы избежать большого количество ошибок, связанных с динамической типизацией. Можно дополнительно ввести аннотации типов, чтобы компилятору было типа легче. Сверхнеобходимости в статической типизации не вижу.

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

Dart может и не выстрелит, но есть вероятность, что благодаря разработчики браузеров и комитеты задумаются о том, что некоторые фичи и сам стандарт неплохо бы подчистить, чтобы всем стало легче жить.
> И всё же головная боль при программировании на JS была сильнее, чем при програмировании на Python, Ruby и даже PHP.

Чем она сильнее? Более того, чем она сильнее, чем в таком же слаботипизированном динамически типизированном PHP? Вы уже определитесь, с какими языками вы его сравниваете, и какие критерии оценки вы к нему применяете :-\

> И я веду вас к тому, что не стоит быть настолько категоричным и клеймить людей за то, что они не знают JavaScript. Будучи таким фанатиком вы можете отвергнуть даже те небольшие изменения, который могут вам самому пригодится, просто из-за консервативных взглядов.

Фанатики — это люди, утверждающие, что каждый язык должен быть статически типизированным и с ООП в стиле С++.

Более того, фанатики — это люди, утверждающие, что Javascript хуже мейнстримных языков именно потому, что в нем этого нет, несмотря на то, что мейнстримные языки весьма разные ;)

> некоторые фичи и сам стандарт неплохо бы подчистить, чтобы всем стало легче жить.

Ну так чистят. Более того, самое главное «зло» которое MS является одним из ключевых разработчиков и внедрятелей.
Чем она сильнее? Более того, чем она сильнее, чем в таком же слаботипизированном динамически типизированном PHP? Вы уже определитесь, с какими языками вы его сравниваете, и какие критерии оценки вы к нему применяете :-\
JavaScript ужасен в сравнении с любым языком(уж я их знаю достаточно). Относительно PHP он лучше хотя бы тем, что в нём функция substr только одна :)
Фанатики — это люди, утверждающие, что каждый язык должен быть статически типизированным и с ООП в стиле С++.
Типизация должна существовать даже, если проверки выполняются за кулисами, дабы позволить хоть какие-нибудь оптимизации. Всё что мы имеем на данный момент в JavaScript: это загрузка и интерпретация кода, а затем сохранение снапшота контекста в v8.

> JavaScript ужасен в сравнении с любым языком(уж я их знаю достаточно).

Критерии ужасности можно в студию? Пока что была ровно одна цепочка: прототипное наследование не позволяет статическую типизацию -> статическая типизация хорошо -> во всех мейнстримных языках компилятор мне помогает. После чего ВНЕЗАПНО оказалось, что полно мейнстримных языков с динамической типизацией, но, блин, JS все равно хуже всех :-\ Уровень аргументов, извините, на уровне детского сада.

> Типизация должна существовать даже, если проверки выполняются за кулисами, дабы позволить хоть какие-нибудь оптимизации.

Типизация в JS есть. Только — ВНЕЗАПНО — она динамическая. Что не мешает иметь в составе V8 JIT.

Я, правда, предполагаю, что вы путаете статическую и строгую типизацию, что было бы странным, учитывая заявление «уж я их(языков) знаю достаточно».

С точки зрения типизации главная проблема JS не динамическая типизация (которая, как мы выяснили, присутствует в большом количестве тех самых мейнстримных языков), а слабая типизация (которая отсутсвует в строготипизированном Питоне, но присутсвует в РНР).

Но при этом слаботипизированный динамически типизированный JS все равно ужасен в сравнении с слаботипизированным динамически типизированным PHP. Видимо потому что в PHP статическая типизация помогает компилятору вывести типы? (да, сарказм намеренный).

Я не понимаю вашей аргументации вообще.
После чего ВНЕЗАПНО оказалось, что полно мейнстримных языков с динамической типизацией, но, блин, JS все равно хуже всех :-\
А я нигде не отрицал сущестование динамических языков. И JS по-прежнему худший вплане автоматической проверки кода. Вы уж простите.

Типизация в JS есть. Только — ВНЕЗАПНО — она динамическая. Что не мешает иметь в составе V8 JIT.
То, что V8 преобразует JavaScript напрямую в машинный код, не отменяет того, что он этот код ничерта не оптимизирует. Вы я смотрю читаете только то, что вам удобно.

Я, правда, предполагаю, что вы путаете статическую и строгую типизацию, что было бы странным, учитывая заявление «уж я их(языков) знаю достаточно».
Не придирайтесь к словам.

Аргументация в том, что я хочу сказать, что текущий JavaScript неудобен для разработчика, потому как никто не хочет это удобство развивать из-за низкой культуры программирования самих разработчиков, отчасти навязанной кривым стандартом.
> не отменяет того, что он этот код ничерта не оптимизирует

да ну? т.е. всякие там loop invariant code motion это уже не оптимизации стали?
> А я нигде не отрицал сущестование динамических языков.

Тогда как понимать это заявление:
в любом мэйнстримовом языке написав кусок кода я могу быть уверен в том, что если этот кусок кода скомпилировался/прошёл синтаксическую проверку, значит он с некоторой вероятностью делает то, что я имею ввиду.


?

> И JS по-прежнему худший вплане автоматической проверки кода.

Повторю вопрос: Чем слаботипизированный динамически типизированный JS хуже в сравнении с слаботипизированным динамически типизированным PHP? При наличии этого заявления:
JavaScript ужасен в сравнении с любым языком(уж я их знаю достаточно).

?

> То, что V8 преобразует JavaScript напрямую в машинный код, не отменяет того, что он этот код ничерта не оптимизирует.

Да неужели? (первая же найденная ссылка в гугле)

> Вы я смотрю читаете только то, что вам удобно.

Я читаю все, что вы пишите. Пока что ваши «аргументы» не имеют ничего общего с реальностью (все мейнстримные языки позволяют компилятору проверять типы, v8 — неоптимизирующий и т.п.)

> Не придирайтесь к словам.

Я не придираюсь. Я показываю, что ваши аргументы не проходят проверку на прочность реальностью.

> Аргументация в том, что я хочу сказать, что текущий JavaScript неудобен для разработчика, потому как никто не хочет это удобство развивать из-за низкой культуры программирования самих разработчиков, отчасти навязанной кривым стандартом.

Чем он неудобен, вы так и не рассказали. Цепочку вашей аргументации от прототипов к статическому типизированию выше я приводил.

Чем он хуже того же РНР вы так и не рассказали, хотя отличий от JS у него в плане той же типизации ровно ноль.

Теперь, если развернуть всю цепочку назад, вы хотите натянуть жопу на глаз С++ style OOP и стат. типизацию только из-за низкой культуры программистов?

Тогда я возвращусь к своему вопросу:
Почему-то, когда люди переходят на другой язык, от них ожидается, что они выучат какую-то новую для себя парадигму или другой способ работы…

И только с JS ситуация прямо противоположная. Почему-то не программист должен подстраиваться под язык (в частности, понять, что такое функциональное программирование и прототипное ООП), а JS должен подстраиваться под программиста.


А?

И да, стандарт JS развивается и внедряется. Об этом я уже тоже говорил выше.
JavaScript ужасен в сравнении с любым языком

Это так толсто, у меня жир из монитора потёк.
Да, я немного зарвался. Только, если подумать: это моё истинное мнение :) Сколько я не пытаюсь найти причины для этого ужаса ну никак не получается. Лет пять уже как, и всё не нашёл.

Что со мной не так, доктор?
> Сколько я не пытаюсь найти причины для этого ужаса ну никак не получается. Лет пять уже как, и всё не нашёл.

> Что со мной не так, доктор?

Если за пять лет вы не смогли найти ответ на вопрос, почему JS «хуже любых языков» (и того же PHP, например), то ответ один: Вон из профессии.
Мне многое не нравится в JS но в сравнении с тем же PHP это сказка, а не язык. По крайней мере в JS для большинства задач есть только один инструмент, а не 2/3/4/etc как это регулярно бывает в php.
Прототипное ООП странное, но по сути ничем кроме синтаксиса не отличается.
Не пишите на js, в чем проблема?
У вас есть свое виденье каким должен быть ЯП чтобы не вызывать головной боли и чтобы с ним можно было «жить в мире», js очень хорош таким как он есть и не стоит, и даже вредно зажимать его в рамки/шаблоны «мейнстрима»
Эта головная боль увеличится не менее, чем вдвое, когда для одних браузеров можно будет писать большое веб-приложение на Dart, а для других всё то же большое приложение придется второй раз написать на JavaScript, или отказаться от доли пользователей. Это сродни двум версиям сайта: Flash/HTML (нынче почти побороли с помощью CSS и JS), десктоп/мобильный (телефоны в большинстве своем теперь смарт и все понимают, так что тоже можно с натяжкой считать, что побороли) и т.д. А теперь нам предлагают очередное расслоение, только большое веб-приложение поддерживать в двух экземплярах будет адски трудоемко и нецелесообразно: лучше сделать его один раз качественно на том, что есть у всех.

Сейчас JavaScript является своего рода открытым протоколом для кода на стороне браузера. Представьте, что могло бы быть в мире, если бы большинство участников Интернета не договорились использовать TCP/IP для передачи данных, или HTTP для передачи веб-страниц, или HTML для их отображения. Интернет уже настолько большой, что он не сможет быстро отреагировать на революционные изменения: все равно останутся браузеры без поддержки Dart, как остаются IE6, которые нужно брать в расчет. А чем больше нужно брать в расчет, тем ниже качество результата (костыли, workaround'ы и проч.).

P.S. Простите за «много букв», уж очень больную тему подняли…
> когда для одних браузеров можно будет писать большое веб-приложение на Dart, а для других всё то же большое приложение придется второй раз написать на JavaScript

Просто никто не будет писать на Dart'е. Пример с VBScript'ом выше в комментариях уже приводили.
> головная боль увеличится не менее, чем вдвое, когда для одних браузеров можно будет писать большое веб-приложение на Dart, а для других всё то же большое приложение придется второй раз написать на JavaScript

Так будет же кросс-компилятор из Dart в JS. Т.е. пишется только код на Dart а аналог на JS (для браузеров, не поддерживающих Dart нативно) автоматически генерируется.
«Ну и не я один считаю, что попытка натянуть на JS ООП в стиле С++ — это бредовая затея (включая комитет по стандартизации).»
Ох, надеюсь нас не двое и не трое…
> Именно по этой причине Erlang или Haskell никогда не будут повсеместно использоваться в промышленном программировании.

Тут бы поспорил. Тот же Erlang сейчас очень мощно начинает использоваться именно в практических проектах. Вспомнить тот же erlyvideo или один из самых навороченных jabber серверов ejabberd.
Вспомнить тот же erlyvideo или один из самых навороченных jabber серверов ejabberd.

Знаю, но это собственно и всё. Мне тоже нравиться Erlang, но давайте будем реалистами.
Ну если быть реалистами то Erlang на данный момент времени чуть ли не лучше всех остальных языков приспособлен к распараллеливанию на процессы, что в ближайшем будущем будет делаться все более и более актуально. Так что все может быть.
>Вон из профессии
Если выгнать всех, кто не в совершенстве владеет инструментом, то работать станет некому, заводы встанут, и вы умрёте с голоду.
Никто с голоду не умрет. «Культурку надо поднимать» ©, а не натягивать жопу на глаз тот же ООП в стиле С++ на язык только потому, что кто-то плохо этим языком владеет и ему «не удобно» ;)
Собственно, цель программиста — решить поставленную задачу, а не знать в совершенстве (ещё один) язык программирования.
Если решение задачи включает в себя реализацию чего-либо на том или ином языке программирования, предполагается, что программист должен знать этот язык программирования если не в совершенстве, то достаточно хорошо, чтобы не ныть «мне неудобно»
Программист должен знать язык достаточно хорошо, чтобы решить поставленную задачу.
Ныть можно.
Я не совсем верно выразился :) Имел в виду, что программист должен знать язык, а не требовать, чтобы он был похож на любой другой язык, только не на тот, чем он является.
Когда дарт выйдет нативно под хромом и будет нормальный JS код генерить под ИЕ с FF, то я моментально на него перейду. Мне удобнее работать с классами, а не прототипами, я просто в ахуе от этого javascript'а если честно, хотя и делал на нем уже довольно сложные проекты.

Так что думаю другие php, java, python, ruby и т.д. программеры предпочтут dart. И всем похер на ваши «вон из профессии», сиди и сами задрачивайтесь с этим JS, а мы будет работать так как нам удобнее :)
> я просто в ахуе от этого javascript'а если честно, хотя и делал на нем уже довольно сложные проекты.

Я так предполагаю, вы тоже 5 лет ищите причины, почему он вам не нравится, и не можете найте? :))) Как тут

> Так что думаю другие php, java, python, ruby и т.д. программеры предпочтут dart.

Никто ничего не предпочтет. Так же как до сих пор не предпочитают VBScript и PythonScript, и почти не предпочитают GWT.
По первой ссылке:
— вопрос про типы, решается не введением новго языка, а развитием стандарта JS
— вопрос про декларативность, решается не введением новго языка, а развитием стандарта JS
— вопрос про прототипы и динамическую типизацию обсуждается дальше по подветке комментариев, внятных аргументов против так приведено и не было

По второй ссылке нормальные возражения, которые решаются не введением нового языка, а развитием стандарта для JS.

А доколе ждать то? Я исправление этих проблем еще с 2008 года жду, еще лет 5 ждать? Плюваться, подключать зоопарк костылей, читать код из чужих костылей, эмуляцию на каждый код своя либа? Нет уж спасибо, лучше дарт, пусть даже только под хромом.

Опыт GWT есть, так что все это реально, но с GWT ушел как раз из-за того, что нужно ждать результата компиляции (причем долгой), да и вообще как-то это всё криво.
эмуляцию на каждый код своя либа -> здесь я про эмуляцию классического ООП с классами, сколько уже этих либ…
Берете одну, и работатете с ней. В чем проблема?

Более того. Ну, появился Dart. На нем магическим образом сразу появились все те библиотеки, которые есть сечас для JS?
И забыл самое главное. От шагов «написал — скомпилировал в JS — посмотрел, как работает в браузере» Dart не спасет.
Написал — посмотрел как работает в chrome. Вроде спасает, а IE и FF ну да, видимо отдельная отладка в каких-то сложны местах. Тут да, нужно смотреть на сколько оно будет глючный js генерить, может все ок будет…
Так вот, сейчас в 99% случаев для JS работает правило: написал, посмотрел, как оно работает в Хроме, оно безо всякого доп. шага работает везде. jQuery/ExtJS b прочие помогают. Оставшиеся 1% обычно упираются в глюки DOM'а и box/event-моделей браузера и решаются в индивидуальном порядке.

Так зачем нужен Dart? При том, что надежда на правильную компиляцию — всего лишь надежда.
Ну да, а Dart сразу все эти проблемы исправит, ага :-\

Не все но большую и важную для меня часть решит (неймспейсы, классический ООП, типы, потоки). А это уже глоток свежего воздуха. А либы дело наживное, аналоги scriptaculos будут и виджеты хотя бы на уровне GWT и можно спокойно работать. А всякие свистелки, перделки, что на jquery plugins обитают особо то и не нужно. Но и это будет со временем, тем, кому это нужно :)
> неймспейсы

Для JS есть решения

> классический ООП

Для JS есть решения

> типы

Типы в Dart весьма опциональны, так что :-\

> потоки

Ну разве что

> А либы дело наживное, аналоги scriptaculos будут и виджеты хотя бы на уровне GWT

Угу. Так вот прямо сейчас они и появились. Никто в здравом уме не будет писать что-то уровня GWT/ExtJS для Dart'а, пока его будущее весьма и весьма туманно. Да и когда не туманно — тоже большой вопрос, так как он будет только в Хроме, а трансляция в JS — это еще один ьбольшой и интересный мешок проблем.
Это не решения, а набор костылей, да можно использовать. Плюсваться, что другой разработчик использует для этого другие костыли, идти изучать его костыли, опять плюваться и читать его код :)
> Это не решения, а набор костылей, да можно использовать.

Их можно использовать уже сейчас, и они работают.

Dart тоже не панацея. В частности, у них единый глобальный namespace для всего, как и в JS. Зачем менять шило на мыло?
Причины вам выше перечислили, я к этому списку еще кое-что могу добавить, но в целом читаю ниже, там уже про это также отписались. Так что не буду повторяться.

VBScript и PythonScript — это еще что за хрень, из какого грязного закаулка откопали? :) GWT между прочим неплохо пошел, но у него есть недостатки, один из них — нет нативной поддержки хотя бы в одном из популярных браузеров. Из-за чего приходится ждать пока отработаеть компилятор и только затем тестировать изменения. В Dart можно будет тут же в хроме глянуть результат и это очень важно. Этим он превзойдет по популярности GWT, а это очень хороший результат.
> Причины вам выше перечислили,

Выше не было описано ни одной внятной причины. По-моему, из всех комментариев только этот комментарий ниже действительно описывает некоторые проблемы JS.

> VBScript и PythonScript — это еще что за хрень, из какого грязного закаулка откопали? :)

Из того же самого, в который пытается закопаться Dart. У МС уже был опыт — 90% рынков браузеров, не-Javascript язык, и?

> GWT между прочим неплохо пошел

Пошел он так себе по сравнению с общим рынком веб-разработки.

> В Dart можно будет тут же в хроме глянуть результат и это очень важно. Этим он превзойдет по популярности GWT, а это очень хороший результат.

Это виляние писями вилами по воде. Пока что Dart не представляет практически ничего, что нельзя решить развитием JS. Ну и blogs.perl.org/users/rafael_garcia-suarez/2011/10/why-dart-is-not-the-language-of-the-future.html
Фундаментальные изъяны все же есть, а может и не изъяны, а принципиально другое предназначение:
1. Модульность! Сами понимаете пихать все в один принципиально не правильно, а работать с зависимостями принципиально сложно. Есть принципиальные решения Yahoo UI…

Но сколько же мы видим «велосипедов» в Javascript! Иногда кажется, что проще Javascript заменить каким-нибудь велосипедом и все станет хорошо.

2. Scope переменных и модульность программ. Я думаю уже кучу программистов сломало голову с переменной «this» и объявлением var… Может что-то можно упростить? Функция «new» выглядит как из потустороннего мира (объектно-ориентированного).

3. Огромная сложность написать нормальный редактор из-за упомянутых ограничений в том числе.

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

Понятно, что для простейших страниц эти недостатки не важны если в html указывать onclickevent="...". Но посмотреть как пишется большинство javascript кода, это уже фреймворки ExtJS,… А при таких объемах кода нужно четко отделять «котлет» и «мух»
Они считают, что это вполне реально с помощью таких инструментов как Script# и Google Web Toolkit, которые генерируют код, способный компилироваться в JavaScript и исполняться в современных браузерах.

А разве Dart не компилится в JS?
Да, google хочет, чтобы его поддерживали нативно. Но отказ других браузеров от такой поддержки, не останавливает Dart от распространения в области WebApp.
Ага, вы попробуйте отладить программу на Dart скомпилированную в JS.
НЛО прилетело и опубликовало эту надпись здесь
Вот когда Google выпустит Google Docs на своем Dart, можно будет хотя бы послушать. А сейчас об этом и говорить глупо. Даже они у себя его не пользуют.
Вот когда Microsoft выпустит Windows на своем C#, можно будет хотя бы послушать. А сейчас об этом и говорить глупо. Даже они у себя его не пользуют.
Мы не в детском саду и не обсуждаем «он первый начал». Тема вполне конкретная. Google Dart. Уводить обсуждение в сторону не стоит.
Хорошо, по теме. Я не согласен с MixailV в том что «в топку JS, Dart заменит его полностью», я просто защищаю хороший язык. А Dart действительно хороший язык, и мне для подтвеждения этого не нужны Google Docs на Dart'е, я и сам могу примерно оценить, на что он потенциально способен.
Язык это не только абстрактные правила. Но еще и качественная реализация + наработанные с годами практики. У JS это есть. Десятилетие отлаживали его движки и теперь предлагают выкинуть? Если бы это была первая попытка Google «насадить» новый язык, то вопросов бы не было. Вот только до этого был подобный опыт, который ничем особо не закончился. Покричали и все.
А причин создавать сегодня еще один зоопарк технологий я пока не вижу.
А я вижу. Зоопарк технологй это хорошо. В конце концов, иногда полезно полностью взять и поменять концепцию. Если, как вы говорите «Покричали и все. » — то и ладно, ничего страшного не случилось, а вот если выйдет что-то годное, то это огромный шаг вперед.
> Зоопарк технологй это хорошо.

Ну вообще да, конкуренция, все такое.

Однако, недавно прочел статейку хорошую

pclt.cis.yale.edu/pclt/mscase/microsoft_java.htm

Там описана известная история того, как MS захотев изменять яву по своему разумению (что было запрещено лицензией Sun) в конечном итоге была вынуждена создавать с нуля почти идентичный (по концепциям) язык.

Хорошо это или плохо, судить сложно. Но из плохого — то, что по сути две весьма похожие технологии развиваются параллельно с довольно слабой способностью к переиспользованию (например, библиотек). Если бы это было в рамках одной платформы, прогресс и разработка, вероятно, шли бы быстрее.

Но всё, как обычно, решает высокая политика.
Если бы майкрософт изменила яву по своему разумению то у нас сейчас была бы ms_java и sun_java которые были бы между собой практически не совместимы, что вызывало бы уйму путаницы у пользователей, которые никак не могли бы понять какого у них приложение не запускается, java ведь установлена…
Угу, именно против этого и взбунтовался Sun, т.к. основная идея явы «Write once — run anywhere». А MS идеологически не могла развивать то, на что не могла повлиять в той мере, в которой ей того хотелось, а идеально — завладеть.
Это общие слова. Почему стабильный, отлаженный, проверенный временем JS хуже нового и никем не используемого Dart? Что в нем такого, чего нельзя добавить в JS, а нужно выбрасывать и делать с 0?
Какое из моих предложений вы интерпретировали как «JS хуже нового и никем не используемого Dart»?
Вот эти: " В конце концов, иногда полезно полностью взять и поменять концепцию." По хорошему концепцию меняют только тогда, когда она плоха. Другие варианты есть глупость.
У Ассемблера, видимо, ужасная концепция, раз люди придумали другие языки и компиляторы для них.
JS это ассемблер для Dart?
НЛО прилетело и опубликовало эту надпись здесь
Да ладно, правда? А чего ж тогда они Windows На нем не написали раз он такой хороший? Почему Google свои Docs на Dart не написали, раз он такой замечательный?

Возможно, потому что когда компания создает новый инструмент, она не кидается переписывать существующие продукты на нем.
C# позиционировался как замена C++ и ассемблера? Да ну?! У него были вполне конкретные цели. Он не был создан для написания OS. Тогда как Draft позиционируется заменой Java.
У меня два вопроса. Какой нахер Draft и причем тут Java?
Опечатался. JS и Dart.
Это единственный аргумент?
> Да ладно, правда? А чего ж тогда они Windows На нем не написали раз он такой хороший?

По той же причине, по которой не переписали Офис и IE, например. Потому что они не идиоты переписывать с нуля тонны отлаженного и оттестированного кода.
Справедливости ради стоит заметить что у Microsoft всё же есть операционная система на Sing# (C#).

Смех, смехом, а Singularity написана почти полностью на C#.
Ну-ну:
XPinguin: Из обсуждения новой ОС от Microsoft под названием Singularity:
XPinguin: Сейчас посмотрел определение сингулярности — «точка пространства-времени, в которой кривизна его становится бесконечной»
XPinguin: Похоже микрософт собирается выпустить бесконечно кривую ОС
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
А вы видели во что превращается скомпиленный из Dart в JS пример Hello world?
Это временная проблема dartc. Уже сейчас есть тулза(Frog), собирающая HW в 1Кб. Честно говоря, dartc для гугла — это эпик фейл. На Dart будет вечно висеть метка «нечто транслирующееся в 17к строк JavaScript» :)
а вы видели? так посмотрите же: gist.github.com/1385015
Ну конечно по 17 КБ фейла, пришлось допилить… Я к тому, что слишком всё сыро, и с неопределенным будущим.
InfoWorld: What is the status of Dart at this point?

Lars Bak: It's a technology preview. We wanted to get the language out very early on. It will take months before we have something ready that can be used for serious development, but we think it's very important to get it out early so we get feedback and can change the language and the implementation accordingly.

www.infoworld.com/d/application-development/infoworld-interview-why-google-dart-beats-javascript-178738
Ну так никто не против, пусть допилят, встроят в chrome, докажут что он язык действительно стоящий, а потом уже пытаются навязать его другим.
НЛО прилетело и опубликовало эту надпись здесь
Он дает сжатый код намного меньше Dart'овского, нет? Это ладно Hello World, умудрились ужать с 17 КБ до 1 КБ. А как будет выглядеть то что на JS занимает несколько сотен КБ?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
мечтатель?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Давно ли продвижение HTML5 заслугой гугла стало считаться?
НЛО прилетело и опубликовало эту надпись здесь
Да, да… Если нечего ответить, могли бы и промолчать.
Разок заминусовали, теперь я тролль по-вашему :)
НЛО прилетело и опубликовало эту надпись здесь
Иди ты на хуй, дружок
Да не вытеснили они Флеш, что за фантазии? Попробуйте на HTML5 какой-нибудь простенький P2P видеочат забабахать, я на вас посмотрю. HTML5 ещё долго развиваться.
НЛО прилетело и опубликовало эту надпись здесь
Я считаю, что Флеш надо заменять, но не считаю, что HTML5 готов заменить Флеш.

Правда, я что-то не припомню, чтобы я выступал против Флеша.
НЛО прилетело и опубликовало эту надпись здесь
Я крайне сомневаюсь, что инициативу Google разделят разработчики других браузеров. Что намного хуже, подобную инициативу вряд ли поддержат обыкновенные разработчики, для которых, собственно, Dart и создавался. Если Google откажется от Javascript в Хроме, очень многие просто откажутся от Хрома.
Эт почему разработчики не поддержат?
Я вижу несколько факторов, действующих на каждого программиста для Web в той или мной степени:

1) Наличие большой базы уже написанного кода. Для JS есть сотни тысяч библиотек и уже известных приёмов, Google Dart этим похвастаться не может (пока что). Это прерогатива любого молодого языка программирования, но это будет являться дополнительным сдерживающим фактором, прежде чем язык станет хоть насколько-то популярным.

2) Идеологические соображения. Есть разработчики, коих не так уж мало, которые сознательно отказываются от технологий, навязываемых крупными корпорациями. Это люди, которые видят в HTML5 + Canvas замену Adobe Flash — для них использование JS вместо Dart'а станет в том числе и выбором идейного характера.

3) Очень многие любят порицать Оккама за его бритву, но я её вспомню. Есть JS, которому без малого 10 лет, но даже сейчас его поддержка разнится от одной реализации к другой. Нужно быть большим оптимистом, чтобы считать, что молодой язык программирования станет не «заменой JS», но хотя бы просто будет присутствовать в современных браузерах. Зачем ещё один язык, которые везде поддерживается частично? Чтобы породить тысячи костылей для каждого конкретного случая применения? Вздор.
> Зачем ещё один язык, которые везде поддерживается частично?

Помечтаем. А что, собственно, мешает тому, чтобы развивать сей язык в качестве опенсорс библиотеки и линковать его во все возможные браузеры? Пожалуй, только политика больших компаний, которые все хотят иметь «своё», для обеспечения того, что называют vendor lock-in.
>>Помечтаем. А что, собственно, мешает тому, чтобы развивать сей язык в качестве опенсорс библиотеки и линковать его во все возможные браузеры?
Уже было. Java applets.
Вы не поняли. Имеется в виду, например, тот же WebKit или даже ядро Linux.
Вы хотите линковать ядро Linux во все возможные браузеры? Это как?
Нет. Ну что Вы в самом деле. Я имею в виду, что надо развивать Dart как какой-нибудь libxml или libmysql, т.е. в виде библиотеки (а не плагина!), которые будут вкомпиливаться в браузеры.
И что это даст? В FF можно в качестве скриптового языка использовать Питон. Вы видели хотть одно использование Питона в этом качестве?
1) А разве кто-то JS убирать собрался?
для формачек и прочих красивостей JS и будет.
А вот для больших проектов. как раз таки Dart. Да и болишие библиотеки с радостью на Dart (что-то подобное) перейдут. Так как проблемы производительности там уже ощутимы.

2) Упрямых везде много. Все зависит от того что же будет Google делать с ним. Пока что он только его разрабатывает. И почти уверен что лицензия будет вполне либеральной.

3) Ну вот есть всякие вроде мелкомягких будут против и будут делать свои реализации, то конечно.
Ага, с радостью все начнут переписывать всё с JS на Dart :) Конечно, разработчикам же нечем заняться, как выкинуть опыт накапливавшийся десятилетие, и начать всё переписывать под Dart. Если Google так уж уверен в Dart, пусть вставляет его в Chrome (так же как MS спокойно вставляет в IE свой VBScript), перепишет под Dart свои Docs, Gmail и т.п. И на деле докажут, что Dart значительно удобнее JS. Если пример будет убедительный, остальные производители его тоже переймут. Также как это было с AJAX, contentEditable и другие, которые давным давно сделала MS, и которые есть уже во всех браузерах.
А почему бы им и не переписать? Это лучше чем делать нечитаемый код, но который быстрее работает.
Естесвенно не сразу.
Как минимум потому что, чтобы переписать качественно библиотеку на другой язык, нужно знать тонкости этого языка (слабые и сильные стороны), а не только синтаксис. Т.е. нужен опыт.
А у разработчиков библиотек дак опыта нет? ))

Ок ок
А откуда у них вдруг возьмется опыт написания на Dart, я конечно понимаю, что Google корпорация добра, но опыт это дело наживное. И от того, что у тебя есть опыт создания библиотек для JS, это не значит, что ты с легкостью сможешь написать, такую же библиотеку на другом языке, на следующий день как увидишь пример с Hello world.
Если брать тот же jQuery, то в нем множество костылей, для разных браузеров, о которых ни в одном официальном мане не прочитаешь… Также есть много конструкций выполняющих одно и то же, но по скорости выполнения могут отличаться в разы, об этом тоже не пишут в манах.
>>на следующий день как увидишь пример с Hello world.
Память тренируем, ок? Сообщение назад написал что не сразу

А вот зачем мы обсуждаем костыли JQ я так и не понял.
Ну так я же написал на следующий день) Если бы сразу, то было бы в тот же день.

Ну jQuery одна из самых известных библиотек, и учитывая что у Dart работа с DOM не намного отличается от JS, то аналог jQuery ему тоже понадобится.

Вы так защищаете Dart, может похвастаетесь, своими наработками на нем? Ведь наверняка, уже как минимум пару библиотечек на него переписали, и вдохновленные тем как в нем всё здорово, активно защищаете его здесь.
Есть JS, которому без малого 10 лет
Ему 16 лет.
Javascript в Хроме будет жить еще долго, а вот если Гугл не решит проблему с памятью у Хрома, то думаю от него точно начнут отказываться. Не ну правда, последнее время на компе быстро работает только Хром.
Монополия на рынке браузеров? Сегодня?
Батенька, это фантастика.
Я им откажусь… я только jQuery освоил…
НЛО прилетело и опубликовало эту надпись здесь
А зачем? Лучше бы скомбинировали jquery c JS, и сделали что-то среднее с нативной поддержкой. Зачем еще один язык, если ему нужна будет очередная библиотека для улучшения/упрощения работы с ним, почему сразу не сделать удобно, чтобы такие библиотеки были не нужны?
Насчет доли на рынке вы явно торопитесь. Завоевывать каждый следующий процент намного тяжелее. Сегодня на Хром пересаживаются в основном по инерции: того сокрушительного превосходства по скорости, которое было у браузера на момент выхода, уже нет. С точки зрения повседневного использования — не бенчмарков — все последние версии браузеров кажутся быстрыми. Так что стимулов переходить становится все меньше.

Доля IE по чуть-чуть растет за счет успешных продаж винды с нормальным браузером по-умолчанию — IE9. Доля Safari продолжает расти вместе с ростом доли Маков — многие маководы не признают Хром из-за внешнего несоответствия интерфейсу Мак ОС. Доля Оперы стабильна на продолжении многих лет — рост числа пользователей соответствует росту самого Интернета.

Остается Firefox, который и отдавал свою долю Хрому последние годы. Но с переходом на быстрые релизы стабильность браузера тоже стала расти. Многие наработки, которые были начаты год-два назад, наконец-то релизятся. Например, type inference в JS или JS-Heap-per-tab. Разработчики экстеншенов тоже в своей массе приспособились к новому расписанию. А апгрейд обещает стать таким же «невидимым», как в Хроме.

Так что какой смысл сейчас переходить со своего любимого браузера на Гугловый? Может быть, что-то в Хроме и лучше, но не намного. Так что я бы ожидал постепенное снижение темпов роста. Chrome может оказаться браузером номер 2, и возможно брайзером номер 1, но монополистом ему не стать.
>>Доля IE по чуть-чуть растет за счет успешных продаж винды с нормальным браузером по-умолчанию — IE9.
Э, да вроде как по умолчанию восьмерка таки, а IE9 в любом случае либо через WU ставится, либо руками.
Уже больше двух лет, кажется, как они изобрели протокол SPDY. Но что-то кроме хрома и гугловых продуктов его никто не использует.
Даже Microsoft с их напором и при наличии 90% рынка браузеров не смог сделать подобного с VBScript.
традиционно. лебедь рак и щука. бедные технологи.
НЛО прилетело и опубликовало эту надпись здесь
Почему бы Гуглу не перестать изобретать велосипеды, а поддержать инициативу Мигеля и встраивать CLR в браузер? Сразу решаются все проблемы — и производительность, и платформонезависимость, и статическая типизация, и отладчики и компактность, и сладости типо Linq, type inferrence, reflection, динамическая генерация кода. И куча библиотек уже написана.
Если Гугл, то тогда уже JVM. Но с этого направления у них уже работает NativeClinet + LLVM. Насколько я понимаю главная их задача это представить другое видение на Javascript.

Если ты потерял нить развития Javascript и что-то принципиально не нравится, абсолютно здравая мысль создать Javascript с нуля и посмотреть как это выглядит. Цель Dart выявить не только недостатки Javascript, но и их возможные решения, потому что Dart принципиально похож на Javascript, следовательно симбиоз идей только пойдет напользу.
Иногда, когда глаз замыливается в деталях, нужно вернуться на пару уровней абстракции выше — сразу видно, что нужно, а что — просто балласт, тяжелое наследие. JS изначально задумывался не как ЯП высокого уровня на уровне современников, а как легкий костылик для решения проблем зачаточной интерактивности. То, что сейчас умудряются сделать люди на JS — снимаю шляпу, но вспоминается шутка про «мыши плакали, кололись, но продолжали жрать кактус».
Спасибо за перевод. Одна ремарка: «we believe» – это «мы считаем», но никак не «мы верим».
Что мешает сделать скриптовый язык, использующий в качестве движка локальной JVM?
То, что локальной JVM может просто не быть.
Около десяти лет разработчики браузеров и стандартизаторы договаривались о том, как понимать JavaScript. И только тогда, когда они, наконец, более-менее договорились, Корпорация Добра выступает с революционным предложением заменить основной язык Web-разработки на стороне браузера на свой.

Не пишите на Dart. Пусть он погибнет так же, как погиб GWT. Внедрение Dart приведет лишь к очередной войне браузеров! Веб-разработчики в массе своей, я уверен, уже устали от этих войн.

Изучайте JavaScript! Изучайте его хорошо и досконально. Тогда вы сможете писать на нем так же, как на любом другом языке: используя его сильные стороны и избегая использования слабых.

А разработчики браузеров пусть налягут на свои движки JavaScript и сделают их более совместимыми, надежными и быстрыми.

Вообще, вся эта история с Dart напоминает самое начало ситуации из всем известного комикса:

Ситуация: Существует 14 противоборствующих стандартов. Давайте изобретем 15-й, универсальный! (прошло время...) Ситуация: Существует 15 противоборствующих стандартов.
Не надо боятся нового. Dart появился от того что у разработчиков V8 кончились идеи как можно было ускорить работу JavaScript и стало понятно что нужно изменить в языке чтобы можно было ускорить VM. Так что это старьё теперь никому не нужно, пора забыть JS как светлое прошлое вроде газировки за 3 копейки в СССР и двигатся в будущее!
Уже Google Wave видели, сверхновый вид общение, который всех порвет… А про JS мы забудем не ранее, чем Google перепишет свои проекты на Dart. А то одно дело написать примеры в стиле Hello world, другое дело выкинуть свои многолетние наработки, и перейти на новый язык с неопределенным будущим.
Газировку не забыли. На ВДНХ поставили автоматы современные.
Ну раз они высказались против, то могли и предложить свою альтернативу, Google хотя бы шевелиться в эту сторону, а они нормальный браузер по стандартам только к 9 версии сделали, а раньше вообще у IE был JScript совместимый с JavaScript.
НЛО прилетело и опубликовало эту надпись здесь
Так они и предложили JScript. Только поняли, что бесполезно. А google не понял.
А Google сейчас, похоже, идет по пути MS, внедряя свой NativeClient. Судьбу ActiveX все помнят: до сих пор из-за него интранеты вынуждены сидеть на IE, а в будущем, по-видимому, будут сидеть на Chrome (каким бы он хорошим ни был, проприетарщиной разит).
NativeClient, в отличие от ActiveX, имеет открытый исходный код.
открытый код != свободный код
более того, дело не в открытости, а в удобстве для пользователей, наличии альтернатив и совместимости с ними.
А как по-другому? Я не уверен, что получится написать какую-нибудь не казуальную игру для браузера, не используя NaCl. С Android получилось тоже самое. SDK, конечно, здорово и интересно, но без NDK мы бы не увидели множества приложений.
NaCl Google'у-то не для браузера нужен, а для их Google Chrome OS. Им пришлось извращаться с NaCl, чтобы запихнуть Flash, PDF-читалку в ОС, изолировать её песочницей и заставить сносно работать.
А чем вас свободность BSD не устраивает?
НЛО прилетело и опубликовало эту надпись здесь
Более того, в самом Dart'е нет ничего революционного.
А девушка в левом нижнем углу 8 показывает… Она все знала?!
В правом нижнем углу
Они еще не знают, что через несколько лет их творение назовут полным говном… Улыбаются.
Не ошибается только тот, кто ничего не делает.
Семья Кутрапали в сборе!
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Можно добавить, что один из «фундаментальных изъянов» JavaScript — отсутствие статических типов, из-за чего снижается производительность приложений — по-своему собираются устранить разработчики из Mozilla.

Уверяю, что это не основная проблема. Dart имеет опциональные статические типы, но он их не использует для оптимизации (да, да, вообще не использует в том виде котором вы все подумали). Типы нужны только разработчику и его IDE. Dart построен на интерфейсах(тот же int это interface не class), поэтому резолв всех операторов происходит в рантайме. Да он будет сыпать варнинги, но работать будет.
Так откуда производительность тогда возьмется?
Hint'ы для рантайм системы можно шененрировать во время компиляции. В частности, ветку if typeof(obj) == int ? работать_с_целым(obj) : перейти_к_другой_ветке(obj) можно будет сразу заменить на работать_с_целым(obj) и тольк оотлавиливать промахивания мимо типа
Конкретно производительность: Декларативные классы. Фиксированные классы, объекты, программа(нет eval и манкипатчинга). Продвинутая работа с памятью (дробление кучи изолятами). Снапшоты — «дамп памяти» из которого можно восстановить работу без каких-либо задержек(втч форкнуть Isolate).
Разработчики IE высказались против Google Dart
Веб разработчики высказались против IE. Много раз и нецензурными словами.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Эта ситуация напоминает анекдот про двух ковбоев и 20000 индейцев:)
НЛО прилетело и опубликовало эту надпись здесь
> Вот только Microsoft 15 лет назад плевал на таких, как я и мои пользователи,
> 10 лет назад плевал

ВОт только 10-15 лет тому назад у МС был лучший из существующих на тот момент браузеров. На кого он там плевал, известно, видимо, только вам.

> Многие разработчики считают, что эти технологии могли появиться и развиваться намного раньше. Намного.

Эти «многие» просто нифига не знают про развитие тех же браузеров, судя по заявлениям про 10-15 лет тому назад
НЛО прилетело и опубликовало эту надпись здесь
Я знал о Нетскейпе. Нетскейп был лучше IE можеть быть один-два года на заре браузерных войн.
Достаточно посмотреть сколько есть библиотек упрощающих работу на JS, что бы понять что язык не соответствует потребностям разработчика. Я не знаю ни одного подобного языка, в котором ВСЕГДА нужно использовать дополнительную библиотеку.
Любой язык такой.
Пример пожалуйста.
В любом языке всегда есть только ядро (оно может быть большое или маленькое — не имеет значения). Нет ни единого языка, на котором пишут только на ядре. Всегда есть обвязка из библиотек, которые — сюрприз! — облегчают работу (исключения — некоторые real-time и embedded задачи).
Сколько процентов скриптов использует jQuery/Prototype/etc.? Как минимум 90%. Найдите такую же популярную библиотеку например в Python или Ruby :)
jQuery используют не потому, что JS плохой, а потому что DOM (и его реализация в браузерах) плохой, а DOM != Javascript.

Для сравнения, для того, чтобы работать с XML'ем 90% будут использовать какой-нибудь pyxml. Мы из этого сделаем вывод, что Python плохой?

Самое лучшее решение в данной сетуации — это единая библиотека рендеринга страницы. Как вариант самостоятельно разработать свободную библиотеку. Но как её продвинуть во все браузеры не понятно.
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории