граница AI
May. 26th, 2023 03:19 pm(chatgpt4, который умеет ходить по ссылкам)
Пересказать на другом языке новостную статью - запросто. Просто отлично.
Попросить пересказать идеи из faultlore (https://faultlore.com/blah/tower-of-weakenings/) - его корёжит, пучит, ломает (в буквальном смысле - error in the stream), три попытки, и ни разу ни чего, хотя бы отдалённо напоминащего разумный пересказ сложной идеи.
В целом, наверное, так и надо тестирвать AI. Даёшь сложную статью, просишь пересказать своими словами идею статьи. Человек может понять Арию, AI - нет.
Пересказать на другом языке новостную статью - запросто. Просто отлично.
Попросить пересказать идеи из faultlore (https://faultlore.com/blah/tower-of-weakenings/) - его корёжит, пучит, ломает (в буквальном смысле - error in the stream), три попытки, и ни разу ни чего, хотя бы отдалённо напоминащего разумный пересказ сложной идеи.
В целом, наверное, так и надо тестирвать AI. Даёшь сложную статью, просишь пересказать своими словами идею статьи. Человек может понять Арию, AI - нет.
no subject
Date: 2023-05-27 06:44 pm (UTC)no subject
Date: 2023-05-27 06:55 pm (UTC)Главное придумать себе достойного противника, чтобы потом разгромно его сокрушить.
no subject
Date: 2023-05-29 04:45 am (UTC)no subject
Date: 2023-05-29 08:02 am (UTC)Я не бегаю в блог Ван Россума с целью рассказать как он неправильно всё делает. Более того, я не бегаю по блогам питонистов. Я программирую на питоне, учу Раст, и многие вещи после Раста в питоне выглядят странно. О чём я пишу в своём личном блоге.
Но тебе очень важно прийдти в чужой блог и... и что? Пока что я слышал от тебя немного оскорбительно и ничего конструктивного. Возможно, в душе ты думаешь, что делаешь хорошее дело, но наружу для окружающих (т.е. меня, в этой ситуации) это совсем не заметно.
no subject
Date: 2023-05-31 04:46 am (UTC)no subject
Date: 2023-05-31 09:27 am (UTC)Я понял твоё мнение по этому вопросу. В то же самое время я вижу как rust решает инженерные проблемы, и лично мне это очень нравится. Так же как мне нравится тонкий балланс между монадическими эффекторными семисерафимами типов и грубой битовой кувалды (niche и всё такое). Я Rust в продакшене (хоть в каком-то продакшене) использовал два раза пока что, оба раза, как замену Си. Получилось быстрее и понятнее для коллег (хотя они не видели всей магии мономорфизации снизу, но на неё и не надо смотреть - код-то читается).
В остальном Rust я использую для душевного отдыха, потому что мне очень не нравится питон, но к сожалению, это язык, который я пока что знаю лучше всего, и тулстек у меня на 40% на питоне (причём самые его кровоточащие части - совпадение или нет?), и де-факто язык Питон. Но я работаю над тем, чтобы это поменять.
Я понимаю, что тебе не нравится комьюнити. Допустим. Но я вижу насколько они тщательно и правильно решают проблемы, которые в Питоне либо не обсуждаются (например, конфликтующие зависимости зависимостей, мне нужно foo и bar, foo хочет foobar < 2.0.0, а bar хочет foo >=3.14), либо решаются через миллион прослоек, которые друг с другом не всегда договариваются (свежий пример: установка ansible-lint через poetry). И мне вот эта инженерная тщательность очень приятна.
А ещё мне нравится, что Rust - первый язык (из тех, которые я видел), который не закукливается в уютном рантайме. Надо свой аллокатор? Вздохнули, пишем. Надо обработать прерывание? Вздохнули, naked functions.
no subject
Date: 2023-05-31 09:42 am (UTC)Но вот по поводу тонкого баланса для душевного отдыха,
найдётся ли у вас минутка поговорить опробовал Common Lisp? Это же буквально непротиворечивая комбинация страшно низкоуровневых вещей (disassemble, sb-vm::define-vop, declare optimize) и высокоуровневых (макросы, полиморфизм, gradual typing и прочая).no subject
Date: 2023-05-31 10:14 am (UTC)Я смотрел издалека на Схему, и меня страшно выбесили скобочки. Несправедливо, неэстетично.
Кроме того, лисп - это песочница.
Я открыл рандомный код (https://github.com/sbcl/sbcl/blob/master/contrib/sb-rotate-byte/x86-64-vm.lisp) - нет, в таком виде я не хочу писать. Просто по эстетическим соображениям. Нет лиспу и xml.
no subject
Date: 2023-06-01 08:29 am (UTC)Скобочки не проблема с paredit/smartparens, проблема — новомодные синтаксические конструкции, которые нужно запоминать на каждой неделе в других новомодных языках.
no subject
Date: 2023-06-01 09:10 am (UTC)Для меня внутренее удовольствие от работы очень важно. Я не буду писать на 1С, XML и lisp'е, потому что мне визуально неприятно на них смотреть. И да, читаемость MATTER, иначе мы быстро скатимся в мир BOOK ONE/OBEY (language H).
насчёт новомодных конструкций... Ну, вот, lifetimes - это очень серьёзно. С интересом жду, когда кто-то прожуёт effect theory и даст на выходе что-то индустриальное.
В том же расте сахара не так уж и много, но насколько он офигенный. Range как тип, !include_bytes, божественная свобода в match'е, чуть-чуть магии трейтов в for.
И да, Rust'овое
for T: A + B<'a, Item=C<D<'_>>выглядит жутко, но у него есть причины.А у скобок лиспа причины нет, есть только "так повелось". (ну или скрытая скобкофилия, ведущая с тяжёлому xml в последствии)
no subject
Date: 2023-06-01 09:51 am (UTC)no subject
Date: 2023-06-01 10:00 am (UTC)Смотри, какой минимальный синтакис позволяет реализовать любую программу? (Т.е. является тьюринг-полным)? По умным учебникам CS, это операция "минус 1 с условным переходом". Это совершенно единообразный синтаксис, потому что у тебя есть только одна-единственная операция, которой всё программирование и производится. В чуть меньшем экстриме - -1 и JNZ, две инструкции. Изящно, просто анализировать, отвратительно читать.
Альтернатива - наиболее выразительные для человека конструкции. итератор, который через сахар превращается в "для каждого", match вместо пачки goto, dyn вместо таблицы с методами.
Программы пишутся не для компьютера, программы пишутся для человека. Человеку должно быть легко и хорошо читать код.
Идея внутри лиспа - забавная, но не более, и выворачивать мозг во имя этой идеи - спасибо, нет.
А что за история в Rust'е? Я знаю, что там есть процедурные макросы, но даже близко к ним не приближался.
no subject
Date: 2023-06-01 10:24 am (UTC)История в расте, что один прошаренный чувак (никнейм Bjorkus Dorkus, он в комитет C входит) хотел на растоконфе сделать доклад про перспективы развития вычислений в компайлтайме, но орги понизили его в статусе с кейнота до обычного доклада, он бомбанул и вообще отказался, потом ещё и выяснилось, что он внезапно негр, начались набросы про то, что "да он изначально был подписан на кейнот только тому що негр", скандал, срач, драма. Обычный день растокоммьюнити, короче.
no subject
Date: 2023-06-01 11:29 am (UTC)А, ты про эту драму в стакане. Ну, окей. Печально, но да, такое случается. К языку-то это как относится? У меня ощущение, что большая часть твоей критики языка оносится к фанбоям и коллективу разработчиков.
Человек != код, который он пишет. В обе стороны.
no subject
Date: 2023-06-01 02:24 pm (UTC)no subject
Date: 2023-06-01 02:29 pm (UTC)Потому что, какие альтернативы? Скобочки на лиспе? нуну.
Я тут ткнулся в гошный год поревьюить, с ходу у человека нашёл 3 race condition (я го едва знаю, так что вопросы я задавал на уровне блок-схем). РАЗУМЕЕТСЯ, там мутация из горутин, и разумеется, конкурентная. И разумеется, компилятор совершенно счастлив делать любую фигню, включая UB, без малейшего предупреждения. Типовой Си, вид сбоку.
А если не go, то что? Чтобы бинарь, чтобы быстро, чтобы на современном языке. Остаётся Rust.
no subject
Date: 2023-06-01 04:31 pm (UTC)Ну кроме шуток Common Lisp. Разве что насчёт "современного" не подходит, но лучше уж пусть новые фичи добавляют в язык опциональными third-party библиотеками с макросами и профурсетками, чем каждый понедельник учить новый нескучный синтаксис, который разработчики языка от нечего делать добавили в очередную минорную версию.
no subject
Date: 2023-06-01 06:58 pm (UTC)Я уже понял, что слаще лиспа ничего нет. Я его запишу в список технологий на изучение, сразу после русского синтаксиса 1C и индоктринации XML'ом (который я к своему несчастию знаю сколько-то, но не люблю).
А пока что мне больше нравится Rust. Визуально и технически.
О, вот, ща я тебе задам сложный вопрос по lisp'у и мы посмотрим, насколько это современный язык.
Допустим, у меня есть программа, которая зависит от библиотеки foo и bar (надеюсь, в лиспе есть библиотеки?). foo зависит от superteck версии 1.1 (не старше 2.0), а bar - от superteck версии 4.0.0+, и API superteck 1.1 и 4.0.0 различается от слова совсем.
Как ты соберёшь программу, использующую одновременно foo и bar. Покажи мне как ты запишешь зависимости в своём проекте и как резолвер их решать будет.
no subject
Date: 2023-06-01 11:17 am (UTC)no subject
Date: 2023-06-01 11:42 am (UTC)!markdown
В Rust (и в других нормально типизированных языках) принято использовать builder.
Всё то же самое, но значительно более читаемое.
На самом деле, у меня нет претензии к lisp для открывающих скобок. У меня есть претензия к закрывающим. Много, низкая плотность смысла, монотонность.
Я пишу на множестве птичьих языков, и для меня лисповые выкрутасы (во имя ast) ничем не лучше джинжевой бездны с пробелами. "Ну не шмогла лучше, любите какой есть".
no subject
Date: 2023-06-01 02:19 pm (UTC)Окей, потрём ещё за синтаксис. Clojure, другой более современный диалект лиспа, популяризовала т.н. "стрелка-макросы" ( https://clojuredocs.org/clojure.core/-%3E ). Смотри, как выглядел бы твой пример с ними (очень приблизительно, я не распарсил весь этот всратый синтаксис из него):
В твоём примере семь пар скобок, в вышеприведённом коде четыре. drops the mic
no subject
Date: 2023-06-01 02:26 pm (UTC)И я всё равно не понимаю, почему мне тут нужна открывающая скобка.
Алсо, ты пропустил кошмарик |x|x(x), который вызывает foo с ref foo, а вовсе не identity.
Более того, в выбранных примерах всё просто. Допустим, замыкания были бы не функциями, а замыканиями. Специально сделаю так, чтобы было сложнее упрощать:
no subject
Date: 2023-06-01 04:27 pm (UTC)My brother in Christ, мутабельность — это грех.
Если объяснишь, что означает вот эта залупа
в качестве аргумента функции (если я опять-таки правильно распарсил этот цыганский синтаксис), то, возможно, я даже покажу, как на лиспах это можно сделать ✨ K P A C U B O ✨
no subject
Date: 2023-06-01 06:54 pm (UTC)Рассказываю.
render принимает ссылку (shared reference) на name, а так же принимает во владение (ownership) нечто (допустим, u8 буффер большого размера), который создаётся buffer::new. В new передаётся результат выполнения get_size (допустим, это usize, то есть тип Copy), который в свою очередь считает его от reference на render.
Заметим, тут ни в одном месте нет мутабельности. & - немутабельная ссылка. А вывод buffer::new передаётся через владение, то есть после передачи в render, никто больше к нему доступа не имеет.