Углубление в C# - C# и CLR
ОГЛАВЛЕНИЕ
Осборн: Еще одна тема, требующая разъяснений: где кончается C# и начинается CLR (общая среда выполнения). Где проходит граница между нововведения C# и тем, что просто взято из CLR (общей среды выполнения) библиотеки.
Хейлсберг: Я думаю этот вопрос имеет корни в том, что когда люди говорят о Java, никто себе полностью не представляет где там язык, а где среда выполнения. Что хотят сказать люди, говоря Java? Они имеют ввиду язык Java, синтаксис Java, или платформу Java. Люди сливают эти разные вещи в одно целое. Мы выбрали подход, который говорит о том, что мы желаем иметь многоязыковую платформу. Мы действительно разрабатываем платформу, которая позволит вам использовать множество языков, которые будут иметь одинаковый набор API. Давайте возьмем пример. Некоторым людям нравится программировать на COBOL, некоторым нравится на Basic, кто-то любит C++, и кто-то полюбит C#, я надеюсь. Мы не просим вас забыть о том, что вы делали раньше. Мы не говорим, что будет развиваться один язык, а с остальными ничего нового не произойдет. Мы говорим, что наша индустрия хороша своей гибкостью. Что произошло с Java? Это произошло потому, что были языки программирования до Java, будут и после нее. Мы хотим создать платформу, где вы будете выбирать, каким языком пользоваться, на основе своих собственных предпочтений. Мы хотим создать платформу, в которой это действительно будет новацией. Кто помогает COBOL программистам сегодня? Кто приглашает их в Web? Только на платформе .NET вы можете использовать Fujitsu COBOL для создания ASP страницы. На мой взгляд это действительно революционно.
Осборн: Предоставляя возможность использовать множество языков на своей новой .NET платформе, почему вы выбрали именно C#, а не Visual Basic, С++ или даже COBOL? Что делает С# таким привлекательным?
Хейлсберг: Во-первых с С# у нас была возможность начать все с чистого листа. У нас не было обязательств обратной совместимости, и это действительно сильно упрощало ситуацию. Даже не с точки зрения реализации, а с точки зрения использования. Например, мы имеем один вид классов в C#, и он может подвергаться сборке мусора. С++, напротив, имеет два, так как он придерживается стиля отсутствия сборки мусора. Так C# имеет несколько простых концепций которые вы понимаете.
Языки - забавная штука. Это дело вкуса. Язык это почти религиозная вещь, и выбор стиля жизни для программистов. Я хочу сказать, что мы не в праве выйти и сказать: "Вот платформа, на которой вы имеете один базовый язык". Даже если вы можете сделать все что угодно на этой платформе, пользуясь этим одним языком, некоторым людям может не нравиться его синтаксис, им могут нравиться фигурные скобки или что-то другое в качестве разделителей блоков. Это то, к чему они привыкли. Это то, что позволяет им чувствовать себя как дома, и их продуктивность увеличивается. Наш подход к C# - быть альтернативой для программистов на C++, которые находят этот язык слишком сложным, и для программистов на Java, которые не довольны потерей некоторых особенностей C/C++ при переходе. Мы искали пути упрощения С++ и представили результат на многоязыковой платформе, которая предоставляет возможность более тесного межвзаимодействия и имеет все компонентные концепции.
Гудхью: Проанализировав ситуацию, мы отметили один очень интересный факт - 60% разработчиков на профессиональном рынке используют два или более языков программирования для создания своих приложений. Мы поняли, особенно узнавая, какие именно средства разработки используются, что невозможно создать один объектно-ориентированный язык, который во всем устроит каждого. Как ранее заметил Андерс, люди используют разный синтаксис в соответствии с их собственными чувствами. Это личный выбор. И это то, для чего вся платформа .NET, дающая разработчикам право выбора - на каком языке писать. Мне кажется что бы сделали просто замечательную работу. Вы можете просто делать одни и те же вещи на Visual Basic, .NET, или C#. Visual Basic до сих пор видится, как наиболее доступный для программистов. C# дает больше свободы и мощности, чем VB.
Осборн: Вы имеете ввиду, что в C# можно сделать больше с помощью меньшего количества операторов?
Хейлсберг: Я имею ввиду, что вы имеете больше мощности благодаря предоставлению возможности писать небезопасный код.
Осборн: А в VB нельзя писать небезопасный код?
Хейлсберг: Нет, нельзя.
Гудхью: Но на самом деле оба языка делают практически одно и то же. Есть значительные отличия от того, что было раньше, в Visual Studio 6. Используя Visual Studio 6.0, вы не могли написать многопоточный MTS объект на VB. Вам нужно было использовать С++. Теперь, на платформе .NET, вы можете использовать тот язык, который хотите.
Хейлсберг: Это то, о чем я рассказывал в основное время этой конференции - унификация программных моделей, которую предлагает .NET. Развитие языков и платформ, мы всегда мечтали прекратить тесную связь между языком и конкретным API или конкретной формой программирования. VB был для быстрой разработки приложений, MFC были чем-то вроде подклассов, а ASP служили для выкладывания чего-либо на Web. К каждом случае, выбираемая вами модель программирования диктовала вам язык программирования и доступные API. Это добавляло в процесс ваших разработок головную боль от изучения новых языков и API, каждый раз когда вы перевыбирали платформу. Мы действительно попытались навести порядок. Мы предлагаем один API, одно средство визуальной разработки и право выбирать с каким языком работать.
Осборн: Очень интересно что будет с скриптовыми языками, такими как JScript и VBScript?Хейлсберг: Одной из замечательных вещей, произошедшей со скриптами в .NET, является то, что они стали компилируемыми. Взгляните на ASP+. Теперь, вы в действительности запускаете откомпилированный код на своих страницах. Разработчики ASP+ могут использовать всю мощь VB.NET, вместо VBScript. Первое время, они имеют возможность использовать Perl и Python, или другие популярные языки, если захотят.
Петруша: Server-side JavaScript будет компилироваться?
Хейлсберг: Да, это так.
Гудхью: Платформа .NET позволяет использовать скриптовые языки также, как и полноценные языки, так как они имеют доступ к действительной среде программирования и таким же API базовых классов. Вы должны увидеть что сделали парни, которые занимались реализацией JScript. За небольшими маловажными исключениями (для обратной совместимости), JScript - полная реализация ECMA стандарта. Таким образом, платформа .NET предоставляет межъязыковую среду, которая является большим прорывом для разработчиков скриптов.