Re[11]: Новости C#12
От: Silver_S Ниоткуда  
Дата: 16.04.23 20:55
Оценка: +3
Здравствуйте, hi_octane, Вы писали:

_>И снова ограничения по фичам в случае макросов вводить куда удобнее — ты можешь просто не включать их в свой проект.


Также как и с C++ когда появились templates. Сколько разных пакостей могли наделать кривые руки с templates, но предпочитали использовать STL.
С макросами в C# тоже бы появились полезные пакеты расширений, более-менее стандартизованные и признаваемые большинством.
Re[10]: Новости C#12
От: IT Россия linq2db.com
Дата: 16.04.23 21:09
Оценка: :)
Здравствуйте, night beast, Вы писали:

NB>в шарпе нет автоформатеров/линтеров?


Может где и есть, но не в наших голимых ынтырпрайзах. Так что остаются только задушевные беседы.
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Новости C#12
От: Osaka  
Дата: 16.04.23 21:16
Оценка:
IT>ЗЫ. У нас в команде есть один девелопер, который упорно не ставит пробел между 'if' и '('. Любые воздействия и задушевные беседы бесполезны. Один единственный макрос решил бы эту проблему раз и навсегда.
Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать.
Re[3]: Новости C#12
От: Silver_S Ниоткуда  
Дата: 17.04.23 11:35
Оценка:
Здравствуйте, IT, Вы писали:

IT>А всё! ООП фичи давно закончились. Из ФП подтянули всё необходимое. Ну может только поддержку монад сделать (хотя...) вменяемую. А так осталось только переходить к реализации полноценного метапрограммирования ...


Есть еще не освоенное направление, как в Kotlin. При помощи лямбд и лаконичного синтаксиса имитировать DSL : Type-safe builders

P.S. А почему Kotlin не переводят на .Net? Куча второстепенных языков переведена. А для Kotlin технические нестыковки или идеологические (это не в интересах MS)?
Re[9]: Новости C#12
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 17.04.23 12:30
Оценка:
переосмыслили знатно — обо всем этом надо знать одно — это ломает существующий код. "это писали не мы" как обоснование проблемы неискоренимо. Макросы при всей их полезности могу порождать качественно более сложные баги, требующие качественно других методов поиска и исправления.
Отредактировано 17.04.2023 12:41 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒ . Предыдущая версия .
Re[9]: Новости C#12
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 17.04.23 12:31
Оценка: +2
это не проблема языка. это проблема организации процесса. признаться, странновато такое слышать...
Re[10]: Новости C#12
От: Философ Ад http://vk.com/id10256428
Дата: 17.04.23 13:10
Оценка:
Здравствуйте, Osaka, Вы писали:

O>Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать.


А что эта комбинация делает? Подозреваю, что форматирует "документ".
Если да, то в VS это плохая штука: оно ломает отморатированные таблички в коде.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[11]: Новости C#12
От: Osaka  
Дата: 17.04.23 13:21
Оценка:
O>>Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать.
Ф>А что эта комбинация делает? Подозреваю, что форматирует "документ".
Расстановку пробелов, переводов строки и прочего одинаково для всех коммитящих без траты времени на споры с идиотами (особенно вышестоящими и гадящими в код в разные дни по-разному).
Ф>Если да, то в VS это плохая штука: оно ломает отморатированные таблички в коде.
Зачем это? Никогда не сталкивался.
Re[12]: Новости C#12
От: Философ Ад http://vk.com/id10256428
Дата: 17.04.23 13:45
Оценка:
Здравствуйте, Osaka, Вы писали:

O>Расстановку пробелов, переводов строки и прочего одинаково для всех коммитящих без траты времени на споры с идиотами (особенно вышестоящими и гадящими в код в разные дни по-разному).


гм.. интересно. У меня Ctrl+E открывает окошко решарпера Recent files, а последующая "D" вводится в появившееся поле ввода.

Ф>>Если да, то в VS это плохая штука: оно ломает отморатированные таблички в коде.

O>Зачем это? Никогда не сталкивался.
Это примерно вот такое.
static int *opcode_timings[256] =
{
/*00*/  &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(2),      CYCLES(3),      &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(2),      NULL,
/*10*/  &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(2),      CYCLES(3),      &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(2),      CYCLES(3),
/*20*/  &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(4),      CYCLES(3),      &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(4),      CYCLES(3),
/*30*/  &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(4),      CYCLES(2),      &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     &timing_rr,     &timing_rr,     CYCLES(4),      CYCLES(2),

/*40*/  &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,
/*50*/  CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),
/*60*/  CYCLES(11),     CYCLES(9),      CYCLES(7),      CYCLES(9),      CYCLES(4),      CYCLES(4),      CYCLES(2),      CYCLES(2),      CYCLES(1),      CYCLES2(17,25), CYCLES(1),      CYCLES2(17,20), CYCLES(17),     CYCLES(17),     CYCLES(17),     CYCLES(17),
/*70*/  &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,    &timing_bnt,

/*80*/  &timing_mr,     &timing_mr,     &timing_mr,     &timing_mr,     &timing_rm,     &timing_rm,     CYCLES(5),      CYCLES(5),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(3),      CYCLES(1),      CYCLES(5),      CYCLES(6),
/*90*/  CYCLES(1),      CYCLES(3),      CYCLES(3),      CYCLES(3),      CYCLES(3),      CYCLES(3),      CYCLES(3),      CYCLES(3),      CYCLES(3),      CYCLES(3),      CYCLES(0),      CYCLES(4),      CYCLES(4),      CYCLES(5),      CYCLES(2),      CYCLES(3),
/*a0*/  CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(1),      CYCLES(7),      CYCLES(7),      CYCLES(8),      CYCLES(8),      CYCLES(1),      CYCLES(1),      CYCLES(5),      CYCLES(5),      CYCLES(5),      CYCLES(5),      CYCLES(6),      CYCLES(6),
/*b0*/  &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,     &timing_rr,

/*c0*/  CYCLES(4),      CYCLES(4),      CYCLES(5),      CYCLES(5),      CYCLES(6),      CYCLES(6),      CYCLES(1),      CYCLES(1),      CYCLES(14),     CYCLES(5),      CYCLES(0),      CYCLES(0),      &timing_int,    &timing_int,    CYCLES(3),      CYCLES(0),
/*d0*/  CYCLES(4),      CYCLES(4),      CYCLES(4),      CYCLES(4),      CYCLES(15),     CYCLES(14),     CYCLES(2),      CYCLES(4),      NULL,           NULL,           NULL,           NULL,           NULL,           NULL,           NULL,           NULL,
/*e0*/  CYCLES(6),      CYCLES(6),      CYCLES(6),      CYCLES(5),      CYCLES(14),     CYCLES(14),     CYCLES(16),     CYCLES(16),     CYCLES(3),      CYCLES(3),      CYCLES(17),     CYCLES(3),      CYCLES(14),     CYCLES(14),     CYCLES(14),     CYCLES(14),
/*f0*/  CYCLES(4),      CYCLES(0),      CYCLES(0),      CYCLES(0),      CYCLES(4),      CYCLES(2),      NULL,           NULL,           CYCLES(2),      CYCLES(2),      CYCLES(3),      CYCLES(2),      CYCLES(2),      CYCLES(2),      CYCLES(3),      NULL
};


Встречается довольно таки часто.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[10]: Новости C#12
От: IT Россия linq2db.com
Дата: 17.04.23 13:46
Оценка:
Здравствуйте, Osaka, Вы писали:

IT>>ЗЫ. У нас в команде есть один девелопер, который упорно не ставит пробел между 'if' и '('. Любые воздействия и задушевные беседы бесполезны. Один единственный макрос решил бы эту проблему раз и навсегда.

O>Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать.

У меня лично с этим проблем нет без всяких Ctrl+E,D. Но я не могу стоять у каждого за спиной и контролировать кто там какие кнопки нажимает.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Новости C#12
От: IT Россия linq2db.com
Дата: 17.04.23 13:58
Оценка: +2
Здравствуйте, Silver_S, Вы писали:

IT>>А всё! ООП фичи давно закончились. Из ФП подтянули всё необходимое. Ну может только поддержку монад сделать (хотя...) вменяемую. А так осталось только переходить к реализации полноценного метапрограммирования ...

S_S>Есть еще не освоенное направление, как в Kotlin. При помощи лямбд и лаконичного синтаксиса имитировать DSL : Type-safe builders

Думаю, народ в MS ещё не дозрел ни до полноценной compile-time генерации кода, ни до имитации DSL. Какие-то осторожные попытки делаются, но это выглядит больше как эксперименты. Ребятам нужно понять одну простую вещь — это всё равно рано или поздно, плохо или хорошо, но будет сделано. Если они этого не сделают, то сделают те, кто придёт после них. Но это всё равно будет сделано! Хоты бы потому, что всё остальное уже реализовано. Других больших проектов в развитии компилятора не предвидется.

S_S>P.S. А почему Kotlin не переводят на .Net? Куча второстепенных языков переведена. А для Kotlin технические нестыковки или идеологические (это не в интересах MS)?


MS скорее всего по барабану. Если Котлин хочет на .NET, то это проблема Котлина.
Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: Новости C#12
От: Osaka  
Дата: 17.04.23 14:30
Оценка:
Ф>гм.. интересно. У меня Ctrl+E открывает окошко решарпера Recent files, а последующая "D" вводится в появившееся поле ввода.
Раскладка C# 2005 или как-то так.
Ф>>>Если да, то в VS это плохая штука: оно ломает отморатированные таблички в коде.
O>>Зачем это? Никогда не сталкивался.
Ф>Это примерно вот такое.
Ф>static int *opcode_timings[256] =
Ф>{
Ф>/*00*/ &timing_mr, &timing_mr, &timing_rm, &timing_rm, &timing_rr, &timing_rr, CYCLES(2), CYCLES(3), &timing_mr, &timing_mr, &timing_rm,
У нас такое в БД. Или хотя бы в ресурсе.
Re[11]: Новости C#12
От: Osaka  
Дата: 17.04.23 14:33
Оценка:
O>>Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать.
IT>У меня лично с этим проблем нет без всяких Ctrl+E,D. Но я не могу стоять у каждого за спиной и контролировать кто там какие кнопки нажимает.
Это контролирует сравнение истории версий. После кого вылезла куча бессмысленных различий, тот раздолбай не нажал автоформатирование перед коммитом. ИЧСХ, все ходы записаны.
Re[10]: Новости C#12
От: IT Россия linq2db.com
Дата: 17.04.23 15:10
Оценка:
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒, Вы писали:
尿Ǥ푙>это не проблема языка. это проблема организации процесса.

Разве кто-то запрещает решать проблемы организации процесса с помощью языка?

尿Ǥ푙>признаться, странновато такое слышать...


Я тебя умоляю. Как тебе такое — на билд серверах нельзя использовать soft on demand, нельзя устанавливать никакие сервероподобные приложения. И это в 2023-м году, когда весь мир уже не представляет что такое билд сервер без докера. Ынтырпрайз, фигли.
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: Новости C#12
От: IT Россия linq2db.com
Дата: 17.04.23 15:17
Оценка: 15 (2) +2 -1 :)
Здравствуйте, Osaka, Вы писали:

O>Это контролирует сравнение истории версий. После кого вылезла куча бессмысленных различий, тот раздолбай не нажал автоформатирование перед коммитом. ИЧСХ, все ходы записаны.


За автоформатирование руки надо сразу вырывать.
Если нам не помогут, то мы тоже никого не пощадим.
Re[11]: Новости C#12
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 17.04.23 15:32
Оценка:
ну если посевно-гнездовым, то ничего не поможет. в небольших коммандах до 5-10 человек очень просто договориться. Меня умолять не надо, кто тебе мешает не аппрувить PR/MR, если ты не доволен форматированием? Всякие сонары что что а форматирование секут на раз — пару раз билд завалит неотформатиорванным коммитом, будет думать. Ты расскажи мне про энтерпайз
Re[12]: Новости C#12
От: IT Россия linq2db.com
Дата: 17.04.23 15:46
Оценка:
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒, Вы писали:

尿Ǥ푙>ну если посевно-гнездовым, то ничего не поможет. в небольших коммандах до 5-10 человек очень просто договориться.


Это если у тебя 5-10 вменяемых человек. А если 20 в разной степени вменяемости, то это другое.

尿Ǥ푙>Меня умолять не надо, кто тебе мешает не аппрувить PR/MR, если ты не доволен форматированием?


Я не единственный апрувер и всякие умники этим умело пользуются. У нас пол команды в Европе и когда я появляюсь на работе, то половина PR уже может быть замёржена.

尿Ǥ푙>Всякие сонары что что а форматирование секут на раз — пару раз билд завалит неотформатиорванным коммитом, будет думать. Ты расскажи мне про энтерпайз


Сонары настраивают другие дяденьки, у меня к этим настройками доступа нет, меня лишь обязывают их использовать. А у дяденек свои соображения на тему того, каким образом им имитировать свою бурную деятельность. Твои проблемы их не волнуют.

Потому и говорю — дайте мне возможность это решить языковыми методами и проблемы не будет уже завтра.
Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: Новости C#12
От: Osaka  
Дата: 17.04.23 16:17
Оценка:
IT>За автоформатирование руки надо сразу вырывать.
УК РФ Статья 111 ч. 2 пункты д, е. До 10 лет.
Отредактировано 17.04.2023 16:18 Osaka . Предыдущая версия .
Re[14]: Новости C#12
От: Философ Ад http://vk.com/id10256428
Дата: 17.04.23 16:38
Оценка:
Здравствуйте, Osaka, Вы писали:

O>У нас такое в БД. Или хотя бы в ресурсе.


Во-первых, приведённый пример гарантированно никогда не изменится — его бессмысленно в ресурсы заталкивать. Это часть эмулятора древней железки.
Во-вторых, такое в ресурсы запихивать трудозатратно.

В-третьих, примерно так же выглядит серьёзная часть алгоритмов, например, криптография почти вся такая.
Или вот ещё:
opPOPA_l(uint32_t fetchdat)
{
    if (stack32) {
        EDI = readmeml(ss, ESP);                        if (cpu_state.abrt) return 1;
        ESI = readmeml(ss, ESP +  4);                   if (cpu_state.abrt) return 1;
        EBP = readmeml(ss, ESP +  8);                   if (cpu_state.abrt) return 1;
        EBX = readmeml(ss, ESP + 16);                   if (cpu_state.abrt) return 1;
        EDX = readmeml(ss, ESP + 20);                   if (cpu_state.abrt) return 1;
        ECX = readmeml(ss, ESP + 24);                   if (cpu_state.abrt) return 1;
        EAX = readmeml(ss, ESP + 28);                   if (cpu_state.abrt) return 1;
        ESP += 32;
    } else {
        EDI = readmeml(ss, ((SP)      & 0xFFFF));       if (cpu_state.abrt) return 1;
        ESI = readmeml(ss, ((SP +  4) & 0xFFFF));       if (cpu_state.abrt) return 1;
        EBP = readmeml(ss, ((SP +  8) & 0xFFFF));       if (cpu_state.abrt) return 1;
        EBX = readmeml(ss, ((SP + 16) & 0xFFFF));       if (cpu_state.abrt) return 1;
        EDX = readmeml(ss, ((SP + 20) & 0xFFFF));       if (cpu_state.abrt) return 1;
        ECX = readmeml(ss, ((SP + 24) & 0xFFFF));       if (cpu_state.abrt) return 1;
        EAX = readmeml(ss, ((SP + 28) & 0xFFFF));       if (cpu_state.abrt) return 1;
        SP += 32;
    }
    CLOCK_CYCLES((is486) ? 9 : 24);
    PREFETCH_RUN(24, 1, -1, 0, 7, 0, 0, 0);
    return 0;
}


До тех пор, пока ты это автоматически не отформатируешь, это хорошо читается, а после автоформата оно превращается в кашу. С криптографией тоже самое.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[15]: Новости C#12
От: · Великобритания  
Дата: 17.04.23 17:00
Оценка:
Здравствуйте, Философ, Вы писали:

Ф>В-третьих, примерно так же выглядит серьёзная часть алгоритмов, например, криптография почти вся такая.

Ф>Или вот ещё:
Ф> EDI = readmeml(ss, ESP); if (cpu_state.abrt) return 1;
Если поместить if на отдельные строчки, хуже не станет. Да и вообще неясно насколько необходимо проверять abrt после каждого readmeml, наверняка это можно сделать после всех чтений.

Ф> ((SP + 4) & 0xFFFF))

Тут явно напрашивается что-то вроде "extract_something(SP + 4)", документации ради как минимум, и не потребуется вертикальное выравнивание.

Ф>До тех пор, пока ты это автоматически не отформатируешь, это хорошо читается, а после автоформата оно превращается в кашу. С криптографией тоже самое.

Обычно авто-форматтеры позволяют помечать специальными маркерами фрагменты кода, для которых автоформатирование отключается. Что-то типа "// formatter=off".
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.