О сайте
Druker (only 1 prim). User Ma…
Инструкция по и…
Руководство LSL д…
Руководство LSL д…
Руководство LSL д…

Поиск

ОБО:   . К

Обновлено: 29.06.2007

 

Руководство LSL для программистов. Часть I.

Предисловие

Здесь уже были опубликованы статьи "LSL для чайников". Однако многие из программистов, имеющих опыт разработки программ в других средах, могут испытывать затруднения при работе в LSL. Данная статья предназначена для ускорения освоения языка LSL профессионалами.

Я сам занимаюсь освоением LSL уже второй месяц методом проб и ошибок, не обращаясь за советами практически ни к кому. Набил себе некоторые шишки и хочу с Вами ими поделиться :)

Приводить тут примеры кода я не стану, т.к. есть очень хорошее руководство по LSL – http://lslwiki.net/lslwiki/, к которому я постоянно обращаюсь. Там навалом примеров.

Итак, для начала рассмотрим, что это за язык и на что он похож.

LSL is what

Похож он на C++. Синтаксис взят оттуда. Работа с переменными похожа на Перл, но без долларов впереди идентификаторов (часто путаюсь, после LSL забываю ставить доллары в Перле и наоборот). Синтаксис упрощ‘нный. Выпендриваться, как в C немного можно, но не сильно. Например, постинкремент i++ работает, а прединкремент --i – нет. Но это неважно, если Вы любите Delphi, то там и этого нет.

Состояния (state) – это неплохое средство сглаживания сложности сложных программ. Однажды я написал программу, которая не влезла в 16 кбайт. Переписав ее под состояния, я смог значительно улучшить ее читабельность и сократить объем кода в два раза.

Отладка

Отладочных средств практически нет. Отладку можно делать вручную, отправляя значения переменных в канал владельца (llOwnerSay). Не рекомендуется общаться с программой на нулевом канале, чтобы не пугать случайных прохожих.

Командовать лучше на одном из каналов, отправляя фразы в программу через чат: "/5 строка".

Если Ваша программа где-то реально глючит, ставьте преждевременные вылеты из функций посредством "return;".

А вообще, программы для LSL лучше готовить на бумаге, с расписыванием алгоритмов на блок-схемы. Ну, вспомните 80-ые годы, ЕС ЭВМ, Fortran. Эх, были времена…

Как впихнуть данные в память

Да очень просто, держите все в нотекартах. По понятиям программы нотекарта – текстовый файл с прямым доступом к строкам. Навалив туда информации, упорядоченной по строкам, можно обеспечить к ней прямой доступ.

Максимальная длина одной строки в карте – 255. Объем нотекарты – 64Kb.

Например, массив из 600 точек раскладываете в 50 строк по 12 точек в строке. И делов-то. Чтение: делаете состояние setup, которое читает строку с заданным номером из карты и возвращает ее в виде глобальной переменной.

Да, приготовьтесь к тому, что некоторые данные придется готовить программно, чтобы потом подать их в нотекарту. Объем данных в LSL пока является игольным ушком, к которому надо найти лазейку из мира реального с безграничными объемами информации.

Например, мой Дрюкер хранит в одной нотекарте специальным образом упакованный шрифт (trip.chr). Без упаковки шрифт занимал 78Kb не и не влазил в карту, а после побитного кодирования он стал весить 19Kb. Длина сегментов одного символа шрифта – максимум 64 пиксела. Это 6 бит. Еще 1 бит для служебного использования. Число 0..127 кодируем в латинский символ. Символ пишем в карту. Таким образом, в одну строку можно загнать 255 чисел в диапазоне 0..63 и 255 логических значений. И так далее.

Где хранить код

Поскольку клиент SL склонен к падениям и вылетам в окно, то программы лучше держать на своем компьютере. И корректировать тоже на нем, используя редактор MS VC++ 6.0 или выше. Во-первых, он быстро работает, во-вторых, в нем есть замечательная кнопочка Ctrl+S, которая сохраняет код на винчестере мгновенно, а не висит по 15-20 секунд, как в SL-клиенте. Недостатком может быть только отстутствие подсветки конструкций языка LSL. Но это неважно. Настоящие программисты не ошибаются! :)

Как правило, лишний минус или неправильно поставленная запятая приносит больше несчастий, чем неверно написанное слово "ша", которое заставит исправить LSL-компилятор. Вспомните старую историю про американские беспилотные истребители, которые из-за одного лишнего минуса в коде перевернулись на 180 градусов и в таком виде вернулись на базу.

Одно из наблюдений: клиент валится чаще, если Ваша софтина сильно забивает память и кушает ресурсы сима. Наверное, это один из способов борьбы с неправильными программистами.


Эта статья создана с помощью DokuWiki. Последняя версия статьи лежит здесь. Перепечатка возможна только при согласии автора.

 
Используются технологии uCoz