SlideShare a Scribd company logo
1 of 70
Download to read offline
Александр Гладыш
 agladysh@gmail.com
Lua:
•   мощный,
•   быстрый,
•   лёгкий,
•   расширяемый,
•   встраиваемый

скриптовый язык программирования.
function generatefib (n)
  return coroutine.wrap(function ()
    local a, b = 1, 1
    while a <= n do
       coroutine.yield(a)
       a, b = b, a + b
    end
  end)
end

for i in generatefib(1000) do
  print(i)
end
Где можно встретить Lua?
•   Adobe Photoshop Lightroom
•   World of Warcraft и другие игры
•   Wireshark, Nmap...
•   Фотоаппараты, клавиатуры, принтеры,
    тв-приставки

И много, много где ещё...
Личный опыт
• Пишу на Lua с 2005-го года
• Несколько серьёзных проектов, до 160 KLOC Lua
• Много мелочи, библиотеки, модули, утилиты...

                                   github.com/agladysh
Луа хорош для
• Логики, настраиваемой пользователем
• Бизнес-логики
• Высокоуровневой системной логики
Benevolent Dictators




Prof. Roberto Ierusalimschy




                     Dr. Luiz Henrique de Figueiredo



                                                       Prof. Waldemar Celes
Даты выхода новых версий



                          Число строк кода




График из презентации Small is Beautiful: the design of Lua, Roberto Ierusalimschy
Photo by David Allouche (flickr.com)




Баланс
Lua:
•   мощный,
•   быстрый,
•   лёгкий,
•   расширяемый,
•   встраиваемый

скриптовый язык программирования.
Lua — скриптовый
язык программирования

• Виртуальная машина,
  исполняющая байт-код
• Динамическая типизация
• Сборщик мусора
Lua — встраиваемый
• Отличный Plain C API
• Великолепная портируемость
Lua — встраиваемый

• Легко сделать Sandbox
• Нет Global Interpreter Lock
Интеграция с другими языками

  ActionScript 3 Ada Basic
  C C++ COBOL D Delphi
     Erlang Haskell Java
 Objective-C .Net PHP Pascal
    Perl Python Ruby Tcl
               ...
Альтернативные реализации

 Java .Net LLVM Lua Parrot

          LuaJIT

          Metalua
Lua — расширяемый
При помощи Lua C API можно
легко расширять доступный из
      языка функционал

Всё, что можно сделать на Lua,
 можно сделать при помощи
            C API
Lua — лёгкий
•   150 КБ вся библиотека
•   100 КБ без компилятора
•   Минимальное потребление памяти
•   Луа очень любят embed-щики
А ещё — Lua легко освоить!
Lua — быстрый
shootout.alioth.debian.org
LuaJIT 2
luajit.org

• x86, x86_64
• Потрясающая скорость!
• Полная совместимость со стандартом
• Отличия в недокументированном /
  неопределённом поведении
• Почти полная ABI-совместимость
• Beta 4, достаточно стабильный для
  продакшена
Lua 5.1.4 vs. LuaJIT2 beta4
      luajit.org/performance.html




                       Логарифмическая шкала!
Lua 5.1.4 vs. LuaJIT2 beta4 (interp.)
          luajit.org/performance.html




                            Логарифмическая шкала!
Lua — мощный
• Мета-механизмы,
  а не конкретные решения
• Мультипарадигменный язык
Lua — мощный
• Множественные возвращаемые
  значения у функций
• Полноценный lexical scoping
• Функции — значения
  первого класса
• Полноценная хвостовая рекурсия
• Замыкания
• Кооперативная многозадачность
• Таблицы
Хвостовая рекурсия

function factorial(x, fac)
  fac = fac or 1
  if x == 1 then
     return fac
  else
     return factorial(x - 1, x * fac)
  end
end
Замыкания

function make_multiplier(coeff)
  return function(value)
    return value * coeff
  end
end
 
local x5 = make_multiplier(5)
print(x5(10)) --> 50
Кооперативная многозадачность
function generatefib (n) 
    return coroutine.wrap(function () 
        local a, b = 1, 1 
        while a <= n do 
            coroutine.yield(a) 
            a, b = b, a + b 
        end 
    end) 
end 

for i in generatefib(1000) do 
    print(i) 
end
Таблицы
 Основное (и единственное!)
средство композиции данных


    array dictionary set
      list queue record
              ...

          Объекты
Таблицы: обычный синтаксис

local t = { 1, 2, key = "value" }

t[3] = "three"

print(t[3], t.key) --> three, value
Таблицы: объектный синтаксис
myobj = { a = 5 }

function myobj:foo(b)
  print(self.a + b)
end

myobj:foo(37) --> 42
Декларативный синтаксис

gui:dialog  "Message Box"
{
 gui:label  "Hello, world!" 
  { 
    font_size  = 20;
  };
  gui:button  "OK" { };
}
Метатаблицы
 • Наследование / прототипы

 • Перегрузка операторов
Тонкие места Lua
Осторожно!

Глобальная видимость переменных
по умолчанию

local variable = 42
if vareable == 42 then
    print("Life, the universe, and everything")
end

Решения:

• Run-time Global Environment Protection
• Статическая валидация кода
Осторожно!

nil и false — ложь
Всё остальное — истина

if 0 then
    print("Ноль — тоже true")
end
Осторожно!

"Тернарный оператор"

Связка a and b or c
не полностью эквивалентна
(a) ? b : c

   local foo, bar, baz = false, 1, 42
   print(foo and bar or baz) --> 1
   bar = false
   print(foo and bar or baz) --> 42
Осторожно!

Массивы индексируются с единицы

 local a = { [0] = 0, [1] = 1 }
 for i, v in ipairs(a) do
     print(i, "=>", v)
 end
 --> 1 => 1

 for k, v in ipairs(a) do
     print(k, "=>", v)
 end
 --> 1 => 1
 --> 0 => 0
Осторожно!

Определение длины таблицы

                  print( #{ 1, 2, nil, 4 } )

The length of a table t is defined to be any integer
index n such that t[n] is not nil and t[n+1] is nil;
moreover, if t[1] is nil, n can be zero. 

For a regular array, with non-nil values from 1 to a
given n, its length is exactly that n, the index of its
last value. 

If the array has "holes" (that is, nil values between
other non-nil values), then #t can be any of the
indices that directly precedes a nil value (that is, it
may consider 
Осторожно!

Определение длины таблицы

Также влияет на все функции, работающие с
таблицами как с линейным массивом.

         unpack(), table.concat(), table.insert(),
           table.remove(), table.sort() и т.п.

Поведение ipairs() отличается!
Осторожно!

Только конструкции вида return g(x) —
хвостовая рекурсия

Эта — да:

  return x[i].foo(x[j] + a * b, i + j)

Эти — нет:

  g(x); return
  return g(x) + 1
  return x or g(x)
  return (g(x))
  return g(x), 42
Осторожно!

Константные строки

-- Медленно:
local s = ""
for i = 1, #large_array do
  s = s .. f(large_array[i])
end

-- Быстро:
local t = { }
for i = 1, #large_array do
  t[#t + 1] = f(large_array[i])
end
local s = table.concat(t)
Кстати о строках

В Lua нет нативной поддержки Unicode, но

• Unicode (как и любые бинарные данные)
  можно спокойно хранить в строках
• Есть сторонние библиотеки для работы
  со строками в Unicode
Несколько советов
Совет

Когда пишете код на Lua —
    пишите его на Lua!
Совет

   Не плодите без нужды
       диалекты Lua

Оставьте в покое синтаксис и
     семантику языка
Совет

Никогда не ставьте патч,
 добавляющий битовые
      операторы!

Модуль bitop — ваш друг
Совет

 Не меняйте без нужды
стандартные глобальные
   пространства имён
     (string, table, ...)

 Заведите свои модули
Совет

 Не пользуйтесь без нужды
глобальными переменными
Совет

Пишите тесты!
Совет

Не изобретайте сложных обвязок
           для ООП

 Lua — скорее prototype-based,
множественное наследование и
   проч. чудеса — не нужны

Duck Typing и делегирование —
         ваши друзья!
Совет

 Не используйте сторонние
 библиотеки для написания
        биндингов

Используйте стандартный Lua
  C API для биндинга своего
             кода

  Используйте генераторы
      (например, tolua)
   для биндинга больших
    3rd-party / legacy API
Совет

Не используйте многоязычные
    генераторы биндингов
      (например, SWIG)
Совет

  При написании биндинга

• Минимизируйте
  поверхность
  соприкосновения
• Пишите на стороне C, как
  удобно коду на C
• Потом оберните это в Lua,
  чтобы было удобно и там
Совет

    При дизайне системы

• Максимум кода
  выносите в Lua

• Минимум оставляйте
  написанным на языке со
  статической типизацией

 Любой грамотно написанный
модуль на Lua можно заменить
   на такой же на C / C++
Организация приложения на Lua
Организация многопоточного
    приложения на Lua
Где достать библиотеки?

• LuaRocks
  luarocks.org

• Lua For Windows
  code.google.com/p/luaforwindows
Где достать библиотеки?

• Google.com
• LuaForge.org
• LHF's Libraries and Tools for Lua
  www.tecgraf.puc-rio.br/~lhf/ftp/lua
• GitHub.com
• Code.Google.com
• SourceForge.org
Некоторые полезные библиотеки

Общего назначения

• LuaSocket
  bit.ly/luasocket
• LPeg
  bit.ly/lua-lpeg
• Alien
  alien.luaforge.net
Некоторые полезные библиотеки

Web-development

• Kepler Project
  keplerproject.org
• Ещё с десяток вариантов
Некоторые полезные библиотеки

Разработка игр

• Löve2d — 2D-игры на чистом Lua
  love2d.org
• Большинство игровых движков
Некоторые полезные библиотеки

iPhone / iPad

• Corona SDK (non-free)
  anscamobile.com/corona
• iPhone Wax
  bit.ly/iphone-wax
IDE

• Любой "программерский" редактор
• Decoda (non-free, Windows-only)
  unknownworlds.com/decoda/
• LuaEclipse 2.0 (unstable)
  github.com/KINFOO/LuaEclipse
Что читать?

Must read

• Lua 5.1 Reference Manual
  lua.org/manual/5.1
• Programming in Lua 2nd edition
  www.inf.puc-rio.br/~roberto/pil2
Что читать?

Рекомендую прочесть

• Lua Programming Gems
  lua.org/gems
• Lua Unofficial FAQ
  batbytes.com/luafaq
Что читать?

Для углублённого изучения

• The implementation of Lua 5.0
  lua.org/doc/jucs05.pdf
• The evolution of Lua
  lua.org/doc/hopl.pdf
• A No-Frills Introduction
  to Lua 5.1 VM Instructions
  http://bit.ly/no-frills
Хотите знать больше?

• Lua.org (Lua.ru)
• Lua Users Wiki
  lua-users.org/wiki
• Lua Mailing List
  lua.org/lua-l.html
• StackOverflow
  stackoverflow.com/questions/tagged/Lua
• IRC
  #lua at irc.freenode.net
Вопросы?
 agladysh@gmail.com

More Related Content

What's hot

Go для python-программистов
Go для python-программистовGo для python-программистов
Go для python-программистовKonstantin Cherkasov
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibAndrey Vlasovskikh
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!PyNSK
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?HappyDev-lite
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и DjangoTaras Lyapun
 
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the BeastAlexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the BeastAlexander Dymo
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинIT61
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Ontico
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)Badoo Development
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаSergey Platonov
 
libfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпаlibfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпаLeonid Yuriev
 
Functional Programing
Functional ProgramingFunctional Programing
Functional ProgramingMax Arshinov
 
неприятная правда про язык go
неприятная правда про язык goнеприятная правда про язык go
неприятная правда про язык goDaniel Podolsky
 
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Oleg Tsarev
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.Igor Shkulipa
 
Не превращайте ваши логи в клинопись
Не превращайте ваши логи в клинописьНе превращайте ваши логи в клинопись
Не превращайте ваши логи в клинописьAndrey Rebrov
 
ОПК № 2 – Алгоритмы и структуры данных, язык C
ОПК № 2 – Алгоритмы и структуры данных, язык CОПК № 2 – Алгоритмы и структуры данных, язык C
ОПК № 2 – Алгоритмы и структуры данных, язык CVladimir Parfinenko
 

What's hot (19)

Go для python-программистов
Go для python-программистовGo для python-программистов
Go для python-программистов
 
Внешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlibВнешние языки DSL на funcparserlib
Внешние языки DSL на funcparserlib
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the BeastAlexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
Alexander Dymo - IT-клуб Николаева - April 2011 - Ruby: Beaty and the Beast
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
 
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
Практика совместного использования Lua и C в opensource спам-фильтре Rspamd /...
 
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
"Почему язык Lua — это интересно?", Ник Заварицкий, (Mail.ru Group)
 
Андрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кодаАндрей Карпов, Приватные байки от разработчиков анализатора кода
Андрей Карпов, Приватные байки от разработчиков анализатора кода
 
libfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпаlibfpta: в памяти, с персистентностью, быстрее хайпа
libfpta: в памяти, с персистентностью, быстрее хайпа
 
Functional Programing
Functional ProgramingFunctional Programing
Functional Programing
 
неприятная правда про язык go
неприятная правда про язык goнеприятная правда про язык go
неприятная правда про язык go
 
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.
 
Не превращайте ваши логи в клинопись
Не превращайте ваши логи в клинописьНе превращайте ваши логи в клинопись
Не превращайте ваши логи в клинопись
 
ОПК № 2 – Алгоритмы и структуры данных, язык C
ОПК № 2 – Алгоритмы и структуры данных, язык CОПК № 2 – Алгоритмы и структуры данных, язык C
ОПК № 2 – Алгоритмы и структуры данных, язык C
 
Javascript 1
Javascript 1Javascript 1
Javascript 1
 

Viewers also liked

Arte quimbaya
Arte quimbayaArte quimbaya
Arte quimbayaladymami
 
How to Reinvent Your (Membership) Magazine for the Digital Age
How to Reinvent Your (Membership) Magazine for the Digital AgeHow to Reinvent Your (Membership) Magazine for the Digital Age
How to Reinvent Your (Membership) Magazine for the Digital AgePage Lizard
 
Segunda Reunión de Empalme Secretaría de Movilidad
Segunda Reunión de Empalme Secretaría de MovilidadSegunda Reunión de Empalme Secretaría de Movilidad
Segunda Reunión de Empalme Secretaría de MovilidadClaraLopezObregon1
 
Somatprod
SomatprodSomatprod
SomatprodCarlos
 
Availability & access of e resources in au
Availability & access of e resources in auAvailability & access of e resources in au
Availability & access of e resources in auKishor Satpathy
 
Pegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 CataloguePegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 CatalogueCora Buhlert
 
Gabarito vestibular 2_dia
Gabarito vestibular  2_diaGabarito vestibular  2_dia
Gabarito vestibular 2_diapepontocom
 
Qualificação (Curta) Julho 2009
Qualificação (Curta) Julho 2009Qualificação (Curta) Julho 2009
Qualificação (Curta) Julho 2009Rodrigo Senra
 
Kghmi default slide
Kghmi default slideKghmi default slide
Kghmi default slideKGHM
 
Resume - Mr. Patil Sujay Prabhakar 2016
Resume - Mr. Patil Sujay Prabhakar 2016Resume - Mr. Patil Sujay Prabhakar 2016
Resume - Mr. Patil Sujay Prabhakar 2016sujay patil
 
Representing Bicyclists CLE Materials
Representing Bicyclists CLE MaterialsRepresenting Bicyclists CLE Materials
Representing Bicyclists CLE MaterialsCharley Gee
 

Viewers also liked (20)

Contenidos temáticos
Contenidos temáticos Contenidos temáticos
Contenidos temáticos
 
Making Rajasthan Green using Weather Modificatin Technologies
Making Rajasthan Green using Weather Modificatin Technologies Making Rajasthan Green using Weather Modificatin Technologies
Making Rajasthan Green using Weather Modificatin Technologies
 
Arte quimbaya
Arte quimbayaArte quimbaya
Arte quimbaya
 
Test
TestTest
Test
 
How to Reinvent Your (Membership) Magazine for the Digital Age
How to Reinvent Your (Membership) Magazine for the Digital AgeHow to Reinvent Your (Membership) Magazine for the Digital Age
How to Reinvent Your (Membership) Magazine for the Digital Age
 
KẾ HOẠCH HỌC TẬP (TUẦN 38)
KẾ HOẠCH HỌC TẬP (TUẦN 38)KẾ HOẠCH HỌC TẬP (TUẦN 38)
KẾ HOẠCH HỌC TẬP (TUẦN 38)
 
Segunda Reunión de Empalme Secretaría de Movilidad
Segunda Reunión de Empalme Secretaría de MovilidadSegunda Reunión de Empalme Secretaría de Movilidad
Segunda Reunión de Empalme Secretaría de Movilidad
 
Webinar2003
Webinar2003Webinar2003
Webinar2003
 
Somatprod
SomatprodSomatprod
Somatprod
 
Availability & access of e resources in au
Availability & access of e resources in auAvailability & access of e resources in au
Availability & access of e resources in au
 
Pegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 CataloguePegasus Pulp Publishing 2013 Catalogue
Pegasus Pulp Publishing 2013 Catalogue
 
Gabarito vestibular 2_dia
Gabarito vestibular  2_diaGabarito vestibular  2_dia
Gabarito vestibular 2_dia
 
Netcat - 101 Swiss Army Knife
Netcat - 101 Swiss Army KnifeNetcat - 101 Swiss Army Knife
Netcat - 101 Swiss Army Knife
 
Qualificação (Curta) Julho 2009
Qualificação (Curta) Julho 2009Qualificação (Curta) Julho 2009
Qualificação (Curta) Julho 2009
 
13
1313
13
 
Kghmi default slide
Kghmi default slideKghmi default slide
Kghmi default slide
 
Resume - Mr. Patil Sujay Prabhakar 2016
Resume - Mr. Patil Sujay Prabhakar 2016Resume - Mr. Patil Sujay Prabhakar 2016
Resume - Mr. Patil Sujay Prabhakar 2016
 
Representing Bicyclists CLE Materials
Representing Bicyclists CLE MaterialsRepresenting Bicyclists CLE Materials
Representing Bicyclists CLE Materials
 
Android SQLite
Android SQLiteAndroid SQLite
Android SQLite
 
U.S. History Ch. !2
U.S. History Ch. !2U.S. History Ch. !2
U.S. History Ch. !2
 

Similar to Александр Гладыш — Lua

Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingTatiana Volkova
 
Some Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming LanguagesSome Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming Languages_ymn
 
Scripting languages
Scripting languagesScripting languages
Scripting languagesLev Panov
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Ontico
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструментыRoman Dvornov
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...SBTech
 
Введение в Lua. Использование в GameDev.
Введение в Lua. Использование в GameDev.Введение в Lua. Использование в GameDev.
Введение в Lua. Использование в GameDev.SergeyLerg
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Daniel Podolsky
 
The basic design of the PHP language
 The basic design of the PHP language The basic design of the PHP language
The basic design of the PHP languageVladimir Burdaev
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на DockerМихаил Бакулин
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Yandex
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.Igor Shkulipa
 
Stop whining and make a cross-platform game already!
Stop whining and make a  cross-platform game already!Stop whining and make a  cross-platform game already!
Stop whining and make a cross-platform game already!DevGAMM Conference
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsqlAnatoly Popov
 
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекSWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхVasil Remeniuk
 

Similar to Александр Гладыш — Lua (20)

Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
Some Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming LanguagesSome Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming Languages
 
Scripting languages
Scripting languagesScripting languages
Scripting languages
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
 
SPA инструменты
SPA инструментыSPA инструменты
SPA инструменты
 
Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...Терминология как основной способ поиска разработчиков или как не опозорится п...
Терминология как основной способ поиска разработчиков или как не опозорится п...
 
Интегрированная среда разработки для функционального языка Refal
Интегрированная среда разработки для функционального языка RefalИнтегрированная среда разработки для функционального языка Refal
Интегрированная среда разработки для функционального языка Refal
 
Введение в Lua. Использование в GameDev.
Введение в Lua. Использование в GameDev.Введение в Lua. Использование в GameDev.
Введение в Lua. Использование в GameDev.
 
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
Golang в действии: Как нам удается писать highload приложение на (не?)подходя...
 
The basic design of the PHP language
 The basic design of the PHP language The basic design of the PHP language
The basic design of the PHP language
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Локальное окружение на Docker
Локальное окружение на DockerЛокальное окружение на Docker
Локальное окружение на Docker
 
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 
C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.C++ STL & Qt. Занятие 09.
C++ STL & Qt. Занятие 09.
 
Stop whining and make a cross-platform game already!
Stop whining and make a  cross-platform game already!Stop whining and make a  cross-platform game already!
Stop whining and make a cross-platform game already!
 
Tarantool, .net, newsql
Tarantool, .net, newsqlTarantool, .net, newsql
Tarantool, .net, newsql
 
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекSWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
About Python
About PythonAbout Python
About Python
 

More from Yury Yurevich

ekb.py: KISS REST API
ekb.py: KISS REST APIekb.py: KISS REST API
ekb.py: KISS REST APIYury Yurevich
 
ekb.py: Mini Zen of Python
ekb.py: Mini Zen of Pythonekb.py: Mini Zen of Python
ekb.py: Mini Zen of PythonYury Yurevich
 
PyCon UA 2011: Test Infected
PyCon UA 2011: Test InfectedPyCon UA 2011: Test Infected
PyCon UA 2011: Test InfectedYury Yurevich
 
Александр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSАлександр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSYury Yurevich
 
Лев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangЛев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangYury Yurevich
 
Ильшад Хабибуллин — BlueBream
Ильшад Хабибуллин — BlueBreamИльшад Хабибуллин — BlueBream
Ильшад Хабибуллин — BlueBreamYury Yurevich
 
Иван Иноземцев — Fantom
Иван Иноземцев — FantomИван Иноземцев — Fantom
Иван Иноземцев — FantomYury Yurevich
 
About (unit) testing
About (unit) testingAbout (unit) testing
About (unit) testingYury Yurevich
 
Almost Success Story: Unix to Linux migration
Almost Success Story: Unix to Linux migrationAlmost Success Story: Unix to Linux migration
Almost Success Story: Unix to Linux migrationYury Yurevich
 

More from Yury Yurevich (11)

ekb.py: KISS REST API
ekb.py: KISS REST APIekb.py: KISS REST API
ekb.py: KISS REST API
 
ekb.py: Mini Zen of Python
ekb.py: Mini Zen of Pythonekb.py: Mini Zen of Python
ekb.py: Mini Zen of Python
 
PyCon UA 2011: Test Infected
PyCon UA 2011: Test InfectedPyCon UA 2011: Test Infected
PyCon UA 2011: Test Infected
 
Александр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JSАлександр Гладыш — Visual editor for business logic in Lua and JS
Александр Гладыш — Visual editor for business logic in Lua and JS
 
Лев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про ErlangЛев Валкин — Кое-что про Erlang
Лев Валкин — Кое-что про Erlang
 
Ильшад Хабибуллин — BlueBream
Ильшад Хабибуллин — BlueBreamИльшад Хабибуллин — BlueBream
Ильшад Хабибуллин — BlueBream
 
Иван Иноземцев — Fantom
Иван Иноземцев — FantomИван Иноземцев — Fantom
Иван Иноземцев — Fantom
 
Decorators' recipes
Decorators' recipesDecorators' recipes
Decorators' recipes
 
About (unit) testing
About (unit) testingAbout (unit) testing
About (unit) testing
 
SQLAlchemy Seminar
SQLAlchemy SeminarSQLAlchemy Seminar
SQLAlchemy Seminar
 
Almost Success Story: Unix to Linux migration
Almost Success Story: Unix to Linux migrationAlmost Success Story: Unix to Linux migration
Almost Success Story: Unix to Linux migration
 

Александр Гладыш — Lua