Alexander Grafov @siberianlaika
Я всё ещё надеюсь…
Информация
- В рейтинге
- 3 065-й
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность
Специализация
Software Developer, Backend Developer
Lead
От 640 000 ₽
Git
PostgreSQL
Docker
Linux
C
Golang
RabbitMQ
Redis
Lisp
А ведь альтернативных вариаций C довольно немало изобретено, и есть успешно развиваемые (как примеры можно вспомнить Zig или Hare). Конечно по популярности им очень далеко не только до прародителя, но и до того же Rust. Однако, в сравнении с Rust, они значительно понятнее разработчикам на C, так как исходная "база" языка оставлена, при этом дают современный тулинг (то чем хорош Rust), при этом быструю компиляцию и главное, устраняют основные проблемы, за которые ругают оригинальный С с неоднозначным синтаксисом, мутным препроцессингом и пр. Тут опять же не стоит прямо сравнивать с Rust, где логику программы приходится переосмысливать, чтобы уложить в сильно отличающуюся модель владения памятью и прочие особенности Rust. Вот в том же Hare код выглядит прям очень близко к C, но с более однозначным синтаксисом, более строгой обработкой ошибок и т.п. вроде как мелочами, но код как-то приятнее пишется и легче воспринимается (тут субъективно конечно). Жаль, что пока такие языки далеки от мейнстрима и маловероятно, что в ближайшем будущем их будут рассматривать как варианты для языка Linux kernel.
Вы открыли мне мир! :) Я как в прошлом веке научился таки вместо kill -9 использовать ":wq" (или ":wq!" для тяжелых случаев), так им и пользуюсь. Уже привычкой стало не трогать Ctl-C или Ctl-D в Vi :\
Чтобы осовременить архаично лайтовое содержание статьи добавлю актуальных ссылок, на ресурсы о современном GNU/Emacs, а не о том Emacs который воображают себе пользователи разных "современных IDE" :P К сожалению не помогу ссылками на Vim ибо практически им не пользуюсь, тут пусть местные вимеры подскажут.
И в любом случае вимеры все сгорят в адуВ общем вы поняли на какой я стороне.Учебные материалы от System Crafters: https://systemcrafters.net/guides/#gnu-emacs -- у них там всякое по подписке, но с сайта просто см. ссылки на уроки и подкасты на Youtube. Там же про всякое сопутствующее в Lisp-style, как дистрибутив GNU/Guix и прочую linux-альтернативщину :)
Living an awesome life by Sacha Chua https://sachachua.com/blog/ -- блог гиковой филлипинки, который она ведет уже два десятилетия.
https://www.reddit.com/r/emacs/ + https://www.reddit.com/r/emacsporn/ -- понятно было, что на реддите этого не могло не быть )
Популярные must have расширения, ради которых стоит всё это изучить:
https://orgmode.org
https://www.orgroam.com/
https://magit.vc/
Из трех компонентов выше можно построить как минимум бекап мозга с файловыми аттачами и версионированием :)
Рекомендуемое по личному опыту:
https://github.com/doomemacs/doomemacs (или для эстетов https://www.spacemacs.org/)
https://docs.projectile.mx/projectile/
https://github.com/Alexander-Miller/treemacs
https://emacs-lsp.github.io/lsp-mode/
https://github.com/abo-abo/avy
https://github.com/minad/vertico
https://github.com/joaotavora/yasnippet
https://github.com/flycheck/flycheck
...вообще их конечно много больше, а часть из указанных имеют альтернативы, которые не хуже, даю ссылки для привлечения внимания, разобравшись и настроив эти плагины можно получить очень удобную в навигации и для редактирования среду.
Из последнего, чем начал пользоваться только в этом году: https://github.com/s-kostyaev/ellama + https://github.com/ahyatt/llm + llama.cpp (но тут можно и внешнего провайдера подключить) -- с некоторыми навыками программирования на Elisp можно достраивать под себя LLM-ассистентов под самые разные задачи (в том числе для написания нового кода на Elisp!). Не ощущал большой пользы от нейросетей в их чатовой инкарнации, пока не обнаружил интеграции с Emacs, просто теперь много всякой рутины делается локальной LLM на видеокарте, без утомительных промптов, поскольку один раз настроив их можно добавлять как новые команды в Emacs: как выделить кашу из текста и сделать markdown-таблицу, перевести на другой язык, поревьюить код. В готовом виде это же имеется в том же Jetbrains плагинами к разным "AI"-провайдерам, но в Emacs это удобно доделывать самому, сочетая в командах код Elisp с работой LLM под свои конкретные задачи. Ну опять жe emacs doctor получил более интеллектуальную форму :)
И напоследок, старая шутка про GNU/Emacs, которую почему-то упустили в статье: https://xkcd.com/378/
Если что это не шутка, just type "M-x butterfly" в редакторе.
Ага, это вероятно самый частый аргумент в спорах о выборе IDE: всё готовое против конструктора. Так то оно так, но когда десятилетия жизни уходят на работу с кодом и сопутствующие задачи, начинаешь ценить инструменты, которыми делаешь эту работу. И понимаешь, что проще вникнуть и настроить, чем всю жизнь делать какие-то действия неудобным и длинным путем, просто потому что авторы "мейнстримного" продукта не предусмотрели другого пути. В Emacs (как и полагаю в Vim) изначально пути нет вообще, его прокладываешь себе сам, но раз проложив бегаешь по нему очень быстро :) Поэтому, наш выбор -- только Linux, только Emacs! :)
Не соглашусь, хотя на Windows не пробовал
но осуждаю:) Мой опыт это Linux и меньше Mac -- определенно, после других IDE, Emacs выглядит очень легковесно, скорость работы без нареканий даже на всяком убитом железе . Вообще же, в нём хватает старых кривых плагинов, которые что-то синхронно и медленно пытаются делать, но полезные и используемые массово плагины поддерживаются сообществом, эволюционируя в том числе по производительности. Последние лет пять много чего перевели на асинхронный режим, хотя в целом асинхронное исполненение кода в Emacs по-прежнему выглядит нестандартно. Тут бы движок бекенда радикально сменить, вероятно еще через десятки лет к этому придут :)У меня лично на одном железе установленные Emacs и Jetbrains Goland при работе по сути в одних задачах, сравнения практически всегда не в пользу последнего. Не говоря уже об удобстве, тот же Magit в Emacs -- против архачных всплывающих диалогов и иерархических меню в современных IDE. В Jetbrains хотя бы озаботились всякими вариантами поиска, но до Emacs, где на поисковых диалогах весь интерфейс, по-моему всё ещё далеко по удобству.
Однако, ковыряясь в коде на Elisp, нередко замечал всякое типа, "если Windows, то...", подозреваю неэффективность может прятаться в таких ветках, где даже внешние утилиты вызываются на разных системах разные. Всё же основное использование Emacs исторически на unix-системах.
А так, у меня к примеру установлено >300 пакетов, первый старт Emacs с ними ~2 секунды (но это дистрибутив Doom Emacs, где пакеты предкомпилируются после установки). Дальше новые окна запускаются как клиенты к emacs-server и всю рабочую сессию запуски практически мгновенные за доли секунды.
Teledildonics mode как пример плагина в Emacs: https://youtu.be/D1sXuHnf_lo?si=uo3sNGG4EJdtz9-c -- в зависимости от количества скобок в текущем Lisp-выражении увеличивается амплитуда вибрации девайса, можно оценить все ли скобки закрыты. Глубже, еще глубже, aах, бесконечная рекурсия!
Про "тяжеловесность" Emacs борода тоже уходит в прошлый век, ну это уже прям неэтично так шутить, особенно когда смотришь сколько отъедают современные IDE и средства обработки текста :)
В общем и целом, как Vim с Emacs хоронили, так и будут пытаться хоронить, их это не задевает. Врядли они окажутся в топе по использованию, но у них достаточное обширное и что любопытно, пополняющееся новичками коммьюнити, чтобы успевать адаптироваться под меняющиеся условия мира. IDE приходят и уходят, Emacs с Vim остаются :) Для меня оба этих инструмента -- это примеры успешного и качественного софта.
Тут автор перевода подразумевает видимо лицензии вроде MIT или BSD. Тогда уж не "разрешенную" (её запрещали?), а разрешительную лицензию. Хотя и "пермиссивную" пишут, тоже звучит понятно.
Несколько некорректное заявление, что модели DeepSeek V1 и V2 были малоизвестны за пределами КНР. О них конечно не писали на каждом заборе, как о разработках лидеров в этой области, как
ClosedOpenAI, Google или Meta, но поскольку модели были в опенсорсе, то они активно использовались энтузиастами и обсуждались в профильных сообществах. Судя по лайкам на huggingface или github вполне себе были известны.А вдруг экстраполяция в моделях уже более точна, чем исторические записи? И в древнем Египте на самом-то деле была постоянная армия с бронетехникой?
А Земля вообще плоская!То же от Qwen2.5-coder. Первый ответ порадовал своей железной логикой! Но с уточненным вопросом модель уже справилась :)
Ответ про сестер
** Human🧘: У Анны 3 сестры и 1 брат, сколько сестер у брата Анны?
** Machine🐱:
У брата Анны также 3 сестры, так как все сестры Анны также являются сестрами его брата. Брат Анны не
считается сестрой, поэтому число сестер остается неизменным.
** Human🧘:
Подумай. У Анны 3 сестры и 1 брат. То есть у брата тоже три сестры. Но при этом Анна тоже его сестра. Сколько всего сестер у брата?
** Machine🐱:
Вы абсолютно правы. Анна также является сестрой своего брата. Следовательно, у брата Анны 4 сестры:
3 сестры Анны плюс Анна сама.
Именно так, попробовал этот вопрос в точности в постановке автора локально, на модели Qwen2.5-Coder (32B). Сначала получил ответ с выводами как у gpt4o, только Qwen сам явно выделил момент, что выше 100-й ступени подняться нельзя, и это плюс, т.к. gpt4o эту подробность опустил, а ведь вывод он сделал, если принять неявно такое условие, верный. Это две старшие модели себе уже понапридумывали бесконечную лестницу :)
Ответ на исходный вопрос от Qwen
Давайте разберем ваше движение. Вы начинаете на 100й ступени, и на каждом шаге вы перемещаетесь следующим образом:
1 шаг вниз: на 99-й ступени.
2 шага вверх: на 101-ю ступень (но так как мы не можем быть выше 100-й ступени, вы остаетесь на 100-й ступени).
3 шага вниз: на 97-й ступени.
4 шага вверх: на 101-ю ступень (снова остаетесь на 100-й).
5 шагов вниз: на 95-й ступени.
6 шагов вверх: на 101-ю ступень (опять остаетесь на 100-й).
И так далее. Видно, что каждый раз, когда вы пытаетесь подняться на ступени больше, чем осталось до
верхней, вы остаетесь на верхней ступени. Это значит, что вы никогда не сможете уйти с верхней
ступени и, соответственно, не дойдете до нижней ступени.
Таким образом, ответ на ваш вопрос — нет, вы никогда не дойдете до нижней ступени лестницы,
продолжая эту последовательность движения.
Жаль на уточненном вопросе (с добавлением условия "Число ступеней неограничено вверх и вниз.") модель Qwen слилась. Вывод дала верный, но число шагов ошибочное, хотя выглядело всё красиво с формулами:
Заключение от Qwen по скорректированному вопросу
Понял, теперь давайте разберем вашу последовательность движений в условиях бесконечной лестницы.
Вы начинаете на 100й ступени и делаете следующие шаги:
Спускаетесь на 1 ступень: на 99-ю ступень.
Поднимаетесь на 2 ступени: на 101-ю ступень.
Спускаетесь на 3 ступени: на 98-ю ступень.
Поднимаетесь на 4 ступени: на 102-ю ступень.
Спускаетесь на 5 ступени: на 97-ю ступень.
Поднимаетесь на 6 ступени: на 103-ю ступень.
И так далее...
Общая формула вашего положения на n-ом шаге будет следующей:
На нечетных шагах (спуск): ( 100 - \frac{n(n-1)}{2} )
На четных шагах (подъем): ( 100 + \frac{n(n-1)}{2} )
После нечетного шага n, ваша позиция будет ( 100 - \frac{n(n-1)}{2} ).
Нам нужно найти такое n, при котором ( 100 - \frac{n(n-1)}{2} \leq 0 ). Это означает, что вы
достигнете или опуститесь ниже нижней ступени.
Решим неравенство:
[ 100 - \frac{n(n-1)}{2} \leq 0 ]
[ 200 \leq n(n-1) ]
[ n^2 - n - 200 \geq 0 ]
Решим квадратное уравнение ( n^2 - n - 200 = 0 ) с помощью формулы:
[ n = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} ]
где ( a = 1 ), ( b = -1 ), ( c = -200 ).
[ n = \frac{1 \pm \sqrt{1 + 800}}{2} = \frac{1 \pm \sqrt{801}}{2} ]
Приближенное значение:
[ n \approx \frac{1 + 28.3}{2} \approx 14.65 ]
Так как n должно быть целым числом, возьмем ( n = 15 ).
Проверим:
На 15 шаге (нечетное, спуск): [ 100 - \frac{15 \cdot 14}{2} = 100 - 105 = -5 ]
Таким образом, на 15-м шаге вы достигнете позиции ниже нижней ступени. Следовательно, вы
действительно доберетесь до нижней ступени, продолжив эту последовательность движений.
Ответ: Да, вы доберетесь до нижней ступени лестницы.
// формулы модель выдает в LaTeX, не знаю как это на Хабре визуализировать красиво
Верный же ответ 197 до 1 ступени (или 199 до 0 ступени) удалось получить только на просьбу явно промоделировать задачу, без формул, но это читерство :) В конце попросил оформить модель в виде кода на Go, который позволил бы проверить ответ, не вникая в формулы, тут уже модель справилась и дала простенькую программу, результаты по ней верные и легко проверяйтся. Вот это наш путь! :)
Сгенеренный код
В общем, надо тщательно задавать условие, в данном случае, что ступени могут идти вверх бесконечно, а внизу ограничены 1 или 0 (смотря до куда хотим дойти -- до пола или до первой ступени :)
Мой вывод по моделям: пока что все они выглядят сомнительно, не стоит ожидать многого, чтобы не разочаровываться. Тем не менее некоторое очарование в них есть, особенно когда формулами красиво сыпят :)
Я, например, Qwen-coder использую как помощник в IDE (Emacs + ellama) по всяким мелким задачам и результат мне нравится. Такое парное программирование с джуном-котиком :) Если ему дать несложную задачу и объяснить детали, он выдаст годный результат! Если же полениться с постановкой, то потом сам себе припомнишь "зачем я с этим связался? самому же было проще сделать". А иногда, обьясняешь-объясняешь, а он тебе "мяу" в ответ...
"Остров сокровищ" в современном издании. Начинающий блоггер Джимми находит в архиве X старый твит, как старый майнер Билли закопал диск с биткойнами. В компании криптоинвестора Трелони и криптоанархиста Ливси он отправляется на поиски. Команде криптоархеологов противостоит банда криптопиратов. Эх,
пиастры-пиастрыбиткойны, романтика XXI века!Bubbletea выглядит привлекательно, но при ближайшем рассмотрении не так уж очевиден. Кому как, а мне их примеры слабо помогли -- обходил либу стороной, пока не попался детальный разбор с советами, как строить приложение на Bubbletea: https://leg100.github.io/en/posts/building-bubbletea-programs/ -- тут все в одной статье и мне оно показалось более понятным, чем доки в проекте. Во всяком случае по этой статье получилось сделать что-то себе полезное и рабочее на этой либе.
Здесь в статье на хабре тоже часть нюансов работы с либой освещена, за что автору отдельное спасибо!
Да вот наплевать, насколько коммерческий интерес у самого Горшенина в этом деле! Очевидно, что популярные блоги это свой вид коммерции и где-то там рядом идет маркетинг, возможно не всегда искренний ("искренний маркетинг", самому смешно стало). Однако, Максим поднимает важную тему честности в бизнесе и особенно в болезненной теме импортозамещения -- даже если местам это лишь докапывание до конкурентов, это уже полезно. Ну и конкуренты не отстают в ответах, к примеру статьи "товарищей юристов" на хабре тоже с кучей технических подробностей про компании которые в блоге Горшенина хвалят. Так что, в принципе придание публичности всей этой теме импортозамещения это уже некоторая надежда, что дело хоть как-то будет двигаться, а не тихо закисать за закрытыми дверями кабинетов! Так что желау успехов и Максиму Горшенину и его оппонентам. Деритесь дальше, лишь бы это было в рамках закона :)
Полагаю обычные юристы и инженеры, никакой мистики. Да и кто бы они ни были, проблема в самом проприетарном подходе. При том что возможное влияние продукта на общество пока не предсказуемо. Столлмана на них нет.
Только уже давно X-Plane 11 & 12, это актуальные версии. А так согласен, MFS по дефолту привлекает "туристов", поделать красивые фотки. А в X-Plane для фотореализма самому плагины искать (и отдельно покупать).
Когда-то купил парочку Steam controller на Amazon, до сих пор живы и работают в разных играх. В Steam для популярных игр всегда готовые настройки, для прочих настраивается несложно, в целом с поддержкой нет проблем. С гироскопами, тачпадами к нижними кнопками - для меня это лучший из геймпадов, особенно после унылых геймпадов для Xbox. Интересно будет посмотреть на продолжение.
Может быть металлический чехол и мощный электромагнит сбоку от спящего человека, который включится при детектировании падения? Как вариант небольшой направленный взрыв... // затем прочел комментарии дальше и понял, что это уже тоже придумали ;)
Да я без претензий на первенство изобретения, было бы даже удивительно, если бы не изобрели. Спасибо за ссылку :) Жаль прототип там несколько тормозной:
Рука усредненно полметра, но для чтения приближают девайс к глазам на 30-40 см. Значит подушки должны сработать уже через ~20см падения.