есть ли такая же уверенность, что такой же результат будет для C#, Java, и тем более различных вебовских языков?
Ну, у виртуальных машин свои регистры или стек. Но в целом результат должен быть аналогичен. А то Вы описали настолько неоптимальную реализацию компилятора, что сложно поверить, что такое вообще возможно.
Вот для примера результат варианта с ± на C#:
Как видите, на уровне виртуальной машины остаётся только 2 переменных, она сама определяет, что числа влезут в int32, ну и работает со стеком вместо регистров eax, ebx, но это неизбежно для стековой виртуальной машины.
Все это я к чему. Про эту задачу я слышу не первый раз, и она мне кажется очень некорректной.
Я бы её скорее назвал неуместной для собеседований, за редким исключением. А в плане корректности тут вроде всё ok.
P.S. Кстати, раз уж вспомнили о языковом разнообразии, то в некоторых языках легко поменять местами переменные любого типа, примерно так:
что через сложение и обход переполнения буфера, что через xor-ы
Через xor-ы не будет переполнения буфера, в "худшем" случае результатом xor будет INT_MAX. Но в целом согласен, что для собеседования эта задача подходит только если позиция связана с системным программированием или с микроконтроллерами.
Разработчика нужно проверять, понимает ли он, как математика «ложится» на устройство компьютера, а не проверять на саму математику.
В таком случае Вы должны были бы использовать xor, т.к. с точки зрения ассемблера это наиболее логичное решение данной задачи:
b = a ^ b
a = a ^ b
b = a ^ b
А вариант со сложением приведёт к переполнению, это Вы правильно догадались.
Мне одному кажется, что в случае, когда мы используем не явно объявленный буфер, а вариант со сложением вычитанием, в памяти создается аж 3 (три) временных переменных (результатов сложения и вычитания), которые потом записываются в переменные, которые нами объявлены явно.
Вам кажется. Если не лень написать на C и дизаcсемблировать результат, то можете убедиться, что одни и те же регистры процессора будут использоваться вместо a и b.
Вы уже 3,5 года как не правы. См. главу 49.1 ТК РФ. Так что у вашего работодателя возможно желания не было, а юридическая возможность легально работать удаленно вполне себе есть.
У меня и к Вам и к автору статьи вопрос: зачем вы путаете новичков? Они ведь не знают, что def и defmacro работают только внутри defmodule. Аналогичный косяк и с `quote do 1 + 2 * 3` без end.
Вот так. См. ветку #comment_9858590. Почасовка и трудовой договор — это 2 большие разницы. И понятие «рабочий час» в этих схемах занятости кардинально отличается.
Никаких необлагаемых лимитов по доходам нет… Как физлицо Вы обязаны заплатить 13% подоходного налога со всех поступлений (даже если это 1000 рублей). Пока Вы физлицо банкам по барабану, их нагибают только за ИП и юр.лица. У налоговой к Вам вопросы будут, как только они про Вас узнают, и в зависимости от того как квалифицируют Вашу деятельность Вы подпадаете либо под 198 ст. УК РФ, либо под 171 ст. УК РФ.
Нет, для тяжёлых математических вычислений Elixir не самый подходящий ЯП. Посмотрите в сторону Julia, или в сторону математических пакетов Mathematica, Maxima, Maple, etc.
Я помню ASP.NET как вполне конкретный подход в стиле «сделаем всё так же как для десктопа, а в вебе оно как-нибудь сработает». Правда, давно не касался веб-разработке на .NET, поэтому не в курсе существует ли он ещё или теперь ASP.NET MVC полностью его вытеснил?
Я выше писал, что $30/hr — это аналог зарплаты $2500/month, или по нынешнему курсу 155 т.р./мес, про Сибирь не могу сказать, но для Москвы вполне реальная зарплата для уровня Architect.
$50/hr — это уже в районе $4200/m, тут да. По текущему курсу почти нереально найти в России, даже в Москве.
как насчет зимних каникул и отпуска, тоже наверное их нет
При работе на почасовке и отпуск и каникулы (по сути с их стороны это выглядит как тот же отпуск) вполне возможны, только 1) они за свой счёт, 2) надо заранее предупредить работодателя
Перейдем к ASP.NET Core. Это новый фреймворк от Microsoft для разработки Веб приложений, который появился вследствие редизайна ранее существующего фреймворка ASP.NET.
Внесите ясность, ASP.NET Core является развитием ASP.NET MVC или ASP.NET?
Это то ясно, но обычно в реальном мире считают версии Javascript так
Но это ж не версии JavaScript, а редакции ECMA. Всё-таки не надо путать, у JavaScript есть свои собственные версии… Даже тут статейка была про текущую стабильную: JavaScript 1.8
А Java, да, забавна… она нумеруется в стиле Emacs (с отбрасыванием мажорной версии). Т.е. Java 8 значит Java 1.8
В чём разница то? Программист вроде как по определению способен реализовать любой формализованный алгоритм. zenkz всё-таки более насущные проблемы предлагает… Имхо предложить что-то отрефакторить/оптимизировать гораздо интереснее, чем сортировку писать.
упс, неправильно интерпретировал Вашу формулировку..
Ну, у виртуальных машин свои регистры или стек. Но в целом результат должен быть аналогичен. А то Вы описали настолько неоптимальную реализацию компилятора, что сложно поверить, что такое вообще возможно.
Вот для примера результат варианта с ± на C#:
Как видите, на уровне виртуальной машины остаётся только 2 переменных, она сама определяет, что числа влезут в int32, ну и работает со стеком вместо регистров eax, ebx, но это неизбежно для стековой виртуальной машины.
Я бы её скорее назвал неуместной для собеседований, за редким исключением. А в плане корректности тут вроде всё ok.
P.S. Кстати, раз уж вспомнили о языковом разнообразии, то в некоторых языках легко поменять местами переменные любого типа, примерно так:
Через xor-ы не будет переполнения буфера, в "худшем" случае результатом xor будет INT_MAX. Но в целом согласен, что для собеседования эта задача подходит только если позиция связана с системным программированием или с микроконтроллерами.
В таком случае Вы должны были бы использовать xor, т.к. с точки зрения ассемблера это наиболее логичное решение данной задачи:
А вариант со сложением приведёт к переполнению, это Вы правильно догадались.
Вам кажется. Если не лень написать на C и дизаcсемблировать результат, то можете убедиться, что одни и те же регистры процессора будут использоваться вместо a и b.
$50/hr — это уже в районе $4200/m, тут да. По текущему курсу почти нереально найти в России, даже в Москве.
Это вопрос времени. Чем сложнее алгоритм, тем больше времени займёт его изложение на языке программирования.
А Java, да, забавна… она нумеруется в стиле Emacs (с отбрасыванием мажорной версии). Т.е. Java 8 значит Java 1.8
zenkz всё-таки более насущные проблемы предлагает… Имхо предложить что-то отрефакторить/оптимизировать гораздо интереснее, чем сортировку писать.