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.
Честно говоря даже не слышал про это. Хотя и являюсь активным участником форума этого клиента.
Я думаю что вообще можно писать куски на питоне отдельно и запускать посредством функций $run() и $exec() из скриптов.:)
По моему опыту написания скриптов для 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 (или его скриптование) не собирается, то и доказывать что-то мне незачем.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Вроде бы месяцев 7 назад кто-то начал разрабатывать Python'овый скриптовый движок для KVIrc… Вот это бы следовало бы осветить…
Я думаю что вообще можно писать куски на питоне отдельно и запускать посредством функций $run() и $exec() из скриптов.:)
Судя по сырцам, Python вызывается точно так же — python.begin и python.end
При использовании самопального языка преимуществ нет вообще никаких. Я сомневаюсь, что сделать интерпретатор для нового языка легче, чем сделать биндинги для уже существующего языка.
Допустим зачем мне иметь установленный питон если я им не пользуюсь? А вот 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 (или его скриптование) не собирается, то и доказывать что-то мне незачем.