>> в .NET тоже самое — прямо в дебаггере изменяем код + continue
Этого не знал. Просто небыло надобности. Очень интересно, спасибо :)
>> знаете, особенностью generics в .NET является code-sharing
Я имел ввиду, что в кучу загрузятся 2 типа. Про инструкции ничего не говорил. Также сказал, что минусом это с натягом можно назвать
Да, спасибо, я в курсе. Несколько лет пишу на C# и первый год на Java. Я имел ввиду, что в Java я могу полностью переписать метод и не останавливать даже дебаг при этом.
'Object'. Вы указали минусы этого. А плюсы? никому не надо переписывать свои JVMы чтобы начинать поддерживать генерики! Если .NET Framework производит MS (ну, и Mono ещё), то разработчиков JVM по моему гораздо больше, и заставлять их всех переписывать свой код только для поддержки сахара не круто.
3. Типы. Конечно, в Java есть примитивные типы, которые не наследованы от Object. А в C# они наследованы и всё такое. Но вот только в .NET с примитивными типами не всегда следует обращаться, как с Object. Простой пример — финализатор. Допустим, мы проектируем структуру и вешаем на Finalize какое то важное действие. Теперь поразмыслим. Когда вызывается финализатор? когда объект удаляется GC. Какие объекты удаляет GC? он удаляет объекты в куче. А струкура у нас значимый тип и хранится в стеке. Как вывод, в структуре финализатор может быть не вызван никогда, хотя он наследуется от Object.
4. Исходные коды. Не знаю, как вам, а мне нравится в Java то, что я в любой момент могу поглядеть, как устроен, например, тип String. Весь его исходный код. Не работает метод из JDK? а погляди его исходник, что он конкретно делает? И для этого практически не надо делать телодвижений. А в .NET не всегда это получится. Да, можно взять рефлектор, залезть в библиотеки, декомпилировать и лицезреть. Но это не одно и то же, что полный доступ к исходным кодам.
5. Документирование. Комментарии. Сравните описание коллекции в .NET и Java. Я считаю, что в Java всё расписано намного подробней и понятней.
Да, в .NET много плюшек и всё такое, но он развивается с тем прицелом, чтобы быть удобным для разработчиков. Java развивается, чтобы удовлетворять не только разработчиков, но и производителей JVMов. Практически любые косяки, которые можно перечислить в Java, оставлены или не сделаны или сделаны именно тем образом по соображениям обратной совместимости. Поэтому, давайте не будем спорить, кто круче, везде есть свои плюсы и минусы.
По моему сравнивать C# и Java смысла нет. Да, они похожи, да оба используют байт-код. Но в каждом их различии есть и плюсы, и минусы. Большинство «багов» в Java оставлены для обратной совместимости.
1. Байт код. Ну да, в C# полиморфный, в Java нет. И что? Вы не упомянули такую особенность: при компиляции байт-кода в .NET создается кешированный исполняемый файл. То есть при следующем запуске программы, компиляции байт кода не будет, а просто возьмется файл из кеша. В теории это должно ускорить запуск приложения. В Java такого нет. Тут при каждом запуске происходит компиляция. Однако, есть возможность модифицировать существующие методы (не добавляя новых типов/методов) и не прерывая приложение перекомпилировать исходный код. Не знаю, где это применяется, кроме как в отладке, но это круто :)
2. Генерики. О, да, в .NET это сделано круто, не поспоришь. Тут есть только один минус (да и минус то он с натягом) — так как разные генерики являются разными типами (например List и List — разные типы), то они все грузятся в кучу. (List и List — 2 записи в куче). Чем больше вы используете генериков, тем больше они отжирают памяти и тем больше процессора надо GC для обработки. А в Java все генерики — лишь видимость, в байт код идут
>> не в целях «заманухи», а дабы было интересно нажать «Читать далее»
так это ж и есть цель заманухи. Если бы в аннотации вы написали «фейсбук использует наши железки ф10. Хотите узнать что это за железки? читайте дальше» — было бы всё честно. А я тоже зашел почитать, как ваши железки встроенны в фейсбук
Я думаю, что если на сайте в условиях или в оферте однозначно не сказано, что если вы не получите услугу то сайт вернет деньги, — то можно ни на что не расчитывать. А сейчас никакой сайт так не сделает, ведь это надо проверять фирмы, отвечать перед клиентами, — кому нужна такая ответственность? Групон скажет, что срок акции кончился, так что они не при чем. Кухни эти скажут, что не могу предоставить услугу, так как какой то там мифический завод изготовитель медлит (а стоит ли им верить? они ж уже не раз обманули). А если завод таки и есть, то он отвечает перед кухнями, а не перед вами. Я лично просто не представляю, что делать в такой ситуации, потому и отношусь ко всем этим акциям/скидкам/купонам и прочей ерунде с параноидальной осторожностью.
Я не придираюсь. Просто как я это понимаю:
1. Я не смогу доказать никогда, что они не успели изготовить мебель. Значит не смогу доказать, что условия акции не соблюдаются. К тому же на какой то возврат денег я могу расчитывать только если акция ещё не кончилась (не кончился срок действия купона).
2. Ремонт не означает установку. Ну, если бы вам всё собрали и поставили, и потом понадобился ремонт — то он бесплатный. Всё остальное в моем понимании не ремонт.
Может я и не прав. Но сам бы не расчитывал на на эти условия.
А какое именно условие акции не выполняется?
— Купон предоставляет возможность выбрать любой кухонный гарнитур на сумму 50 000 или 70 000 руб. из имеющихся в наличии вариантов или составить по индивидуальному дизайн-проекту. — ну вы и выбрали
— Срок действия купонов: с 9 декабря 2011 г. до 29 февраля 2012 г. (включительно). — это не гарантирует, что поставщик выполнит условия договора в этот срок
— Срок изготовления мебели — до 1,5 месяцев. — ну они изготовят мебель за 1.5 месяца. Но не установят. Так что это тоже их ни к чему не обязывает.
Я, конечно, сужу со своей колокольни, но так по мне — в условиях акции ничего не указано по поводу того, что они должны следить за этим миром кухонь или гарантировать выполнение ими договора.
А я, перед тем, как брать купон (покупал несколько раз), ищу отзывы в интернете о купоне, о фирме, смотрю что за фирма предлагает услуги, звоню им или захожу в офис. И если всё меня устраивает, то тогда может быть решусь купить купон. И то за небольшую сумму. Когда обещают экономию в 45 тыр, то тут точно есть подвох. Если вы всех этих операций не сделали, и говеный сайт вас не насторожил, то зачем жаловаться на групон? Они же просто вам дают возможность купить купон, причем у них же на сайте есть договор оферты, где всё расписано — надо читать на что соглашаетесь, покупая и оплачивая купон, и кому и когда можете предъявлять претензии.
По моему от реверс инжениринга не поможет ничего, не зависимо оттого, какая технология используется. Это просто вопрос времени — чем лучше защита, тем дольше ломают. Поэтому я склонен считать возможность получения исходного кода больше фичей, чем минусом. Как бы там ни было, я вашу позицию понял, Вы мою тоже, можно закрыть обсуждение.
Сам недавно проходил собеседование. Хочу обратить ваше внимание на то, что работодатель наверняка даст Вам тестовое задание и при оценке Вашей работы будет учитываться не только её функциональность, но и архитектура. В этом же топике, согласитесь, есть изъяны в функциональности, а архитектура просто отсутствует. Я заметил только несколько приватных статических методов, что никак не отражает ваши знания архитектурных приёмов, паттернов и тд.
Можно же обфусцировать .NET сборку, или ещё как зашифровать, и никакой рефлектор не поможет. Насколько я знаю, в .NET есть определенные средства для защиты исходного кода. Конечно, при нужных навыках, защиту можно сломать, но это относится не только к .NET, но и к любой другой сборке/библиотеке/приложению. Поэтому утверждение «самый серьезный минус.нет — это возможность декомпилировать приложение» я считаю весьма сомнительным.
Не знаю почему, но после прочтения мне вспомнилась игра Dune II. Там и иллюзия выбора, и ограниченные возможности, и границы… Хотя, это, наверное, ко многим существующим играм можно отнести.
Этого не знал. Просто небыло надобности. Очень интересно, спасибо :)
>> знаете, особенностью generics в .NET является code-sharing
Я имел ввиду, что в кучу загрузятся 2 типа. Про инструкции ничего не говорил. Также сказал, что минусом это с натягом можно назвать
3. Типы. Конечно, в Java есть примитивные типы, которые не наследованы от Object. А в C# они наследованы и всё такое. Но вот только в .NET с примитивными типами не всегда следует обращаться, как с Object. Простой пример — финализатор. Допустим, мы проектируем структуру и вешаем на Finalize какое то важное действие. Теперь поразмыслим. Когда вызывается финализатор? когда объект удаляется GC. Какие объекты удаляет GC? он удаляет объекты в куче. А струкура у нас значимый тип и хранится в стеке. Как вывод, в структуре финализатор может быть не вызван никогда, хотя он наследуется от Object.
4. Исходные коды. Не знаю, как вам, а мне нравится в Java то, что я в любой момент могу поглядеть, как устроен, например, тип String. Весь его исходный код. Не работает метод из JDK? а погляди его исходник, что он конкретно делает? И для этого практически не надо делать телодвижений. А в .NET не всегда это получится. Да, можно взять рефлектор, залезть в библиотеки, декомпилировать и лицезреть. Но это не одно и то же, что полный доступ к исходным кодам.
5. Документирование. Комментарии. Сравните описание коллекции в .NET и Java. Я считаю, что в Java всё расписано намного подробней и понятней.
Да, в .NET много плюшек и всё такое, но он развивается с тем прицелом, чтобы быть удобным для разработчиков. Java развивается, чтобы удовлетворять не только разработчиков, но и производителей JVMов. Практически любые косяки, которые можно перечислить в Java, оставлены или не сделаны или сделаны именно тем образом по соображениям обратной совместимости. Поэтому, давайте не будем спорить, кто круче, везде есть свои плюсы и минусы.
1. Байт код. Ну да, в C# полиморфный, в Java нет. И что? Вы не упомянули такую особенность: при компиляции байт-кода в .NET создается кешированный исполняемый файл. То есть при следующем запуске программы, компиляции байт кода не будет, а просто возьмется файл из кеша. В теории это должно ускорить запуск приложения. В Java такого нет. Тут при каждом запуске происходит компиляция. Однако, есть возможность модифицировать существующие методы (не добавляя новых типов/методов) и не прерывая приложение перекомпилировать исходный код. Не знаю, где это применяется, кроме как в отладке, но это круто :)
2. Генерики. О, да, в .NET это сделано круто, не поспоришь. Тут есть только один минус (да и минус то он с натягом) — так как разные генерики являются разными типами (например List и List — разные типы), то они все грузятся в кучу. (List и List — 2 записи в куче). Чем больше вы используете генериков, тем больше они отжирают памяти и тем больше процессора надо GC для обработки. А в Java все генерики — лишь видимость, в байт код идут
так это ж и есть цель заманухи. Если бы в аннотации вы написали «фейсбук использует наши железки ф10. Хотите узнать что это за железки? читайте дальше» — было бы всё честно. А я тоже зашел почитать, как ваши железки встроенны в фейсбук
1. Я не смогу доказать никогда, что они не успели изготовить мебель. Значит не смогу доказать, что условия акции не соблюдаются. К тому же на какой то возврат денег я могу расчитывать только если акция ещё не кончилась (не кончился срок действия купона).
2. Ремонт не означает установку. Ну, если бы вам всё собрали и поставили, и потом понадобился ремонт — то он бесплатный. Всё остальное в моем понимании не ремонт.
Может я и не прав. Но сам бы не расчитывал на на эти условия.
— Купон предоставляет возможность выбрать любой кухонный гарнитур на сумму 50 000 или 70 000 руб. из имеющихся в наличии вариантов или составить по индивидуальному дизайн-проекту. — ну вы и выбрали
— Срок действия купонов: с 9 декабря 2011 г. до 29 февраля 2012 г. (включительно). — это не гарантирует, что поставщик выполнит условия договора в этот срок
— Срок изготовления мебели — до 1,5 месяцев. — ну они изготовят мебель за 1.5 месяца. Но не установят. Так что это тоже их ни к чему не обязывает.
Я, конечно, сужу со своей колокольни, но так по мне — в условиях акции ничего не указано по поводу того, что они должны следить за этим миром кухонь или гарантировать выполнение ими договора.
Сайты
RSDN
http://microgeek.ru/
http://www.asp.net/
Блоги
Блог Дениса Гладких
Сара Форд на русском