Главная
Новости
Строительство
Ремонт
Дизайн и интерьер
Полезная информация

















Яндекс.Метрика





Script.NET

Script.NET (или S#) — это скриптовый язык с JavaScript-подобным синтаксисом и возможностью метапрограммирования для .NET Framework. Позволяет создавать программируемые расширяемые приложения.

Script.NET — свободно распространяемый продукт.

Метапрограммирование

Script.NET обладает возможностью метапрограммирования и рефлексии. Это дает возможность писать программы, способные изменять свой код в режиме выполнения. Такое поведение полезно в частности в агенто-ориентированных системах, эволюционных системах и системах искусственного интеллекта.

Механизм контрактов

Механизм контрактов языка позволяет задавать условия на выполнение функций. То есть условия, которые должны удовлетворяться перед непосредственным вызовом функции, после её выполнения, и т. д. Контракты в форме пред- и пост- условий позволяют сделать код более понятным, избегать типичных ошибок.


Рассмотрим пример реализации защищённого стека:

function Push(item) [ //Ограничим количество элементов коллекции до 10 pre(me.Count < 10 ); post(); invariant(); ] { //Вызываем метод оригинального объекта me.Push(item); } function Pop() [//Проверка на пустоту pre(me.Count > 0); post(); invariant(); ] { return me.Pop(); } stack = new Stack<|int|>(); //Создаем МОбъект //1. Устанавливаем перехваты для функций mObject=[Push->Push,PopCheck->Pop]; //2. Выбираем объект к вызовы функций которого // будут перехватываться mObject.Mutate(stack); //В данном случае все сработает нормально //если установить значение счётчика больше 10 //пользователь получит уведомление о нарушении пред-условия for (i=0; i<5; i++) mObject.Push(i); //Вызов защищённой версии функции Console.WriteLine((string)mObject.PopCheck());

В данном примере показывается возможность декорирования существующих объектов для внедрения контрактов и других аспектов. Так, существующий класс Stack<int> ограничивается по объёму до 10 элементов.

Примеры

Hello world

MessageBox.Show('Hello World!');

Пузырьковая сортировка

a=[17, 0, 5, 3,1, 2, 55]; for (i=0; i < a.Length; i=i+1) for (j=i+1; j < a.Length; j=j+1) if (a[i] > a[j] ) { temp = a[i]; a[i] = a[j]; a[j] = temp; } s = 'Results:'; for (i=0; i < a.Length; i++) s = s + ',' + a[i]; MessageBox.Show(s);

RSS-агрегатор

a = new XmlDocument(); a.Load('http://www.codeplex.com/scriptdotnet/Project/ProjectRss.aspx'); MessageBox.Show('CodePlex Script.NET RSS::'); foreach (n in a.SelectNodes('/rss/channel/item/title')) MessageBox.Show(n.InnerText);

Похожие скриптовые языки

  • L Sharp.NET — реализация листа для .NET
  • Boo — скриптовый язык, с Python-подобным синтаксисом
  • IronPython — реализация языка Python для .NET