Javascript+статика
От: Ziaw Россия  
Дата: 14.07.11 04:53
Оценка: +2
К сожалению, доля web-ui растет, а альтернатив js в этом плане практически не предвидится. Я думаю для многих js разработчиков наступал момент, когда код превращается в некого монстра, навигация по которому представлялась нетривиальной задачей, а запоминание методов и их параметров у используемых классов превращалось в нехилую тренировку памяти. Немного помогают хорошие IDE с интелисенсом, но только немного.

[javascript]
function f(x) {
x. // интелисенс?
}
[/javascript]

А в групповой разработке все осложняется тем, что код непрерывно правят несколько человек и время от времени неизменно затрагиваются публичные инфтерфейсы. На всех серьезных рефакторингах практически ставится крест, а это означает одно — либо стоимость внесения фич идет по экспоненте либо фичи просто перестают добавляться и проект начинает медленно умирать или переписываться с нуля.

Вполне логичный постулат — "тесты нас спасут" тоже работает плохо. Потому, что в вышеописанной функции надо тестировать не поведение с f("hello world"), а вызывать ее по всему коду с реальными параметрами. Потому, что тесты сильно увеличивает кодовую базу которую тоже требуется поддерживать. Потому, что тестировать код на асинхронных событиях сама по себе сложная задача.

Сейчас стали как грибы появляться компиляторы всего чего угодно в javascript: Java, C#, F#, IL и т.д.

Несмотря на то, что явно декларируемой целью является написание клиентского кода на то же языке, что и серверного, основным преимуществом тут является статическая типизация, которая позволяет управлять бОльшими объемами кода.

Все это была вводная, пора и к делу. Мне тут подумалось, что гораздо лучше проблему решил бы язык очень близкий к js, но хорошим синтаксисом (a la coffescript, который уже делает код читабельнее) и возможностью статической типизации. Причем типизации структурной и с мощным глобальным выводом типов, с которым сами типы придется указывать лишь в исключительных случаях. Динамику тоже можно будет использовать на полную как, например, в C#.

Чем он будет лучше того же websharper? Да тем, что скомпилированный js будет практически идентичен исходному коду (просто рассахареный исходник). Тем, что интеграция с любыми внешними js фреймворками будет абсолютно прямой и прозрачной. Для чего-то типы можно будет описать (типа хидера в C), для чего то забить на типизацию.

Какие основные проблемы вы видите у такого подхода? Может он принципиально невозможен?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.