JavaScript must die!
Константин Кривленя
Компания
Taucraft
JavaScript must die!
Finish!
Чего не будет в этой истории?
Историй из разряда wat
Дайте мне нормальное наследование
О костылях в разных браузерах
О производительности
(если только чуть-чуть)
И вообще непонятный ваш JavaScript
Давайте поговорим о хорошем
Я могу легко выражаться на этом языке
Да, я пишу не первый год на этом языке. Я чувствую его боль каждой клеткой своего мозга.
Он действительно неплохо заточен для Web.
Он функционален.
Он не ставит Вас в рамки.
Он кроссплатформенный. Он очень кроссплатформенный.
Очень медленное развитие языка
Чего хотят программисты от языка.
Static type
(-)
Module system
(draft)
Pattern macthing
(-)
Functions as first-class citizens
(+)
Good support for async workflows(like asyc-await, future, promise)
(only library)
Macros
(-)
Laziness
(draft)
Mixin and traits
(draft)
Tail recursion
(-)
Syntax sugar
(draft)
Языки близкие к идеалу
Scala, Clojure
Существующие замены JavaScript.
Плюсы.
Опциональная типизация
Мощная стандартная библиотека
Работа с асинхронным кодом из коробки
Собственная VM
Web UI
Мощная экосистема.
Минусы.
Google любит закрывать продукты
Требует транслятора в JavaScript
Future не полностью решают проблему асинхронности
Плюсы
"It's just JavaScript"
Syntax sugar
Best practices JavaScript
Минусы
Нет работы с асинхронностью из коробки (есть форки)
Не реализована модульность (есть форки)
Нет своей виртуальной машины
Плюсы
Статическая типизация (DefinitelyTyped)
Совместим с Javascript
Мощная система модулей
Минусы
Нет работы с асинхронностью из коробки (draft)
Нет своей виртуальной машины
Плюсы
Это лисп.
Мощная система макросов.
Совместим с Javascript
Большое количество готовых решений.
Минусы
Это лисп.
Большой размер библиотеки.
Плюсы
Поддержка возможностей Scala
Совместим с Javascript
Поддержка описание типов из TypeScript
Минусы
Молодой проект
Большой размер библиотеки
Дорогу ASM.js
Вопросы?
Контакты
Twitter (https://twitter.com/Krivlenia/)
Github (https://github.com/Mavrin/)
Хабр (http://habrahabr.ru/users/mavrin/)