Главная

Script# - мощь C# и поддержка Visual Studio для клиентского Java Script


script sharp Я с детства не любил Visual Basic и JavaScript. Ах да, простите ... сейчас будет небольшое лирическое отступление, так что те, кого интересует исключительно Script# могут смело пропустить несколько абзацев. Итак ...

Я с детства не любил Visual Basic и JavaScript. В приступе юношеского максимализма я считал, что С++ - единственный достойный язык программирования. Ну, еще Java неплох, на Object Pascal тоже можно писать. Это были мощные объекто-ориентированные языки, со строгой типизацией. Возможно, тут сыграла роль моя болезненная страсть к порядку. Именно с их помощью удавалось спроектировать красивую структуру, в которой все было максимально изолировано друг от друга, наследование позволяло оставить в классе только уникальную для него функциональность, из черных ящиков были доступны только необходимые вещи, связей было немного и они легко прослеживались.

Я вовсе не хочу сказать, что Visual Basic и Java Script - плохие языки. В конце концов, во время существования Visual Studio 6.0 количество программистов на VB било все мыслимые и немыслимые рекорды, а миллион лемингов не могут ошибаться! Я именно не любил, а любовь - штука сложная и с логикой вовсе не связанная. Можно, конечно, попробовать придумать конкретные причины, мол, из-за отсутствия наследования приходилось обходится агрегированием, переменной можно было присвоить что угодно, хоть дату, хоть булево значение, часть ошибок проявлялась только в момент выполнения и т.д. Но это будут только попытки объясненния, например то, что в VisualBasic служебные слова then, begin, end и прочие могли занимать четверть текста, отвлекая от кода, описывающего логику - мне не нравилось, но те же самые begin и end легко прощались Object Pascal-ю.

Вобщем, в то время я всячески старался избегать этих языков. У VB тогда был один громадный плюс - он легко позволял создавать GUI для desktop-приложений. Но мне везло (отчасти из-за того, что потратив время на изучение ATL\WTL + библиотек а-ля Stingray я мог, при необходимости, дать достойный ответ элементам ActiveX из Visual Basic :) - раз за разом мне доставались проекты на Visual C++. А с появлением .NET я наконец-то смог вздохнуть с облегчением - GUI можно было с легкостью разрабатывать на любом из языков, доступных в Visual Studio.

А вот с Java Script все было сложнее. Как единственный язык для программирования на уровне браузера (по слухам, некоторые разработчики браузеров собираются встроить туда поддержку Python, но официальной информации об этом нет), с распространением AJAX и других веяний Web 2.0, Java Script начинает играть все более важную роль в разработке веб-приложений. Кроме того, это все таки объектно ориентированный язык, хотя ему и не удается избавится в описании от зведочки-сноски, из-за которой раз за разом приходится объяснять, что "прототипное ООП - это все таки один из стилей ООП ...".

Так что до недавнего времени, какой-то реальной альтернативы JavaScript не было в принципе. И вот, в мае 2006 года появился первый релиз Script# ...

Давайте определимся сразу, это вовсе не новый язык программирования. Это - возможность писать код на C#, который при помощи специального компилятора преобразуется в старый-добрый Java Script. При этом вам доступна вся мощь Visual Studio и преимущества С#:
  • Полноценный объектно-ориентированный язык
  • Строгая типизация
  • Выявление ошибок на этапе компиляции
  • Поддержка Intellisense в Visual Studio
  • плюс масса других вещей, к которым мы привыкли в Visual Studio: class browser, поддержка рефакторинга, build system, использование XML тегов документирования, FxCop анализ кода, поддержка unit-tests etc, etc, etc
Nikhil Kothari Несмотря на то, что релиз Script# появился еще два года назад, многие разработчики (а тем более менеджеры) относились к нему настороженно - ведь это был не официальный продукт Microsoft, а личная инициатива сотрудника Microsoft Никхила Котари (Nikhil Kothari). Несмотря на личность самого автора (Котари является архитектором Microsoft, одним из идеологов ASP.NET, ASP.NET AJAX и Silverlight), их настороженность можно понять, история знает множество пусть и замечательных начинаний, которые так и не стали полноценными проектами из-за отсутствия времени, увлеченности другими проектами и других, насквозь прозаичных причин.

Но сейчас можно смело утверждать, что проект удался. Вот некоторые факты из его истории:
  • На протяжении двух лет (с момента появления в мае 2006) проект постоянно совершенствуется, к нему добавляется новая функциональность, исправляются ошибки и иногда добавляются новые :)
    Последний релиз появился в конце декабря 2007 года, последнее обновление этого релиза и инсталляции под VS датировано 23 февраля 2008.
  • Зимой 2006\2007 года Котари отправил ThinkWeek paper1 с описанием этого проекта и оно было одобрено лично Биллом Гейтсом и приближенными к нему "евангелистами" Microsoft :)
  • За последнее время к этому проекту были добавлены библиотеки для поддержки таких продуктов как ASP.NET AJAX, Silverlight, Virtual Earth, Vista Sidebar gadgets, WPF/E.
  • И последнее и, пожалуй, самое главное: под этот компилятор были полностью написаны client-side SDK таких продуктов как Windows Live Messenger и Facebook.NET (кроме того, Script# используется для разработки client-side scripts для остальных продуктов Windows Live и Live Office, но в каком объеме - точно не скажу).
В следующем посте мы посмотрим, что из себя представляет Script# как на самом низком уровне (компилятор, библиотеки, скрипты), так и с точки зрения пользователя Visual Studio, в которой детали реализации скрыты элементами управления и конфигурационным xml.

А пока несколько полезных ссылок:
Удачи и приятного дня!

1 ThinkWeek paper - несколько раз в год Билл Гейтс выделяет неделю своего времени, чтобы прочитать письма, которые могут быть написаны любым сотрудником Microsoft. Эти письма могут быть посвящены чему угодно - новые идеи, бизнес-предложения, улучшение чего бы то ни было и т.д.


Добавить комментарий


(Отображает Gravatar)  

biuquote
  • Комментарий
  • Предпросмотр
Loading



.NET: Записки программиста
.NET Записки программистаГлавная МастерскаяМастерская ИзбранноеИзбранное За кофеЗа кофе Об автореОб авторе