Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
основная часть.docx
Скачиваний:
3
Добавлен:
08.05.2019
Размер:
1.31 Mб
Скачать
    1. Новый язык f#

Microsoft не часто балует пользователей Visual Studio новыми языками программирования, входящими в стандартный комплект поставки: тройка C#/VB/C++ оставалась неизменной с 2002 г. И хотя расширить среду разработки можно множеством различных языков, установив их в качестве дополнений, даже от самой Microsoft (к примеру, IronPython или IronRuby), все же это больше удел энтузиастов, а основная масса разработчиков довольствуется тем что есть. Поэтому появление F# в составе Visual Studio 2010 весьма знаменательно, и важен здесь не столько сам факт, сколько то, что этот язык представляет совершенно иную парадигму – функциональное программирование, вплоть до настоящего времени не особо популярное в рядах среднестатистических программистов.

Самое примечательное, что впервые функциональный язык максимально адаптирован к использованию в .NET Framework, соответственно, он не отрицает и императивного подхода. По той же причине F# не особо почитаем пуристами функционального программирования, хотя это ничуть не умаляет его достоинств как полноценного функционального языка, позволяющего воспользоваться преимуществами многообещающей парадигмы.

В течение продолжительного времени F# существовал в качестве исследовательского проекта, основная задача которого – обогатить императивный язык C# возможностями, традиционно доступными лишь функциональным языкам. Множеством нововведений C# 3.0 из Visual Studio 2008 обязан именно ему. Сам по себе F# не создан с чистого листа в Microsoft, в его основу положен достаточно OCaml, который, в свою очередь, уходит корнями к одному из первых типизированных функциональных языков ML. Несмотря на то что синтаксически F# и OCaml довольно близки, они не эквивалентны: грубо говоря, первый представляет собой подмножество второго, дополненное доступом к средствам .NET Framework. Однако некоторые программы на OCaml могут быть практически без модификаций скомпилированы F#, обратное также справедливо, разумеется, при отсутствии обращений к классам .NET Framework.

В целом, появление F# в составе Visual Studio свидетельствует о том, что разработчики из Microsoft возлагают большие надежды на функциональное программирование, что особенно актуально в эпоху многоядерных процессоров и непомерно возросшей сложности внутренней структуры исходного кода крупных проектов. Конечно, F# не позиционируется в качестве замены традиционным универсальным императивным языкам, в частности C#, и их развитие в направлении ассимиляции наиболее удачных идей декларативного программирования не прекратится. Скорее всего, F#, как и многие другие функциональные языки, займет свое место среди прочих, специализируясь на решении определенного класса задач так же, как, к примеру, SQL занял нишу инструментов для манипулирования реляционными данными. Можно предположить, что в ближайшем будущем владение хотя бы одним функциональным языком появится в числе профессиональных требований к типичному программисту, подобно тому как сегодня необходимо знание того же SQL.

    1. .NET Framework 4.0

В четвертой версии .NET Framework появилось множество нововведений, отражающих наиболее современные течения в программировании и развитии аппаратной базы. В первую очередь это касается поддержки набирающих популярность динамических языков, реализованной посредством расширения среды исполнения CLR (Common Language Runtime) специальным набором сервисов, получивших название DLR (Dynamic Language Runtime). В то время как DLR прежде всего интересно разработчикам динамических языков, создающих или портирующих их в .NET Framework (следует отметить, что официально у Microsoft их два – IronRuby и IronPython, развивающиеся в виде открытых проектов на CodePlex.com), существующие языки со строгой типизацией также получили его поддержку. К примеру, в C# появился новый тип dynamic, переменные которого не проходят проверку типа во время компиляции, что может быть полезно при взаимодействии с динамическими и скриптовыми языками.

Следующее важное новшество .NET 4, отражающее дух времени – появление целой платформы для поддержки параллельных вычислений, именуемой PCP (Parallel Computing Platform). Безусловно, создавать «параллельные» приложения можно было и в предыдущих версиях .NET Framework, PCP же отличается подходом к их построению, призванным максимально облегчить жизнь разработчикам. Не секрет, что именно сложность распараллеливания задач и недостаточная приспособленность распространенных языков программирования к управлению потоками кода, исполняющимися параллельно, являются основными сдерживающими факторами, которые препятствуют эффективному использованию современным ПО возможностей многоядерных микропроцессоров. Поэтому PCP – долговременная инициатива Microsoft, состоящая в реализации отдельных компонентов, и вполне заслуживает особого рассмотрения. Если говорить коротко о наиболее интересных возможностях PCP, то следует выделить Task Parallel Library (TPL) и Parallel LINQ (PLINQ). TPL представляет собой набор классов и API для автоматического распараллеливания задач. В частности, TPL предлагает варианты реализации циклов, предусматривающих параллельное исполнение итераций (если их результаты не зависят друг от друга) при автоматическом масштабировании по числу ядер процессора. На практике (если речь идет о циклах) использование TPL сводится к тому, что там, где возможно, разработчик заменяет обычные конструкции циклами с применением TPL и получает существенный выигрыш в производительности без каких-либо дополнительных действий вроде самостоятельного создания пула потоков и т. п. Соответственно, PLINQ – это эволюция декларативного языка для работы с данными LINQ, доступного для C#/VB. От обычного LINQ он отличается также возможностью автоматического распараллеливания запроса, если порядок возвращаемых данных или выполняемых операций не важен – достаточно просто указать в запросе, что его можно исполнять параллельно, все остальное возьмет на себя PLINQ.

Множеству усовершенствований подверглась и базовая библиотека классов BCL. В сопутствующей документации только заголовков разделов, посвященных новым функциям, около двух десятков. Не буду перечислять их полностью, отметим лишь некоторые, на мой взгляд, наиболее интересные. Поддержка длинной арифметики теперь становится стандартной функцией .NET Framework: появился класс BigInteger, а отдельные языки (F# в их числе) приобрели встроенную поддержку соответствующей структуры. Работа с изолированным хранилищем данных (Isolated Storage) для приложений с ограниченным доступом к файловой системе (относится в первую очередь к WPF-программам, исполняющимся в браузере, – XBAP, а также распространяемым по технологии ClickOnce) теперь полностью унифицирована с таковым для Silverlight-приложений. Улучшены инструменты ввода-вывода: запросы к файловой системе теперь возвращают коллекции вместо массивов, что увеличивает скорость работы в том случае, когда не требуется загружать весь список; статический тип File теперь содержит новые методы, позволяющие эффективно читать и записывать текстовые файлы с помощью LINQ, не создавая дополнительных структур данных; появилась поддержка стандартных для ОС Windows отображаемых в память (memory mapped) файлов, что ранее было возможно только посредством сторонних библиотек; улучшились алгоритмы компрессии из пространства имен System.IO.Compression, а также устранен существующий ранее лимит в 4 ГБ на максимальный размер сжимаемого потока данных. Кроме того, расширены механизмы мониторинга производительности и используемых ресурсов, усовершенствованы технологии управления и синхронизации потоков.

    1. ASP.NET 4.0

ASP.NET — технология создания веб-приложений и веб-сервисов от компании Майкрософт. Она является составной частью платформы Microsoft .NET и развитием более старой технологии Microsoft ASP.

ASP.NET внешне во многом сохраняет схожесть с более старой технологией ASP, что позволяет разработчикам относительно легко перейти на ASP.NET. В то же время внутреннее устройство ASP.NET существенно отличается от ASP, поскольку она основана на платформе .NET и, следовательно, использует все новые возможности, предоставляемые этой платформой.

Хотя ASP.NET берёт своё название от старой технологии Microsoft ASP, она значительно от неё отличается. Microsoft полностью перестроила ASP.NET, основываясь на Common Language Runtime (CLR), который является основой всех приложений Microsoft .NET. Разработчики могут писать код для ASP.NET, используя практически любые языки программирования, в том числе, и входящие в комплект .NET Framework (C#, Visual Basic.NET, и JScript .NET). ASP.NET имеет преимущество в скорости по сравнению со скриптовыми технологиями, так как при первом обращении код компилируется и помещается в специальный кэш, и впоследствии только исполняется, не требуя затрат времени на парсинг, оптимизацию, и т. д.