ИИ для программиста?
На ноуте
ладно пробую пованговать. У меня в таскбаре такая иконка У вас тоже или что - то другое?
графики или таблицы со скачанных фото умел делать
диаграммы можно делать, но не как png. Примерчик можно что надо?
да неужели
В C# с выходом версии 9.0 и новее появилась возможность создавать экземпляры типов без использования ключевого слова new
, благодаря сокращённому синтаксису с target-typed new expressions (контекстно-определяемое создание объектов).
📌 Пример:
До (C# 8 и ранее):
Person person = new Person();
После (C# 9+):
Person person = new();
❓ Почему так сделали?
✅ 1. Упрощение и читаемость кода
- Становится меньше дублирования типа.
- Код становится короче и чище.
Dictionary<string, List<int>> dict = new(); // раньше пришлось бы повторить тип целиком
✅ 2. Лучше работает с автодополнением (IDE)
- Особенно полезно при работе со сложными обобщёнными типами (
List<Dictionary<string, MyType>>
и т.д.).
🔧 Как это работает?
C# использует контекстный тип слева (target type
) и выводит, какой тип должен быть создан с помощью new()
.
Компилятор сам подставляет правильный тип вnew()
на основании типа переменной слева от знака=
.
⚠️ Ограничения
- Работает только если тип можно однозначно определить из контекста.
- Не сработает в
var x = new();
— компилятор не знает, что за тип. - Не работает с конструкторами, требующими специфичных параметров без контекста.
🧠 Заключение
Краткая форма new()
— это синтаксический сахар, введённый в новых версиях C# (с 9.0) для повышения удобства, читаемости и снижения дублирования типов при инициализации объектов.
Хочешь список других таких нововведений в C# 9–12?
Фашизм будет разбит
Человека карают только те боги, в которых он верит
Давайте вы сотрёте это? )))
Если кто не понял, я это имел ввиду. Создание нового экземпляра всегда было через new, а тут они сами брейкают свои конвенции.
Впрочем, возможно, что это не создание, а условная запись организации пачки данных в кортежном типе. Но тогда эта условная запись тоже ломает конвенции. Лишь простые типы создаются без new, типа int, float, bool и т.п. Остальные, включая кастомные, должны через new. А кортежи и кортежные типы это явно кастомные типы.
Вобщем, вычитал, что это синтактический сахар. Внутри наверняка создаётся какой-нибудь анонимный тип или что-то такое.
Однако, можно сделать так:
x = new(2,"b");
С этими новыми кортежными типами отпала необходимость заводить словари с ключами в виде кастомных типов, для чего надо было этим кастомным типам добавить реализацию IComparable. И анонимные классы в явном виде тоже можно не определять. Теперь ассоциативные коллекции можно просто делать так
List<Renderer> renderers = ... var renderersAndColors = renderers .Select<Renderer, (Renderer, Color)>(r => (r, r.material.color)) .ToArray(); // или можно дать названия полям кортежного типа (Renderer MyRenderer, Color MyColor)[] renderersAndColors = ...
Вообще, видели, чтобы уже автивно в Сишарпе использовали возвраты в виде кортежных типов? По мне, так громоздко получается. Типа такого
(int MyInt, bool MyBool, string MyString) GetData(int intParam, bool boolParam, string stringParam)
{
return (intParam, boolParam, stringParam);
}
Я тут специально название метода выделил, а то оно теперь теряется, и непонятно с первого взгляда, что это вообще метод.
По-моему, кортежные типы удобнее анонимных типов, т.к. анонимный тип нельзя передать за пределы блока, где он определён, а кортежный тип можно. И анонимные типы можно изменять лишь создавая новые экземпляры, а у кортежных типов - просто заменять поля, т.к. они публичные.
Вообще, какой-то винегрет теперь. Вдобавок к вопросам "назовите 5 отличий интерфейсного метода от абстрактного" добавятся "назовите отличия анонимного типа от кортежного". Ещё и будут требовать, чтобы помнил для каждой версии языка, какие отличия добавились-убавились.
Но он не знает.
Странно, к Мюллеру на приём водили?
In C#, tuples do not require the new
keyword because they are value types and have special syntax for initialization.
Instead of using new Tuple(value1, value2)
, you can simply write (value1, value2)
, which is more concise and readable.
Ладно, попробовал использовать ИИ снова, только не для программирования.
Есть у группы "Шериф" такая песенка. Музыка неплохая для попсы, вокал Гулькиной отличный. Но вот лирика полный швах - тафтология на тафтологии. Такое сочиняют школьники, не сильно напрягаясь:
Улицы пусты, мы идём одни,
И дышит всё вокруг любовью.
Вдруг сказала ты: «Я должна уйти,
Расстаться надо нам с тобою».
Ты подожди, не уходи,
Не оставляй меня опять.
И даже если ты уйдешь, я буду ждать.
Ты видишь: я совсем один.
Ты оглянись, не уходи.
Не уходи… Не уходи!
Понял я, что ты уходишь от меня.
Как дальше жить, теперь не знаю.
Ты бросила цветы, в глаза мне не смотря,
Умчалась в стареньком трамвае.
После нескольких попыток беседы с чатом ГПТ, добился такого
Улицы пусты — мы вдвоём в тени,
Тишина пронизана мечтой.
Ты внезапно шепчешь: «Путь у нас один,
Но пора проститься нам с тобой».
Прошу, постой — не уходи,
Не бросай меня опять.
И если всё же ты уйдёшь — я буду ждать.
--- до сюда катит, дальше нет
Взгляни: остался я один.
Обернись — затихни в тишине.
Прошу — не исчезай во мгле!
Я понял — ты уходишь навсегда,
И в сердце — боль немая.
Ты бросила цветы, не встретившись глазами,
И скрылась в старом трамвае.
Вобщем, первые 7 строчек неплохо, но дальше пошла фигня. Ещё и рифму потерял. Впрочем, в оригинале тоже первые 7 строчек ещё куда ни шло. Короче, этот чатик для переписывания стихов в чистом виде нельзя использовать. Поседеешь, пока добьёшься от него законченного длинного стихотворения. Как один из вариантов - брать лучшие части от каждого его выдачи. И не давать большие стихи - по 4-8 строф, не больше. И финальная композиция и полировка - только вручную. В последнем варианте я сходу вижу места, где можно улучшить. Например, не "мечтой-тобой", а "мечтою-тобою". Не "в старом трамвае", а "в стареньком трамвае". Иначе стихи в размер не попадают. А чатик не видит. Нет у чатика чувства прекрасного )))
Я говорю про кортежные типы, а не про кортежи.
А что в ответе принципиально неправильного? Ну и говорить нужно более чётко.
ValueTuple (the tuple type) does not require the new
keyword because it has special syntax for initialization. Unlike Tuple
, which is a reference type and requires explicit instantiation using new
, ValueTuple is a value type and can be created directly using parentheses.
Wenn KI eine ganze IT-Abteilung ersetzen soll
Когда-то этот недостаток тоже устранят.
Но пока что на сложные проекты напускать ИИ низзя.
Понравилась фраза
"4 дня в неделю на вайбе, 1 день в мыле до ночи"
Проблемы будут, когда шибко умные менеджеры и шефы заставят работников в обязон использовать ИИ для создания программ. Ещё и метрики введут.
Проблемы будут, когда шибко умные менеджеры и шефы заставят работников в обязон использовать ИИ для создания программ. Ещё и метрики введут.
Так они уже метрики проверяют, так как твоя ЗП идёт из Sondernvermögen. Так как именно Вы часто используете КИ для программирования. Мне мой сосед инженер приписал больше, но он не продает мелочь в шопиках.