Как стать автором
Обновить
4
0.1
Alexander Grafov @siberianlaika

Я всё ещё надеюсь…

Отправить сообщение

А ведь альтернативных вариаций 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://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. Спускаетесь на 1 ступень: на 99-ю ступень.

  2. Поднимаетесь на 2 ступени: на 101-ю ступень.

  3. Спускаетесь на 3 ступени: на 98-ю ступень.

  4. Поднимаетесь на 4 ступени: на 102-ю ступень.

  5. Спускаетесь на 5 ступени: на 97-ю ступень.

  6. Поднимаетесь на 6 ступени: на 103-ю ступень.

  7. И так далее...

Общая формула вашего положения на 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, который позволил бы проверить ответ, не вникая в формулы, тут уже модель справилась и дала простенькую программу, результаты по ней верные и легко проверяйтся. Вот это наш путь! :)

Сгенеренный код
package main

import (
	"fmt"
)

func main() {
	startStep := 100
	currentStep := startStep
	var n int

	for {
		n++
		if n%2 == 1 { // Нечетный шаг: спуск
			currentStep -= n
		} else { // Четный шаг: подъем
			currentStep += n
		}

		if currentStep <= 0 {
			break
		}
	}

	fmt.Printf("Доберешься до нижней ступени на шаге %d.\n", n)
	fmt.Printf("Твоя позиция на шаге %d: %d\n", n, currentStep)
}

В общем, надо тщательно задавать условие, в данном случае, что ступени могут идти вверх бесконечно, а внизу ограничены 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. Интересно будет посмотреть на продолжение.

Может быть металлический чехол и мощный электромагнит сбоку от спящего человека, который включится при детектировании падения? Как вариант небольшой направленный взрыв... // затем прочел комментарии дальше и понял, что это уже тоже придумали ;)

Да я без претензий на первенство изобретения, было бы даже удивительно, если бы не изобрели. Спасибо за ссылку :) Жаль прототип там несколько тормозной:

система срабатывает примерно после 90 см свободного падения.

Рука усредненно полметра, но для чтения приближают девайс к глазам на 30-40 см. Значит подушки должны сработать уже через ~20см падения.

1
23 ...

Информация

В рейтинге
3 065-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Software Developer, Backend Developer
Lead
От 640 000 ₽
Git
PostgreSQL
Docker
Linux
C
Golang
RabbitMQ
Redis
Lisp