Здравствуйте, hi_octane, Вы писали:
_>И снова ограничения по фичам в случае макросов вводить куда удобнее — ты можешь просто не включать их в свой проект.
Также как и с C++ когда появились templates. Сколько разных пакостей могли наделать кривые руки с templates, но предпочитали использовать STL.
С макросами в C# тоже бы появились полезные пакеты расширений, более-менее стандартизованные и признаваемые большинством.
IT>ЗЫ. У нас в команде есть один девелопер, который упорно не ставит пробел между 'if' и '('. Любые воздействия и задушевные беседы бесполезны. Один единственный макрос решил бы эту проблему раз и навсегда.
Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать.
Здравствуйте, IT, Вы писали:
IT>А всё! ООП фичи давно закончились. Из ФП подтянули всё необходимое. Ну может только поддержку монад сделать (хотя...) вменяемую. А так осталось только переходить к реализации полноценного метапрограммирования ...
Есть еще не освоенное направление, как в Kotlin. При помощи лямбд и лаконичного синтаксиса имитировать DSL : Type-safe builders
P.S. А почему Kotlin не переводят на .Net? Куча второстепенных языков переведена. А для Kotlin технические нестыковки или идеологические (это не в интересах MS)?
переосмыслили знатно — обо всем этом надо знать одно — это ломает существующий код. "это писали не мы" как обоснование проблемы неискоренимо. Макросы при всей их полезности могу порождать качественно более сложные баги, требующие качественно других методов поиска и исправления.
O>>Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать. Ф>А что эта комбинация делает? Подозреваю, что форматирует "документ".
Расстановку пробелов, переводов строки и прочего одинаково для всех коммитящих без траты времени на споры с идиотами (особенно вышестоящими и гадящими в код в разные дни по-разному). Ф>Если да, то в VS это плохая штука: оно ломает отморатированные таблички в коде.
Зачем это? Никогда не сталкивался.
Здравствуйте, Osaka, Вы писали:
O>Расстановку пробелов, переводов строки и прочего одинаково для всех коммитящих без траты времени на споры с идиотами (особенно вышестоящими и гадящими в код в разные дни по-разному).
гм.. интересно. У меня Ctrl+E открывает окошко решарпера Recent files, а последующая "D" вводится в появившееся поле ввода.
Ф>>Если да, то в VS это плохая штука: оно ломает отморатированные таблички в коде. O>Зачем это? Никогда не сталкивался.
Это примерно вот такое.
Здравствуйте, Osaka, Вы писали:
IT>>ЗЫ. У нас в команде есть один девелопер, который упорно не ставит пробел между 'if' и '('. Любые воздействия и задушевные беседы бесполезны. Один единственный макрос решил бы эту проблему раз и навсегда. O>Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать.
У меня лично с этим проблем нет без всяких Ctrl+E,D. Но я не могу стоять у каждого за спиной и контролировать кто там какие кнопки нажимает.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Silver_S, Вы писали:
IT>>А всё! ООП фичи давно закончились. Из ФП подтянули всё необходимое. Ну может только поддержку монад сделать (хотя...) вменяемую. А так осталось только переходить к реализации полноценного метапрограммирования ... S_S>Есть еще не освоенное направление, как в Kotlin. При помощи лямбд и лаконичного синтаксиса имитировать DSL : Type-safe builders
Думаю, народ в MS ещё не дозрел ни до полноценной compile-time генерации кода, ни до имитации DSL. Какие-то осторожные попытки делаются, но это выглядит больше как эксперименты. Ребятам нужно понять одну простую вещь — это всё равно рано или поздно, плохо или хорошо, но будет сделано. Если они этого не сделают, то сделают те, кто придёт после них. Но это всё равно будет сделано! Хоты бы потому, что всё остальное уже реализовано. Других больших проектов в развитии компилятора не предвидется.
S_S>P.S. А почему Kotlin не переводят на .Net? Куча второстепенных языков переведена. А для Kotlin технические нестыковки или идеологические (это не в интересах MS)?
MS скорее всего по барабану. Если Котлин хочет на .NET, то это проблема Котлина.
Если нам не помогут, то мы тоже никого не пощадим.
Ф>гм.. интересно. У меня 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,
У нас такое в БД. Или хотя бы в ресурсе.
O>>Вроде большинство успешно приучиваются Ctrl+E,D постоянно нажимать. IT>У меня лично с этим проблем нет без всяких Ctrl+E,D. Но я не могу стоять у каждого за спиной и контролировать кто там какие кнопки нажимает.
Это контролирует сравнение истории версий. После кого вылезла куча бессмысленных различий, тот раздолбай не нажал автоформатирование перед коммитом. ИЧСХ, все ходы записаны.
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ, Вы писали: 尿Ǥ푙>это не проблема языка. это проблема организации процесса.
Разве кто-то запрещает решать проблемы организации процесса с помощью языка?
尿Ǥ푙>признаться, странновато такое слышать...
Я тебя умоляю. Как тебе такое — на билд серверах нельзя использовать soft on demand, нельзя устанавливать никакие сервероподобные приложения. И это в 2023-м году, когда весь мир уже не представляет что такое билд сервер без докера. Ынтырпрайз, фигли.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Osaka, Вы писали:
O>Это контролирует сравнение истории версий. После кого вылезла куча бессмысленных различий, тот раздолбай не нажал автоформатирование перед коммитом. ИЧСХ, все ходы записаны.
За автоформатирование руки надо сразу вырывать.
Если нам не помогут, то мы тоже никого не пощадим.
ну если посевно-гнездовым, то ничего не поможет. в небольших коммандах до 5-10 человек очень просто договориться. Меня умолять не надо, кто тебе мешает не аппрувить PR/MR, если ты не доволен форматированием? Всякие сонары что что а форматирование секут на раз — пару раз билд завалит неотформатиорванным коммитом, будет думать. Ты расскажи мне про энтерпайз
Здравствуйте, 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ, Вы писали:
尿Ǥ푙>ну если посевно-гнездовым, то ничего не поможет. в небольших коммандах до 5-10 человек очень просто договориться.
Это если у тебя 5-10 вменяемых человек. А если 20 в разной степени вменяемости, то это другое.
尿Ǥ푙>Меня умолять не надо, кто тебе мешает не аппрувить PR/MR, если ты не доволен форматированием?
Я не единственный апрувер и всякие умники этим умело пользуются. У нас пол команды в Европе и когда я появляюсь на работе, то половина PR уже может быть замёржена.
尿Ǥ푙>Всякие сонары что что а форматирование секут на раз — пару раз билд завалит неотформатиорванным коммитом, будет думать. Ты расскажи мне про энтерпайз
Сонары настраивают другие дяденьки, у меня к этим настройками доступа нет, меня лишь обязывают их использовать. А у дяденек свои соображения на тему того, каким образом им имитировать свою бурную деятельность. Твои проблемы их не волнуют.
Потому и говорю — дайте мне возможность это решить языковыми методами и проблемы не будет уже завтра.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, 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;
}
До тех пор, пока ты это автоматически не отформатируешь, это хорошо читается, а после автоформата оно превращается в кашу. С криптографией тоже самое.
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, Философ, Вы писали:
Ф>В-третьих, примерно так же выглядит серьёзная часть алгоритмов, например, криптография почти вся такая. Ф>Или вот ещё: Ф> EDI = readmeml(ss, ESP); if (cpu_state.abrt) return 1;
Если поместить if на отдельные строчки, хуже не станет. Да и вообще неясно насколько необходимо проверять abrt после каждого readmeml, наверняка это можно сделать после всех чтений.
Ф> ((SP + 4) & 0xFFFF))
Тут явно напрашивается что-то вроде "extract_something(SP + 4)", документации ради как минимум, и не потребуется вертикальное выравнивание.
Ф>До тех пор, пока ты это автоматически не отформатируешь, это хорошо читается, а после автоформата оно превращается в кашу. С криптографией тоже самое.
Обычно авто-форматтеры позволяют помечать специальными маркерами фрагменты кода, для которых автоформатирование отключается. Что-то типа "// formatter=off".
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай