Подскажите по чату ГПТ
покажи мне, как гугл или бинг справятся вот с этим запросом:
Напиши мне функцию на c#, которая возвращает последний день переданной даты.
И вот ответ:
Конечно! Вот функция на C#, которая принимает дату в качестве аргумента и возвращает последний день месяца переданной даты:
using System;
public static class DateExtensions
{
public static DateTime LastDayOfMonth(this DateTime date)
{
return new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month));
}
}
или вот вопрос:
Can you write a generic function in c#, which gets a entity type and lambda condition and returns a list of elements, that meet a condition
Ответ
public static List<T> GetEntities<T>(Func<T, bool> condition) where T : class
{
using (var context = new YourDbContext())
{
return context.Set<T>().Where(condition).ToList();
}
}
Вопрос
Can you rewrite this function to return only one property of the entity. This property is passed to function as expression
Ответ
public static List<TResult> GetEntities<T, TResult>(Func<T, bool> condition, Expression<Func<T, TResult>> selector)
where T : class
{
using (var context = new YourDbContext())
{
return context.Set<T>()
.Where(condition)
.Select(selector)
.ToList();
}
}
продолжение
I need one more generic function to update property of entities.
It should get a type, a condition and an a action with setter. Can you make it?
Ответ
public static void UpdateEntities<T>(Func<T, bool> condition, Action<T> setter) where T : class
{
using (var context = new YourDbContext())
{
var entitiesToUpdate = context.Set<T>().Where(condition).ToList();
entitiesToUpdate.ForEach(setter);
context.SaveChanges();
}
}
Те реально что ли ссышь, что тебя на ИИ заменят?))
В мире, где инклюзивность и дайвёрсити правят бал, человека никогда не заменят... Хотя, может быть и худший вариант - инклюзивные и разнообразные, а также самые достойные сеньёры будут сидеть на 6-значных зарплатах, а джуны с миддлами и недозрелые помидоры - мёрзнуть на морозе. А между ними будет засилье ИИ. Правда в этом случае оставшимся сеньёрам придётся делать работу вообще за всех - за себя, за ИИ (парсить его лапшу), за все цвета радуги. Так что вполне возможно, что эти "счастливчики" будут на самом деле самыми несчастными.
покажи мне, как гугл или бинг справятся вот с этим запросом:
Напиши мне функцию на c#, которая возвращает последний день переданной даты.
И вот ответ:
Конечно! Вот функция на C#, которая принимает дату в качестве аргумента и возвращает последний день месяца переданной даты:
"день", "даты" - масло масляное
"возвращает последний день месяца переданной даты" - а с какого буя этот искуственный идиот решил, что я имел ввиду месяц, а не скажем год или неделю? Слова "месяц" даже в исходном запросе не было - этот балда добавил его от себя. Вот и будете вы сношаться с ним часами, уточняя подробности.
А Гугл или Бинг просто встроят эту функцию в свой поиск, как они уже повстраивали туда всякие калькуляторы, конвертеры и прочее.
или вот вопрос:
Can you write a generic function in c#, which gets a entity type and lambda condition and returns a list of elements, that meet a condition
Ответ
public static List GetEntities(Func condition) where T : class
{
using (var context = new YourDbContext())
{
return context.Set().Where(condition).ToList();
}
}
Это называется "в правильном вопросе содержится половина ответа", а то и больше. Т.е. когда знаешь, о чём спрашивать, то обычно и сам решение можешь найти быстро. В данном конкретном случае вы бы этот код и сами написали, причём может даже быстрее, чем общаясь с этим ботом.
Совсем другой коленкор будет, когда вы сами толком не сможете сформулировать правильно вопрос и будете задавать десятки наводящих.
А ещё попробуйте сделать так, чтобы выданный код не содержал лишних скобок для using context. Надо "всего лишь" указать, в какой версии языка должен быть код. Интересно, этот бот сможет учесть это? К исходному вопросу добавлена совсем маленькая деталь.
Вопрос
Can you rewrite this function to return only one property of the entity. This property is passed to function as expression
Ответ
public static List GetEntities(Func condition, Expression> selector)
where T : class
{
using (var context = new YourDbContext())
{
return context.Set()
.Where(condition)
.Select(selector)
.ToList();
}
}
Ну и что он выдал? Какой вопрос, и какой ответ? Где только одно свойство на возврате? Если в вопросе чушь, то он должен задать уточняющий вопрос. Если не чушь - пусть выкручивается и делает. А так он додумал что-то (т.е. подобрал наиболее подходящее из всего банка кода, который у него есть) и выдал лапшу - разбирайся сам мол.
продолжение
I need one more generic function to update property of entities. It should get a type, a condition and an a action with setter. Can you make it?
Опять вопрос, в котором содержится бОльшая часть ответа. Вы плохого студента на экзамене "на троечку натягиваете", чтоли?
Попробуйте так:
I need a function in C# to update an entity. This function receives a type, a condition, and a setter. Then it returns the name of updated entity and the elapsed time for this operation. The code should be written with the last version of C#.
По моим понятиям, он должен сам сообразить, в каком контексте замерять время и как лучше всего это делать. Пусть выберет лучший таймер на это дело или найдёт где-то встроенную диагностическую функцию. А также подумает, как вернуть мне всю инфу, что я просил. И чтобы выглядело всё модерново, а не кучка скобочек и простыней старых версий.
Но главное, что вы должны проверить его результат. А если вы не разбираетесь, то проверить не сможете. А если разбираетесь - вам не нужен этот бот, чтобы писать такие функции.
Есть ещё простенькая задачка для вашего бота. Пусть напишет юнит-тесты к любой из функций, которые он сам же и написал. Если он понабрал эти функции откуда-то, то там наверняка и тесты где-то рядом лежали? Тесты, естественно, должны быть максимально полными и правильными.
А Гугл или Бинг просто встроят эту функцию в свой поиск, как они уже повстраивали туда всякие калькуляторы, конвертеры и прочее.
во-первых ещё не встроили
Во-вторых это будет делать тот же ИИ, от которого ты шарахаешься. Хотя да, тут же правильные пацаны, с ними работать можно.
По-моему просто охуенно
Here's an example function that meets your requirements using C# 10:
public static class EntityUpdater
{
public static (string Name, TimeSpan ElapsedTime) UpdateEntity(Func condition, Action setter) where T : class
{
using var context = new MyDbContext(); // replace with your own DbContext class
var stopwatch = new Stopwatch();
stopwatch.Start();
var entity = context.Set().FirstOrDefault(condition);
if (entity == null)
{
throw new InvalidOperationException("Entity not found");
}
setter(entity);
context.SaveChanges();
stopwatch.Stop();
return (typeof(T).Name, stopwatch.Elapsed);
}
}
Ну и что он выдал? Какой вопрос, и какой ответ? Где только одно свойство на возврате?а ты тут увидел несколько свойств? Где же?
По коду он возвращает всю сущность, а не одно свойство. Разве не так?
Here's an example function that meets your requirements using C# 10:
Вот, уже куда лучше. Если вы дали ему прямо мой запрос, без наводящей беседы. А теперь копипейст (ну там с заменой контекста на свой) и в компилятор - 0 ошибок и 100% правильное выполнение?
Все угловые скобки здешний редактор потёр?
А, нет - неправильно.
typeof(T).Name
Вернёт имя класса, но не имя обновлённой сущности.
"it returns the name of updated entity"
ИИ не понял контекста - не имя сущности в коде, а имя обновлённой конкретной записи. Т.е. у неё где-то должно быть поле с именем, типа City.Name. Но ладно, это поправимо. Просто надо либо больше описать контекст, либо самому дописать. Но в том-то и дело, что описывая контекст максимально точно, я усложняю это описание для понимания не только ИИ, но и для себя. Приходится буквально к каждому слову добавлять кучу описывающих слов, что имелось ввиду. Т.е. не просто entity name, а скажем
it returns the name property of updated entity
или
it returns the name of updated entity (i.e. the entity should have a name property that should be returned)
the entity should have a name property that should be returned
Кстати, догадайтесь, к чему здесь относится "that" - к entity или property? Можно ещё уточнить
it returns the name of updated entity (i.e. the entity should have a name property, and this name property of the updated entity should be returned)
Но тогда в запросе слишком много тавтологии. В этом и проблема. Чтобы получить максимально подходящий код, нужно вылизывать запрос, иногда часами. Также и картинки получали - я наблюдал, как чел сидел и вылизывал многострочные запросы, чтобы получить детали на картинке, которые он хотел. И вот вы уже не программированием занимаетесь, а обучаете ИИ-джуна. Отличие этого железного джуна от мясного, что железный имеет очень быстрый доступ и поиск к большому
банку данных.
И да, если юзать ИИ для написания кода, тогда смысл выпускать человекочитаемые спецификации и вообще человекочитаемый код? Пусть ИИ генерит сразу формы с нужными проверками и контролем доступа к компонентам по пользовательских правам - по словесному описанию. Нафига эта промежуточная здоровая человекоориентированная прослойка в виде кода?
Если эта прослойка останется, то и джуны с прочими градациями никуда не денутся - просто в обучении прогера добавится "уметь базарить с ИИ и проверять его результат". И вместо доков типа МСДНа и всяких Stackoverflow первым источником для примеров и описаний для прогера станет такой вот бот. А сами доки займут более второстепенное место - для самостоятельного изучения и погружения в глубины. Ибо основная масса запросов, особенно прогеров низких грейдов - "дай мне пример кода". Вот это вот "вставьте свой контекст" кто-то же должен делать? Вот джуны этим и всем подобным и займутся - подгонкой полученных примеров по месту. Только раньше они это делали, долго ища самостоятельно в интернете, а теперь будут копипастить первый ботовский результат (с соответствующими последствиями).
Например, я не хочу читать всю статью про стопвотч, варианты его использования и подводные камни, если мне нужен просто кусок быстро вставить для замера времени. Дай мне самый просто юз кейс использования стопвотча и всё. Я могу конечно открыть статью и пошерстить там самый простой пример, но если бот ответит быстрее - то ок... Правда, статья в МСДНе верифицирована, а откуда бот взял свои писульки - непонятно.
Ну и да, больших увольнений не получится. Иначе придётся менять всю структуру разработки и производства по цепочке:
- младшие прогеры не нужны - всё сделают ИИ и старшие;
- выгоняем часть менеджеров, т.к. менеджерить теперь надо в 3 раза меньше людей;
- выгоняем часть старших менеджеров, т.к. младших менеджерить надо меньше;
- выгнанные сокращают потребление, т.к. либо меньше зарабатывают, либо сидят на пособии;
- на сокращение потребления отвечаем сокращением производства;
- запускаем положительную обратную связь;
- сеньёр-помидор при очередной прогулке получает перо в бочину от выгнанных и обанкротившихся джунов, сбивающихся в стаи пограбить пока ещё обеспеченных;
- богатых и рептилоидов, правящих миром, некому лечить и обслуживать, т.к. сильно сокращённого числа специалистов на всех не хватает;
- специалисты сокращаются естественным путём (умирают), новых на их место не приходит (младшие ведь не нужны);
- людишки сокращаются сами, причём во всех стратах - богатые, бедные, средние;
И так во всех сферах производства, науки, культуры и прочем.
Думаю, немного покошмарят с перегибами на местах, особо "умные" разорятся, остальные приспособятся. А хайпожоры поднимут бабла на лохах - ещё больше и быстрее, чем на крипте. Ждём всплеск акций ИИ-компаний. Нужна какая-нибудь "Тесла" от ИИ, куда можно зарыть пару десятков триллионов баксов.
Вообще, противоречия возникнут гораздо раньше, чем в моём списке даже до середины доберутся. По идее, всё больше будет тех, кто будет сидеть на пособиях, не в силах конкурировать профессионализмом или деньгами и связями. Те, кто управляет сверху - начиная от менеджеров и дальше до конца, сами далеко не все гении, а значит не могут допустить появления сильно большого числа умных и конкуретных, а тем более дать вырваться в этом плане ИИ, иначе их просто сместят. Поэтому будет всё либо искуственно тормозиться, либо вся структура общества поменяется с заменой правящего сословия.