one-time blog

less is more. more or less

Posts match “ Lua ” tag:

SigmaScript

| Comments

Я заинтересовался Lua когда искал какой-нибудь простой инструмент для программирования на смартфоне. Не для того, чтобы писать полноценные приложения под Андроид, а по-мелочи — быстро проверить какой-нибудь алгоритм, файлик сконвертировать, посчитать что-нибудь несложное... Тогда-то я и наткнулся на SigmaScript — реализацию языка Lua под Андроид. Оказалось, что существуют также версии SigmaScript под Linux и Windows, и эта штука мне понравилась еще больше, потому что мне нравится пользоваться кроссплатформенными решениями.

Язык Lua отличается простотой синтаксиса — в этом отношении он, пожалуй, проще даже моего любимого Питона. Однако, это достаточно мощный, гибкий, полноценный язык программирования. По возможностям, идеологии и реализации язык ближе всего к JavaScript. В общем, он мне понравился, хотя я до сих пор так и не написал на нем ничего, кроме нескольких простеньких программок. Потом надобность в программировании на смартфоне как-то отпала, и я забыл про этот язык.

Во второй раз я заинтересовался сейчас. Я искал простенький интерпретатор для обучения детей программирования. К своему стыду, я всерьез рассматривал даже различные варианты Бейсика! ;) И не сразу вспомнил про SigmaScript. Теперь буду заново осваивать его...

Гадание по окружению или Определение ОС в Lua

| Comments

В SigmaScript, как и в любом кроссплатформенном решении, есть один нюанс, касающийся зависимости от платформы. Речь идет, разумеется, об именах файлов, точнее путях — в Windows и *nix используются различные символы-разделители каталогов, да и структура полного пути немного отличается. Android «в глубине души» — тоже *nix, поэтому нам достаточно научиться определять работаем ли мы в данный момент на Windows, или нет.

После некоторых поисков и проверок я нашел, как мне кажется, вполне простой и надежный способ: проанализировать значение переменной окружения OS — под Windows 7 эта переменная имеет значение Windows_NT, а в Линуксе и на Андроиде просто отсутствует. Я написал функцию getos(), которую включил в модуль utils — в нем я собираю разные мелкие функции, которые могут понадобиться в любой программе:

utils.lua
-- utils.lua: some usefull utilities/functions


local utils = {} 

function utils.getos()
   local osid = os.getenv("OS")
   if (osid == nil) then
     osid = "Unix"
   end
   return osid
end 

return utils

Чтобы удостовериться в правильности работы моей функции, я написал небольшую программку, демонстрирующую также работу с модулями в SigmaScript:

showos.lua
-- show platform where the program is running


utils = require "utils" 

platform = utils.getos()
msg = "You are running " .. platform

if platform == "Windows_NT" then
    lwin.alert("OS", msg)
else
    droid.alert("OS", msg)
end

print(msg)

Результат работы программы на скриншотах в начале поста.