Re: [ANN] TypeScript - типизированный JavaScript от MS
От: sergeyt4  
Дата: 02.10.12 00:01
Оценка: +1
Здравствуйте, Gollum, Вы писали:

G>Не знаю в какой форум положить сообщение. Думаю, что в asp.net это точно придет


Думаю, пора уже отдельный раздел для Javascript создавать, т.к. в ближайшие пять лет это будет один из самых используемых языков.

G>Андерс Хайлсберг представляет новый язык программирования — TypeScript, который является типизированным надмножеством языка JavaScript, и компилируется в него.


Все, конечно хорошо. Intellisense, и т.п. Это не первый язык и компилятор из строго-типизированных и более других языков в JS. Уже есть компиляторы и с C#, и с Java и с кучи других забавных языков типа Boo, CoffeScript, Kaffeine...

Я пытался писать приложения на языках, компилируемых в JS, но меня остановили следующие проблемы:

1. Разработка на JS обычно ведется с использованием библиотек и фреймворков и runtime типа jQuery, ExtJS, NodeJS и.т.п. Они предназначены для использования с JS. Для успешной разработки на другом языке, нужно, чтобы и библиотеки и фреймворки были написаны (или хотя бы предоставляли inerop-ы) на том же языке — чтобы работал Intellisense и проверка типов, ради которой все это затевается.

Вопрос: где их брать и кто будет поддерживать их в соответствии с последнией версией? Разработчики самих библиотек вряд ли этим будут заниматься. Разработчики кросс-компилеров и IDE — не смогут поддерживать все эти многочисленные фреймворки. Самому — слишком трудоемко.

Cкорей всего MS сделает нормальную поддержку этого TypeScript только со своими WinJS-библиотеками. Что ограничит его использование в пределах Windows8.

2. при создании interop-ов к фреймворкам приходится сильно извращаться, т.к. обычно они не рассчитаны на строгую типизацию и тот способ реализации классов, наследования, интерфейсов, которые производит кросс-компилятор. В результате, чтобы сделать что-то, что делается просто на "голом" JS, приходится городить нечитаемую многоэтажную конструкцию, которая при компиляции даст нужный JS. И предугадать, что за JS получится на выходе — задача не всегда простая. Даже в случае такого похожего на JS как CoffeeScript языка. В итоге понимаешь, что проще сразу на JS написать.

3. самое неприятное — отладка. Исходник написан на одном языке, а в браузере выполняется другой.

Соответствие строк кода — еще ладно, решается как-то — можно взять исходый текст, замапить строки исходного на результирующий. Что-то вроде PDB файлов. У Chrome, кстати, есть поддержка подобного маппинга (см. "Enable source maps" в опциях devtools).

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

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

В общем, мой вывод таков: только компилятора и IDE мало для того, чтобы подобные проекты пошли в массы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.