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"} и обратно
Yaroslav
Так вот, это не список, это хеш-мапа которая используется как сет. Но у хеш-мапы должны быть и ключ и значение.
вот 10 раз перечитал и тут понял, что в данном контексте у меня и возник вопрос, получается питон с его if item in list, рассматривает лист как словарь и подразумевает, что у каждого ключа значение тру?
Snusmumriken
Вот тогда if list[key] или if list.key это в целом то же самое, если list это дикт с ключами равными тру.
Snusmumriken
А у питона тут скорее всего костыльные проверки сверху, которые пробегают по списку и сверяются.
Yaroslav
@Snusmumriken спасибо, буду изучать примеры, что ты накидал.
Snusmumriken
Да, у питона внутри костыль, и это if ... in array — пробегает циклом по массиву, или проверяет ключ дикта.
Саша
так а костыльность-то в чём?
Snusmumriken
Неопределённое время исполнения. Если массив большой, будет пол часа перебирать. А с диктами оно не упрётся во время настолько сильно. А синтаксис один и тот же, и типичным юзером ожидается идентичное поведение.
Саша
я не согласен
Snusmumriken
Будь несогласным.
Yaroslav
я не согласен
но питон объективно медленнее работает?
Саша
медленнее чем что? в чём?
Snusmumriken
Смотря в каких условиях, но зачастую да. Особенно в сравнении с luajit (даже если взять pypy).
Саша
я луа не очень знаю, чтобы сравнивать
Snusmumriken
Я дарксайд-адепт луажыта, пишу на сишке на луях. И МНЕ ЗАШИБИСЬ, ДАЖЕ КОМПИЛИРОВАТЬ НЕ НУЖНО.
Саша
луа здоровский, жаль только не могу найти, где его применить
Snusmumriken
но питон объективно медленнее работает?
Но в питоне скорость не главное. Главное — большое количество подключаемых сишных либ (numpy/pandas) и возможность легко и быстро наклепать кроссплатформенные окошки с графичками твоего матана. У луёв в данном плане гораздо меньше кроссплатформенных библиотек для тех же окошек, хотя для матана есть torch.
Саша
еще забыли про ботов!
Snusmumriken
Да, ботам тоже как правило не нужна скорость. Если они не перекодируют видео в реалтайме и не пытаются анализировать аудиосигналы средствами pure-скриптового кода. Луажыт это может, а питон не очень, но питону можно подсунуть сишных либ которые будут это делать за него.
Саша
таким обычные ботошлёпы не занимаются, про это видосы на ютубе не снимаются
Snusmumriken
И в возможности освоения любой макакой. С луями, правда, та же ситуация (исключая luajit, там и память может потечь, хотя луёвый гц собирает основную часть сишного мусора)
Arslan
Хотел набрать большой текст, но видимо не в этом чате)
Саша
будто чтобы освоить какой-то язык нужно обладать сверхразумом. любой язык может освоить макака
Snusmumriken
Ну во-первых, нет. У чистой функциональщины и всяких прологов, например, довольно высокий порог входа, макака не осилит. У жавы довольно много бюрократии, макака плавно перестанет быть макакой пока осваивает. А вот у плюсов — нет, хоть они и бюрократические, но там надо за памятью следить, плюс они позволяют писать в стиле "Си с классами", что есть рассадник мартышек. Во-вторых, мы про освоения до уровня "может писать приложения в интырпрайз не убивая бизнес". Вчерашние студенты-делфятники может и освоили делфи с паскалями, но приводят к неконтролируемому потоку говнокода на прод, поэтому их туда не пускают. В питоне достаточно встроенной бюрократии чтобы те кто худо-бедно научился шпрехать, не говнокодил прям совсем адово. А уникумы которые таки говнокодят адово — легко отсеиваются.
Arslan
будто чтобы освоить какой-то язык нужно обладать сверхразумом. любой язык может освоить макака
Слышал про ассемблер? Так вот, кроме NOP сразу нормально писать код не получается
Саша
под атмеги и пики. и сложность была не в ассемблере, а в писать под атмеги и пики
Саша
книжка по сям раз в десять меньше книги по программированию под юниксы. понимаешь, к чему я веду?
Arslan
под атмеги и пики. и сложность была не в ассемблере, а в писать под атмеги и пики
Нифига ты. Я вставлял в сишный код ассемблер для пропуска одного такта процессора
Arslan
Больше я с ассемблером не связывался
Snusmumriken
(а я писал на tasm с макросами под венду, и оно принципиально мало отличается от сишки)
Hello, World! 🎄
fasm, nasm, yasm, tasm что выбрать?)
Snusmumriken
fasm, nasm, yasm, tasm что выбрать?)
Сишку, сишку, сишку или сишку.
Snusmumriken
Но в целом, у тебя не должно быть подобных вопросов. Не ты выбираешь асм, а асм выбирает тебя. Или ты выбираешь сишку.
Snusmumriken
книжка по сям раз в десять меньше книги по программированию под юниксы. понимаешь, к чему я веду?
"книжка по луям раз в десять меньше книжки по сетевому программированию". Это очевидно. Сишка — маленькая, юниксы — большие. Непонятно к чему ты ведёшь.
Hello, World! 🎄
Сишку, сишку, сишку или сишку.
Я раньше Си учил, но нужен асм для ос
Snusmumriken
Асм для какой ос?
Snusmumriken
Ужасть.
Hello, World! 🎄
Асм для какой ос?
для линукс, написание своей ос
Snusmumriken
Таки для линукс или для твоей ос?
Hello, World! 🎄
Чтоб написать загрузчик
Hello, World! 🎄
И ядро на Си
Snusmumriken
Тогда выбирай любой асм с поддержкой компиляции в машинный код для твоего цпу. Таких немного.
Hello, World! 🎄
по devos
Snusmumriken
Поищи на хабре, там кто-то писал загрузчики.
Hello, World! 🎄
Поищи на хабре, там кто-то писал загрузчики.
Там и сайты на ассемблере писали)
Hello, World! 🎄
Так вот, мне нужно выучить сначало асм
Snusmumriken
к тому, что в самих языках ничего сложного нет, сложности в том, как их применять
Я уже написал ответ на этот тезис, кстати. И он довольно обоснован. Не все языки "такие простые" потому что надо сломать собственные мозги чтобы понять как оно работает, или слишком легко написать говнокод.
Hello, World! 🎄
Так вот, мне нужно выучить сначало асм
Интересно, за сколько можно основы выучить
Snusmumriken
Минут за десять. Может меньше. Тебе нужен буквально десяток команд: перекладывание байтиков из стеков.
Snusmumriken
Ну дык, команды добавления/удаления/перемещения значений в регистрах, и какие-то операции типа арифметики. Всё. Ничего расширенного типа MMX тебе не нужно от слова "совсем".
Snusmumriken
Разумеется.
Snusmumriken
Ещё прочитаешь документацию к цпу, где какие значения должны располагаться чтобы привести к нужному результату.
Hello, World! 🎄
Разумеется.
Понятно, lua - 15 минут основы, ассемблер - 10 минут
Snusmumriken
Ассемблеры ГОРАЗДО более мелкие и простые чем луа. Там тупейшие механизмы.
Hello, World! 🎄
Snusmumriken
А это уже не ассемблер )) Это железка под которую ты пишешь.
Hello, World! 🎄
Snusmumriken
Очевидно, в зависимости от железки. Не ты выбираешь асм, я уже сказал.
Hello, World! 🎄
Можно попробовать написать загрузчик, вызвать Си код и написать ядро, потом попробовать встроить луа и писать на нём приложения
Snusmumriken
Можно. Только такой штуки как "си-код" — не существует для цпу. Для него есть только "машинный код". И принципиальной разницы между сишкой или асмом для него нет, они оба собираются в машинный код. Сишку можно назвать кроссплатформенным асмом с фичами, но ты можешь остаться без компилятора под конкретную железку (ну не написали), и она не всегда выжимает прям максимум из железки.
Arslan
Snusmumriken
Можно попробовать написать загрузчик, вызвать Си код и написать ядро, потом попробовать встроить луа и писать на нём приложения
А ещё вместо асмов ты можешь прям на машинных кодах накатать простейшую forth-машину вооружившись hex-редактором )) http://lurkmore.to/Forth
Hello, World! 🎄
:)
Snusmumriken
Писать на машинном коде?
Да, писать машинными кодами. Ну, знаешь, инструкции для цпу.
Snusmumriken
Шта?