All streams
Search
Write a publication
Pull to refresh
4
0.4
Send message
Кроме прочего не упомянут вот такой трейд-офф:
+ Микросервис полезен тем, что он «бесплатно» даёт тебе протокол взаимодействия (не бесплатно, конечно, но даже самые говнокодеры вынуждены его делать).
— Микросервис плох тем, что внутри монолита правильность передаваемых данных контролируется компиляторами, а в микросервисах — формальный контроль отсутствует, только «глазками». Иногда бывает весьма грустно.
>> Поэтому нет смысла говорить о натуральном и химическом витамине C, глицерине или другом веществе.

Странно, что в ответ на ваши «все кто изучал химию знают» и «всегда» и «нет никакого смысла» в комментариях ещё не упомянули хиральность.
Иногда разрешающей способности наших приборов не хватает, чтобы понять, что вещества на самом деле не одинаковы.
макросы vs метапрограммирование, которое позволяет инстанцировать (подставить в зависимости от шаблона) реализацию для конкретных типов, а не для (..., char *elem, size_t elem_size).

ПС
А уж как интересно, когда у вас в C-структуре есть паддинг (заполненный мусором) и вы считаете одинаковые элементы разными ;)

(т.к. на код ревью в реальности нет доступа ни к исходникам ни к IDE)


На CodeReview есть (и должен быть) доступ и к исходникам и к IDE.

Другое дело, что на практике: если тебе пришлось выкачивать ветку, чтобы разобраться что же CodeReview делает — это признак что в процессе что-то не так (да может быть это сложная задача в сложной предметной области, но на каждую такую «необходимую» сложную задачу приходится несколько где человек просто поленился нормально разбить свои правки).

Вы, наверное, очень культурный человек, — сужу по тому, что в вашем комменте не указано место, куда вы этих чудаков послали.
А можете дать ссылку на то обсуждение (или ключевые слова куда гуглить, потому как мне нагуглить что-то хорошее не удалось).
>> Сделать чтобы трубку от неизвестных всегда снимала Siri

Это предложение «сделать на будущее», или есть реальная возможность так сделать (беглый гуглёж не выдал релевантных ответов).

Я думаю мой ответ на ваш комментарий будет точно таким же.
habr.com/ru/post/532660/#comment_22547996

Насколько эти «всего две сложные концепции» отражаются на скорости написания кода \ сложности поддержки когда вы уже достаточно освоились с языком?

Да согласен.

А вы можете оценить, сколько реально стоят, в % скорости разработки, эти гарантии компилятора (к тому же абсолютных гарантий не бывает)?

От себя замечу, что в моей практике UB — скорее раздражающий фактор (2 раза в год по 2 суток отлаживаться — 2% времени разработки), чем сильно сказывающийся на скорости разработки.
Есть вроде такой психологический эффект (эволюционно он понятен), когда редкое, но сильное вознаграждение \ наказание — запоминается непропорционально сильно реальному влиянию.

Также добавлю, что в моих реалиях ad-hoc полиморфизм востребованее, чем traits. Хотя «идейно» traits конечно, прекрасны.

Update:
PsyHaSTe
Также: а насколько эти «только две сложные концепции» отражаются на скорости разработки?
Спасибо.

Отмечу только, что это было не «помогите написать односвязный список»: я интересуюсь Rust'ом не по работе, так что наберу language mastery понимание придёт.

Это был ответ PsyHaSTe который просил пример «пример на что компилятор ругается». Вот пока не наберёшь достаточную language mastery (не знаю как каноничнее выразится) — много сложного.

А когда наберёшь — а чем это будет принципиально отличаться, от С++ (я утрирую конечно, но насколько сильно?):
— C++: не используем всю мощь языка, а кодим конкретными «относительно безопасными» шаблонами, где вероятность UB минимизирована (как минимум под наш компайлер)
— Rust: не используем всю мощь структур данных, а кодим конкретными, легко реализуемыми в Rust шаблонами где наткнуться на спор с borrow checker невелика.
Можно я приведу?
Оговорюсь: у меня от Rust'а неоднозначное ощущение. Не такое как у автора корневого коммента, скорее: «если изучить Rust, то на C++ начинаешь более осознанно писать более безопасный код, но сам Rust я не очень понимаю к чему: для мелких утилит я всё держу в голове. Для достаточно больших проектов — оверхед написания, уже весьма большим получается (и это ещё мне непонятно, насколько вообще ± системные хуки писать можно)».

Так вот есть ring зацикленный список (желательно с головой).
На мой взгляд он востребован почаще двусвязного списка. Так вот реализовать этот самый ring на Rust — задача которая у меня не получилась (разумеется я только изучаю Rust). Например я вообще не понимаю где там WeakPtr ставить.
я так понимаю (пример может быть не очень удачный) это что-то типа Lombok, но прямо с раскрытием всех аннотаций после написания.

ПС
Хотя сам признаю, что конкретный пример скорее неудачный. Потому, что в Java не только писать многословно, но и читать избыточные интерфейсы неудобно.
Я скорее про то что мог бы иметь в виду комментатор.
Какая разумная пунктуация в языке!
Я серьёзно.
Извините я не очень хорошо знаю Rust, но в последнем случае разве приведённые сигнатуры ф-ий эквивалентны?

fn foo<'a, T: FromStr, I: IntoIterator<Item = T>, F: Fn(T) -> bool>(
    self: &'a Self,
    first: T,
    callable: F,
    iter: I,
) -> Result<&'a T, T::Err> {
    // ...
}


fn foo<T, I>(&self, first: T, callable: impl Fn(T) -> bool, iter: I) -> MyResult<T>
where
    T: FromStr,
    I: IntoIterator<Item = T>,
{
    // ...
}


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

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

Объясните пожалуйста кто знает.
Вы знаете этот момент меня тоже всегда смущал.

— множество конечных строк — конечно
— множество бесконечных строк — континуально (2 ^ |N|).

Почему все пишут, что мн-во строк счётно?
Представьте, как здорово набрать ps или top в сеансе WSL и увидеть рядом процессы Linux и Windows, причём любой из них можно убить командой kill?

Вызвали kill, который должен доставить сигнал 9 приложению.
Что делать «винде» дальше?
Вообще я периодически запускаю «маленькие» числодробилки на рабочем компе (а не на сервере).
Так вот если они требовательны по памяти, то под линукс процесс просто жрёт всю память и переводит комп в неюзабельное состояние (буквально задачу минут 5 убивать можно).

На винде же для того же приложения (в похожей кофигурации) просто память не выделяется и краш процесса.
Так что и минусы часто оборачиваются плюсами.
а вы про какой vim (через WSL) или про vim for Windows?

Просто нормально настроить второй (отредактировать .gvimrc чтобы он поддерживал все те же операции, что и линуксовый) у меня в своё время не получилось.
А сильно ли «самооценки» разработчиков отличаются от «оценок» руководителей?

И в какую сторону (я бы лично ожидал, что будут занижать собственные самооценки)? Есть ли в планах выравнивание «оценок» и «самооценок»?
В примере по-моему не сеньор, а перемудривший джун.
Единственный значимый вопрос — возможно ли сохранение ссылки на элемент, с гарантией последующего доступа, ну и про кофе, конечно
А вот разумный вопрос — можно ли возвращать FLT_MAX при отсутствии элементов не прозвучал.

Но даже в этом случае можно было бы просто задать вопрос.
Вас всё-таки нанимают для решения проблем бизнеса, а не сидения в башне из слоновой кости.

Information

Rating
2,201-st
Registered
Activity