Ха, да, про Numpy я не подумал, хотя его и OpenCV использую много. Надо будет потом PEP прочитать.
The NumPy folks brought up a somewhat separate issue: for them, the most common use case is chained comparisons (e.g. A < B < C).
Думаю для такой операции, если она часто встречается в коде, можно сделать отдельную функцию. Мне в одном проекте нужно было из многомерного массива выбрать по определенным критериям значения (if-else и разные сравнения), я сделал это через несколько бинарных масок, которые потом использовались при вычислении.
Там ниже wl2776 привел ссылку на официальную документацию. Я же честно признаюсь, утратил интерес к дискуссии, мне такие мелкие нюансы не очень интересны. В реальном коде, если будет нечто подобное я просто расставлю скобки, чтобы код легче читался. А так на питоне я профессионально программирую больше 7 лет, сейчас как Computer Vision Engineer.
Да, не угадал, спасибо за пример. Я как-то не задумывался, что у is выше приоритет, чем у ==. Со скобками у нас будет следующее выражение: 55 == (True is False).
Исходное сообщение из поста тогда корректно записать так: 55 == (True is True). И эта запись в любом случае не соответствует записи автора: (55 == True) and (True is True).
Ваша ссылка не ведет на документацию. Это какой-то сайт от третьей стороны с уроками. Насколько эти уроки корректны, я даже не берусь судить, и тем более, не буду тратить свое время на его чтение.
В общем случае, если REPL выдает тот же самый результат, вовсе не означает, что интерпретация выражения работает так, как вы описали. Согласны ли вы с этим утверждением? Входит ли оно в базу?
Дальше, разберем по порядку, как работает исходное выражение: 55 == True is True. Такое выражение можно переписать с использованием скобок: ((55 == True) is True). Ну и вообще подобные выражения для лучшего понимания вначале следует записать со скобками. Итак, сначала вычисляется (55 == True). Его результат будет False. Затем этот результат подставится дальше: False is True. Его результат будет False.
Ваше выражение (55 == True) and (True is True) дает такой же результат, но оно не является результатом интерпретации Python исходного выражения.
Что касается:
Буду рад, если все же дочитаете статью до конца, возможно, там найдете еще что-то полезное :)
Вы знаете, информации очень и очень много. Можно считать, что бесконечное количество. Мое же время дифицитно и ограничено. Зачем мне искать в вашей статье что-то полезное (и проверять на ошибки), если я уже вижу, что вы ошибаетесь в первом же примере?
Кроме того, сам посыл статьи "кандидат сбежал в слезах" у меня не добавляет желания смотреть статью дальше.
Читал на анекдот.ру такую смешную и полностью выдуманную историю. Жена господина Директора приходит в модный бутик, принадлежащей жене Мера, покупает несколько брендовых вещей на несколько миллионов деняг. Через неделю компания Директора выигрывает тендер на постройку чего-то очень нужного в Городе, на несколько сотен миллионов деняг.
После прочтения этой истории, я наконец-то понял, почему в некоторых городах в центре есть очень странные магазины. Меленькие, вещей мало, они странные, стоят очень, очень странных денег. Покупателей там нет, продавщица смотрит на посетителя с удивлением.
Можно вам вопрос задать? А как люди с выраженным РАС ведут себя по отношению к своим детям? Вот тот же Линус, у него кажется две дочки, он типа тоже на них кричит "fuck daughter", а за провинности начинает унижать и проводить неприятные параллели?
Я сейчас в шкуре точно такого же Шона, без работы и даже малейших шансов ее найти в ИТ
Вы уже работали программистом и не можете найти новую работу или не можете найти первую работу?
От создателей мыльной оперы "Если человек не может устроиться программистом, то значит он дурак и не программист".
Искать работу – это как отдельная full-time работа. Ею нужно очень активно заниматься. Я два года назад уволился, чуть-чуть отдохнул и искал новую работу несколько месяцев. Было... непросто.
Недавно общался с двумя разными людьми. Оба пытались войти в айти. Одному явно не хватает знаний и опыта и он на самом деле не до конца понимает, хочет ли быть программистом. До разговора со мной думал, что важно иметь диплом в этой области (я радиотехник по образованию, "вошел в АЙТИ" лет 7 назад, правда мне всегда было интересно программировать). Второй, он в начале ковида отучился на Руби программиста. Даже нашел стажировку (удаленно), но ему никто не помогал, LLM еще не было, и он ушел, поняв, что ничего не понимает. Потом понял, что Руби фактически сейчас мертвый язык, и найти первую работу на нем уж точно супер-сложно.
Могу предположить, что вы используете не самую продвинутую (Gemini 2.5 Pro, Claude 3.7 Sonnet, o3, GPT-4.5...), a какую-то очень ограниченную модель. Или неправильно пишите промпт (чаше всего надо просить сделать что-то маленькое, типа напиши мне функцию для X).
Причина, скорей в том, что он либо слабый разработчик, либо очень специфический в общении/управлении человек.
Косвенно мы можем найти подтверждения в новости. Переехал в трейлер - он за 20 лет работы не купил никакой недвижимости? Может быть конечно, что он сдает и переехал в трейлер, чтобы жить на деньги от сдачи.
Уволили его чуть больше года назад и он работает в доставке. У него нет накоплений на такой случай? Была низкая ЗП или он жил на широкую ногу (продает вещи на Ebay...)?
Сокращали уже 2 раза в предыдущие кризисы, а также сейчас, в т.ч. может быть сигналом, что с ним есть какая-то проблема.
незрелой службой поиска кандидатов на основе искусственного интеллекта из-за недостатка гиперспецифичных ИИ-терминов
Так надо проверить свое резюме в ATS системах и тюнить свою резюме и CL. Взять консультацию у HR, чтобы понять, в чем причина.
боты отфильтровывают его ещё до того, как в цепочку собеседования попадает человек
За 20 лет работы у него нет знакомых, которые могут его отреферить?
То что вы описали — это гораздо, в разы, если не на порядок, более трудоемко
Верю :) Я ничего не понимаю в HDL, но аналогично в моих задачах, мне чаще гораздо проще и быстрее руками написать код или самостоятельно подумать, чем придумывать подходящие промпты. Но у тех, у кого задача писать однотипный шаблонный код, этот инструмент зашел (многие используют Cursor). Кто-то сам себе придумывает задачки, чтобы поиграть с новым инструментом и найти его ограничения и понять, где он может ускорить работу. Т.е. уже сейчас есть задачи, в которых этот инструмент позволяет автоматизировать некую рутинную, но интеллектуальную, работу. И это классно.
И вот у меня вопрос — почему большинство студентов, которые просили у меня рекомендацию на работу, не остановились и не подумали
Философский вопрос. Я не знаю. Точнее, тут можно очень долго дискутировать :)
Я понимаю, и у меня аналогично. Я Computer Vision Engineer, и большое количество вещей нужно отсматривать глазами, более того, т.к. я участвую в разработке софта для обработки фотографий людей (а ля Photoshop с одной кнопкой для B2B), то многие вещи вообще отсматривают и верифицируют эксперты с соответствующим опытом, насмотренностью и понимание запросов клиентов.
Часть вещей можно автоматизировать за счет прокидывания данных в систему, собственно, этим и занимается обучение и тюнинг нейронок. А вот автоматизировать финальное сравнение качества обработанных изображений сейчас не представляется возможным. Разница настолько тонкая, что я например не вижу, эксперт смотрит, показывается и проговаривает разницу мне словами и тогда я начинаю видеть.
Возвращаюсь к вашей задаче, да и в принципе к более широким задачам software engineering. Чтобы сейчас использовать LLM в качества автокомплита на стеройдах, нужно все равно декомпозировать свою задачу на части, как это делает любой инженер. Условно, на комиты. Просить нейронку написать код такой маленькой части, тестировать ее и затем уже комитить. В случае ошибки показывать ошибку нейронке и просить ее исправить. С наличием агентов или глубокой интеграции AI в IDE такой цикл автоматизируется. В добавок, как сейчас делают люди, просят другую нейронку покритиковать код, затем закидывают эту критику в следующую нейронку и просят исправить. Очевидно, что этот пайплайн поддается автоматизации. Результат работы все равно принимает эксперт. Он же проверяет, что написанный тест работает корректно.
Ваши студенты, будь умнее и сообразительней, разбили бы задачу на части, недостающие данные из окружения вытащили бы руками. Типа сохранять вывод виртуального прибора в файл в текстовом виде и затем его распарсить нейронкой, взять от туда важные данные и передать их в задачу по написанию маленького кусочка в качестве входных. Вероятно агенты/умные IDE/среды проектирования к этому и придут, тогда меньше нужно будет руками делать рутины.
Но очевидно, что это всего лишь автоматизация, думать головой, декомпозировать и писать подходящие промпты, необходимо самому инженеру. LLM может помочь найти необходимый кусок в документации, но прочитать, понять и применить нужно будет самому человеку.
И зачем в офисе люди, которые не умеют решать реальных задач? Другие люди должны выдумывать задачи для них специально, чтобы занять их время? Платить им зарплату пока они ждут появления более умного LLM?
Это философский вопрос. Что вы делали с людьми, которые не подходили по вашим критериям 5 лет назад? А 10 лет назад? Неужели подходящих кандидатов было ощутимо больше?
Я посмотрел ваш пост про задачу и комментарии, да, классный способ, давать такую задачу, где решение обязательно зависит от окружения. Но мне кажется, что в том, что ее решило только 2 человека, LLM вообще никак не виноваты. Что было бы лет 5 назад, до ллмок? Скорее всего, часть людей сразу бы отвалилось, часть попробовала бы найти что-то похожее в опенсорсе, как-то скомпоновать и выдать за свое решение, типа авось прокатит.
Теоретически, мне кажется, LLM повышает шансы у думающих людей, но у которых недостаточно опыта или знаний, решить задачу.
27 страниц текста? Ух. Что бы нейронка столько текста нагенерировала, нужно было специально много раз просить нейронку, а затем склеить все вместо. Авто этого опуса может быть над вами просто издевается?
Если бы ваш знакомый серьезно бы отнесся к задаче, он (или она) бы вычитал текст и внес бы правки. Как минимум не стал бы генерировать 27 страниц текста и вставлять инфу про материалы для сенсоров.
Вот пример моего опыта использования LLM для кодирования:
Мне недавно нужно было по работе сделать внутреннюю тулзу - GUI к нашему API, чтобы у тулзы был доступ к файловой системе. Используя Claude я полностью написал GUI часть на Python (GUI библиотека Tkinter) за 3 дня ("Часть 1", полностью использую AI). Еще дня 3 доводил до ума и прикручивал логику работы с API ("Часть 2", в основном вручную).
Часть 1 я писал только промпты к Claude, проверял как работает, понимал что нужно еще кое-что добавить/исправить и делал это через промпт.
Часть 2 я делал вручную, потому что в этом случае было слишком много мелких деталей, которые мне было быстрее самому в коде написать, чем писать большой и детальный промпт.
Юрий, могу вам привести такую аналогию, используя EDA/CAD можно смоделировать очень многое, но часто, особенно у новичков или не опытных инженеров, результат будет нефизичен (галюцинации). У опытных инженеров и ученых тоже случаются ошибки нефизичности, и в силу их опытности, такие ошибки существенно сложнее найти и исправить. Но они знают про это и знают, что нужно детально тестировать и проверять хотя бы в прототипах, делать измерения и т.п. Аналогично история с LLM.
PS Могу предложить вам Юрий самому попробовать сделать ровно туже задачу в нескольких LLM: Claude, ChatGPT, Gemini. И сравнить результат. Лучше всего пользоваться платными версиями. Можно сравнить выход бесплатной версии и платной. А также выход обычных и reasoning моделей.
Ха, да, про Numpy я не подумал, хотя его и OpenCV использую много. Надо будет потом PEP прочитать.
Думаю для такой операции, если она часто встречается в коде, можно сделать отдельную функцию. Мне в одном проекте нужно было из многомерного массива выбрать по определенным критериям значения (if-else и разные сравнения), я сделал это через несколько бинарных масок, которые потом использовались при вычислении.
Там ниже wl2776 привел ссылку на официальную документацию. Я же честно признаюсь, утратил интерес к дискуссии, мне такие мелкие нюансы не очень интересны. В реальном коде, если будет нечто подобное я просто расставлю скобки, чтобы код легче читался. А так на питоне я профессионально программирую больше 7 лет, сейчас как Computer Vision Engineer.
Да, не угадал, спасибо за пример. Я как-то не задумывался, что у
is
выше приоритет, чем у==
. Со скобками у нас будет следующее выражение:55 == (True is False)
.Исходное сообщение из поста тогда корректно записать так:
55 == (True is True)
. И эта запись в любом случае не соответствует записи автора:(55 == True) and (True is True)
.Ваша ссылка не ведет на документацию. Это какой-то сайт от третьей стороны с уроками. Насколько эти уроки корректны, я даже не берусь судить, и тем более, не буду тратить свое время на его чтение.
В общем случае, если REPL выдает тот же самый результат, вовсе не означает, что интерпретация выражения работает так, как вы описали. Согласны ли вы с этим утверждением? Входит ли оно в базу?
Дальше, разберем по порядку, как работает исходное выражение:
55 == True is True
. Такое выражение можно переписать с использованием скобок:((55 == True) is True)
. Ну и вообще подобные выражения для лучшего понимания вначале следует записать со скобками. Итак, сначала вычисляется(55 == True)
. Его результат будетFalse
. Затем этот результат подставится дальше:False is True
. Его результат будетFalse
.Ваше выражение
(55 == True) and (True is True)
дает такой же результат, но оно не является результатом интерпретации Python исходного выражения.Что касается:
Вы знаете, информации очень и очень много. Можно считать, что бесконечное количество. Мое же время дифицитно и ограничено. Зачем мне искать в вашей статье что-то полезное (и проверять на ошибки), если я уже вижу, что вы ошибаетесь в первом же примере?
Кроме того, сам посыл статьи "кандидат сбежал в слезах" у меня не добавляет желания смотреть статью дальше.
У вас там в первом же пояснении ошибка:
Должно быть:
Дальше вы поясняете этот пример корректно. Но после этого примера читать статью уже не стал.
Читал на анекдот.ру такую смешную и полностью выдуманную историю. Жена господина Директора приходит в модный бутик, принадлежащей жене Мера, покупает несколько брендовых вещей на несколько миллионов деняг. Через неделю компания Директора выигрывает тендер на постройку чего-то очень нужного в Городе, на несколько сотен миллионов деняг.
После прочтения этой истории, я наконец-то понял, почему в некоторых городах в центре есть очень странные магазины. Меленькие, вещей мало, они странные, стоят очень, очень странных денег. Покупателей там нет, продавщица смотрит на посетителя с удивлением.
Туристические симки/eSIM идут без номера. По-крайней мере, Airalo. Местный номер не только в Азии нужен. В этом случае только покупать местную симку.
Вы уверены? У вас есть ссылки на какие-то источники? Уж больно широкое обобщение.
Можно вам вопрос задать? А как люди с выраженным РАС ведут себя по отношению к своим детям? Вот тот же Линус, у него кажется две дочки, он типа тоже на них кричит "fuck daughter", а за провинности начинает унижать и проводить неприятные параллели?
Если кому-то интересно, то есть обсуждение на HN с комментариями самого Шона (8 дней назад, 499 комментариев): https://news.ycombinator.com/item?id=43963434
Длинный пост от Шона на Substack (326 комментариев): https://shawnfromportland.substack.com/p/the-great-displacement-is-already
Обсуждение на Reddit (86 комментариев): https://www.reddit.com/r/economy/comments/1kn5evf/software_engineer_lost_his_150kayear_job_to_aihes/
Вы уже работали программистом и не можете найти новую работу или не можете найти первую работу?
Искать работу – это как отдельная full-time работа. Ею нужно очень активно заниматься. Я два года назад уволился, чуть-чуть отдохнул и искал новую работу несколько месяцев. Было... непросто.
Недавно общался с двумя разными людьми. Оба пытались войти в айти. Одному явно не хватает знаний и опыта и он на самом деле не до конца понимает, хочет ли быть программистом. До разговора со мной думал, что важно иметь диплом в этой области (я радиотехник по образованию, "вошел в АЙТИ" лет 7 назад, правда мне всегда было интересно программировать). Второй, он в начале ковида отучился на Руби программиста. Даже нашел стажировку (удаленно), но ему никто не помогал, LLM еще не было, и он ушел, поняв, что ничего не понимает. Потом понял, что Руби фактически сейчас мертвый язык, и найти первую работу на нем уж точно супер-сложно.
Могу предположить, что вы используете не самую продвинутую (Gemini 2.5 Pro, Claude 3.7 Sonnet, o3, GPT-4.5...), a какую-то очень ограниченную модель. Или неправильно пишите промпт (чаше всего надо просить сделать что-то маленькое, типа напиши мне функцию для X).
Причина, скорей в том, что он либо слабый разработчик, либо очень специфический в общении/управлении человек.
Косвенно мы можем найти подтверждения в новости. Переехал в трейлер - он за 20 лет работы не купил никакой недвижимости? Может быть конечно, что он сдает и переехал в трейлер, чтобы жить на деньги от сдачи.
Уволили его чуть больше года назад и он работает в доставке. У него нет накоплений на такой случай? Была низкая ЗП или он жил на широкую ногу (продает вещи на Ebay...)?
Сокращали уже 2 раза в предыдущие кризисы, а также сейчас, в т.ч. может быть сигналом, что с ним есть какая-то проблема.
Так надо проверить свое резюме в ATS системах и тюнить свою резюме и CL. Взять консультацию у HR, чтобы понять, в чем причина.
За 20 лет работы у него нет знакомых, которые могут его отреферить?
Верю :) Я ничего не понимаю в HDL, но аналогично в моих задачах, мне чаще гораздо проще и быстрее руками написать код или самостоятельно подумать, чем придумывать подходящие промпты. Но у тех, у кого задача писать однотипный шаблонный код, этот инструмент зашел (многие используют Cursor). Кто-то сам себе придумывает задачки, чтобы поиграть с новым инструментом и найти его ограничения и понять, где он может ускорить работу. Т.е. уже сейчас есть задачи, в которых этот инструмент позволяет автоматизировать некую рутинную, но интеллектуальную, работу. И это классно.
Философский вопрос. Я не знаю. Точнее, тут можно очень долго дискутировать :)
PS Вы, кстати, не ответили на мой вопрос.
Я понимаю, и у меня аналогично. Я Computer Vision Engineer, и большое количество вещей нужно отсматривать глазами, более того, т.к. я участвую в разработке софта для обработки фотографий людей (а ля Photoshop с одной кнопкой для B2B), то многие вещи вообще отсматривают и верифицируют эксперты с соответствующим опытом, насмотренностью и понимание запросов клиентов.
Часть вещей можно автоматизировать за счет прокидывания данных в систему, собственно, этим и занимается обучение и тюнинг нейронок. А вот автоматизировать финальное сравнение качества обработанных изображений сейчас не представляется возможным. Разница настолько тонкая, что я например не вижу, эксперт смотрит, показывается и проговаривает разницу мне словами и тогда я начинаю видеть.
Возвращаюсь к вашей задаче, да и в принципе к более широким задачам software engineering. Чтобы сейчас использовать LLM в качества автокомплита на стеройдах, нужно все равно декомпозировать свою задачу на части, как это делает любой инженер. Условно, на комиты. Просить нейронку написать код такой маленькой части, тестировать ее и затем уже комитить. В случае ошибки показывать ошибку нейронке и просить ее исправить. С наличием агентов или глубокой интеграции AI в IDE такой цикл автоматизируется. В добавок, как сейчас делают люди, просят другую нейронку покритиковать код, затем закидывают эту критику в следующую нейронку и просят исправить. Очевидно, что этот пайплайн поддается автоматизации. Результат работы все равно принимает эксперт. Он же проверяет, что написанный тест работает корректно.
Ваши студенты, будь умнее и сообразительней, разбили бы задачу на части, недостающие данные из окружения вытащили бы руками. Типа сохранять вывод виртуального прибора в файл в текстовом виде и затем его распарсить нейронкой, взять от туда важные данные и передать их в задачу по написанию маленького кусочка в качестве входных. Вероятно агенты/умные IDE/среды проектирования к этому и придут, тогда меньше нужно будет руками делать рутины.
Но очевидно, что это всего лишь автоматизация, думать головой, декомпозировать и писать подходящие промпты, необходимо самому инженеру. LLM может помочь найти необходимый кусок в документации, но прочитать, понять и применить нужно будет самому человеку.
Это философский вопрос. Что вы делали с людьми, которые не подходили по вашим критериям 5 лет назад? А 10 лет назад? Неужели подходящих кандидатов было ощутимо больше?
Я посмотрел ваш пост про задачу и комментарии, да, классный способ, давать такую задачу, где решение обязательно зависит от окружения. Но мне кажется, что в том, что ее решило только 2 человека, LLM вообще никак не виноваты. Что было бы лет 5 назад, до ллмок? Скорее всего, часть людей сразу бы отвалилось, часть попробовала бы найти что-то похожее в опенсорсе, как-то скомпоновать и выдать за свое решение, типа авось прокатит.
Теоретически, мне кажется, LLM повышает шансы у думающих людей, но у которых недостаточно опыта или знаний, решить задачу.
27 страниц текста? Ух. Что бы нейронка столько текста нагенерировала, нужно было специально много раз просить нейронку, а затем склеить все вместо. Авто этого опуса может быть над вами просто издевается?
Если бы ваш знакомый серьезно бы отнесся к задаче, он (или она) бы вычитал текст и внес бы правки. Как минимум не стал бы генерировать 27 страниц текста и вставлять инфу про материалы для сенсоров.
Вот пример моего опыта использования LLM для кодирования:
Юрий, могу вам привести такую аналогию, используя EDA/CAD можно смоделировать очень многое, но часто, особенно у новичков или не опытных инженеров, результат будет нефизичен (галюцинации). У опытных инженеров и ученых тоже случаются ошибки нефизичности, и в силу их опытности, такие ошибки существенно сложнее найти и исправить. Но они знают про это и знают, что нужно детально тестировать и проверять хотя бы в прототипах, делать измерения и т.п. Аналогично история с LLM.
PS Могу предложить вам Юрий самому попробовать сделать ровно туже задачу в нескольких LLM: Claude, ChatGPT, Gemini. И сравнить результат. Лучше всего пользоваться платными версиями. Можно сравнить выход бесплатной версии и платной. А также выход обычных и reasoning моделей.
Больше похоже на то, что Luna Translator нагло врет, дабы показать свою важность.
Есть живые люди, пользующиеся Пинтерстом??? Я думал, что это какой-то сгенерированный контент для спама.