KVIrcОсновы KVS: Переменные.

KVS — это скриптовый язык который встроен в кроссплатформенный irc-клиент KVIrc.
При его помощи можно писать и простейшие алиасы, которые облегчают жизнь рядовому пользователю, так и довольно сложные дополнения имеющие графический интерфейс.
Начнём с простейшего.

Переменные.

Переменные в KVS идентифицируются знаком %(процент) и в своём имени могут содержать любые символы алфавита, цифры и знак подчёркивания(_).

Пример:

%var
%var2
%_var
%Var


Присваивание значения переменной.

%var = 10


Так мы присвоили переменной %var значение 10.

Вывести значение можно так:

echo "Значение переменной var =" %var


Переменные могут быть как локальными так и глобальными. Локальные переменные сохраняются только в контексте одного скрипта. Глобальные переменные постоянно находятся в памяти и доступны из любого скрипта. Глобальные переменные можно объявить двумя способами.
Первый и довольно редко используемый. Перед переменной пишется специальный указатель при объявлении.

Пример:

global %a


Второй и наиболее удобный. Имя переменной начинается с заглавной буквы.

%A = 10


Типы данных.

Переменные могут содержать как числовые значения так и строки.

Пример:

%digit = 10
%string = "This is string"


Массивы.

Ну что такое массивы я объяснять не буду.:) Массивы могут содержать как строки так и числовые значения. Создать массив можно при помощи функции $array.

Пример:

%array = $array(one,two,three,four,five)


Вызвать определённый элемент массива можно указав его индекс. Не забываем что нумерация начинается с 0.

echo %array[1] вернёт нам значение two.

Массив так же можно заполнить явно присвоив значения элементам.

Пример:

%array[0] = "one"
%array[9] = "two"


Хэши.

Хэш это фактически тот же массив но в нём индексами выступают так называемые ключи. Создать хэш можно при помощи функции $hash.

Пример:

%hash = $hash("ключ1","значение1","ключ2","значение2")


Вызвать элемент можно обратившись к нему по ключу.

%a = %hash{"ключ2"}


Добавить элемент в хэш или переписать можно так

%hash{"ключ1"} = "новое значение"


Ну с переменными мы закончили. На этом я пока прерву своё повествование 6 утра на дворе.:) Надеюсь Вас заинтересует этот язык и его возможности.

Комментарии (9)

  • avatar
  • LRN
  • 12 июня 2009, 08:23
  • #
  • 0
Вспоминаеться mIRC Script Language.

Вроде бы месяцев 7 назад кто-то начал разрабатывать Python'овый скриптовый движок для KVIrc… Вот это бы следовало бы осветить…
Честно говоря даже не слышал про это. Хотя и являюсь активным участником форума этого клиента.
Я думаю что вообще можно писать куски на питоне отдельно и запускать посредством функций $run() и $exec() из скриптов.:)
https://svn.kvirc.de/kvirc/ticket/280
Во, ещё нашёл — www.kvirc.de/docu/doc_perl_and_kvs.html
Судя по сырцам, Python вызывается точно так же — python.begin и python.end
Но в любом случае это конечно не решение. По-хорошему нужны нормальные биндинги.
По моему опыту написания скриптов для KVIrc хватает самого встроенного языка. Смысла применения других я не вижу. Ну разве что чтобы заставить клиент готовить вам кофе.;) Я использую в основном внешние программы(ну типа распаковать архив и т.п.). И вообще применение внешних языков это уже из разряда изврата для гиков.
Применение полноценных языков выгоднее в перспективе. Программисты, знакомые с таким языком, смогут быстро и легко модифицировать программу под свои нужды. Программисты, не знакомые с этим языком, смогут его изучить. И в любом случае это позволяет использовать модули/библиотеки, доступные для этого языка (что особо актуально для Python, потому что он поставляется «с батарейками»). Для не-программистов использование широко распространённого языка облегчит написание скриптов (больше справочного материала).

При использовании самопального языка преимуществ нет вообще никаких. Я сомневаюсь, что сделать интерпретатор для нового языка легче, чем сделать биндинги для уже существующего языка.
Возможно вы и правы. Но с моей точки зрения применение внешних языков вносит свои трудности и неудобства.
Допустим зачем мне иметь установленный питон если я им не пользуюсь? А вот KVIrc будет его ставить только для того чтобы удовлетворить зависимости. Или в той же Windows всё более запущено. Пользователь скачает скрипт, а он не работает. Требуется питон тот же или перл. Сталкивался с таким используя X-chat for Windows. Думаете он будет качать это и устанавливать только для того чтобы посмотреть сколько слапов у него добавится?
Ещё как пример. Новые модули это увеличение и усложнение программы. Я согласен что можно их сделать но тогда нужна система управления модулями. Да и конечный пользователь не всегда компетентен в том что ему именно надо.
Кстати изменение размера допустим для меня имграет роль и это не на последнем месте. Сам я постоянно в разъездах и использую GPRS. С нашим качеством связи тянуть с инета пакет в 8 метров намного легче чем в 20. Я видел сам как народ отказывался качать многие программы из-за этого.
Действительно, зачем тебе установленная Java Runtime Environment, если ты ею не пользуешься? Особенно в Windows, где всё так запущено. И зачем, кстати, тебе устанавливать Qt просто так, если ты им не пользуешься?

Хороший подход — это реализация основы клиента на C/C++ и дописывание всего остального на скриптах. Или наоборот, реализация компонентов клиента в виде библиотек и использование скриптов в качестве основы клиента (склейки компонентов). Это открыло бы богатый набор возможностей, который не ограничивался бы слапами.

Смотря как понимать слово «модули». Если говорить о модулях для Python, то у него есть встроенная система управления модулями (у других языков тоже есть, я думаю). Если говорить о KVIrc… Чем система управления модулями концептуально отличается от системы управления скриптами?

Что касается размера, то см. комментарий насчёт QT и Java. Скриптовый интерпретатор ставится в систему один раз (а если мы говорим о Linux, то он там скорее всего уже стоит), что не увеличивает, а наоборот — уменьшает размер скачиваемых программ. KVIrc pre-4.0 win32 весит 42 мегабайт (распакованный), из них 15 — SSL и QT.


Не буду спорить. Поскольку никто переписывать KVIrc (или его скриптование) не собирается, то и доказывать что-то мне незачем.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.