Страница 2 из 9 Осборн: Вы не давно написали вступление к C#, и в первом же заголовке говорили: "Первый компонентно ориентированный язык в семействе C/С++." Хейлсберг: Да, это одно из моих главных достижений. Мы думали о том, как все что угодно превратить в объекты, и это имеет очень большое значение. В языках вроде SmallTalk и Lisp это было сделано и ранее, но тому была слишком большая цена. На мой взгляд в C# содержится ряд очень интересных новаций для облегчения разработки компонентов, например, понятие boxing и unboxing. Boxing позволяет значение простого типа преобразовывать в объект, в то время, как unboxing позволяет значению объекта быть представленным в виде значения простого типа. Не то чтобы это нигде раньше не встречалось, просто способ реализации этого в языке действительно новый и красивый. Проектируя C# и .NET framework, мы пытались не ставить себе недостижимых целей. Мы не можем позволить себе переписать все наши программы. Индустрия не может этого позволить, особенно сейчас, когда мы входим в эпоху Internet. Уже достигнуто многое, и очень важно обеспечить взаимодействие программ между собой. Мы обратили сильное внимание на предоставление программистам всех действительно хороших возможностей взаимодействия с Internet стандартами, такими как HTTP, HTML, XML, и с существующими Microsoft технологиями, так что сильно не удивляйтесь когда обнаружите нечто, не реализованное в новой платформе .NET, или когда поймете, что хотите опереться на какой-либо существующий API или компонент. Вы увидите, что все возможные взаимодействия с COM были встроены в язык и платформу. Вы увидите как просто вы можете импортировать существующие DLL, используя атрибут DllImport. В увидите, даже если никогда не будете это использовать, что мы определили понятие небезопасного (unsafe) кода. Небезопасный код позволяет вам писать встроенные C программы, использовать указатели, небезопасные приведения типов и распределение памяти, которое не приведет сбою при сборке мусора. Было много обсуждений по поводу небезопасного кода, многие считали нас наркоманами или что-то в этом духе. Я думаю, что это просто непонимание. То, что код помечен как небезопасный вовсе не означает, что его ничто не контролирует. Естественно мы не просто добавили небезопасные указатели и тем самым подставили людей, которые скачивают небезопасный код из Internet. Небезопасный код сильно связан с системой защиты. Мы даем вам возможность писать проверяемые блоки кода, а не сходить с ума в поисках другого языка программирования или системы программирования для native кода. А ограничивая небезопасный код блоками, мы можем добиться большей защищенности программ, так как система будет понимать, что именно происходит. Тот факт, что вы пишите небезопасный код вовсе не значит, что вы выходите из пространства проверок. Просто ваш небезопасный код становится более эффективным. |