Да, конечно. Вообще весь проект IE9 был изначально начат в МС для того, чтобы надрать всем браузерам задницу в санспайдере. Отличный способ потратить несколько десятков миллионов долларов :)
Мы с вами говорим о разных вещах.
Автор статьи по ссылке утверждает, что ІЕ9 оптимизирован под санспайдер. В доказательство этого он приводит один модифицированный тест из набора, на котором 3 предварительная версия браузера работает существенно медленнее, чем на оригинальном коде, хотя всем очевидно, что изменения в коде не должны никак влиять на функциональность теста. На основании этого он утверждает, что разработчики из МС применили оптимизацию под конкретный тест, чем вызывает бурю негодования пользователей Хабрахабра.
На деле же оказывается, что в текущей версии браузера этот финт ушами не работает и она отрабатывает модифицированый тест столь же быстро, сколь и оригинальный. На основании этого я утверждаю, что никакого заговора внутри МС нет и никто ничего не оптимизировал конкретно под санспайдер, а на самом деле это был обычный баг в оптимизаторе движка Javascript в браузере IE9, который, к тому же, давно исправили.
При этом я считаю, что если разработчики использовали санспайдер в качестве одной из метрик произодительности своего браузера в процессе разработки, то ничего плохого в этом нет. ИМХО ну очень глупо предполагать, что в коде IE9 есть условия вроде
Я вообще безотносительно версий других браузеров интересовался. Просто попытался отрепродюсить у себя — не вышло, начал смотреть на версии и вот что очень удивило. В изначальном тесте тоже сравнивалась бета ІЕ с релизными версиями других браузеров.
Тут вопрос в том, что описанные модификации в тесте никак не влияют на текущую версию ІЕ, так что это очень похоже на баг, а не на какую-то оптимизацию.
Кстати, почему в результатах preview 3, если сейчас уже актуальна 6? Сдается мне, что это просто баг в одной из ранних версий IE9, который давно пофиксили.
Вы не поверите, но таки есть редакция Windows Server 2008 R2 Server Core, в которой убрали графическую оболочку. Оставили один powershell, а он по мощности ничуть не уступает линуховым шеллам, а местами в силу своей обьектности даже удобнее.
Заскочите в магазин «Трембита» на Коперника 5. Поспрашивайте у продавцов, если повезет — должен быть. Если там не будет, то можете попытать счастья на вернисаже (сувенирный рынок около театра им. Заньковецкой). И то и другое место находится в центре. Только спрашивайте дрымбу, а не варган, больше вероятность, что вас поймут ;)
Я вам скажу по секрету, что в CLR тоже нет функций без классов. Когда вы пишете лямбду — компилятор создает анонимный класс и помещает лямбду в него как метод. Переменные, попавшие в замыкание становятся полями этого класса. Просто этой работой занимается не программист, а компилятор.
Такое впечатление, что недавно появилось либо его сильно уменьшили. За последние пару недель было сразу несколько прецедентов, когда статьи публиковали пачками по несколько постов, при чем авторы жаловались, что статьи надо разбивать на куски. Раньше я такого не наблюдал.
Кроме того, к примеру обьем вот этой статьи около 80 кб (мерял HTML), а вот этой — всего 35, при чем автор последней был вынужден разбить статью на три части, хотя при ограничении в 80 кб ему должно было хватить двух.
Я собственно к тому, что сейчас авторы обьемных статей либо заменяют часть текста картинкой либо разбивают статью на несколько частей. Первое вообще ад, так как нечитабельно и поиск по такому тексту не работает. Второе — неудобно, так как одна из наибольших ценностей Хабра, его комментарии оказываются в разных местах. К тому же, статьи появляются на главной в необязательно правильном порядке, что вносит еще больше путаницы.
Если бы в джаве были фатальные неудобства, то она не была бы столь популярна. Благодаря событиям, свойствам и лямбдам код на шарпе выглядит куда более читаемым, компактным и простым. Это собственно и все их преимущество.
Почему раз сумели сделать анонимные классы, не сделали анонимных функций — загадка.
Кстати о лямбдах, я имею ввиду не только грубо говоря Func<int, int, int>, но и Expression<Func<int, int, int>> — в умелых руках этот механизм превращается просто в убийственную штуку.
Чем же он не такой элегантный?
Возможно я не до конца разобрался, но насколько я понял, аннотация в джаве — это всегда интерфейс, который не может содержать никакой логики, только данные. Атрибуты в шарпе — это полноценные классы, в которых можно (пере)определить некую логику. Самый простой пример, где это используется — Action Filters в ASP.Net MVC.
Динамики не нужны :-)
Вам, видимо, не нужны :) Я тоже редко пользуюсь, но иногда это просто замечательная вещь.
А про yield, using и checked exceptions сам хотел написать, но забыл :)
Ну это не недостаток языка, если он вобрал в себя все лучшее, что придумали до него. На самом деле очень рисковано пихать в мейнстрим язык фичи, которые перед этим не были обкатаны на каком-нибуть менее популярном языке.
Кстати, в 5 версии обещают офигенный новый синтаксис для работы с асинхронными вызовами — я такого не видел нигде пока.
Автор статьи по ссылке утверждает, что ІЕ9 оптимизирован под санспайдер. В доказательство этого он приводит один модифицированный тест из набора, на котором 3 предварительная версия браузера работает существенно медленнее, чем на оригинальном коде, хотя всем очевидно, что изменения в коде не должны никак влиять на функциональность теста. На основании этого он утверждает, что разработчики из МС применили оптимизацию под конкретный тест, чем вызывает бурю негодования пользователей Хабрахабра.
На деле же оказывается, что в текущей версии браузера этот финт ушами не работает и она отрабатывает модифицированый тест столь же быстро, сколь и оригинальный. На основании этого я утверждаю, что никакого заговора внутри МС нет и никто ничего не оптимизировал конкретно под санспайдер, а на самом деле это был обычный баг в оптимизаторе движка Javascript в браузере IE9, который, к тому же, давно исправили.
При этом я считаю, что если разработчики использовали санспайдер в качестве одной из метрик произодительности своего браузера в процессе разработки, то ничего плохого в этом нет. ИМХО ну очень глупо предполагать, что в коде IE9 есть условия вроде
Спасибо за внимание.
Тут вопрос в том, что описанные модификации в тесте никак не влияют на текущую версию ІЕ, так что это очень похоже на баг, а не на какую-то оптимизацию.
Хром 7.0.517.44: 50.8 ms
ФФ 3.6.12: 69.6 ms
ІЕ 9 бета: 33.1 ms
ЧЯДНТ?
Извините.
Кроме того, к примеру обьем вот этой статьи около 80 кб (мерял HTML), а вот этой — всего 35, при чем автор последней был вынужден разбить статью на три части, хотя при ограничении в 80 кб ему должно было хватить двух.
Если бы в джаве были фатальные неудобства, то она не была бы столь популярна. Благодаря событиям, свойствам и лямбдам код на шарпе выглядит куда более читаемым, компактным и простым. Это собственно и все их преимущество.
Кстати о лямбдах, я имею ввиду не только грубо говоря Func<int, int, int>, но и Expression<Func<int, int, int>> — в умелых руках этот механизм превращается просто в убийственную штуку.
Возможно я не до конца разобрался, но насколько я понял, аннотация в джаве — это всегда интерфейс, который не может содержать никакой логики, только данные. Атрибуты в шарпе — это полноценные классы, в которых можно (пере)определить некую логику. Самый простой пример, где это используется — Action Filters в ASP.Net MVC.
Вам, видимо, не нужны :) Я тоже редко пользуюсь, но иногда это просто замечательная вещь.
А про yield, using и checked exceptions сам хотел написать, но забыл :)
Кстати, в 5 версии обещают офигенный новый синтаксис для работы с асинхронными вызовами — я такого не видел нигде пока.