All streams
Search
Write a publication
Pull to refresh
50
0
Friedrich von Never @ForNeVeR

Пользователь

Send message
Вспомнил ещё, что JIT-x64 иногда умеет оптимизировать хвостовую рекурсию, что может приводить к неожиданно успешному выполнению очень глубоких рекурсивных вызовов, непредсказуемому влиянию на производительность и т.п. весёлым вещам.

(Интересно, кстати, что при этом будет в стектрейсе — будет ли рантайм наворачивать туда фреймы от хвостового вызова или нет.)

Кстати, кто знает, как в RjuJIT с tail recursion? Он умеет .tailcall или, может быть, сам умеет оптимизировать какие-то простые случаи?
Насколько я помню, вариант с единственным вопросом в начале всего выражения рассматривался при разработке C#6, но в итоге так и не был использован.
В ином контексте, действительно, очевидно, что ссылка на пустой массив приведётся к true. Но в контексте JS и с учётом того, что пустая строка равна false, для меня это очевидным быть перестаёт (пустая строка для меня, уж простите, по-паскалевски ассоциируется с пустым массивом символов, как бы это ни было семантически отдалено в современных языках и рантаймах — хотя вот в Haskell или Erlang, например, это соответствие идеально прослеживается).

В целом я с вами согласен — конечно, всегда можно нагородить море проверок перед вызовом метода, чтобы не было падений при вызове методов и обращении к свойствам. И вот ещё, кстати, C#6 не предлагает полноценного решения описанной вами проблемы — обращения к свойству только если индекс присутствует в массиве. Кстати пришёлся бы синтаксис наподобие

someArray?[index]?.Foo()?.Bar()

Однако в целом начинание, на мой взгляд, неплохое. Мне в реальности довольно часто приходится городить этажерки из трёх-четырёх проверок на null перед вызовом свойств, как бы неприятно это ни было. И отлично, что C#6 мне поможет сократить количество такого кода.
Да, вычисление будет только один раз. Противоположное поведение бы разрушило семантику оператора точки, и это было бы вообще печально. Выше товарищ привёл разбор декомпилированного кода, ознакомьтесь.
С ECMA-языками на самом деле начинается полный трэш и угар — оказывается, что пустая строка равна false, а пустой массив — true, ну и так далее по списку (где-то, кажись, даже строка '0' равнялась false). Остерегайтесь применения булева контекста к неизвестным объектам, друзья. Это может закончиться болью.
А на скрине-то почему IE8?
Максимальной эпичности факт: под Win 7 набираю в «Пуске» текст «ie», и мне первым пунктом предлагается «Удаление программы» :)
Подождите, а разве не «iexplore»? Я всегда именно так набираю.
А где фото князей Руси XIII-XV века? Я по этому тегу статью нашёл.
А вы попробуйте сами, соберите. Этот пример кода довольно старый (но я проверил — на компиляторе из VS 2013 воспроизводится); пару лет назад я хотел было разобраться, что ж там такое хранится, но тогдашний рефлектор не сумел разобрать такую большую сборку, на том исследования в тот раз и закончились.
Сходу не могу назвать конкретной причины. Постараюсь изучить вопрос и ответить отдельным постом :)
На C# растаращить можно ещё проще. Рассмотрим вот такой вот код:

class X<A, B, C, D, E> { class Y : X<Y, Y, Y, Y, Y> { Y.Y.Y.Y.Y.Y.Y.Y.Y y;} }

И — вуаля, сборочка весит уже 29 мегабайт. Можно растаращить ещё больше, но это я оставлю в качестве упражнения для читателя :)
Ну да, тут вам пока повезло. Искренне желаю, чтобы до вас эта волна блокировок и не добралась.
Мне очень жаль, что вы узнаёте эту новость от меня, но, к сожалению, гитхаб уже заблокирован некоторыми провайдерами. Лично у меня он уже примерно сутки недоступен (конечно, я принял соответствующие меры, но сам факт остаётся).

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

Эх, я думаю, многие ранее считали, что и гитхаб «слишком крупный, чтобы его заблокировать» :(
Вы мыслите в правильном направлении. Однако я боюсь, что любая инициатива вида «заставить их думать прежде чем делать» обречена на провал :(
Слушайте, а на гиктаймсе материться можно? А то почему-то после таких новостей очень хочется — совершенно непонятно, почему.
Коллеги рекомендуют вам ознакомиться с замечательным произведением Н. Носова «Незнайка на Луне», там в описании соляной монополии Пончика достаточно подробно рассмотрены эти вопросы.
Тогда интересно, по какому часовому поясу :)

Information

Rating
Does not participate
Location
Amsterdam, Noord-Holland, Нидерланды
Registered
Activity