Хоча питання було "Чи цілі мови однакові?", Справжнє питання: "Як зробити веб-програмування кращим там, де ми є?" .
Обидва проекти намагаються це зробити, враховуючи
мова програмування (TypeScript робить невеликий, але дуже чистий крок, Dart робить більш революційний хід, який все ще рухається)
сумісність з існуючим кодом js (0 перехід у TypeScript, який компілюється у js, складний у Dart, оскільки 2 VM розмовляють між собою)
практика інженерії програмного забезпечення (лише Dart, веб-компоненти та тіньовий дім)
За останні 3 дні я занурився вглиб Дарт, а потім у TypeScript. Моя база даних CodeScript перейшла до рядків коду 2000-х років, надто багато для роботи з чудовим, але занадто пухнастим CoffeeScript. Проблеми, з якими я зіткнувся, полягала в тому, що CoffeeScript не має функцій, якими володіють мови, призначені для програмування середнього та великого масштабу: інтерфейси, модулі, безпека типу. Але з кавою та js було одне, навіть набагато серйозніше: дивацтво js "цей покажчик" вплинуло на мій розум, і CoffeeScript тут нічого не допомагає.
Тож ось мої результати після 3 днів оцінювання та використання:
Дартс
Ретельно пройшли підручник, прочитавши 1 книгу, продемонструвавши 2-ю книгу та спробувавши демонстрацію. Я думав, Дарт, це майбутнє . Потім я спробував перенести свій додаток на Дарт. Це було моє захоплення знизилося з 100 до 10. Ось чому:
Dart Editor є єдиним способом програмування Dart. Хоча плагіни для Sublime Text існують, вони не надають таких функцій, як intellisense, завершення коду (виправте мене, якщо я помиляюся). Однак редактор Dart має попередню якість. Хоча він підтримує чари суперхолоду, такі як оновлення веб-сторінки, коли ви редагуєте файл CSS (! Дуже здорово), він зависає або виходить з ладу кілька разів на хвилину. Таким чином, ви вводите 5 літер і 2 рази потрібно чекати 2 секунди або 15 секунд між набравши текст. І у мене був проект з деякими рядками коду, тому я не хотів чекати, що трапиться, коли в ньому будуть рядки 1000. Переміщений файл з однієї папки в іншу всередині редактора Dart, аварія. Налагодженняз редактором Dart на перший погляд краще, ніж усі інструменти для налагодження js, які я знаю (хром - це мій вибір), але все ще немає занадто багато речей: Немає негайного вікна (це робить js налагодження набагато краще на даний момент), немає годин.
Політика та можливості втечі : Деякі кажуть, що Apple, MS та Firefox ніколи не нададуть Dart VM. Ну, я не такий впевнений, але принаймні для Apple це здається на даний момент дуже певним. Для інших це більше, ніж навпаки. Тож немає проблем, ми можемо перетворити Dart в JavaScript. Те, як ця інтеграція працює насправді чудово, Dart підтримує js-заглушку, яка зберігає js-код, підключений до редактора Dart, тому print()
твердження все ще з’являється в редакторі Dart, крутим. Але тут виникає інше: слід такого конвертованого коду високий. 150 кБ або близько того (до мінімізації). Я не надто сильно копався в точних розмірах, тому не прибивайте мене до цього.
Мовна зрілість . Окрім занадто серйозних проблем із редактором Dart, що стикається мені в обличчя 3 рази на хвилину, я також вважав неприйнятним, що кожне знайдене джерело про код Dart використовує різний Dart. Мова змінюється щодня. Ви знаходите повідомлення від 5 тижнів тому? Він застарів. Ви спробували зразки з підручника Google? Щонайменше 1 зразок не складається, оскільки змінено API. Навіть звичні речі, як-от приєднання події до елемента DOM , добре рухаються .
Інтеграція з існуючими js-бібліотеками дещо задіяна. 2 мультимедіа потрібно тут спілкуватися, це хитро.
Як висновок, ви не можете серйозно використовувати Dart на сьогоднішній день, і зануритися в нього не надто весело через 1 і 3. Обидва бали з часом будуть розчаровуватися. Щодо другого пункту Google опублікував показники ефективності кілька днів тому, продемонструвавши, що їх складений js кращий, ніж рукописний js. Мої компліменти, чудова робота. Час завантаження все ще може бути відсталим через проблему, як було сказано. Однак, якщо код сліду використовує багато багатьох сайтів, він може бути доступним кешованим і вуалявим, також зникає.
Отже: я вважаю Дарт прекрасним проектом, його використання на даний момент несе в собі хорошу частину непередбачуваного ризику, і цього року знадобиться, щоб досягти його на хорошому стабільному рівні.
TypeScript
Оцінити TypeScript дуже просто, потрібно 1 або 2 години, і ви знаєте все. Читаючи документ із специфікацією мови та коротку книгу (розкрито TypeScript), я все знав і почав програмувати. Потім я був здивований, виявивши, що доповнення TypeScript до JavaScript просто заповнюють усі серйозні потреби, які мені довелося покращити програмування клієнта . Тут основні моменти:
Інтерфейси . Інкапсуляція та інтерфейси дозволяють мені легко структурувати свій код. Ідеально!
Стан класу. . TypeScript дозволяє виразити стан, який екземпляри класу несуть явно, або краще, що він застосовує його. Це великий крок краще порівняно з js або кавою.
this
називати божевілля пом'якшеним . Всередині функцій стрілок TypeScript робить this
вказівник, як будь-який громадянин, що нормально поводиться.
Редактор, Intellisense . TypeScript оснащений 100-відсотковим ідеальним інтеліссенсом, який реагує в мікро- або мілісекундному діапазоні, як використовується з Visual Studio при програмуванні на C #. Існують також заголовки TypeScript для всіх важливих js-бібліотек . Великий великий великий.
Досвід та ризик . Використання TypeScript несе нульовий ризик, мова чітко визначена, ідеально стабільна, це просто js з цукром, нічого непередбачуваного.
Власне, ці вдосконалення дають мені все, що мені потрібно. Єдине, що я хотів би побачити в майбутньому - це загальні колекції. Але це арахіс.
То як щодо продуктивності? Хоча я вважаю себе виродком продуктивності, я не вірю, що існує якийсь проект, який би зробив тут вибір технології на основі продуктивності. Обидва знаходяться в js-лізі.
Якщо вас цікавить майбутнє веб-програмування, обидва докладають великих зусиль, TypeScript є набагато більш прагматичним та зручним для використання, Dart - це дуже цікавий лабораторний проект, який стане корисним, коли доступні зрілі редактори та налагоджувачі та обсяг проектів, які можна виконати це буде залежати від політики.
У будь-якому випадку, три дні овалу були здебільшого веселими, і я багато чого навчився, якщо ви знайдете час, то для Dart потрібно 1 день та 2 години для того, щоб TypeScript склав власну думку. Спробуй це.
Оновлення жовтня 2014 року
Минуло деякий час і після цього з'являється припущення, що Typescript - це безпечний стабільний шлях, який потрібно пройти, було цілком правильним. Я щойно знайшов (дуже) видатне твердження про Typescript, Dart та закриття:
Мене вже досить довго цікавлять проблеми веб-програмування. Я вважаю, що закриття Google на даний момент все ще є найкращим варіантом для широкомасштабної розробки JavaScript / веб-сайтів, але в кінцевому підсумку воно буде замінене чимось менш детальним. Хоча Dart демонструє значну перспективу, я все ще переживаю розмір JavaScript, який він створює. Для порівняння, якщо TypeScript можна безпосередньо перекласти на JavaScript, який можна скомпілювати за допомогою вдосконаленого режиму компілятора закриття, то ми можемо мати всі переваги оптимізованого JavaScript від закриття без деталізації. Більше того, оскільки TypeScript - це набір JavaScript, я вважаю, що його розширення синтаксису в якийсь момент можуть перетворити його на стандарт ECMAScript,
http://blog.bolinfest.com/2013/01/generating-google-closure-javascript.html
Майкл Болін - давній (колишній) герой переднього кінця google (ex) fb, також бере участь у закритті Google (дістаньте його книгу про закриття).
Google Traceur
Програма Google для проживання ECMA Script 6 сьогодні - це проект Traceur:
https://github.com/google/traceur-compiler
Порівняно з Typescript, підтримка інструментів, імовірно, значно відстає на сьогодні. Однак, з іншого боку, це набагато швидше у прийнятті надто крутих майбутніх удосконалень мови js, таких як ітератори чи розуміння.
Facebook Flow, Google AtScript
надають подібні функції, як TypeScript.
"Можна поцікавитися, що з цими різними рішеннями для перевірки типу JavaScript і що з цим робити. Хороша новина полягає в тому, що Microsoft, Facebook і Google співпрацюють над цим", вважає Джонатан Тернер:
Команда TypeScript працює як з командами Flow, так і з AtScript, щоб забезпечити використання ресурсів, які вже створені спільнотою типізації JavaScript, через ці інструменти. Ці проекти можуть багато чому навчитися один у одного, і ми з нетерпінням чекаємо спільної роботи вперед та створення найкращих інструментів для спільноти JavaScript. У перспективі ми також будемо працювати над тим, щоб скласти найкращі функції цих інструментів у ECMAScript, стандарт, що стоїть за JavaScript. "
стаття infoq про потік fb