User
Scala, Python, Nim, Nemerle, Eiffel.
Первые два вопросов популярности не вызывают надеюсь.
Ох уж этот автокорректор :)
Как сказать, Go не будет первым языком использующим квадратные скобки для обольщений.
Очень хорошо написано !
Хочу мажорной нотки добавить, что таки есть места где тебя и любят и ценят и даже спустя годы и даже когда ты уже не там.
Несколько Кб при условии, что вы собираете на предустановленный .NET Framework.А вот .NET 6 может быть как и предустановлен так и нет.
Если в публикации не выбирать self-contained, то будет также пару Кб, но потребуется установить заранее .NET.
https://docs.microsoft.com/ru-ru/dotnet/core/deploying/
Очень рекомендую писать возвращаемый тип из функции.
Обожглись на казалось бы простом коде:
function f(a:A,b:B){return a&&b;}
JS и TS конечно дают возвращаемый тип не boolean, а тип объекта a или b.
В итоге, вышло боком, когда подразумевали булевое значение, а получили объект :)
Точно. Помню, что хотели добавить, но всё забывал проверить когда этот момент настанет.
Смотрю, сейчас работает.
Да, в FF это расширения, их с десяток на вкус и цвет.
На мой взгляд если работает также, то не принципиально будет это через расширение или нет.
Я например использую Sidebery, который к тому же ещё умеет по адресу открывать нужный контейнер.
На Firefox меня держут:
Вертикальные вкладки
Настройка внешнего вида, скажем убрать горизонтальные вкладки совсем
Контейнеры сайтов без необходимости создавать различные профили или открывать разные окна
Мастер пароль для шифрования логинов
Ночной режим в мобильном приложении
Мобильное приложение умеет скрывать рекламу (привет Chrome)
Синхронизация с шифрованием на клиенте
И другие удобные мелочи :)
Brave, увы, до сих пор не умеет пункты 1-5.
Vivaldi не умеет 3 и его нет на iOS
Chrome умеет только 7, но не умеет синхронизировать историю в таком режиме, только новые посещения.
Microsoft Edge не умеет ничего
Поэтому и нет std::optional<T&>.
Не смогли решить относиться к этому как к обёртке или сделать неотличимым от объекта.
Как оказывается Скотт даже предлагал forwarding reference в статье, но в итоге взял universal reference и усложнил всем жизнь :)
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4164.pdf
Я этот момент не критикую. Статья действительно лбъёмная. ?
Это на случай если кто задастся вопросом что с этим можно сделать.
Кстати, вроде как отказались от термина "универсальная ссылка" и плавильней "forwarding reference", наверное перевести стоит как "передающая ссылка".
Кстати, о применимости const T&&. Если мы требуем именно временный объект.
https://www.walletfox.com/course/cheatsheets_cpp.php
Ну да, так и надо.
А я вот начал литкод лёгкий уровень и благополучно забросил:)
Как же неочевиден.
Можно обновлять реализацию без изменения самого компилятора.
В идеале всё, что можно вынести в макросы в виде библиотек, а компилятор не менять.
В Rust тоже магия компилятора.
macro_rules! format_args {
($fmt:expr) => {{ /* compiler built-in */ }}; ($fmt:expr, $($args:tt)*) => {{ /* compiler built-in */ }};}
https://github.com/rust-lang/rust/blob/master/library/core/src/macros/mod.rs#L842
Rust ещё немного не дорос до полноценных макросов :)Вот пример макроса printf без магии компилятора: printf
Посмотрите статью, там всё сложно:)
Зависит от того, в какой тип попадает строка с интерполяцией.
Скажем в простом варианте:
string a="x", b = "y";
string c = $"{x}{y}";
Будет просто string.Concat(x,y)
В других вариантах будет посложнее.
Нет.
Это в итоге вызовет WriteLine(string) или WriteLine(FormattableString) или другие варианты.
Во всяком случае не будет того вызова о, котором вы говорите.
А само форматированние строки претерпело уже несколько реинкарнаций: https://habr.com/ru/company/skillfactory/blog/599341/
if (source is VectorRoundButton) { VectorRoundButton control = source as VectorRoundButton;
if (source is VectorRoundButton)
{ VectorRoundButton control = source as VectorRoundButton;
Почему не использовать сопоставление с образцом для упрощения кода: if(source is VextorRoundButton control) ?
Поставьте Roslynator/ReSharper или подолное для автоматической замены.
При работе с концептами лучше использовать std::same_as, чтобы не было неожиданостей.
Для компилятора в случае концептов is_same_v<T, U> и is_same_v<U, T> будут разными атомами, поэтому лучше заранее избежать проблем.
Тема раскрывается у Andrzej-я
Тут зависит от компании. Скажем если вам FAANG то извольте натренироваться решать сложные задачки.
Если вам в другие компании, то скорее всего достаточно тренировать задачи среднего уровня, но стоит сложного тоже пробовать.
Ещё любят некоторые системный дизайн спрашивать.
А вообще здесь на хабре об этом много статей написано.
Scala, Python, Nim, Nemerle, Eiffel.
Первые два вопросов популярности не вызывают надеюсь.
Ох уж этот автокорректор :)
Как сказать, Go не будет первым языком использующим квадратные скобки для обольщений.
Очень хорошо написано !
Хочу мажорной нотки добавить, что таки есть места где тебя и любят и ценят и даже спустя годы и даже когда ты уже не там.
Несколько Кб при условии, что вы собираете на предустановленный .NET Framework.
А вот .NET 6 может быть как и предустановлен так и нет.
Если в публикации не выбирать self-contained, то будет также пару Кб, но потребуется установить заранее .NET.
https://docs.microsoft.com/ru-ru/dotnet/core/deploying/
Очень рекомендую писать возвращаемый тип из функции.
Обожглись на казалось бы простом коде:
function f(a:A,b:B){return a&&b;}
JS и TS конечно дают возвращаемый тип не boolean, а тип объекта a или b.
В итоге, вышло боком, когда подразумевали булевое значение, а получили объект :)
Точно. Помню, что хотели добавить, но всё забывал проверить когда этот момент настанет.
Смотрю, сейчас работает.
Да, в FF это расширения, их с десяток на вкус и цвет.
На мой взгляд если работает также, то не принципиально будет это через расширение или нет.
Я например использую Sidebery, который к тому же ещё умеет по адресу открывать нужный контейнер.
На Firefox меня держут:
Вертикальные вкладки
Настройка внешнего вида, скажем убрать горизонтальные вкладки совсем
Контейнеры сайтов без необходимости создавать различные профили или открывать разные окна
Мастер пароль для шифрования логинов
Ночной режим в мобильном приложении
Мобильное приложение умеет скрывать рекламу (привет Chrome)
Синхронизация с шифрованием на клиенте
И другие удобные мелочи :)
Brave, увы, до сих пор не умеет пункты 1-5.
Vivaldi не умеет 3 и его нет на iOS
Chrome умеет только 7, но не умеет синхронизировать историю в таком режиме, только новые посещения.
Microsoft Edge не умеет ничего
Поэтому и нет std::optional<T&>.
Не смогли решить относиться к этому как к обёртке или сделать неотличимым от объекта.
Как оказывается Скотт даже предлагал forwarding reference в статье, но в итоге взял universal reference и усложнил всем жизнь :)
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4164.pdf
Я этот момент не критикую. Статья действительно лбъёмная. ?
Это на случай если кто задастся вопросом что с этим можно сделать.
Кстати, вроде как отказались от термина "универсальная ссылка" и плавильней "forwarding reference", наверное перевести стоит как "передающая ссылка".
Кстати, о применимости const T&&. Если мы требуем именно временный объект.
https://www.walletfox.com/course/cheatsheets_cpp.php
Ну да, так и надо.
А я вот начал литкод лёгкий уровень и благополучно забросил:)
Как же неочевиден.
Можно обновлять реализацию без изменения самого компилятора.
В идеале всё, что можно вынести в макросы в виде библиотек, а компилятор не менять.
В Rust тоже магия компилятора.
macro_rules! format_args {
($fmt:expr) => {{ /* compiler built-in */ }};
($fmt:expr, $($args:tt)*) => {{ /* compiler built-in */ }};
}
https://github.com/rust-lang/rust/blob/master/library/core/src/macros/mod.rs#L842
Rust ещё немного не дорос до полноценных макросов :)
Вот пример макроса printf без магии компилятора: printf
Посмотрите статью, там всё сложно:)
Зависит от того, в какой тип попадает строка с интерполяцией.
Скажем в простом варианте:
string a="x", b = "y";
string c = $"{x}{y}";
Будет просто string.Concat(x,y)
В других вариантах будет посложнее.
Нет.
Это в итоге вызовет WriteLine(string) или WriteLine(FormattableString) или другие варианты.
Во всяком случае не будет того вызова о, котором вы говорите.
А само форматированние строки претерпело уже несколько реинкарнаций: https://habr.com/ru/company/skillfactory/blog/599341/
Почему не использовать сопоставление с образцом для упрощения кода: if(source is VextorRoundButton control) ?
Поставьте Roslynator/ReSharper или подолное для автоматической замены.
При работе с концептами лучше использовать std::same_as, чтобы не было неожиданостей.
Для компилятора в случае концептов is_same_v<T, U> и is_same_v<U, T> будут разными атомами, поэтому лучше заранее избежать проблем.
Тема раскрывается у Andrzej-я
Тут зависит от компании. Скажем если вам FAANG то извольте натренироваться решать сложные задачки.
Если вам в другие компании, то скорее всего достаточно тренировать задачи среднего уровня, но стоит сложного тоже пробовать.
Ещё любят некоторые системный дизайн спрашивать.
А вообще здесь на хабре об этом много статей написано.