Size: a a a

2021 April 24

S

Snusmumriken in pro.lua
Во! Меня дичайше напрягает питон своей работой с аргументами!

Вот я хочу написать две функции:

def foo(a, b, c):
 return a + b + c

def bar(a, b):
 return a + b

А потом вызывать, мол:
func = foo if a % 2 == 0 else bar
func(a, b, c)

И оно меня пошлёт с попыткой вызова bar! Слишком много аргументов! Уууу!
источник

U

UsernameAK in pro.lua
меня питон сам по себе напрягает
источник

U

UsernameAK in pro.lua
но вообще такая вещь как минимум делает плохо JIT'у)
источник

S

Snusmumriken in pro.lua
Не, не делает. Просто будет две трассы. То же самое будет если добавить условие
источник

S

Snusmumriken in pro.lua
Любое условие автоматом расщепляет трассу. В луажыте там получается ещё немного хитрее, слезание с трассы/переключение и возвращение на неё может быть почти бесшовным.
источник

U

UsernameAK in pro.lua
сразу скажу: я не вникал в то, как работают JIT'ы у динамически типизированных языков)
источник

U

UsernameAK in pro.lua
я не настоящий сварщик (c)
источник

S

Snusmumriken in pro.lua
Ну кароч, трасса это кусок байткода, который очень часто повторяется и таки собрался. Все дополнительные условия добавляют в трассу проверку: надо ли с неё слезть и переключиться на нескомпилированный код или нет. Проверки тоже компиляются.
источник

S

Snusmumriken in pro.lua
Кстати, jit тоже запрещён яблоком, потому что самомодификация и ваще надо компилятор в приложение встраивать ))0
Внутри luajit сидит tcc и компиляет.
источник

U

UsernameAK in pro.lua
есть два вида платформ, закрытые и открытые :D
источник

U

UsernameAK in pro.lua
причём есть одна катится из открытой в закрытую, а не наоборот — андроид
источник

S

Snusmumriken in pro.lua
Кста, за счёт tcc, на луажыте можно писать по-настоящему на сишке на луях, если через ffi подрубить уже встроенный в неё tcc. Ну и разумеется, можно дёргать саму луа, открывать новые стейты, пихать в них код и уходить в рекурсию.

Я тут видел некоторое дерьмо.
источник

U

UsernameAK in pro.lua
это не некоторое дерьмо
источник

U

UsernameAK in pro.lua
это жёсткое дерьмо с запахом углепластика!
источник

LU

Lucky Uk in pro.lua
Да. Круто!
источник

МА

Марат Абдуллин... in pro.lua
А пример можно? Я понял что на luajit можно только писать объявления функций/типов данных, а логику на С нельзя писать.
источник

AZ

Aydar Zarifullin in pro.lua
Так и должно быть не? Позиционные аргументы все обязательные по правилам языка, какое поведение по-твоему лучше? Чтобы аргументы были необязательными они должны быть именованные. Ну есть ещё один вариант вторая функция у тебя должна принимать a, b, *args например, но тогда ее логику надо переписывать. Не в защиту питона но ты странного хочешь.
источник

DB

Dmitry Belyaev in pro.lua
Господи как ты такого монстра придумал)))) Совсем не питонешно
источник

AY

Arslan Yulbirdin in pro.lua
Не отошёл ещё от луа)
источник

AY

Arslan Yulbirdin in pro.lua
Пройдёт
источник