Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Подскажите по чату ГПТ

1942  1 2 3 4 5 6 все
Срыв покровов патриот03.03.23 22:06
03.03.23 22:06 
в ответ alex445 03.03.23 21:27, Последний раз изменено 03.03.23 22:07 (Срыв покровов)

покажи мне, как гугл или бинг справятся вот с этим запросом:

Напиши мне функцию на 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));

}

}


#21 
Срыв покровов патриот03.03.23 22:25
NEW 03.03.23 22:25 
в ответ Срыв покровов 03.03.23 22:06

или вот вопрос:

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();

}

}

#22 
Срыв покровов патриот03.03.23 22:30
NEW 03.03.23 22:30 
в ответ Срыв покровов 03.03.23 22:25

продолжение

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();

}

}

#23 
alex445 коренной житель03.03.23 23:56
NEW 03.03.23 23:56 
в ответ Срыв покровов 03.03.23 22:01, Последний раз изменено 03.03.23 23:59 (alex445)
Те реально что ли ссышь, что тебя на ИИ заменят?))

В мире, где инклюзивность и дайвёрсити правят бал, человека никогда не заменят... Хотя, может быть и худший вариант - инклюзивные и разнообразные, а также самые достойные сеньёры будут сидеть на 6-значных зарплатах, а джуны с миддлами и недозрелые помидоры - мёрзнуть на морозе. А между ними будет засилье ИИ. Правда в этом случае оставшимся сеньёрам придётся делать работу вообще за всех - за себя, за ИИ (парсить его лапшу), за все цвета радуги. Так что вполне возможно, что эти "счастливчики" будут на самом деле самыми несчастными.

#24 
alex445 коренной житель04.03.23 00:05
NEW 04.03.23 00:05 
в ответ Срыв покровов 03.03.23 22:06, Последний раз изменено 04.03.23 00:05 (alex445)
покажи мне, как гугл или бинг справятся вот с этим запросом:
Напиши мне функцию на c#, которая возвращает последний день переданной даты.



И вот ответ:
Конечно! Вот функция на C#, которая принимает дату в качестве аргумента и возвращает последний день месяца переданной даты:

"день", "даты" - масло масляное


"возвращает последний день месяца переданной даты" - а с какого буя этот искуственный идиот решил, что я имел ввиду месяц, а не скажем год или неделю? Слова "месяц" даже в исходном запросе не было - этот балда добавил его от себя. Вот и будете вы сношаться с ним часами, уточняя подробности.


А Гугл или Бинг просто встроят эту функцию в свой поиск, как они уже повстраивали туда всякие калькуляторы, конвертеры и прочее.

#25 
alex445 коренной житель04.03.23 00:09
04.03.23 00:09 
в ответ Срыв покровов 03.03.23 22:25, Последний раз изменено 04.03.23 00:11 (alex445)
или вот вопрос:
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. Надо "всего лишь" указать, в какой версии языка должен быть код. Интересно, этот бот сможет учесть это? К исходному вопросу добавлена совсем маленькая деталь.

#26 
alex445 коренной житель04.03.23 00:13
NEW 04.03.23 00:13 
в ответ Срыв покровов 03.03.23 22:25, Последний раз изменено 04.03.23 00:14 (alex445)
Вопрос
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();
}
}

Ну и что он выдал? Какой вопрос, и какой ответ? Где только одно свойство на возврате? Если в вопросе чушь, то он должен задать уточняющий вопрос. Если не чушь - пусть выкручивается и делает. А так он додумал что-то (т.е. подобрал наиболее подходящее из всего банка кода, который у него есть) и выдал лапшу - разбирайся сам мол.

#27 
alex445 коренной житель04.03.23 00:19
NEW 04.03.23 00:19 
в ответ Срыв покровов 03.03.23 22:30, Последний раз изменено 04.03.23 00:28 (alex445)
продолжение
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#.


По моим понятиям, он должен сам сообразить, в каком контексте замерять время и как лучше всего это делать. Пусть выберет лучший таймер на это дело или найдёт где-то встроенную диагностическую функцию. А также подумает, как вернуть мне всю инфу, что я просил. И чтобы выглядело всё модерново, а не кучка скобочек и простыней старых версий.


Но главное, что вы должны проверить его результат. А если вы не разбираетесь, то проверить не сможете. А если разбираетесь - вам не нужен этот бот, чтобы писать такие функции.

#28 
alex445 коренной житель04.03.23 00:49
NEW 04.03.23 00:49 
в ответ Срыв покровов 03.03.23 22:30

Есть ещё простенькая задачка для вашего бота. Пусть напишет юнит-тесты к любой из функций, которые он сам же и написал. Если он понабрал эти функции откуда-то, то там наверняка и тесты где-то рядом лежали? Тесты, естественно, должны быть максимально полными и правильными.

#29 
Срыв покровов патриот04.03.23 08:12
NEW 04.03.23 08:12 
в ответ alex445 04.03.23 00:05
А Гугл или Бинг просто встроят эту функцию в свой поиск, как они уже повстраивали туда всякие калькуляторы, конвертеры и прочее.

во-первых ещё не встроили

Во-вторых это будет делать тот же ИИ, от которого ты шарахаешься. Хотя да, тут же правильные пацаны, с ними работать можно.

#30 
Срыв покровов патриот04.03.23 08:17
NEW 04.03.23 08:17 
в ответ alex445 04.03.23 00:09

придираться к лишним скобкам? Серьёзно?


Это называется "в правильном вопросе содержится половина ответа", а то и больше.

Факт в том, что ни ты ни гугл мне бы решение не выдал. И да, я правильно формулирую вопросы, тебе стоит у меня поучиться.

#31 
Срыв покровов патриот04.03.23 08:18
NEW 04.03.23 08:18 
в ответ alex445 04.03.23 00:13
Ну и что он выдал? Какой вопрос, и какой ответ? Где только одно свойство на возврате?

а ты тут увидел несколько свойств? Где же?

#32 
Срыв покровов патриот04.03.23 08:26
NEW 04.03.23 08:26 
в ответ alex445 04.03.23 00:19, Последний раз изменено 04.03.23 08:27 (Срыв покровов)

По-моему просто охуенно

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);

}

}

#33 
alex445 коренной житель04.03.23 12:46
NEW 04.03.23 12:46 
в ответ Срыв покровов 04.03.23 08:17
придираться к лишним скобкам? Серьёзно?

Именно. Я не хочу разбираться в портянках старых подходов и версий.

#34 
alex445 коренной житель04.03.23 12:47
NEW 04.03.23 12:47 
в ответ Срыв покровов 04.03.23 08:18, Последний раз изменено 04.03.23 12:49 (alex445)
Ну и что он выдал? Какой вопрос, и какой ответ? Где только одно свойство на возврате?
а ты тут увидел несколько свойств? Где же?

По коду он возвращает всю сущность, а не одно свойство. Разве не так?

#35 
alex445 коренной житель04.03.23 12:51
NEW 04.03.23 12:51 
в ответ Срыв покровов 04.03.23 08:26, Последний раз изменено 04.03.23 12:53 (alex445)
Here's an example function that meets your requirements using C# 10:

Вот, уже куда лучше. Если вы дали ему прямо мой запрос, без наводящей беседы. А теперь копипейст (ну там с заменой контекста на свой) и в компилятор - 0 ошибок и 100% правильное выполнение?


Все угловые скобки здешний редактор потёр?

#36 
alex445 коренной житель04.03.23 12:56
NEW 04.03.23 12:56 
в ответ alex445 04.03.23 12:51, Последний раз изменено 04.03.23 13:01 (alex445)

А, нет - неправильно.


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)

#37 
alex445 коренной житель04.03.23 13:05
NEW 04.03.23 13:05 
в ответ alex445 04.03.23 12:56, Последний раз изменено 04.03.23 13:16 (alex445)
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 первым источником для примеров и описаний для прогера станет такой вот бот. А сами доки займут более второстепенное место - для самостоятельного изучения и погружения в глубины. Ибо основная масса запросов, особенно прогеров низких грейдов - "дай мне пример кода". Вот это вот "вставьте свой контекст" кто-то же должен делать? Вот джуны этим и всем подобным и займутся - подгонкой полученных примеров по месту. Только раньше они это делали, долго ища самостоятельно в интернете, а теперь будут копипастить первый ботовский результат (с соответствующими последствиями).


Например, я не хочу читать всю статью про стопвотч, варианты его использования и подводные камни, если мне нужен просто кусок быстро вставить для замера времени. Дай мне самый просто юз кейс использования стопвотча и всё. Я могу конечно открыть статью и пошерстить там самый простой пример, но если бот ответит быстрее - то ок... Правда, статья в МСДНе верифицирована, а откуда бот взял свои писульки - непонятно.

#38 
alex445 коренной житель04.03.23 13:25
NEW 04.03.23 13:25 
в ответ alex445 04.03.23 13:05, Последний раз изменено 04.03.23 13:26 (alex445)

Ну и да, больших увольнений не получится. Иначе придётся менять всю структуру разработки и производства по цепочке:


- младшие прогеры не нужны - всё сделают ИИ и старшие;

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

- выгоняем часть старших менеджеров, т.к. младших менеджерить надо меньше;

- выгнанные сокращают потребление, т.к. либо меньше зарабатывают, либо сидят на пособии;

- на сокращение потребления отвечаем сокращением производства;

- запускаем положительную обратную связь;

- сеньёр-помидор при очередной прогулке получает перо в бочину от выгнанных и обанкротившихся джунов, сбивающихся в стаи пограбить пока ещё обеспеченных;

- богатых и рептилоидов, правящих миром, некому лечить и обслуживать, т.к. сильно сокращённого числа специалистов на всех не хватает;

- специалисты сокращаются естественным путём (умирают), новых на их место не приходит (младшие ведь не нужны);

- людишки сокращаются сами, причём во всех стратах - богатые, бедные, средние;


И так во всех сферах производства, науки, культуры и прочем.


Думаю, немного покошмарят с перегибами на местах, особо "умные" разорятся, остальные приспособятся. А хайпожоры поднимут бабла на лохах - ещё больше и быстрее, чем на крипте. Ждём всплеск акций ИИ-компаний. Нужна какая-нибудь "Тесла" от ИИ, куда можно зарыть пару десятков триллионов баксов.

#39 
alex445 коренной житель04.03.23 13:30
NEW 04.03.23 13:30 
в ответ alex445 04.03.23 13:25, Последний раз изменено 04.03.23 13:32 (alex445)

Вообще, противоречия возникнут гораздо раньше, чем в моём списке даже до середины доберутся. По идее, всё больше будет тех, кто будет сидеть на пособиях, не в силах конкурировать профессионализмом или деньгами и связями. Те, кто управляет сверху - начиная от менеджеров и дальше до конца, сами далеко не все гении, а значит не могут допустить появления сильно большого числа умных и конкуретных, а тем более дать вырваться в этом плане ИИ, иначе их просто сместят. Поэтому будет всё либо искуственно тормозиться, либо вся структура общества поменяется с заменой правящего сословия.

#40 
1 2 3 4 5 6 все