Pull to refresh
102
0.2
Роман Смирнов@Source

Head of Elixir at Ecom.tech

Send message
А для вас зп >= 100к за три года опыта — много?

Смотря где. Если в среднем по России, то это очень много. Особенно учитывая что 3 года опыта — это по факту в лучшем случае миддл.

Странно, что умолчали о замене интерактивным командам git, типа git add -i, git rebase -i.
Я вообще без них workflow в git не представляю.

Они превратили C# в JavaScript?

Нет. Почему Вам везде мерещится JavaScript?
dynamic и компания пришли из IronRuby/IronPython.

UPD: В Clojure есть хвостовая рекурсия, но немного кривенькая в плане внешнего вида.

Давайте уж по-честному, recur — это воркэраунд, необходимый как раз из-за отсутствия оптимизации хвостовой рекурсии на уровне байт-кода.
Поддержать что-то на стадии компиляции в байт-код — это тоже вариант, но это как раз то, что я назвал подстройкой под Java. Хотя ниже вспомнили случай (JSR 292), когда JVM всё-таки реализовала что-то не для Java. Но это скорее редкость по сравнению с CLR/DLR, на развитие которых существенное влияние оказывают, что C#, что F#, что VB.NET, что Iron-языки.

Scala, Kotlin, Ceylon, JRuby, Clojure, Groovy и многие другие jvm языки не противоречат этому утверждению?

Я думаю, в исходном утверждении имелось в виду, что возможности IL не ограничены возможностями C#. Ну, к примеру, было бы так, что в Java нет хвостовой рекурсии, а в Clojure — есть. Но получается, что в Clojure её тоже нет, потому что в Java она не особо нужна, а ради какой-то Clojure в JVM никто ничего добавлять не будет. Т.е., к сожалению, все JVM-языки вынуждены подстраиваться под Java и вторичны к ней.


Здесь подразумевается AOT или JIT?

Возможно, имели в виду .NET Native, а так и AOT и JIT тоже есть.

Хотя по-большому счёту в ассемблере в большинстве случаев можно было бы просто работать с eax как с b, а c ebx как с a без всяких xor'ов.

Формально да, но по факту то вся оставшаяся часть функции работала бы с eax и edx. Т.е. я подразумевал такой вариант:


mov eax, a
mov ebx, b
xor eax, ebx
xor ebx, eax
xor eax, ebx
; work with eax and ebx

P.S. Про 9 пересылок вообще не понял, что Вы имели в виду...

Это, на мой взгляд, просто пример неуместного использования деструктуринга, строка получилась очень длинной и плохо читаемой, при этом вариант settings.display.color гораздо читабельнее в данном случае.
Но это не потому что деструктуринг плох, а потому что надо в меру фичи использовать.
То же можно сказать и про [...array1, ...array2, ...array3]. Лучше бы + починили (ну или какой-нибудь ++ добавили), если concat не нравится.

Для всей страны ваша выборка очевидно совсем нерепрезентативна, иначе можно было бы выборы только в одной Москве проводить.
Для Москвы частично репрезентативна, и в принципе не так уж сильно отличается от итоговых результатов по Москве:
Единая Россия — 37,7%
КПРФ — 13,93%
ЛДПР — 13,11%
«Яблоко» — 9,51%
«Справедливая Россия» — 6,55%
соседи дружно пошли голосовать

А у вас списки по номерам квартир что-ли были? Обычно по алфавиту по ФИО.

Я имел в виду по кол-ву проголосовавших избирателей, на его основе ведь проценты по участку считают.
P.S. Спасибо за инфу о размерах УИК… Получается, что для конкретного участка кол-во проголосовавших в среднем около 500 человек. Это достаточно небольшое число, что вкупе с дискретностью и округлением процентов уже объясняет наличие линий.

Тимлид не может расписать архитектуру до самых незначительных деталей реализации

Именно поэтому я их (архитектуру и детали реализации) и разнёс по разным пунктам )))
Или Вы xor vs temp var тоже в архитектуру записали?

Лучше по количеству избирателей участки разделять:
от 0 до 100, от 100 до 1000, от 1000 до 5000, от 5000 до 10000, более 10000.


А то ведь и в мегаполисе может быть участок, на котором меньше 1000 избирателей.

Да, SaaS.


довольно чатсо это делают в поездках, где с нормальным интернетом — больше вопросов чем радости.

понятно )

отдаете себе отчет в том, что реальные задачи типа «форма с тремя полями» уже давно перестали быть задачами

Вы утрируете. Всегда можно взять что-то нетривиальное из прошлых задач по проекту.


Реальные задачи как раз не имеют четких формулировок, зачастую даже входных условий, и больше всего похожи на «пойди туда не знаю куда, принеси то, не знаю что»

Это Вы уже задачи тимлида или архитектора описываете. Для программистов почти никогда не стоит вопрос "что надо сделать?" (архитектура), максимум остаётся вопрос "как это сделать?" (детали реализации)

Ещё одно подтверждение того, что люди плохо справляются с генерацией случайных чисел?
Хотя для большей достоверности было бы круто яркость/прозрачность точек регулировать в зависимости от количества избирателей на участке.

Но тогда неясно, с какой целью эта задача задается прикладным программистам и даже тестировщикам.

На этот вопрос у меня уже нет ответа… Имхо, тестовые задачки должны быть приближены к реальным задачам, которые должен решать соискатель после трудоустройства.
Т.е. если я хочу узнать знает ли претендент про xor, логичнее будет спросить про битовые маски (относительно часто применяются на практике).

упс, неправильно интерпретировал Вашу формулировку..

есть ли такая же уверенность, что такой же результат будет для C#, Java, и тем более различных вебовских языков?

Ну, у виртуальных машин свои регистры или стек. Но в целом результат должен быть аналогичен. А то Вы описали настолько неоптимальную реализацию компилятора, что сложно поверить, что такое вообще возможно.
Вот для примера результат варианта с ± на C#:


    .maxstack 3
    .locals init (
        int32   V_0,
        int32   V_1)
    IL_0000:  ldc.i4 567
    IL_0005:  stloc.0
    IL_0006:  ldc.i4 789
    IL_000b:  stloc.1
    IL_000c:  ldloc.0
    IL_000d:  ldloc.1
    IL_000e:  add
    IL_000f:  stloc.0
    IL_0010:  ldloc.0
    IL_0011:  ldloc.1
    IL_0012:  sub
    IL_0013:  stloc.1
    IL_0014:  ldloc.0
    IL_0015:  ldloc.1
    IL_0016:  sub
    IL_0017:  stloc.0

Как видите, на уровне виртуальной машины остаётся только 2 переменных, она сама определяет, что числа влезут в int32, ну и работает со стеком вместо регистров eax, ebx, но это неизбежно для стековой виртуальной машины.


Все это я к чему. Про эту задачу я слышу не первый раз, и она мне кажется очень некорректной.

Я бы её скорее назвал неуместной для собеседований, за редким исключением. А в плане корректности тут вроде всё ok.


P.S. Кстати, раз уж вспомнили о языковом разнообразии, то в некоторых языках легко поменять местами переменные любого типа, примерно так:


a, b = b, a

Information

Rating
3,091-st
Location
Россия
Works in
Registered
Activity