Я каждый божий день вижу O(n^2) вместо O(n) в code review. В подавляющем большинстве случаев люди вообще не понимают что с кодом что-то не так.
Приложение как-то шевелится, ибо N не столь велико. Плюс раз в квартал кто-нибудь исправляет этот квадрат (а иногда и куб) и наверное даже получает премию. Там прямо целое расследование проводится, с performance marker-ами. Отчёты пишутся. Графики "было\стало" рисуются. В ладоши хлопают и лайки под постами ставят. Смотрите как оптимизировали.
И лишь немногие смотрят на это со стороны с facepalm-ами. Стоит поднять эту тему - сразу слышишь про preliminary optimization is the root of all evil.
Вот банальщина, которую прочитал прямо сегодня. AI генерирует по токенам свой ответ. Надо этот ответ передавать с сервера на клиент. Передаём весь текст на каждое обновление. Квадрат на ровном месте. Обсудили. И кажется никто исправлять пока не хочет. "Не ну а чо, пока тянем же. Я проблему в DD не вижу".
Мне такое даже в репу пушить было бы стрёмно.
Иногда мне кажется, что software development проклят.
Ну mixin-ы как правило одноуровневые и в принципе подаются как "кусочек переиспользуемой имплементации". Типа как посолить блюдо. А множественное наследование в классах иерархическое и каждый класс считает себя главным.
Попробовал ответить на вопросы будучи TypeScript \ JavaScript разработчиком. Провалил всё или почти всё. Особенно удивило поведение default-ных значений в функции.
После прочтения статьи не могу сказать, чтобы у меня сложилось ощущение, что вы спрашиваете что-то прямо полезное.
Порядок выполнения сравнений. А так код пишут? Это идиоматичный python код или просто выпендрёж?
К чему это я? Вроде 15 лет пишу на JS/TS. Но порядок операций не знаю и заучивать не хочу. Если у меня есть сомнения - ставлю скобки. Prettier их потом сам уберёт если лишние были. Зачем мне вот этим голову забивать? Рискну предположить что в Python-е также.
Множественное наследование и порядок resolve-инга колизий имён. Оно вам вообще нужно? За множественное наследование в Python ногами не бьют?
К чему это я? Раньше на собеседованиях задавали каверзные вопросы по prototype-based наследованию в JS. А там есть где закопаться. Но уже тогда это был скорее мёртвый груз. Сейчас с массовым использованием class-ов, познания в прототипах на практике нужны самые минимальные.
Словарь и мутабельный объект как ключ. Вроде и полезно знать. Но тут правильно отметили, что если такой код падает ещё до выполнения с внятной ошибкой, то такой пробел не выглядит чем-то прямо стрёмным.
И мега-опытный человек с 15 годами опыта, который переключился на Python пару лет назад просто не будет знать таких нюансов. Отбрить его из-за такой глупости...
Пример с генераторами. Ну примерно как и со словарём. Полезно знать, но ценность не высока. В JS тоже есть генераторы. Кому-то по долгу службы нужно работать с ними (а то и с асинхронной версией) каждый день. А кому-то никогда. От задач зависит. Генераторы штука в себе.
Пример с дефолтным значением аргумента в функции. Вот это пожалуй единственный серьёзный аргумент. Про такие подставы нужно знать.
Эпилог: при найме вы по сути отвечаете себе на простой вопрос - сий кандидат снимет с моих плеч больше головняка, чем добавит? Или нет? Если да, торгуемся по зарплате. Если нет - мы вам не перезвоним. И теперь вопрос - знание неких контринтуитивных нюансов языка, редко используемых на практике, это правда существенная часть вашего "головняка"? Или может вам остро нужен товарищ, который перекопает половину кодовой базы, исправляя ошибки архитектуры? Может лучше спросить что-то относящееся к тому, чем он будет заниматься в рабочее время?
Удачный пример вопроса по базе на примере Javascript:
^ Это база? О да. Это используется на практике? Да каждый божий день. Если кандидат ответил не правильно и даже после подсказки не догоняет что не так, это нам о чём-то говорит? О да, это говорит, что он вообще не понимает что тут происходит и вероятно верит что [...a] копирует объект в глубину. А коль скоро он в это верит мы легко делаем вывод, что JavaScript человек знает на самом поверхностном уровне. А нам это в целом важно? Более чем. Не понимая таких вещей придётся в каждом пул-реквесте под микроскопом его код проверять. Проверено практикой.
И подобных вопросов можно задать много. Ну если хочется базу проверить.
Скорее от "preliminary optimization is the root of all evil". Народ то в курсе. Просто всем плевать. Загляните в комменты в этой моей статье: Обращение к Javascript-сообществу: перестаньте писать квадраты. Предупреждаю - можно потерять веру в человечество. Пока вы сортируете массивы, народ пишет квадраты и кубы, ковыряя пальцем в носу.
Причём народ массе своей с дипломами. И о BigO в курсе. Просто им пле-ва-ть.
Бинарный поиск в отсортированном массиве hashmap в смысле времени выполнения не обгонит до практически значимых величин никогда
Всё же бинарный поиск это частный случай. Нужно формировать массив, сортировать и в последствии не трогать. Доступ через бинарный поиск. Мне пока не попадалось, чтобы в prod-ready коде кто-то к этому прибегал для уменьшения константы.
HashMap \ HashSet просто удачное решение по-умолчанию.
В 99% случаях речь идёт о "plain unsorted array" vs "map".
Ему никто об этом не говорил, а самостоятельно до таких размышлений дойти сложно, особенно когда надо работать прямо сейчас, а не размышлять над теорией, за что продуктовой команде не платят. Ну, естественно, это однажды выстрелило.
ВУЗ слабая помеха к тому чтобы не знать о race condition. Многочисленные собеседования тому свидетельство. Профильный ВУЗ даёт скорее дополнительный шанс на то, что человек об этом слышал (и уже забыл).
В то же время как человек, который вместо 5 лет беготни от деканата до принтера поработал в нормальной конторе, о race condition уже в курсе. Тупо из практики, code review и внушений от тимлида. Отсюда и следствие, что при выборе кандидата опыт ставят на 1-ое место, а наличие корочки смотрят только если кандидат буквально вчера этот самый ВУЗ окончил. И то, на всякий совпроводительные ссылки с home project-ами будут смотреть куда пристальнее.
Ваши логические заключения имели бы куда больше смысла, если бы наличие диплома существенным образом коррелировало с реальными навыками и знаниями. На практике это просто один из многих факторов.
Большая часть того, что вы перечислили, входит в учебную программу по программной инженерии. Встаёт вопрос о специальности
Моя специальность называлась "Информатика". Часть из написанного входила в перечень. А толку? Мало ли что в него входит.
Ну и я не отрицаю, что бывают вузы, дающие образование низкого качества.
Давайте начистоту. Не "бывают", а практически все. Тут все носятся с тремя названиями. Смешно читать. На условные 250млн населения бывшего СССР три вуза? Почти все современные СНГ ВУЗы это просто попытка удовлетворить спрос, ибо "кто ты без диплома?".
Я за 25 лет практики не припомню ни одного случая, чтобы мне понадобился hashmap
Надеюсь это была шутка.
где часто очень важна константа.
Недавно коллеге показал где проходит threshold где Map обгоняет массив. ЕМНИП, то у меня получилось на 10 элементах (JS).
Практика без теории мертва, как и теория без практики
Вы сами то в это верите? :) Подавляющее большинство ВУЗов СНГ не дают никакой теории и навыков. Однако программисты получаются нормальные, и потом в этих FAANG-ах работают. Каждый ж 1-й самоучка. Что в дипломом, что без.
На практике теория познаётся на практике. Не хватает познаний? Погуглил. Спросил GPT, углубился в тему. Спросил коллегу. Подлатал дыры. Проверил в деле - закрепил.
Профилактически тоже работает. Скучно? Открыл хакерранк, хабр, IT-подписки в телеге. Залатал дыры в познаниях. Полез в комменты в холивар - узнал новое. Посмотрел записи с конференции. А то и сам сходил поучаствовал. И т.д.
А в ВУЗе что из этого? Лежит у меня корочка локального ВУЗа. UML диаграммы рисовать учили (ни разу не пригодилось). Те же ER диаграммы уже учил сам на работе. Линейке учили - не пригодилось. Сетевой модели OSI учили (скорее не пригодилось). 3д-хрущёвки в 3ds Max делали...
GIT-у (и вообще СУВ) меня не учили. Алгоритмам не учили (ок мы осилили пузырёк и бинарный поиск за семестр). BigO - что это? Структурам данных тоже. Устройству ОС - нет. Основам схемотехники - нет. Многопоточному программированию - почти не учили. Какой-нибудь JIRA - нет. Основам работы в коллективе - нет. Основам поведения в коллективе - нет. Честно говоря мне сложно вспомнить хоть что-то, чему меня учили и мне пригодилось.
Значит ли это что я всего этого не знаю? Ведь у меня нет теории. А, по вашим словам, без теории практика мертва. Что ж я теперь не соображу как HashMap работает? Конфликты в PR-е не смогу разрулить? Конфликтную ситуацию с коллегой уладить? Подготовить презентацию по улучшению архитектуры проекта? Может за 15 лет практики я всё таки научился всему чему хотел?
Откуда у вас эта слепая вера в образование. Эти дипломы для большинства программистов в СНГ это просто 4-5 лет беготни от принтера к деканату, и обратно. За редким исключением. За эти 4 года я бы лучше на английский набросился, параллельно осваивая полезные навыки для профессии.
Глаголы не изменяются, потому что так сложилось развитие языка
ЕМНИП у немцев как раз всё по классике. Это восточных славян (а может и не только) занесло. Тут где-то на хабре даже была статья. Плохо помню детали, но кажется слова вроде "сделала\сделал" были раньше причастием. А причастия склоняются по родам. А потом произошёл странный сдвиг. Мы потеряли часть времён а наши причастия стали формой прошедшего времени. А для причастий придумали новую грамматику.
Плюс-минус то же самое, что и у нас. Das Mädchen это конечно забавно. "Так сложилось". Но в остальном всё очень похоже.
Хотите действительно странную вещь покажу? Слово "мужчина" какого рода? Как склонять будем? Вот это действительно странно :D
Касательно das Mädchen. Тут кажется просто своего рода исключение. Я не припоминаю других таких слов. Все слова с -chen среднего рода. -chen это такой уменьшительно-ласкательный аффикс. Почему нельзя было оставить слово без -chen - загадка. Но вот так сложилось. Всякие там тёти, бабушки, мамы и прочие подобные слова женского рода.
Про Дейгина. Суть - исследования по коронавирусам были. Про спайк-протеин информация не подтвердилась. И в целом Дейгин утверждал лишь о гипотетической возможности провернуть такое в лаборатории.
Про допросы. Если не натягивать сову на глобус: вначале эти учёные были более склонны к лаб. версии, а потом менее. Информация о давлении не подтверждается.
Про базу данных. Суть плюс-минус верна. Её вывели из публичного доступа.
Называть это конспирологией до сих пор ну я не знаю
Почему бы не называть вещи своими именами? Я, в целом, против конспирологии ничего не имею. Если версия подразумевает конспирацию - она конспирологическая. Это не делает её ни ложной, ни достоверной. Просто фактор.
А теперь я повторю свой вопрос:
Дак что поменялось за минувшие 4 года?
Вы всё ходите вокруг фуриновых вставок, которые разобрали всё те же 4 года назад. А нового то что?
Насколько я понимаю, по происхождению короны у нас фактологический тупик:
Наука не даёт ответа. Он мог как утечь из лабы, так и образоваться естественным путём. Почему наука не даёт более точных ответов? Недостаточно данных. Да и не предвидится. Тупик
Вне научного дискурса остаются доводы:
В Ухане была лаба, каких в Китае минимум. И она работала с коронавирусами.
Лаб. версия: вот он и утёк.
Естест. версия: просто совпадение, пусть и странное
Китай постарался замести следы и всячески препятствовал всем остальным.
Лаб. версия: на воре и шапка горит!
Естест. версия: КНР так делает в любых обстоятельствах. Они сами не знали, как оно было, но на всякий случай замели следы. Коммунисты, что ж вы от них хотели.
С этим кашу не сваришь. Ну и... 4г назад мы были в точно такой же ситуации, разве нет?
Ещё я люблю сам строить предложения и спрашивать AI корявое оно или нет. Обычно AI вежливо отбрыкивает 70% моих стараний и указывает почему. Что полезно. Например:
Для этого нужно или ей до нас как-то добраться, или нам до неё. И то и другое задача не тривиальная. Особенно для туфельки.
Я каждый божий день вижу O(n^2) вместо O(n) в code review. В подавляющем большинстве случаев люди вообще не понимают что с кодом что-то не так.
Приложение как-то шевелится, ибо N не столь велико. Плюс раз в квартал кто-нибудь исправляет этот квадрат (а иногда и куб) и наверное даже получает премию. Там прямо целое расследование проводится, с performance marker-ами. Отчёты пишутся. Графики "было\стало" рисуются. В ладоши хлопают и лайки под постами ставят. Смотрите как оптимизировали.
И лишь немногие смотрят на это со стороны с facepalm-ами. Стоит поднять эту тему - сразу слышишь про preliminary optimization is the root of all evil.
Вот банальщина, которую прочитал прямо сегодня. AI генерирует по токенам свой ответ. Надо этот ответ передавать с сервера на клиент. Передаём весь текст на каждое обновление. Квадрат на ровном месте. Обсудили. И кажется никто исправлять пока не хочет. "Не ну а чо, пока тянем же. Я проблему в DD не вижу".
Мне такое даже в репу пушить было бы стрёмно.
Иногда мне кажется, что software development проклят.
Ну
mixin
-ы как правило одноуровневые и в принципе подаются как "кусочек переиспользуемой имплементации". Типа как посолить блюдо. А множественное наследование в классах иерархическое и каждый класс считает себя главным.Попробовал ответить на вопросы будучи TypeScript \ JavaScript разработчиком. Провалил всё или почти всё. Особенно удивило поведение default-ных значений в функции.
После прочтения статьи не могу сказать, чтобы у меня сложилось ощущение, что вы спрашиваете что-то прямо полезное.
Порядок выполнения сравнений. А так код пишут? Это идиоматичный python код или просто выпендрёж?
К чему это я? Вроде 15 лет пишу на JS/TS. Но порядок операций не знаю и заучивать не хочу. Если у меня есть сомнения - ставлю скобки. Prettier их потом сам уберёт если лишние были. Зачем мне вот этим голову забивать? Рискну предположить что в Python-е также.
Множественное наследование и порядок resolve-инга колизий имён. Оно вам вообще нужно? За множественное наследование в Python ногами не бьют?
К чему это я? Раньше на собеседованиях задавали каверзные вопросы по prototype-based наследованию в JS. А там есть где закопаться. Но уже тогда это был скорее мёртвый груз. Сейчас с массовым использованием
class
-ов, познания в прототипах на практике нужны самые минимальные.Словарь и мутабельный объект как ключ. Вроде и полезно знать. Но тут правильно отметили, что если такой код падает ещё до выполнения с внятной ошибкой, то такой пробел не выглядит чем-то прямо стрёмным.
И мега-опытный человек с 15 годами опыта, который переключился на Python пару лет назад просто не будет знать таких нюансов. Отбрить его из-за такой глупости...
Пример с генераторами. Ну примерно как и со словарём. Полезно знать, но ценность не высока. В JS тоже есть генераторы. Кому-то по долгу службы нужно работать с ними (а то и с асинхронной версией) каждый день. А кому-то никогда. От задач зависит. Генераторы штука в себе.
Пример с дефолтным значением аргумента в функции. Вот это пожалуй единственный серьёзный аргумент. Про такие подставы нужно знать.
Эпилог: при найме вы по сути отвечаете себе на простой вопрос - сий кандидат снимет с моих плеч больше головняка, чем добавит? Или нет? Если да, торгуемся по зарплате. Если нет - мы вам не перезвоним. И теперь вопрос - знание неких контринтуитивных нюансов языка, редко используемых на практике, это правда существенная часть вашего "головняка"? Или может вам остро нужен товарищ, который перекопает половину кодовой базы, исправляя ошибки архитектуры? Может лучше спросить что-то относящееся к тому, чем он будет заниматься в рабочее время?
Удачный пример вопроса по базе на примере Javascript:
^ Это база? О да. Это используется на практике? Да каждый божий день. Если кандидат ответил не правильно и даже после подсказки не догоняет что не так, это нам о чём-то говорит? О да, это говорит, что он вообще не понимает что тут происходит и вероятно верит что
[...a]
копирует объект в глубину. А коль скоро он в это верит мы легко делаем вывод, что JavaScript человек знает на самом поверхностном уровне. А нам это в целом важно? Более чем. Не понимая таких вещей придётся в каждом пул-реквесте под микроскопом его код проверять. Проверено практикой.И подобных вопросов можно задать много. Ну если хочется базу проверить.
Скорее от "preliminary optimization is the root of all evil". Народ то в курсе. Просто всем плевать. Загляните в комменты в этой моей статье: Обращение к Javascript-сообществу: перестаньте писать квадраты. Предупреждаю - можно потерять веру в человечество. Пока вы сортируете массивы, народ пишет квадраты и кубы, ковыряя пальцем в носу.
Причём народ массе своей с дипломами. И о BigO в курсе. Просто им пле-ва-ть.
Всё же бинарный поиск это частный случай. Нужно формировать массив, сортировать и в последствии не трогать. Доступ через бинарный поиск. Мне пока не попадалось, чтобы в prod-ready коде кто-то к этому прибегал для уменьшения константы.
HashMap \ HashSet просто удачное решение по-умолчанию.
В 99% случаях речь идёт о "plain unsorted array" vs "map".
ВУЗ слабая помеха к тому чтобы не знать о race condition. Многочисленные собеседования тому свидетельство. Профильный ВУЗ даёт скорее дополнительный шанс на то, что человек об этом слышал (и уже забыл).
В то же время как человек, который вместо 5 лет беготни от деканата до принтера поработал в нормальной конторе, о race condition уже в курсе. Тупо из практики, code review и внушений от тимлида. Отсюда и следствие, что при выборе кандидата опыт ставят на 1-ое место, а наличие корочки смотрят только если кандидат буквально вчера этот самый ВУЗ окончил. И то, на всякий совпроводительные ссылки с home project-ами будут смотреть куда пристальнее.
Ваши логические заключения имели бы куда больше смысла, если бы наличие диплома существенным образом коррелировало с реальными навыками и знаниями. На практике это просто один из многих факторов.
Моя специальность называлась "Информатика". Часть из написанного входила в перечень. А толку? Мало ли что в него входит.
Давайте начистоту. Не "бывают", а практически все. Тут все носятся с тремя названиями. Смешно читать. На условные 250млн населения бывшего СССР три вуза? Почти все современные СНГ ВУЗы это просто попытка удовлетворить спрос, ибо "кто ты без диплома?".
Надеюсь это была шутка.
Недавно коллеге показал где проходит threshold где Map обгоняет массив. ЕМНИП, то у меня получилось на 10 элементах (JS).
Вы сами то в это верите? :) Подавляющее большинство ВУЗов СНГ не дают никакой теории и навыков. Однако программисты получаются нормальные, и потом в этих FAANG-ах работают. Каждый ж 1-й самоучка. Что в дипломом, что без.
На практике теория познаётся на практике. Не хватает познаний? Погуглил. Спросил GPT, углубился в тему. Спросил коллегу. Подлатал дыры. Проверил в деле - закрепил.
Профилактически тоже работает. Скучно? Открыл хакерранк, хабр, IT-подписки в телеге. Залатал дыры в познаниях. Полез в комменты в холивар - узнал новое. Посмотрел записи с конференции. А то и сам сходил поучаствовал. И т.д.
А в ВУЗе что из этого? Лежит у меня корочка локального ВУЗа. UML диаграммы рисовать учили (ни разу не пригодилось). Те же ER диаграммы уже учил сам на работе. Линейке учили - не пригодилось. Сетевой модели OSI учили (скорее не пригодилось). 3д-хрущёвки в 3ds Max делали...
GIT-у (и вообще СУВ) меня не учили. Алгоритмам не учили (ок мы осилили пузырёк и бинарный поиск за семестр). BigO - что это? Структурам данных тоже. Устройству ОС - нет. Основам схемотехники - нет. Многопоточному программированию - почти не учили. Какой-нибудь JIRA - нет. Основам работы в коллективе - нет. Основам поведения в коллективе - нет. Честно говоря мне сложно вспомнить хоть что-то, чему меня учили и мне пригодилось.
Значит ли это что я всего этого не знаю? Ведь у меня нет теории. А, по вашим словам, без теории практика мертва. Что ж я теперь не соображу как HashMap работает? Конфликты в PR-е не смогу разрулить? Конфликтную ситуацию с коллегой уладить? Подготовить презентацию по улучшению архитектуры проекта? Может за 15 лет практики я всё таки научился всему чему хотел?
Откуда у вас эта слепая вера в образование. Эти дипломы для большинства программистов в СНГ это просто 4-5 лет беготни от принтера к деканату, и обратно. За редким исключением. За эти 4 года я бы лучше на английский набросился, параллельно осваивая полезные навыки для профессии.
А как гарантировать что LLM будет всегда воспринимать эти `--- end of rsa...` всерьёз?
ЕМНИП у немцев как раз всё по классике. Это восточных славян (а может и не только) занесло. Тут где-то на хабре даже была статья. Плохо помню детали, но кажется слова вроде "сделала\сделал" были раньше причастием. А причастия склоняются по родам. А потом произошёл странный сдвиг. Мы потеряли часть времён а наши причастия стали формой прошедшего времени. А для причастий придумали новую грамматику.
^ мог что-то напутать, пишу по памяти.
Плюс-минус то же самое, что и у нас. Das Mädchen это конечно забавно. "Так сложилось". Но в остальном всё очень похоже.
Хотите действительно странную вещь покажу? Слово "мужчина" какого рода? Как склонять будем? Вот это действительно странно :D
Касательно das Mädchen. Тут кажется просто своего рода исключение. Я не припоминаю других таких слов. Все слова с -chen среднего рода. -chen это такой уменьшительно-ласкательный аффикс. Почему нельзя было оставить слово без -chen - загадка. Но вот так сложилось. Всякие там тёти, бабушки, мамы и прочие подобные слова женского рода.
Можно попробовать :)
У вас талант читать не то, что написано, а то, что вам хочется. Аплодирую стоя. И вообще не видеть сути.
Прогнал ваше сообщение в perplexity:
Про Ральфа Б.. Тут явно что-то не сходится.
Про грант. Тоже муть какая-то.
Про Дейгина. Суть - исследования по коронавирусам были. Про спайк-протеин информация не подтвердилась. И в целом Дейгин утверждал лишь о гипотетической возможности провернуть такое в лаборатории.
Про допросы. Если не натягивать сову на глобус: вначале эти учёные были более склонны к лаб. версии, а потом менее. Информация о давлении не подтверждается.
Про базу данных. Суть плюс-минус верна. Её вывели из публичного доступа.
Про linage a\b. Сильно переврали.
Почему бы не называть вещи своими именами? Я, в целом, против конспирологии ничего не имею. Если версия подразумевает конспирацию - она конспирологическая. Это не делает её ни ложной, ни достоверной. Просто фактор.
А теперь я повторю свой вопрос:
Вы всё ходите вокруг фуриновых вставок, которые разобрали всё те же 4 года назад. А нового то что?
Насколько я понимаю, по происхождению короны у нас фактологический тупик:
Наука не даёт ответа. Он мог как утечь из лабы, так и образоваться естественным путём. Почему наука не даёт более точных ответов? Недостаточно данных. Да и не предвидится. Тупик
Вне научного дискурса остаются доводы:
В Ухане была лаба, каких в Китае минимум. И она работала с коронавирусами.
Лаб. версия: вот он и утёк.
Естест. версия: просто совпадение, пусть и странное
Китай постарался замести следы и всячески препятствовал всем остальным.
Лаб. версия: на воре и шапка горит!
Естест. версия: КНР так делает в любых обстоятельствах. Они сами не знали, как оно было, но на всякий случай замели следы. Коммунисты, что ж вы от них хотели.
С этим кашу не сваришь. Ну и... 4г назад мы были в точно такой же ситуации, разве нет?
Дак что поменялось за минувшие 4 года? Не томите.
Ничего не поменялось за минувшие 4 года. Приходите ещё через 4 :)
Я пытался этим пользоваться. Но не смог. В моём случае оно очень плохо работало:
Отправляешь 3 таба - приходит 1 или 2
Или вообще не приходит
Оказалось что отправлять себе в телеграм-личку и открывать оттуда куда практичнее. Точно ничего не потеряется.
Отправил в личку.
Ещё я люблю сам строить предложения и спрашивать AI корявое оно или нет. Обычно AI вежливо отбрыкивает 70% моих стараний и указывает почему. Что полезно. Например: