«Должны» != «Следуют». Но они именно «должны», стандарт он в любой галактике стандарт.
> Не будет альтернативных реализаций.
Даже если и не будет — в гугловской реализации будут. Я собираюсь попробовать Дарт в любом случае, и только потом судить.
> будто Вы ожидаете появления каких-то других реализаций Dart
А почему бы и нет, собственно? Он не настолько плох. А если «взлетит» — наверняка будут.
> Считайте V8 стандартом
С чего это я должен считать стандартом одну из реализаций? Есть стандарт ECMAScript и это главное. Реализации должны следовать стандарту и все.
Десктопное — как нефиг делать. Торрент-клиент. Да и вообще любое p2p.
Вообще говоря, все, что должно по-полной использовать процессор и хорошо параллелится.
Браузерное — все, активно работающее с XHR, например. Или где там еще активно применяются коллбэки.
1 — V8 isolates != Dart isolates. Это вообще разные понятия. В JS вообще нет ничего подобного.
2 — Dart это не один движок, это стандарт(в будущем). В любой Dart VM и в любом компиляторе Dart isolates быть обязаны как часть стандарта.
Вам, кажется, слишком нравится JavaScript, чтобы я смог это объяснить. Но я попробую:
1 — борьба с global shared state стоит того. Isolates довольно прозрачно укладываются на OS threads и между ними нет shared state, следовательно нет оверхеда на синхронизацию. То есть, он есть, но он совсем другой.
2 — при наличии нормального средства интроспекции isolates проще отлаживать и профилировать. Тут нет stack trace на 50 вызовов.
3 — если иметь заточенный под акторы GC, вообще начинаются сплошные плюсы. Почитайте, как работает рантайм и GC Эрланга. Если вам после этого не захочется писать на нем, а не на Node.js, вы, извините, фанатик и конструктивной беседы не выйдет.
V8 это реализация стандарта ECMAScript. V8 isolates это внутренняя сущность этой реализации, причем сущность, о которой нет ничего в стандарте и к которой нет интерфейса для выполняемого кода. V8 isolates можно использовать только «снаружи», из приложения в котором работает этот самый V8.
Более того, если даже к V8 isolates был JS-интерфейс, это было бы нестандартным расширением, не поддерживаемым прочими JS-движками. Про нестандартные, хотя и полезные расширения, сразу вспоминаем IE и кучу других примеров.
С Dart абсолютно другая история. Isolates — часть стандарта языка(!), и это самое важное. Они обязаны быть в любой его реализации.
> И нафиг они сдались на клиенте?
Допустим, мне проще иметь 10 акторов(которыми являются isolates) в каждом из которых делается N запросов к серверу, чем иметь 10*N коллбэков, цепляющихся друг за друга.
Это одна из субъективных причин.
> нафиг они сдались на клиенте?
Простите, вы сами знаете, что сейчас пишется на клиенте. Это просто другая модель асинхронности, замена коллбэкам.
Лучше это или хуже — субъективный вопрос. Мне ближе и приятнее.
> А когда будет поздно?
Я думаю, что обо всем нужно думать просто вовремя, не рано и не поздно. =)
> От появления Dart на клиенте изоляты не появятся.
Они часть стандарта языка, соответственно, будут на всех поддерживаемых платформах. В частности, client-side пример использования Isolate уже есть(https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/client/samples/isolate/).
Не мало. Но основные проблемы не столько в нем самом, сколько в отношении к нему — его терпели. Да, это отношение можно обосновать самыми разными причинами.
Тем не менее, сейчас он активно вытесняется с рынка. И, я полагаю, скорость вытеснения неудобного продукта с рынка определяется не столько самим продуктом, сколько другими факторами. Скажем, простотой и скоростью доставки продукта-замены конечному пользователю. А в этом за последние 10 лет был значительный прогресс.
> А когда «динамическая типизация» вдруг стала тождественна «неявному приведению типов»?
А я и не называл динамическую типизацию минусом. Я говорил о строгости типизации, это несколько другое.
> Гугл пытается навязать мне Дарт.
Я так не думаю. Вы, конечно, сделали, какие-то выводы из происходящего, но, по-моему, они преждевременны. Еще слишком рано.
> на клиент isolates нафиг не сдались
Вот тут вы серьезно ошибаетесь, по-моему. Isolates это замена коллбэкам, как модели асинхронного выполнения. Это те самые легковесные изолированные процессы на которых живет Erlang и которые есть в Go. Ладно, не те самые, тут нужно смотреть в реализацию. Но это именно они. И это меня очень радует по массе причин.
> V8 — именно тот движок, который крутится на сервере (на клиент isolates нафиг не сдались)
Я вообще не говорю про сервер. Я никогда не буду пользоваться node.js — религия не позволяет. Я говорю именно о client-side.
> 10 лет расхлёбываем последствия
Из прямых последствий монополии МС — только ИЕ.
С косвенными сложнее, я лучше промолчу, тут можно что угодно написать.
И вообще, ИМХО, гораздо серьезнее последствия намеренного снижения уровня вхождения в разработку. Снижения ценой строгости и культуры. Но эту тему я тоже не буду продолжать.
> главное достоинство JavaScript
Я, наверное, чего-то не понимаю в жизни. Как этот ад из неявных приведений типов можно считать достоинством?.. Такого ужаса нет нигде, кроме PHP и JS.
У меня есть мнение, что приведения типов должны быть только явными. Чтобы строку нельзя было сравнить напрямую с числом. Чтобы всегда можно было просто и наглядно понять из кода, какого типа переменная.
> Isolates реализованы в V8.
V8 — это всего лишь один из движков. Это не весь JS, более того, я сомневаюсь, что это есть в стандарте. Более того, я сильно сомневаюсь, что Isolates в V8 — то же самое, что и в Dart.
ИМХО, для чата ВКонтакте лучше всего подошел бы Erlang с уже готовым и более чем известным ejabberd. Ну или без ejabberd, какая разница. Почему они предпочли ноду — лично для меня загадка. Единственный мой вариант — ниасилили/побоялись. Хотя чего тут бояться — непонятно. Что тут ниасилить — тем более.
Для задач такого уровня из существующих языков хорошо подходит только Erlang. На всех остальных разработка раньше или позже превратится в бег по граблям.
IMHO, у Dart есть(или будут) преимущества над JS.
1 — более строгая типизация. Почти весь wtfjs.com именно о типизации, это однозначно худшая проблема JS.
2 — легковесные процессы(isolates). Это предмет для отдельного холивара, но для меня их плюсы по сравнению с коллбеками очевидны. Если будут нормальные инструменты интроспекции — это уже победа. В LWP-based concurrency мы можем гораздо четче отследить состояние системы и отдельных ее элементов.
Далее, о монополии. По-моему, вы придаете этому слишком большое значение. Microsoft был монополистом в вебе, и что теперь? Теперь они отстают и не могут догнать.
Я хочу сказать, что это естественный процесс, и никого этот итог не минует. Так что, какая разница, кто сейчас монополист? Опять же, Гугл — не худший вариант.
Dart сейчас выглядит вполне вменяемым языком, не лучше и не хуже прочих. Ну нет прототипного ООП, ну и что. Опять же, это исключает изящные решения типа JQuery, что станет для многих минусом.
В любом случае, мы будем писать на том, на чем _актуально_ писать и никто нас не спросит. Если актуальным станет Dart — будем писать на нем, пока не появится что-то лучше.
> Не будет альтернативных реализаций.
Даже если и не будет — в гугловской реализации будут. Я собираюсь попробовать Дарт в любом случае, и только потом судить.
А почему бы и нет, собственно? Он не настолько плох. А если «взлетит» — наверняка будут.
> Считайте V8 стандартом
С чего это я должен считать стандартом одну из реализаций? Есть стандарт ECMAScript и это главное. Реализации должны следовать стандарту и все.
Вообще говоря, все, что должно по-полной использовать процессор и хорошо параллелится.
Браузерное — все, активно работающее с XHR, например. Или где там еще активно применяются коллбэки.
2 — Dart это не один движок, это стандарт(в будущем). В любой Dart VM и в любом компиляторе Dart isolates быть обязаны как часть стандарта.
1 — борьба с global shared state стоит того. Isolates довольно прозрачно укладываются на OS threads и между ними нет shared state, следовательно нет оверхеда на синхронизацию. То есть, он есть, но он совсем другой.
2 — при наличии нормального средства интроспекции isolates проще отлаживать и профилировать. Тут нет stack trace на 50 вызовов.
3 — если иметь заточенный под акторы GC, вообще начинаются сплошные плюсы. Почитайте, как работает рантайм и GC Эрланга. Если вам после этого не захочется писать на нем, а не на Node.js, вы, извините, фанатик и конструктивной беседы не выйдет.
Более того, если даже к V8 isolates был JS-интерфейс, это было бы нестандартным расширением, не поддерживаемым прочими JS-движками. Про нестандартные, хотя и полезные расширения, сразу вспоминаем IE и кучу других примеров.
С Dart абсолютно другая история. Isolates — часть стандарта языка(!), и это самое важное. Они обязаны быть в любой его реализации.
Переменная без указания типа считается Dynamic, тип определяется в рантайме.
Допустим, мне проще иметь 10 акторов(которыми являются isolates) в каждом из которых делается N запросов к серверу, чем иметь 10*N коллбэков, цепляющихся друг за друга.
Это одна из субъективных причин.
Простите, вы сами знаете, что сейчас пишется на клиенте. Это просто другая модель асинхронности, замена коллбэкам.
Лучше это или хуже — субъективный вопрос. Мне ближе и приятнее.
> А когда будет поздно?
Я думаю, что обо всем нужно думать просто вовремя, не рано и не поздно. =)
Они часть стандарта языка, соответственно, будут на всех поддерживаемых платформах. В частности, client-side пример использования Isolate уже есть(https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/client/samples/isolate/).
Тем не менее, сейчас он активно вытесняется с рынка. И, я полагаю, скорость вытеснения неудобного продукта с рынка определяется не столько самим продуктом, сколько другими факторами. Скажем, простотой и скоростью доставки продукта-замены конечному пользователю. А в этом за последние 10 лет был значительный прогресс.
А я и не называл динамическую типизацию минусом. Я говорил о строгости типизации, это несколько другое.
> Гугл пытается навязать мне Дарт.
Я так не думаю. Вы, конечно, сделали, какие-то выводы из происходящего, но, по-моему, они преждевременны. Еще слишком рано.
> на клиент isolates нафиг не сдались
Вот тут вы серьезно ошибаетесь, по-моему. Isolates это замена коллбэкам, как модели асинхронного выполнения. Это те самые легковесные изолированные процессы на которых живет Erlang и которые есть в Go. Ладно, не те самые, тут нужно смотреть в реализацию. Но это именно они. И это меня очень радует по массе причин.
> V8 — именно тот движок, который крутится на сервере (на клиент isolates нафиг не сдались)
Я вообще не говорю про сервер. Я никогда не буду пользоваться node.js — религия не позволяет. Я говорю именно о client-side.
Из прямых последствий монополии МС — только ИЕ.
С косвенными сложнее, я лучше промолчу, тут можно что угодно написать.
И вообще, ИМХО, гораздо серьезнее последствия намеренного снижения уровня вхождения в разработку. Снижения ценой строгости и культуры. Но эту тему я тоже не буду продолжать.
Я, наверное, чего-то не понимаю в жизни. Как этот ад из неявных приведений типов можно считать достоинством?.. Такого ужаса нет нигде, кроме PHP и JS.
У меня есть мнение, что приведения типов должны быть только явными. Чтобы строку нельзя было сравнить напрямую с числом. Чтобы всегда можно было просто и наглядно понять из кода, какого типа переменная.
> Isolates реализованы в V8.
V8 — это всего лишь один из движков. Это не весь JS, более того, я сомневаюсь, что это есть в стандарте. Более того, я сильно сомневаюсь, что Isolates в V8 — то же самое, что и в Dart.
Для задач такого уровня из существующих языков хорошо подходит только Erlang. На всех остальных разработка раньше или позже превратится в бег по граблям.
1 — более строгая типизация. Почти весь wtfjs.com именно о типизации, это однозначно худшая проблема JS.
2 — легковесные процессы(isolates). Это предмет для отдельного холивара, но для меня их плюсы по сравнению с коллбеками очевидны. Если будут нормальные инструменты интроспекции — это уже победа. В LWP-based concurrency мы можем гораздо четче отследить состояние системы и отдельных ее элементов.
Далее, о монополии. По-моему, вы придаете этому слишком большое значение. Microsoft был монополистом в вебе, и что теперь? Теперь они отстают и не могут догнать.
Я хочу сказать, что это естественный процесс, и никого этот итог не минует. Так что, какая разница, кто сейчас монополист? Опять же, Гугл — не худший вариант.
Dart сейчас выглядит вполне вменяемым языком, не лучше и не хуже прочих. Ну нет прототипного ООП, ну и что. Опять же, это исключает изящные решения типа JQuery, что станет для многих минусом.
В любом случае, мы будем писать на том, на чем _актуально_ писать и никто нас не спросит. Если актуальным станет Dart — будем писать на нем, пока не появится что-то лучше.
про теоркат было забавнее — это четкий намек на Хаскелл.