Автор Тема: Lua  (Прочитано 115529 раз)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #90 : Ноябрь 07, 2012, 04:02:36 pm »
2 vlad
Ну я и не считаю себя православным оберонщегом  ;)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #91 : Ноябрь 07, 2012, 05:11:38 pm »
Никак не могу сделать в Sublime Text 2 вывод Lua в консоль.  :(
В SciTE все замечательно работает по F5, но этот редактор мне не нравится.

У него там похоже какая-то бага.

Вот у меня в точности такая хрень:
http://www.askdev.ru/question/10733/Sublime-Text-2-Building-Python-%D0%BF%D1%83%D1%81%D1%82%D0%BE%D1%82%D0%B0/

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #92 : Ноябрь 07, 2012, 06:14:19 pm »
Победил:
http://postimage.org/image/vkbrpp60b/

Проблема была в том, что у меня каталог пользователя был назван кириллицей.
Как оказалось у меня и package control по той же причине не хотел заводиться.

В общем чтобы кодить на Lua в Sublime Text 2 нужно сделать следующее.
1. Скачать и установить редактор:
http://www.sublimetext.com/2
2. Установить Package Control:
http://wbond.net/sublime_packages/package_control/installation
3. В редакторе нажимаем "ctrl+shift+p", далее в окне поиска пишем "Lua", и выбираем из найденного LuaDev
Можно и ручками установить (там есть readme):
https://github.com/rorydriscoll/LuaSublime
4. Создаем и сохраняем новый файл с расширением *.lua
5. Пишем код и давим F7 (или ctrl+B) чтобы запустить.
« Последнее редактирование: Ноябрь 07, 2012, 06:16:04 pm от ilovb »

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #93 : Ноябрь 07, 2012, 06:24:29 pm »
3. В редакторе нажимаем "ctrl+shift+p", далее в окне поиска пишем "Lua", и выбираем из найденного LuaDev

вернее так:
3. В редакторе нажимаем "ctrl+shift+p", пишем "install", в найденном выбираем "Install Package",
далее в окне поиска пишем "Lua", и выбираем из найденного LuaDev

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #94 : Ноябрь 07, 2012, 07:46:35 pm »
Смешные однако зарплаты у Lua-кодеров  ;D
http://www.poisk-rabot.ru/save/Programmist_LUA/9807888/

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Re: Lua
« Ответ #95 : Ноябрь 07, 2012, 08:07:06 pm »
Смешные однако зарплаты у Lua-кодеров  ;D
http://www.poisk-rabot.ru/save/Programmist_LUA/9807888/
Дык низкий порог вхождения (опытные не нужны) + на луа обычно ничего сверхсерьезного не пишут (то есть еще и ответственности никакой).
Y = λf.(λx.f (x x)) (λx.f (x x))

DIzer

  • Гость
Re: Lua
« Ответ #96 : Ноябрь 07, 2012, 08:51:20 pm »

Проблема была в том, что у меня каталог пользователя был назван кириллицей.
Как оказалось у меня и package control по той же причине не хотел заводиться.

так, я говорил про нее... у меня из - за этого не компилировались си - программы...

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #97 : Ноябрь 08, 2012, 10:39:35 am »
Человечий форыч няшка  ::)

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #98 : Ноябрь 08, 2012, 11:49:09 am »
Quine?
for line in io.lines("c:\\test.lua") do
    print(line)
end

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Re: Lua
« Ответ #99 : Ноябрь 08, 2012, 12:03:56 pm »
Quine?
for line in io.lines("c:\\test.lua") do
    print(line)
end

Вот уж и правда пффф! Аж целый цикл забубенить пришлось! о_О
То ли дело Хаскель:
main = putStrLn =<< readFile "Quine.hs"))
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #100 : Ноябрь 08, 2012, 04:52:26 pm »
Универсальность табличного подхода впечатляет.
Обход массива форычем:
m = {9,8,7,6,5,4,3,2,1}
for key, value in pairs(m) do
    print(key, "-", value)
end
Лог:
1    -    9
2    -    8
3    -    7
4    -    6
5    -    5
6    -    4
7    -    3
8    -    2
9    -    1

Однако такая форма записи для обхода массива слишком громоздка.

Вот в питоне просто и лаконично:
a = [9,8,7,6,5,4,3,2,1]
for i in a:
    print(i)


А в Lua лучше обычным for
m = {9,8,7,6,5,4,3,2,1}
for i=1, #m do
    print(m[i])
end

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #101 : Ноябрь 08, 2012, 05:58:29 pm »
Забавно что кроме pairs есть еще ipairs, которая больше подходит для массивов.

pairs - Возвращает все пары (ключ, значение) независимо от типа ключа и не гарантируя какого либо порядка обхода.

ipairs - Возвращает все пары (индекс, значение), где индекс - это целочисленный ключ(ключи с другими типами просто пропускаются). При обходе массива следующий элемент получается прибавлением 1 к текущему индексу, и если такого ключа нет в таблице, то цикл прекращается.

пример pairs:
t = {[1] = 200, [2] = 300, [6] = 400, [13] = 500}
for k, v in pairs(t) do
    print(k, "-", v)
end
лог:
1    -    200
2    -    300
13   -    500
6    -    400

пример ipairs:
t = {[1] = 200, [2] = 300, [6] = 400, [13] = 500}
for k, v in ipairs(t) do
    print(k, "-", v)
end
лог:
1    -    200
2    -    300

Ну и еще примерчик:
t = {[1] = 200, ["АХТУНГ!"] = 300, [2] = 400, [3] = 500}
for i, v in ipairs(t) do
    print(i, "-", v)
end
лог:
1    -    200
2    -    400
3    -    500

Чудно...  :D

пруфлинк

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #102 : Ноябрь 08, 2012, 06:36:02 pm »
Как и полагается скриптовому языку няшная сортировка в комплекте:  8)

print("Сортируем массив чисел")

a = {9,5,1,3,2,6,7,4,8}
table.sort(a)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив чисел используя свою функцию сравнения")

function comp(a, b)
    return a > b
end

a = {9,5,1,3,2,6,7,4,8}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив строк используя свою функцию сравнения")

function comp(a, b)
    return a < b
end

a = {"З","Д","А","В","Б","Е","Ё","Г","Ж"}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end

лог:
Сортируем массив чисел
1
2
3
4
5
6
7
8
9
Сортируем массив чисел используя свою функцию сравнения
9
8
7
6
5
4
3
2
1
Сортируем массив строк используя свою функцию сравнения
Ё
А
Б
В
Г
Д
Е
Ж
З

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #103 : Ноябрь 08, 2012, 08:14:18 pm »
-- O_o

function f1(...)
    for k, v in pairs{...} do
        print(v)
    end
end

f1(1,2,3,4,5,6,7,8,9)

--log:
--[[
1
2
3
4
5
6
7
8
9
--]]

--------------------------------

-- O_O

function f2(a, b, c)
    print(a)
    print(b)
    print(c)
end

a = {1,2,3}

f2(unpack(a))

--log:
--[[
1
2
3
--]]

ilovb

  • Hero Member
  • *****
  • Сообщений: 2538
  • just another nazi test
    • Просмотр профиля
    • Oberon systems
Re: Lua
« Ответ #104 : Ноябрь 08, 2012, 08:49:54 pm »
Сравнение производительности языковых VM (Universal bytecode VM comparison)

Цитировать
Недавно я задался вопросом сравнения производительности bytecode виртуальных машин (VM). Таких как JVM, LLVM, .Net, etc.
Прямое сравнение трудно было произвести по нескольким причинам. Во-первых, нужен был подходящий набор тестов, который хоть как-то покрывает предоставляемые VM функции. Во-вторых, нужно было найти язык, который бы компилировался в байт-код всех тех VM, которые я хотел протестировать, и наконец - нужно было просто выкроить время. Не прошло и полгода, как я решил эти проблемы, хоть и не в полной мере.


В качестве языка для примеров я выбрал Lua (5.1), т.к. компиляторы в байткод с него существуют для всех интересных мне машин. В качестве же тестов я взял исходники с The Computer Language Benchmarks Game, и кое-где доработал их рашпилем (правда, должен заранее сказать, что не знаю Lua). Предпочтение отдавалось "straightforward" реализациям, не имеющим системных завязок и минимально зависящим от библиотек языка. Понятно, что несложно приделать к любому языку быстродействующую библиотеку (к примеру на С), но тогда сравниваться будет совсем не то, что нам нужно.