Зачем это надо:
- скомпилированные регулярные выражения работают примерно на 30% быстрее.
- все находится в одной сборке, которую можно подключить к приложению. Будет работать intellisense :)
Все-таки у Microsoft какая-то своя, особая логика... Простыми смертными она не постижима.
Update
Выложили Visual Studio 2010 Beta 1. На оффициальной странице ссылка на скачивание ведет сюда. А там! Там! Там веб инсталлер весом 5,4 Мб... Устанавливайте на здоровье... Особенно если у вас интернет на скорости 56 Кб/сек...
Специалисты Microsoft работают над новым языком программирования Axum. Особенность новой разработки заключается в том, что этот язык изначально предназначен для написания многопоточных параллельных приложений, оптимизированных для работы на современных многоядерных процессорах.
Формально Axum - это инкубационный проект, помогающий разработчикам использовать технологии параллельного программирования в рамках среды .Net, но позже, как утверждают в Microsoft, Axum станет полноценным языком.
Джошуа Филлипс, программный менеджер Microsoft Parallel Computing Platform заявил, что пока каких-то утвержденных дат релиза Axum нет. "Новый язык в большей степени ориентирован на профессионалов, он предлагает безопасный и эффективный интерфейс для Net-программирования. Этот язык строится на веб-архитектуре, а также на принципах изолированности, масштабируемости и производительности", - говорит он.
Ранее в документах Microsoft язык Axum фигурировал под названием Maestro. Филлипс говорит, что в корпорации сейчас работают над интеграцией Axum в среду Visual Studio, оптимизацией языка для сетевого использования и повышением устойчивости платформы в целом.
Возможно первые варианты Axum появятся уже в среде Visual Studio 2010 в качестве движка, инкубированного в некоторые технологии. "Наша основная задача - создать безопасную, масштабируемую и более производительную модель программирования в .Net-окружении. Концепция Axum основана на полной изолированности процессов, которые будут между собой обмениваться контрольными сообщениями", - рассказывает Филлипс.
Также как и многие другие современные языки, Axum будет базироваться на декларативной модели. Синтаксис Axum будет в значительной мере похож на C#. В Microsoft говорят, что новую синтаксическую модель там не стали делать намеренно, чтобы легче было использовать новый язык.
"Ранее для того, чтобы получить повышенную производительность приложения, нам приходилось ждать выхода более быстрого процессора, сейчас перед нами стоит задача эффективного использования многоядерности процессоров", - отмечает Филлипс.
"В Axum будет пять основных концепций: домен, канал, агент, схема и слой. Язык также будет поддерживать глубокую инкубацию объектов кода", заключает он.
В блоге корпорации отмечается, что одна из задач, которую ставили перед собой создатели языка, заключается в снижении сложности программирования, при повышении мощности и произвоодительности кода.
using System;
using System.Runtime.InteropServices;
using System.IO;
namespace mklink
{
class Program
{
[DllImport("kernel32.dll")]
static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
static int SYMLINK_FLAG_DIRECTORY = 1;
static void Main(string[] args)
{
//
// Symbolic file link bar.txt <<===>> foo.txt
//
string symF = "bar.txt";
string targetF = "foo.txt";
Console.WriteLine(">echo \"Hello World\" > {0}", targetF);
StreamWriter sw = File.CreateText(targetF);
sw.WriteLine("Hello World");
sw.Close();
Console.WriteLine();
Console.WriteLine(">mklink {0} {1}", symF, targetF);
if(CreateSymbolicLink(symF, targetF, 0))
Console.WriteLine("symbolic link created for {0} <<===>> {1}", symF, targetF);
Console.WriteLine();
Console.WriteLine(">type {0}", targetF);
Console.WriteLine(File.ReadAllText(targetF));
Console.WriteLine();
//
// Symbolic directory link bar <<===>> foo
//
string symD = "bar";
string targetD = "foo";
Console.WriteLine(">mkdir {0}", targetD);
Directory.CreateDirectory(targetD);
Console.WriteLine();
Console.WriteLine(">echo \"Hello World\" > {0}\\demo.txt", targetD);
StreamWriter sw2 = File.CreateText(targetD + \\demo.txt);
sw2.WriteLine("Hello World");
sw2.Close();
Console.WriteLine();
Console.WriteLine(">mklink /d {0} {1}", symD, targetD);
if (CreateSymbolicLink(symD, targetD, SYMLINK_FLAG_DIRECTORY))
Console.WriteLine("symbolic link created for {0} <<===>> {1}", symD, targetD);
Console.WriteLine();
Console.WriteLine(">dir {0}", targetD);
foreach (string f in Directory.GetFiles(targetD))
Console.WriteLine(f);
}
}
}