Yaroslav
да, в моем случае я ухожу от этой функции, т.к. словарь прописываю вручную
Snusmumriken
Ну дык делай как делается.
Эта функция фактически только проходит по массиву и превращает его в дикт, где значения массива это ключи. Как будто инвертирование ключей и значений.
Snusmumriken
Кстати, я бы оформил в виде
function table_invert(src)
local dst = {}
for key, value in pairs(src) do
dst[value] = key
end
return dst
end
Типа, оно может превратить
{ foo = 1, bar = 2 }
в
{"foo", "bar"}
и обратно
Snusmumriken
Вот тогда if list[key] или if list.key это в целом то же самое, если list это дикт с ключами равными тру.
Snusmumriken
А у питона тут скорее всего костыльные проверки сверху, которые пробегают по списку и сверяются.
Yaroslav
@Snusmumriken спасибо, буду изучать примеры, что ты накидал.
Snusmumriken
Да, у питона внутри костыль, и это
if ... in array — пробегает циклом по массиву, или проверяет ключ дикта.
Саша
так а костыльность-то в чём?
Snusmumriken
Неопределённое время исполнения. Если массив большой, будет пол часа перебирать. А с диктами оно не упрётся во время настолько сильно. А синтаксис один и тот же, и типичным юзером ожидается идентичное поведение.
Саша
я не согласен
Snusmumriken
Будь несогласным.
Саша
медленнее чем что? в чём?
Snusmumriken
Смотря в каких условиях, но зачастую да. Особенно в сравнении с luajit (даже если взять pypy).
Саша
я луа не очень знаю, чтобы сравнивать
Arslan
Snusmumriken
Я дарксайд-адепт луажыта, пишу на сишке на луях. И МНЕ ЗАШИБИСЬ, ДАЖЕ КОМПИЛИРОВАТЬ НЕ НУЖНО.
Саша
луа здоровский, жаль только не могу найти, где его применить
Arslan
Yaroslav
Snusmumriken
но питон объективно медленнее работает?
Но в питоне скорость не главное. Главное — большое количество подключаемых сишных либ (numpy/pandas) и возможность легко и быстро наклепать кроссплатформенные окошки с графичками твоего матана.
У луёв в данном плане гораздо меньше кроссплатформенных библиотек для тех же окошек, хотя для матана есть torch.
Саша
еще забыли про ботов!
Snusmumriken
Да, ботам тоже как правило не нужна скорость. Если они не перекодируют видео в реалтайме и не пытаются анализировать аудиосигналы средствами pure-скриптового кода. Луажыт это может, а питон не очень, но питону можно подсунуть сишных либ которые будут это делать за него.
Саша
таким обычные ботошлёпы не занимаются, про это видосы на ютубе не снимаются
Arslan
Snusmumriken
И в возможности освоения любой макакой. С луями, правда, та же ситуация (исключая luajit, там и память может потечь, хотя луёвый гц собирает основную часть сишного мусора)
Arslan
Хотел набрать большой текст, но видимо не в этом чате)
Саша
будто чтобы освоить какой-то язык нужно обладать сверхразумом. любой язык может освоить макака
Snusmumriken
Ну во-первых, нет. У чистой функциональщины и всяких прологов, например, довольно высокий порог входа, макака не осилит. У жавы довольно много бюрократии, макака плавно перестанет быть макакой пока осваивает. А вот у плюсов — нет, хоть они и бюрократические, но там надо за памятью следить, плюс они позволяют писать в стиле "Си с классами", что есть рассадник мартышек.
Во-вторых, мы про освоения до уровня "может писать приложения в интырпрайз не убивая бизнес". Вчерашние студенты-делфятники может и освоили делфи с паскалями, но приводят к неконтролируемому потоку говнокода на прод, поэтому их туда не пускают. В питоне достаточно встроенной бюрократии чтобы те кто худо-бедно научился шпрехать, не говнокодил прям совсем адово. А уникумы которые таки говнокодят адово — легко отсеиваются.
Arslan
Саша
Саша
под атмеги и пики. и сложность была не в ассемблере, а в писать под атмеги и пики
Саша
книжка по сям раз в десять меньше книги по программированию под юниксы. понимаешь, к чему я веду?
Arslan
Больше я с ассемблером не связывался
Snusmumriken
(а я писал на tasm с макросами под венду, и оно принципиально мало отличается от сишки)
Hello, World! 🎄
fasm, nasm, yasm, tasm что выбрать?)
Snusmumriken
Snusmumriken
Но в целом, у тебя не должно быть подобных вопросов. Не ты выбираешь асм, а асм выбирает тебя. Или ты выбираешь сишку.
Snusmumriken
Асм для какой ос?
Саша
Snusmumriken
Ужасть.
Snusmumriken
Таки для линукс или для твоей ос?
Hello, World! 🎄
Hello, World! 🎄
Чтоб написать загрузчик
Hello, World! 🎄
И ядро на Си
Snusmumriken
Тогда выбирай любой асм с поддержкой компиляции в машинный код для твоего цпу. Таких немного.
Hello, World! 🎄
Hello, World! 🎄
по devos
Snusmumriken
Поищи на хабре, там кто-то писал загрузчики.
Hello, World! 🎄
Hello, World! 🎄
Так вот, мне нужно выучить сначало асм
Snusmumriken
Минут за десять. Может меньше. Тебе нужен буквально десяток команд: перекладывание байтиков из стеков.
Hello, World! 🎄
Snusmumriken
Ну дык, команды добавления/удаления/перемещения значений в регистрах, и какие-то операции типа арифметики. Всё. Ничего расширенного типа MMX тебе не нужно от слова "совсем".
Hello, World! 🎄
Snusmumriken
Разумеется.
Snusmumriken
Ещё прочитаешь документацию к цпу, где какие значения должны располагаться чтобы привести к нужному результату.
Hello, World! 🎄
Разумеется.
Понятно, lua - 15 минут основы, ассемблер - 10 минут
Snusmumriken
Ассемблеры ГОРАЗДО более мелкие и простые чем луа. Там тупейшие механизмы.
Hello, World! 🎄
Snusmumriken
А это уже не ассемблер ))
Это железка под которую ты пишешь.
Hello, World! 🎄
Snusmumriken
Очевидно, в зависимости от железки. Не ты выбираешь асм, я уже сказал.
Hello, World! 🎄
Hello, World! 🎄
Можно попробовать написать загрузчик, вызвать Си код и написать ядро, потом попробовать встроить луа и писать на нём приложения
Snusmumriken
Можно. Только такой штуки как "си-код" — не существует для цпу. Для него есть только "машинный код". И принципиальной разницы между сишкой или асмом для него нет, они оба собираются в машинный код. Сишку можно назвать кроссплатформенным асмом с фичами, но ты можешь остаться без компилятора под конкретную железку (ну не написали), и она не всегда выжимает прям максимум из железки.
Arslan
Hello, World! 🎄
Hello, World! 🎄
:)
Hello, World! 🎄
Snusmumriken
Шта?