Почему стек?

В прошлый раз мы говорили о том, почему компиляторы всех языков платформы .NET компилируют исходный код в «промежуточный язык» или в IL, который затем преобразуется jitter-ом в машинные инструкции: поскольку это существенно сокращает расходы на разработку многоязыковой платформы, работающей на разном оборудовании. Сегодня я хочу рассказать о том, почему язык IL является именно таким, каким…

3

Почему IL?

После анонса проекта Roslyn, одним из первых и наиболее популярных вопросов был следующий: «Roslyn – это что-то типа LLVM для .NET?». Нет, Roslyn – это не LLVM для .NET. LLVM расшифровывается как Low-Level Virtual Machine; и, насколько я понимаю (честно говоря, никогда этой штукой не пользовался), работает это таким образом: компилятор принимает на вход код…

1

Список для чтения по языку C#

На сегодня всего лишь несколько интересных ссылок. Во-первых: меня часто спрашивают, не могу ли я порекомендовать хорошую книгу по языку C#? Обычно меня об этом спрашивают разработчики, но однажды я получил такой вопрос от одного из редакторов InformIT. В результате чего этот список был опубликован на сайте InformIT, здесь. Во-вторых: Билл Вагнер (Bill Wagner) опубликовал…

1

Критические изменения и именованные аргументы

Прежде чем переходить к теме сегодняшнего поста, я хочу поблагодарить всех, кто прислал свои замечания о Roslyn CTP. Пожалуйста, продолжайте в том же духе. Я обязательно напишу несколько статей о Roslyn в ближайшее время, но последние несколько недель у меня не было на это времени, поскольку я был слишком занят непосредственно реализацией. В C# 4.0…

0

Доступна предварительная версия Roslyn

Я невероятно рад сообщить, что проект, с кодовым именем Roslyn достаточно хорош, чтобы мы показали его пользователям! Но я немного забегаю вперед. Что такое проект «Roslyn»? У нас есть два основных языка для разработки на платформе .NET – C# и Visual Basic. Очевидно, что компилятору приходится выполнять значительное количество лексического, синтаксического и семантического анализа кода,…

0

Безумно великий

  У меня никогда не было продуктов компании Apple; я никогда профессионально не занимался разработкой под Mac с тех пор, как немного игрался с Visual Basic под Mac в далеком 1994-м. Но несмотря на это, Стив Джобс вдохновлял меня каждый день. Желание создания безумно великих технологий – это одно дело. Но когда кто-то доказывает снова…

0

Статьи по асинхронности

Я рад сообщить, что в октябре вышел специальный выпуск журнала MSDN Magazine, посвященный возможностям языков C# и Visual Basic для асинхронной работы: «async-await». Если вас интересует эта тема, то обратите внимание на мою вводную статью для новичков, статью Мэдса Торгерсена, посвященную тому, что происходит за сценой, а также статью Стивена Тауба для экспертов, о производительности…

1

Хранить в тайне, хранить в безопасности

Многим людям очень нравится идея криптографии. Для таких компьютерных гиков, как мы, нет идеи прекраснее, чем использование относительно простых математических операций над сообщениями, которые позволят безопасно общаться с кем угодно, даже при наличии прослушивающего злоумышленника. Но, к сожалению это означает существование множества программистов, окрыленных идеей создания собственных криптосистем или самостоятельной реализацией криптосистем, изобретенных другими. Это…

1

Наследование и внутреннее представление

Я получил следующий вопрос: class Alpha<X>    where X : class  {} class Bravo<T, U>    where T : class    where U : T  {   Alpha<U> alpha; } При компиляции этого кода выдается ошибка, в которой говорится, что тип U не может использоваться в качестве аргумента типа для Alpha, поскольку U не является…

0

Что это за штука под названием «тип»? Часть 2

Как я и упоминал в прошлый раз, вполне предсказуемо, если вы попросите десять разработчиков дать определения «типа», то они дадут десять разных ответов. Комментарии к предыдущей статье были замечательными[1]! Ниже представлена моя попытка описать понятия «типа» с точки зрения разработчика компилятора. Для начала я хочу рассмотреть вопрос о том, что такое тип, и не сбивать…

1