Pull to refresh
30
0.1

Пользователь

Send message

Он как бы общего назначения, то есть на нём можно сделать что угодно. Меня скорее удивляют новости, мол то и то переписали на раст, хотя куда логичнее было бы пиарить новые проекты, которые не являются простыми аналогами существующих уже 10 летия утилит.

Я вот не очень понимаю, почему постоянно появляются новости по типу: на rust написали аналог %программа-нейм%. Люди любят писать свои аналоги ради получения опыта, это понятно, но в чём смысл это освещать, и почему освещаются в основном аналоги, написанные на rust? Едва ли кому-то захочется менять tmux или что-то ещё проверенное временем на очередной аналог на rust/zig/odin/ваш любимый язык.

Я бы не назвал это стагнацией. Если у вас есть хороший инструмент, который решает ваши проблемы, зачем его менять? Если есть какие-то раздражающие моменты, то их надо устранять, если нет, то зачем пробовать новые/плагины? Насчёт telescope согласен, но о нём я узнал, вбив в гугл что-то вроде vim file search, как раз потому что мне был нужен поиск файлов, то есть была причина искать новый плагин. О treesitter я узнал из новостей, попробовал и выкинул, потому что подсветка стала хуже (возможно, мне просто повезло с используемыми языками)

Кроме того у меня был случай, когда какой-то плагин давно не обновлялся не потому что идеальный, а потому что его давно забросил автор.

В таких случаях спасает гугл. В остальных может помочь просмотр конфигов других разработчиков. Я о некоторых полезных фичах, например об относительной нумерации, так и узнал, посматривая конфиг одного разработчика, который делает интересные мне проекты.

где смотрите новые плагины, тренды и т.д?

Я нигде не смотрю, один раз настроил и пользуюсь. Если сталкиваюсь с какой-либо проблемой, то гуглю как её решить. Зачем гнаться за трендами и искать новые плагины, если итак всё работает? От awesome-neovim и прочих готовых конфигураций больше вреда, чем пользы. Свою конфигурацию я вдоль и поперёк знаю, потому что каждую строку сам писал, а в готовых ещё и разбираться надо, плюс там куча лишнего. В этом по-моему и есть плюс конструкторов типа вима, емакса и т.п. - вы добавляете только то, что вам нужно и так, как это вам нужно.

Я не могу с вима уже никуда уйти, например. В своё время пользовался им, потому что комп ничего другого не тянул, сейчас пользуюсь, потому что работаю с разными языками, с которыми вим отлично справляется (под большее количество из них впрочем и IDE нет). Но в основном это дело привычки. Я бы не сказал, что работать в IDE лучше, чем в vim и наоборот.

Честно, лучше бы оно осталось. Популярность у ресурса была бы меньше, но меня, как пользователя, больше интересует качество наполнения, а не количество

Если публиковать то, что нравится вам, то боюсь, что на Хабре будет выходить лишь по 1-2 статьи в день. Такой Хабр даже вам во времен будет не нужен.

Лучше маленький гриб, но хороший, чем большой, но плохой.

Проблема не в том, что какие-то статьи нравятся мне или нет. Проблема в содержании статей. Они поверхностные, они избиты и перепечатаны разными людьми уже тысячи раз. Для примера попробуйте погуглить интересующий вас вопрос, и вы найдёте много одинаковых статей на разных сайтах, зачастую поверхностных и на вопрос не отвечающих. Вот такие статьи и раздражают. К качественным статьям по неинтересным мне темам я отношусь спокойно, потому что не всё должно быть интересно лично мне

Ну так проблема в том, что писать много и хорошо почти невозможно. Вот и тут ситуация такая же - куча поверхностных статей, абсолютно бесполезных и неглубоких. badcasedaily1 лишь один из примеров тех, кто такие статьи пишет. У меня в чёрном списке кроме него ещё несколько таких людей есть. В целом пришли к тому, что читать хабр без чёрного списка невозможно. Подписываешься на интересный тебе хаб, а там большая часть контента - мусор, создаваемый, как правило, одними и теми же людьми

найдите в телеге группу

Уже сложнее, чем пайтон. Совершать столько усилий ради языка, который почти нигде не используется, мне лень.

На классическом Бейсике

Я имел дело только с Visual Basic, там таких проблем не было. Насчёт простоты оберона могу только поверить на слово, так как дел с ним не имел

Лазить в кишки этого языка школьнику...

Не помню, чтобы мне приходилось лазить. Я не питонист, но периодически пишу простые скрипты. Полагаю, что школьникам с их задачами тоже лазить не придётся. Как по мне тому же школьнику сложнее разобраться, а где мне взять компилятор оберона и какой именно?

Чисто ради интереса спрошу, чем оберон лучше того же паскаля, питона или бейсика? Питон как по мне очень простой и вполне подходит для обучения ещё и промышленным является, паскаль я особо не трогал, но он, вроде как, предшественник оберона. Бейсик очень простой, у меня в своё время сложностей, связанных конкретно с использованием бейсика в качестве обучающего языка не было.

Оберон я как-то хотел потрогать, но так и не понял, какой компилятор использовать и забил

Сразу оговорюсь, что я не призываю на этих языках разрабатывать (хотя это было бы неплохо), нужны очень веские причины, чтобы принять такое решение. Но знакомство с ними — важная часть профессионального роста.

Однако, после прочтения не понятно, почему стоит попробовать форт. Тут даже примеров кода на нём не было. Было интересно прочитать историческую справку, но всё равно хотелось бы примеров и подтверждения данного в начале тезиса. Сразу скажу, что немного на форте я писал, так разные простые задачки чисто для гимнастики, но не сказал бы что его прямо стоит попробовать. Гораздо больше мне в своё время сломали шаблон язык ассемблера и хаскель.

Да, только написать интерпретатор bf - это на уровне решенения линейного уравнения, т.е. настолько просто, что писать об 100500 раз не стоит. Плюс, как вы могли заметить, в программе автора нашли несколько значительных недочётов. Ещё сам автор, как бы, написал, что статью он писал не для того, чтобы чем-то интересным поделиться, а чтобы получить инвайт.

Решил перед полным прочтением написать аналогичную программу самостоятельно. Вот, что получилось:

; heap[0] - number, heap[1] - last_number

push 0
dup

; [sum, count]
loop:
    push 0
    dup
    getnum
    load

    ; [number, sum, count]
    dup
    jl check_input

    ; [number, sum, count]
    dup
    push 1
    swap
    store ; heap[1] = number

    ; [number, sum, count]
    add
    swap
    push 1
    add
    swap

    ; [sum, count]
    jmp loop

check_input:
    ; [-1, sum, count]
    drop
    swap
    push 2
    sub

    ; [count - 2, sum]
    jl wrong_input

    ; [sum]
    push 1
    load
    dup

    ; [last_number, last_number, sum]
    jz zero_division_error

    ; [last_number, sum]
    sub

    ; [sum - last_number]
    dup
    push 1
    load

    ; [last_number, sum - last_number, sum - last_number]
    mod

    ; [(sum - last_number) % last_number, sum - last_number]
    push 1
    load
    swap

    ; [(sum - last_number) % last_number, last_number, sum - last_number]
    push '('
    push 't'
    push 'n'
    push 'u'
    push 'o'
    push 'm'
    push 'a'
    push ' '
    push 'd'
    push 'e'
    push 'r'
    push 'e'
    push 't'
    push 'n'
    push 'e'
    push 15
    call print_string

    ; [(sum - last_number) % last_number, last_number, sum - last_number]
    jz success

    ; failure [last_number, sum - last_number]
    swap
    putnum

    ; [last_number]
    push ' '
    push 'y'
    push 'b'
    push ' '
    push 'e'
    push 'l'
    push 'b'
    push 'i'
    push 's'
    push 'i'
    push 'v'
    push 'i'
    push 'd'
    push ' '
    push 't'
    push 'o'
    push 'n'
    push ' '
    push 's'
    push 'i'
    push ' '
    push ')'
    push 22
    call print_string

    putnum
    push ' '
    putchar

    call without_remainder
    push '\n'
    putchar
    exit

wrong_input:
    push '\n'
    push 't'
    push 'u'
    push 'p'
    push 'n'
    push 'i'
    push ' '
    push 'd'
    push 'i'
    push 'l'
    push 'a'
    push 'v'
    push 'n'
    push 'i'
    push ' '
    push ','
    push 'r'
    push 'o'
    push 'r'
    push 'r'
    push 'e'
    push 21
    call print_string
    exit

zero_division_error:
    push '\n'
    push 'r'
    push 'o'
    push 'r'
    push 'r'
    push 'e'
    push ' '
    push 'n'
    push 'o'
    push 'i'
    push 's'
    push 'i'
    push 'v'
    push 'i'
    push 'd'
    push ' '
    push 'o'
    push 'r'
    push 'e'
    push 'z'
    push 20
    call print_string
    exit

success:
    ; [last_number, sum - last_number]
    swap
    putnum

    ; [last_number]
    push ' '
    push 'd'
    push 'e'
    push 'd'
    push 'i'
    push 'v'
    push 'i'
    push 'd'
    push ' '
    push 's'
    push 'i'
    push ' '
    push ')'
    push 13
    call print_string

    call without_remainder

    push ' '
    push 'y'
    push 'b'
    push ' '
    push 4
    call print_string

    putnum
    push '\n'
    putchar
    exit

; void without_remainder(void)
without_remainder:
    push 'r'
    push 'e'
    push 'd'
    push 'n'
    push 'i'
    push 'a'
    push 'm'
    push 'e'
    push 'r'
    push ' '
    push 't'
    push 'u'
    push 'o'
    push 'h'
    push 't'
    push 'i'
    push 'w'
    push 17
    call print_string
    ret

; void print_string(int length, char *str)
print_string:
    swap ; swap length with char
    putchar

    ; length -= 1
    push 1
    sub

    ; if (length == 0) return
    dup
    jz end_print_string
    jmp print_string

end_print_string:
    drop
    ret


Вот ссылка на интрепретатор с кодом: https://tio.run/##pVVJDsIwDDyPX@EPcGD5EEJIcEMCieeXZpzFCS4rFarr2BMvE@d@Ot@O18v@cJwmVRU@mv@iEKRfkueXrSnsS5E@BNRkmf5iJpLX@CIQ3Ys0a0E/FFTuBDQbc0eOJ29polY4atG0Taxai1kt4ALgsBpADWfQRvt6A8zZckWyraQ4MOxJnxpTxhlicuHraEpsFykCLQLblqsPpk8KY36dabBXW3c6lsAw@vzTurSeKLJKyJaK8xQaut5EXcCb5roydDUNS/YS1vl7nrTiOW1IJAqFKJY5xsx/wl2oDEKG/MmbOK7uMLiG6pDv4tmIz2PcyK9Y/iF1fWscTz8@vPpM/IHjL4um8Yjp9tRotAW48SFfGpPxQOhqXWvhxpyxt3RTyyVQJzs4/2G3Aa@O5DRNG9nKTlbrBw

Получилось 1635 байт whitespace. А теперь пойду читать

Я тоже недавно сделал примерно такой же язык, транслирующийся в whitespace, для написания программ в рамках adventofcode. Выглядит так:

; Push "Hello world\n" to the stack

push '\n'
push 'd'
push 'l'
push 'r'
push 'o'
push 'w'
push ' '
push 'o'
push 'l'
push 'l'
push 'e'
push 'H'

push 12 ; string length

loop:
    swap ; swap length with char
    putchar

    ; length -= 1
    push 1
    sub

    ; if (length == 0) exit
    dup
    jz end
    jmp loop

end:
    exit


Настроить самому требует больше времени и сил, чем настроить чужой конфиг под свои хотелки

Ну не знаю, в этих ваших astra/nvchad надо дополнительно разбираться, при том профита это не даст. У меня же простой конфиг на 200+ строк, в котором легко разобраться. Не помню, чтобы сильно сложно было его писать. Ему уже лет 8 (если не учитывать переписывание с vim script на lua, но это заняло буквально два часа), его легко дополнять, если вдруг надо, а главное нет ничего лишнего.

Information

Rating
4,130-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Бэкенд разработчик
Средний