Компания Microsoft опубликовала (http://blogs.msdn.com/b/typescript/archive/2014/04/02/announ...) первый стабильный выпуск языка программирования TypeScript 1.0 (http://typescriptlang.org/), который позиционируется в качестве расширяющего возможности JavaScript языка для разработки web-приложений. Код компилятора, транслирующего код TypeScript в представление JavaScript, распространяется (http://typescript.codeplex.com/) под лицензией Apache, разработка ведётся в публичном репозитории через сервис CodePlex. Спецификации (http://go.microsoft.com/fwlink/?LinkId=267121) языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement (http://www.openwebfoundation.org/legal/the-owf-1-0-agreement...).В отличие от развиваемого компанией Google проекта Dart (http://www.opennet.me/opennews/art.shtml?num=39207), TypeScript не является кардинальной переработкой JavaScript, а лишь расширяет возможности JavaScript, оставаясь полностью обратно совместимым, что сводит к минимуму затраты на адаптацию существующих приложений. От JavaScript новый язык отличается возможностью явного определения типов, поддержкой использования полноценных классов (как в традиционных объектно-ориентированных языках), а также поддержкой подключения модулей. Статическая типизация позволяет избежать многих ошибок в процессе разработки, даёт возможность задействовать дополнительные техники оптимизации, упрощает отладку и делает код более читаемым и простым для доработки и поддержки сторонними разработчиками.
Основной принцип языка - весь существующий код на JavaScript совместим с TypeScript, т.е. в программах на TypeScript можно использовать стандартные JavaScript-библиотеки и ранее созданные наработки. Более того, можно оставить существующие JavaScript-проекты в неизменном виде, а данные о типизации разместить в виде аннотаций, которые можно поместить в отдельные файлы, которые не будут мешать разработке и прямому использованию проекта (например, подобный подход удобен при разработке JavaScript-библиотек). Кроме аннотаций данные о типах могут быть определены с использованием "generic", что позволяет вводить специальные дополнительные параметры типов, которые дают возможность выявлять ошибки в реализации классов, интерфейсов и методов без дополнительных аннотаций типов (например, генерик для функции map позволяет считать, что переменные создаваемые конструкциями в которых используется map можно рассматривать как числовые).
<center><a href="http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communit... src="http://www.opennet.me/opennews/pics_base/0_1349168351.png" style="border-style: solid; border-color: #606060; border-width: 1px;" title="" border="0">
Итоговое приложение на TypeScript компилируется в обычный JavaScript, который можно выполнить в любом современном web-браузере или использовать совместно с серверной платформой Node.js. Редактировать код можно в штатных редакторах, например, файлы для восприятия расширенного синтаксиса TypeScript уже подготовлены для Vim и Emacs. Для разработки с использованием TypeScript предлагаются плагины для интегрированных сред разработки Eclipse (https://github.com/palantir/eclipse-typescript) и Visual Studio 2012. Начиная с весеннего обновления Visual Studio 2013 и Visual Studio Web Express 2013, поддержка TypeScript включена в базовую поставку. Файлы с декларациями статических типов подготовлены для некоторых популярных JavaScript-библиотек, среди которых jQuery.
URL: http://blogs.msdn.com/b/typescript/archive/2014/04/02/announ...
Новость: http://www.opennet.me/opennews/art.shtml?num=39488
Очень крутая штука для больших проектов, где строгая типизация решает.
А что js уже поддерживает строгую типизацию или TypeScript транслировать в asm.js? Если конечный язык а это js не поддерживает строгой типизации то и профит не велик.
А вообще расскажите чем строгая типизация решает в больших проектах?
>>А вообще расскажите чем строгая типизация решает в больших проектах?Строгая типизация позволяет предотвратить множество ошибок на этапе написания кода, что существенно сокращает затраты времени на дебаг и багфикс. Самое плохое что из-за ошибки с неправильным типом приложение может работать (не падать), возможно даже правильно, жить такой баг может очень долго, а когда кодовая база увеличится искать ошибку будет сложнее. По этому лучше получить ошибку на этапе компиляции, чем узнать про нее слишком поздно или никогда.
Для IDE работа с JS вообще катастрофа, например, без типа переменных они не могут определить можно ли передать ее в качестве аргумента ф-ии, в добавок к этому множество контекстов с ссылками на другие контексты создают ад в котором сложно найти ф-ии/переменные доступные из текущего контекста.
опять все перемешали читайте http://habrahabr.ru/post/161205/
Учи матчасть. Строгая и Статическая типизация это абсолютно разные вещи.
> Считаете нужным исправить - исправьтеСкальпель в студию!
Строгая типизация позволяет дурачкам быть уверенными, что у них все правильно, даже если на самом деле есть ошибка. Если в функцию передали не ту переменную или переменные не в том порядке, но при этом тип совпал, то данный вызов не станет корректным с точки зрения логики, но будет таковым с точки зрения транслятора и дурачок будет радоваться, что его программка собралась.
Компилируется == Работает
Работает != Делает то, что имел в виду программист
Дурачок не понимает что в одном случае можно отловить определённый класс ошибок, а в другом - принципиально нельзя. А то что кто-то делает вывод о корректности программы только на основании отсутствия ошибок компиляции - это вы других по себе судите.
> Строгая типизация позволяет дурачкам быть уверенными, что у них все правильно, даже
> если на самом деле есть ошибка. Если в функцию передали не
> ту переменную или переменные не в том порядке, но при этом
> тип совпал, то данный вызов не станет корректным с точки зрения
> логики, но будет таковым с точки зрения транслятора и дурачок будет
> радоваться, что его программка собралась.Конечно, но при динамической типизации ф-ия может "работать" как с аргументом нужного типа, так и с "левым". В посте выше я ошибся, говоря про статическую типизацию, но при сравнении динамической типизации со строгой проявляются те же проблемы.
Строгая типизация позволяет на этапе компиляции избавиться от тех ошибок, которые пришлось бы искать и отлаживать уже в запущенной программе.И да, ТОЛЬКО дурачки уверены, что раз программа собралась, то все работает, ибо статическая типизация - не панацея, а инструмент, позволяющий предотвратить множество ошибок.
Только что наш разработчик прошелся по граблям со строгой типизацией в php aka '===', тут вот грабли и поперли - код то работает, то не работает, в зависимости откуда идут данные - то там строка вида '1', то тоже самое целое.Так что не панацея, 100%!
Не панацея, но инструмент.
>больших проектов, где строгая типизация решаетНет, не решает.
Серебряной пули не существует.
Является ли целью разработки ПО упрощение жизни разработчикам?Можно вот, как Сиверс, просто всех посылать с их патчами - это еще более упрощает жизнь.
Вопрос - повышается ли от этого качество или иные параметры разработки.
Ну зачем же так? Вы бы лучше подумали над тем что вам говорят.
Проблемы не заключаются в типизации per se. А в квалификации разработчиков, сложности проекта и многих иных вещах.
И если вы соберете ваш проект без единого warning-a, это не является не только гарантией чего бы то ни было, но и даже индикатором того что вероятность его падения в рантайме стала сколько-нибудь меньше. Если вам нравятся иллюзии - ваше право, конечно, особенно если именно это вы имели в виду говоря об упрощении жизни.
>У каждого решения, у каждого типа типизации свои преимущества и недостаткиКакие мудрые слова. И как же это сообразуется с выдвинутым прежде тезисом о том что типизация исключительно упрощает жизнь?
> Очень крутая штука для больших проектов, где строгая типизация решает.С таким мышлением было бы логично сразу двигать на ocaml, а не застревать на полумерах. Но на самом деле логика за высказыванием могла отличаться...
Чем он лучше, CoffeScript ?
Он не лучше, он другой. Cofe - синтаксический сахар в стиле Ruby, Type - в стиле C#.
Только ClojureScript, только хардкор
Фишка кофескрипта - синтаксический сахар, а тайпскрипта - статическая типизация.Для крупных проектов это очень важно.
Обычный подход этой конторы: влезть и "улучшить" (завязать на себя). Мне любопытно: неужели до сих пор на это кто-то ведётся?
Каким образом TypeScript завяжет кого-то на Майкрософт? Это не замена js, предлагаю сначала разобраться, а потом уже начать хейтить.
> Каким образом TypeScript завяжет кого-то на Майкрософт? Это не замена js, предлагаю
> сначала разобраться, а потом уже начать хейтить.Разобрались, CoffeScript появился куда раньше и выглядит гораздо лучше
Если вам нужен сахар - берите кофескрипт, если нужна проверка типов - берите тайпскрипт.Эти языки не конкурируют, а решают разные задачи.
> Если вам нужен сахар - берите кофескрипт, если нужна проверка типов -
> берите тайпскрипт.С учётом того, что на js скорее не пишу, а проверку типов проходил на Modula-2 -- сейчас бы скорее сдул пыть с книжки по ocaml, если уж нужны строгие типы. Потому что они и впрямь разумней с выведением, а не самому гоняться с мухобойкой.
Стратегия МС: Embrace, Extend, Extinguish.Сначала embrace: "ого, джаваскрипт! круто! свободно! опенсорсно! как же легко и приятно следовать стандартам!".
Теперь вот попытка extend: "давайте чуть-чуть расширим вот здесь и здесь, будет еще лучше! конечно же, все останется обратно совместимым, честно-честно!".
Extinguish, как нас уже учила не раз история (Kerberos, IE6, Java - первое, что пришло на ум) будет заключаться в том, что вот про это "честно-честно!" однажды (или постепенно - это неважно) возьмут и забудут. И все.Противиться тупескрипту можно уже на основании вышесказанного. Кто не знает свою историю, тот обречен ее повторить.
А теперь приложительно к systemD, пожалуйста.
И на системды управа найдётся, не переживай.
...а вот и первый поциент! Тебе, как первому - зонд только на полшишечки.
Просто оставлю это здесь:
http://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish
думаешь хомячкам это нужно? Пусть жрут кактус со вкусом ванили дальше
> Компания Microsoft опубликовала первый стабильный выпуск языка программирования TypeScript 1.0, который позиционируется в качестве расширяющего возможности JavaScript языка для разработки web-приложенийДо сих пор пытаются использовать стратегию Embrace, Extend, and Extinguish?
А что, она перестала работать?
Сначала прочитал как TrueCrypt, потом увидел Microsoft, потом у меня чуть не произошёл приступ паранойи :)
Скоро у любой компании будет собственный язык программирования, не важно какой, главное что без его наличия нельзя будет получить признание пользователей
Данунахрен, если вносить глобальные улучшения, то давайте сразу Dart, а не это огрызочное решение.
Когда замену готовит гугел, то все фапают на гугел, когда майкрософт, то все ядом исходятся, хотя абе фирмы - акулы. Что творится с миром?
У Гугла реально переработанное решение, которое касается далеко не только типизации и классов, но затрагивает даже DOM. В принципе TS не плох в качестве сиюминутной меры, но в долгосрочной перспективе Dart смотрится лучше.
Так и TS можно дальше развивать - возможно ещё и с дальнейшим сохранением обратной совместимости. Не то, чтобы я был против дарта - но философия typescript - "давайте типизируем как можно больше - для компилятора и человека", а у дарта - "давайте типизируем там, где деваться некуда - для компилятора". Лично мне первое ближе.
У Дарта же «давайте приведёт в порядок для всех то, что представляет из себя кучу мусора и временных решений». Вон в JS сколько разных функций для выбора элемента на странице, в Dart же оставили только querySelector и querySelectorAll, коих более чем достаточно. Множества потомков в DOM же стали настоящими массивами, а не притворяются таковыми. Так что Dart куда больше «для людей», чем TS. Причём уже, а не «можно дорабатывать». Сохранение же обратной совместимости только усугубляет проблемы с JS. В принципе можно заменить JS на TS как очередную обратно совместимую заплатку на косяки JS и ввести параллельно Dart. Собственно никто и не предлагает _заменить_ JS на Dart.
Тайпскрипт можно использовать уже сейчас, а дарт еще не скоро.
> Тайпскрипт можно использовать уже сейчас, а дарт еще не скоро.Сборки Хрома с Дартом уже есть, компиляция в обычный JS в качестве временного решения тоже есть. Сиди да пользуйся сколько влезет. В чём проблема-то? А выкатывать хоть сколько-то серьёзный код ни на TS, ни на Dart пока не время и раньше, чем поддержка оного из них появится во всех хоть сколько-то серьёзных браузерах, говорить об их использовании смысла имеет мало. А экспериментировать — это всегда пожалуйста прямо хоть здесь и сейчас.
>"Но тут некая группа в Microsoft нашла фатальный недостаток в Java - её писали не они! Это было исправлено созданием то ли J, то ли Jole, а может, и ActiveJ (если честно, я просто не помню), точно такого же как Java, но другого. Это было круто, но Sun засудило Microsoft по какому-то дряхлому закону. Это была явная попытка задушить право Microsoft выпускать такие же продукты, как у других, но другие."
13 лет прошло с момента написания, а ведь поди ж ты - не стареет, как сказка о рыбаке и золотой рыбке.
MS уже поздно http://coffeescript.org/ ну и Dart