так и я ж не из провинциального вуза, тоже считай одного из самых привлекательных факультетов среди олимпиадников по программированию в стране. да, в яндекс пару человек пошло на пятом курсе когда уже был офис. очень башковитые люди тоже кстати специфические в плане работы, я б их в том возрасте не ставил руководить, потому что тут не хард скилы нужны. ну и опять, ты можешь быть очень умным, но многие вещи надо знать и уметь делать, это время и это все плохо пересекается с классической учебой. в общем было бы очень интересно посмотреть на ту команду, но само описание у меня вызывает скепсис и не понимание, учитывая что яндекс компания большая и было логично собрать более сбалансированную команду
ок, интересно было узнать, похожие истории знаю, в том числе с релокацией в штаты сразу после универа, но там люди были очень головастые, и все равно я не помню чтоб они прямо сеньорами пошли. и уж тем более чтоб из них целую команду собрали. учились они кстати хорошо и работать пошли довольно поздно.
ок, но в мою бытность даже в ЕПАМ брали с курса третьего, ну ок, может кто со второго проскочил, но давно дело было, ютуб буквально вчера появился и курсов толком не было чтоб заранее быть умнее всех. опять, в западный бигтех так не берут, так берут в галеры, а бигтех берет летом на стажировку. и не 8ч у вас будет рабочий день, а 4 дай бог. так что к 23г у вас будет не 5 лет полноценного стажа. и раз вы "элита" то и универ у вас должен быть нормальный, а не каждый универ даст работать без троек с первого курса. ну т.е. опять это нужно быть прям супер уникомом, чтоб ни на что не отвлечься, везде успевать и чтоб на глаза попадалась только нужная инфа и ничего больше. Я знаю людей кто к пятому курсу успел в галере стать тимлидом (года за 2) но мне сложно сказать кто они реально были по скилам, никогда с такими лично не работал. Скорее на галере просто других кандидатов не было на эту роль, а сам человек был с хваткой.
ну раз мы используем западное слово "бигтех" то вопрос повторяется, там такая же ситуация? я не слышал подобных примеров. обычно такое в стартапчике друзей. а вы кстати как-то давите в другую крайность словно сами из той команды. наброс совсем не интересный для обсуждения. Еще раз, я знаю что есть толковый молодняк созревший на 5 лет раньше обычного, но это прям единицы. В яндексе других работников нет? зачем так формировать команды?
На финале руководитель - парень лет 23. Пообщались норм. Заодно он сказал что команда у них чисто продуктовая, и молодая - средний возраст 21-22.
это точно биг тех? больше напоминает аутсорс галеру с невыспаными студентами. Просьба не рассказывать мне про молодых гениев, я конечно видал таких пару штук в универе, но их было всего пару штук и я все равно не уверен что они могли сами взять и затащить большой проект без взрослых, тем более что по возрасту видно что такси это их первый проект. Не с 15 ж лет они в Яндексе работают. В общем очень-очень странно.
result = condition if_expression + !condition else_expression;
кстати в java и варинат "condition ? if_expression : else_expression" работает, компилируется в conditional move, наверно и других языках похожая ситуация. это я к тому, что выражение "? : " совсем не обязательно компилируется в чистый if, выглядит не так жутко как предложенный вариант и работает с такой же скоростью
не понятно о чем проекты потому что всем нужна не utf-8, а отсутствие оверхеда при работе с англ кодировкой, и то что там пишут про "хай перформанс" и раст (чтоб еще круче звучало) не очень понятно в контексте настоящих utf-8 строк которые из-за переменного размера под каждый "символ" ломают перформанс. по-этому я и подумал что там тоже под вывеской utf-8 делают компактные строки
по описанию проектов сходу не очень понимаю о чем они. в java вы работаете всегда с unicode строкой которая автоматом сжимается в хипе если влазит в ascii. если там русские буквы то тогда у всей строки символы 2 байта занимают. вообще нельзя просто так взять и добавить utf8 - плавающий размер символа проблема для оптимизаций, поэтому в java сделанно именно так + им пришлось конечно разбираться с граничными случаями когда к обычной строке например добавляется компактная, но это все опять-таки сделано на уровне vm и любой язык под нее получается поддержку и профит. и да, в sdk нет никакого упоминания или изменений, вы просто работаете с обычной строкой как всегда, оптимизация прозрачна для вас
это все же фича не языка а vm, сложно сказать почему 10 лет тянули, такое чувство что хотели сделать по-минимум (запили аж 8 прототипов) а по итогу делают как надо.
про utf8 не понял что вы хотите. уже очень давно начиная с 9-ой версии есть компактные строки, работают автоматом, если вы храните только "английский текст" то ваша строка в хипе это обычный char, для вас все прозрачно и вы работаете как с обычной строкой.
не убедили, вы думаете JIT джавы настолько глупый что не может понять какая переменная внутри метода фактически финальная? Возможно вы упускаете мысль: внутри метода локальная переменная никогда сама по себе не может поменять значение, отчего я и говорю что это объяснение скорее всего jit компилятору нафиг не нужно и рецепт "просто добавь final" очень наивен, учитывая сегодняшнюю сложность jit. Другое дело если мы говорим о полях класса, там конечно не помешает.
Решил посмотреть простые сценарии и то как они компилируются в байткод: если final то числа складываются в момент компиляции, на сколько помню точно так же и происходит со строками, так что это рекомендация даже не для jit. Ожидал что и не final тоже вычислится.
gemini говорит что я прав: это бородатая байка, потому что в байткоде нет никакого флага final для локальных переменных и далее его речь:
Любой современный JIT или AOT компилятор первым делом переводит твой байткод во внутреннее представление, которое называется SSA-форма (Static Single Assignment). В SSA-форме КАЖДОЕ присваивание переменной создает её НОВУЮ ВЕРСИЮ.
Если ты написал:
int x = 5;
x = 10;
В SSA-графе компилятора это превратится в:
x_1 = 5;
x_2 = 10;
Для компилятора ЛЮБАЯ локальная переменная в SSA-графе является финальной (константной) по своей математической природе! Ему не нужны твои подсказки в виде слова final. Он сам за наносекунду видит, меняется значение по потоку управления или нет. Если переменная "effectively final" (фактически не меняется), JIT оптимизирует её со 100% эффективностью, даже если ты не написал final.
Еще нейронка заметила что здесь ничего фолдиться не будет final StringBuilder builder = new StringBuilder(data.size() * 64); я не всматривался при первом прочтении, но я думаю всем понятно что final тут никак не поможет стринг билдеру, но из текста может возникнуть ощущение что сейчас будет турбо скорость.
не нужно считать себя умнее jit, если уж обычные (виртуальные методы) работают ровно с такой же скоростью как статические, то и с вашими фактическими (еффектив) файналами внутри метода компилятор как-то разберется. Лично я их всегда удаляю внутри метода, чтоб в глазах не пестрило.
вообще без бенчмарков нет никакого смысла в таких оптимизациях на современных процессорах. это как в undertow есть тоже код на проверку битов с if в цикле, однако сегодня он работает за сопоставимое время со стандартным библиотечным методом, потому что стандартный метод писали умные люди а интистики в jvm для него писали еще более, которые знают и как simd инструкции сделать и как не запутать branch prediction процессора. но наивный оптимизатор думает что раз он биты проверит то это автоматически будет самый быстрый вариант и он всех победит
раньше пользовался Qwen2.5 когда было лень vpn включать, сейчас не лень и могу заявить что она и рядом не стояла с Gemini, а Qwen3-max-thinking еще и отвечает очень коротко. в общем только для самых простых задач
Ровно затем, чтобы этого не делать - не спрашивать у БД.
так я о том, что это очень спорный подход. любой нормальый orm умеет спрашивать pk так чтоб не напрягать базу, ну и идеологически это как-то не правильно не спрашивать мнение базы на один из ключевых элементов относящихся к ней и влияющий на ее работу. а потом начинается: ничего не понятно про pk (кто перед кем был создан), в индексах плохо лежит, в v7 лучше но тогда не до конца секурно. И все потому что было лень вытянуть пк. по моему опыту лучше когда в пк зашито максимум данных, включая информацию о типе, чтоб всегда заранее знать к какой таблице он принадлежит, а не искать его среди сотен или тысяч, т.е. наоборот усложнять схему генерации на клиенте, а не просто рандом.
отлично, только зачем нужен uuid в централизованной системе типа postgres которая вам всегда может сказать какой следующий номер у пк или какой следующий диапазон номеров?
ЗЫ: секурити тоже не аргумент, все равно косвенно v7 дает информацию а проблема легко решается алгоритмами, раз уж вы хотите спрятать значение счетчика
так и я ж не из провинциального вуза, тоже считай одного из самых привлекательных факультетов среди олимпиадников по программированию в стране. да, в яндекс пару человек пошло на пятом курсе когда уже был офис. очень башковитые люди тоже кстати специфические в плане работы, я б их в том возрасте не ставил руководить, потому что тут не хард скилы нужны. ну и опять, ты можешь быть очень умным, но многие вещи надо знать и уметь делать, это время и это все плохо пересекается с классической учебой. в общем было бы очень интересно посмотреть на ту команду, но само описание у меня вызывает скепсис и не понимание, учитывая что яндекс компания большая и было логично собрать более сбалансированную команду
ок, интересно было узнать, похожие истории знаю, в том числе с релокацией в штаты сразу после универа, но там люди были очень головастые, и все равно я не помню чтоб они прямо сеньорами пошли. и уж тем более чтоб из них целую команду собрали. учились они кстати хорошо и работать пошли довольно поздно.
ок, но в мою бытность даже в ЕПАМ брали с курса третьего, ну ок, может кто со второго проскочил, но давно дело было, ютуб буквально вчера появился и курсов толком не было чтоб заранее быть умнее всех. опять, в западный бигтех так не берут, так берут в галеры, а бигтех берет летом на стажировку. и не 8ч у вас будет рабочий день, а 4 дай бог. так что к 23г у вас будет не 5 лет полноценного стажа. и раз вы "элита" то и универ у вас должен быть нормальный, а не каждый универ даст работать без троек с первого курса. ну т.е. опять это нужно быть прям супер уникомом, чтоб ни на что не отвлечься, везде успевать и чтоб на глаза попадалась только нужная инфа и ничего больше. Я знаю людей кто к пятому курсу успел в галере стать тимлидом (года за 2) но мне сложно сказать кто они реально были по скилам, никогда с такими лично не работал. Скорее на галере просто других кандидатов не было на эту роль, а сам человек был с хваткой.
ну раз мы используем западное слово "бигтех" то вопрос повторяется, там такая же ситуация? я не слышал подобных примеров. обычно такое в стартапчике друзей. а вы кстати как-то давите в другую крайность словно сами из той команды. наброс совсем не интересный для обсуждения. Еще раз, я знаю что есть толковый молодняк созревший на 5 лет раньше обычного, но это прям единицы. В яндексе других работников нет? зачем так формировать команды?
это точно биг тех? больше напоминает аутсорс галеру с невыспаными студентами. Просьба не рассказывать мне про молодых гениев, я конечно видал таких пару штук в универе, но их было всего пару штук и я все равно не уверен что они могли сами взять и затащить большой проект без взрослых, тем более что по возрасту видно что такси это их первый проект. Не с 15 ж лет они в Яндексе работают. В общем очень-очень странно.
крайне странный выбор моделей. спросите у perplexity что в 26 году стоит брать для ембедингов
result = conditionif_expression + !conditionelse_expression;кстати в java и варинат "condition ? if_expression : else_expression" работает, компилируется в conditional move, наверно и других языках похожая ситуация. это я к тому, что выражение "? : " совсем не обязательно компилируется в чистый if, выглядит не так жутко как предложенный вариант и работает с такой же скоростью
насколько я понимаю это изначальный проект. к вопросу кто у кого копировал
не понятно о чем проекты потому что всем нужна не utf-8, а отсутствие оверхеда при работе с англ кодировкой, и то что там пишут про "хай перформанс" и раст (чтоб еще круче звучало) не очень понятно в контексте настоящих utf-8 строк которые из-за переменного размера под каждый "символ" ломают перформанс. по-этому я и подумал что там тоже под вывеской utf-8 делают компактные строки
по описанию проектов сходу не очень понимаю о чем они. в java вы работаете всегда с unicode строкой которая автоматом сжимается в хипе если влазит в ascii. если там русские буквы то тогда у всей строки символы 2 байта занимают. вообще нельзя просто так взять и добавить utf8 - плавающий размер символа проблема для оптимизаций, поэтому в java сделанно именно так + им пришлось конечно разбираться с граничными случаями когда к обычной строке например добавляется компактная, но это все опять-таки сделано на уровне vm и любой язык под нее получается поддержку и профит. и да, в sdk нет никакого упоминания или изменений, вы просто работаете с обычной строкой как всегда, оптимизация прозрачна для вас
это все же фича не языка а vm, сложно сказать почему 10 лет тянули, такое чувство что хотели сделать по-минимум (запили аж 8 прототипов) а по итогу делают как надо.
про utf8 не понял что вы хотите. уже очень давно начиная с 9-ой версии есть компактные строки, работают автоматом, если вы храните только "английский текст" то ваша строка в хипе это обычный char, для вас все прозрачно и вы работаете как с обычной строкой.
не убедили, вы думаете JIT джавы настолько глупый что не может понять какая переменная внутри метода фактически финальная? Возможно вы упускаете мысль: внутри метода локальная переменная никогда сама по себе не может поменять значение, отчего я и говорю что это объяснение скорее всего jit компилятору нафиг не нужно и рецепт "просто добавь final" очень наивен, учитывая сегодняшнюю сложность jit. Другое дело если мы говорим о полях класса, там конечно не помешает.
Решил посмотреть простые сценарии и то как они компилируются в байткод: если final то числа складываются в момент компиляции, на сколько помню точно так же и происходит со строками, так что это рекомендация даже не для jit. Ожидал что и не final тоже вычислится.
gemini говорит что я прав: это бородатая байка, потому что в байткоде нет никакого флага final для локальных переменных и далее его речь:
Любой современный JIT или AOT компилятор первым делом переводит твой байткод во внутреннее представление, которое называется SSA-форма (Static Single Assignment).
В SSA-форме КАЖДОЕ присваивание переменной создает её НОВУЮ ВЕРСИЮ.
Если ты написал:
В SSA-графе компилятора это превратится в:
Для компилятора ЛЮБАЯ локальная переменная в SSA-графе является финальной (константной) по своей математической природе! Ему не нужны твои подсказки в виде слова final. Он сам за наносекунду видит, меняется значение по потоку управления или нет. Если переменная "effectively final" (фактически не меняется), JIT оптимизирует её со 100% эффективностью, даже если ты не написал final.
Еще нейронка заметила что здесь ничего фолдиться не будет final StringBuilder builder = new StringBuilder(data.size() * 64); я не всматривался при первом прочтении, но я думаю всем понятно что final тут никак не поможет стринг билдеру, но из текста может возникнуть ощущение что сейчас будет турбо скорость.
"Правило №3. Final везде"
не нужно считать себя умнее jit, если уж обычные (виртуальные методы) работают ровно с такой же скоростью как статические, то и с вашими фактическими (еффектив) файналами внутри метода компилятор как-то разберется. Лично я их всегда удаляю внутри метода, чтоб в глазах не пестрило.
вообще без бенчмарков нет никакого смысла в таких оптимизациях на современных процессорах. это как в undertow есть тоже код на проверку битов с if в цикле, однако сегодня он работает за сопоставимое время со стандартным библиотечным методом, потому что стандартный метод писали умные люди а интистики в jvm для него писали еще более, которые знают и как simd инструкции сделать и как не запутать branch prediction процессора. но наивный оптимизатор думает что раз он биты проверит то это автоматически будет самый быстрый вариант и он всех победит
ну вы как будто в танке, только ощущение ;) и нужно активней пользоваться ai, 26 год на дворе.
у меня гугл пиксель и он сам рекомендует режим если я навожу камеру на документ
раньше пользовался Qwen2.5 когда было лень vpn включать, сейчас не лень и могу заявить что она и рядом не стояла с Gemini, а Qwen3-max-thinking еще и отвечает очень коротко. в общем только для самых простых задач
так я о том, что это очень спорный подход. любой нормальый orm умеет спрашивать pk так чтоб не напрягать базу, ну и идеологически это как-то не правильно не спрашивать мнение базы на один из ключевых элементов относящихся к ней и влияющий на ее работу. а потом начинается: ничего не понятно про pk (кто перед кем был создан), в индексах плохо лежит, в v7 лучше но тогда не до конца секурно. И все потому что было лень вытянуть пк. по моему опыту лучше когда в пк зашито максимум данных, включая информацию о типе, чтоб всегда заранее знать к какой таблице он принадлежит, а не искать его среди сотен или тысяч, т.е. наоборот усложнять схему генерации на клиенте, а не просто рандом.
отлично, только зачем нужен uuid в централизованной системе типа postgres которая вам всегда может сказать какой следующий номер у пк или какой следующий диапазон номеров?
ЗЫ: секурити тоже не аргумент, все равно косвенно v7 дает информацию а проблема легко решается алгоритмами, раз уж вы хотите спрятать значение счетчика
это вы так думаете, к своей вполне трепетное. недавно была другая модель кажется от qwen - переводчик, свободно деньги зарабатывать не разрешают