Script.NET

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Script.NET
Тип

Язык программирования

Операционная система

Windows 98 или старше

Последняя версия

Версия 1.0 (17 декабря 2007)

Лицензия

LGPL

Сайт

protsyk.com/scriptdotnet

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

Ссылки[править | править вики-текст]