Pull to refresh
26
14

Пишу про Rust, Golang и внезапно — про мозг

Send message

чего только не придумают

Rust не гарантирует TCO. Хотя для некоторых простых случаев, как с Fibonacci, оптимизации компилятора могут помочь, но это скорее редкий бонус, чем прям специфика языка.

В Rust есть обходные пути, тот же crate tailcall, который позволяет добавлять аннотацию хвостовой рекурсии через trampoline, но это больше костыль, чем полноценная функция языка. Также иногда возможны оптимизации через LLVM.

Основное, что важно понимать: автоматической TCO в Rust нет, и полагаться на неё без явных проверок не стоит

Да, в Rust надо прописывать типажи для шаблонов, зато сразу ясно, что и где можно вызывать, и без сюрпризиков на этапе компиляции. В C++ свободы больше, но и баги могут всплыть неожиданно (по моему опыту).

&str — это как раз оптимальный выбор для аргументов, когда нам не нужна лишняя аллокация. &str — легковесная ссылка, работает быстрее и без лишнего копирования данных, так что для большинства задач это именно то, что нужно. Rust вообще сделан так, чтобы по возможности избегать лишних аллокаций, и &str здесь идеально вписывается.

А вотToString можно использовать его для некой гибкости, но он сразу вызывает to_string(), а значит, создает новую строку. А для проекта, где скорость к примеру критична, это не лучший вариант — если нужна просто ссылка, то лишняя аллокация с ToString и to_string() добавляет ненужную нагрузку

Отличный комментарий, но не согласен, что unwrap() и expect() вообще нельзя использовать в продакшене. Наоборот, они полезны в ситуациях, где данные гарантированно корректны, и отсутствие значения указывает на баг, а не на ожидаемую ситуацию. Например, если заранее проверили данные и знаем, что значение точно есть, unwrap() явно упростит этот код, избавляя от ненужных проверок и сигнализируя, что отсутствие данных здесь просто невозможно.

А с expect() можно добавлять кастомные сообщения об ошибках.

Но если ошибка вполне ожидаема и требует обработки, то ? или Result конечно подходят лучше.

Советую прочесть эту статью, которая раскрывает эту проблему https://blog.burntsushi.net/unwrap/

Спасибо за поправку, Вы абсолютно правы! Я использовал Box<dyn Processable>, чтобы показать саму идею динамической диспетчеризации и владения объектом — иногда это нужно, когда надо передать объект с динамическим трейт-типом. Но для большинства случаев и правда лучше обойтись ссылкой без аллокации в куче.

Ваш вариант с &dyn Processable проще и экономичнее, так что спасибо за напоминание — добавлю его в статью как способ оптимизации!

Как будто мат в заголовке выглядит несуразно

А как вы вообще дошли до такой идеи — заняться настройкой хода часов? Это больше из личного интереса или есть какое-то практическое применение, для чего такая точность важна в вашей жизни?

Если статья предназначена для «самых маленьких», то терминов тут чересчур много. Короткие, понятные примеры — вот что нужно было, а не этот теоретический справочник на полчаса чтения

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

По алкоголю — да, чистый эффект Балмера! Возможно, дело не столько в бокале вина, сколько в том, что у таких людей просто меньше факторов стресса или других рисков, что и поднимает когнитивку.

В каждом виде животных есть разные уровни обучаемости, и это не всегда связано с интеллектом в привычном смысле. То, что кто-то не выполняет команды как собака, ещё не значит, что он 'тупой'.

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

И на счёт симбиоза: кошки, как и люди, выбрали удобное для себя поведение. Они научились не охотиться, а просто ждать еду, мурлыкать и приносить эмоциональный комфорт. Это тоже ум в определённом смысле — раз они так хорошо приспособились жить с нами.

Так что, по сути, кошачий ум просто другой, более независимый. А вот шкала, как по мне, сильно зависит от того, что именно ты хочешь от питомца!

Интересное замечание! Насчёт раннего формирования — действительно, у котов, как и у людей, есть так называемые «критические периоды», когда закладываются базовые связи в мозге. Но даже после этого пластичность остаётся, и мозг продолжает адаптироваться под окружение, просто не так кардинально.

Про котов из разных условий, рожденных на улице и в доме, — отличная идея для сравнения. Если честно, немного завидую японским котам, ведь тамошний уровень «кошачьего быта» им явно повышает качество жизни

Ну, если поквантовать бит до 6, то да, выходит внушительно, но мозг — это не просто "винчестер с весами". В мозгу веса меняются, переподключаются, и часть данных хранится "динамически" — в сигналах, паттернах активности и химических процессах. Так что никакой SSD тут не прокатит xd

Да, у собачек по разным исследованиям нейронов в среднем в два раза больше. Но это не делает кошек хуже. У них просто свой стиль: быстрее усваивают информацию, пусть и с меньшей глубиной. Интеллект важен не тем, сколько нейронов, а тем, как они работают и применяются (это касается даже нашего человеческого рода).

Про собак явно будет больше материала в будущем, с ними очень много исследований.

Классная цитата! Но тут мы говорим не просто про «смотрим на дым», а скорее про «ставим фильтры и регулируем выхлоп». Сенсор не только измеряет электрические сигналы, но и позволяет вмешиваться в работу мозга с помощью ультразвука. Так что это уже не просто пассивное наблюдение

Зачем каждый раз спавнить поток для каждого коннекта? Это ж антипаттерн, да и ресурсы так сжигаются на ура. Про асинхронный подход автор явно забыл — ведь можно было взять Tokio и легко избавиться от этого костыля с потоками. И да, весь этот подход точно не годится для продакшна

Information

Rating
1,090-th
Location
Aisaroaivve, None, Норвегия
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior
Rust
High-loaded systems