Вот ведь снова эта «интуитивность»… Что вообще за термин такой? Что он должен означать для языка программирования?
«Неинтуитивно» для кого? Для того, кто только что на Java сел писать? Для людей, перешедших с C++? Или для кого-то лично? Стремясь к «интуитивности» очень сложно перейти черту, когда получается неразбериха, путаница и разные подводные камни. Чего в C++, например, дофига (сразу скажу, я на C++ писал очень много). Сравнивать строки через == не «интуитивно», это просто неправильно, если просто принять тот факт, что это Java и всё тут. Сравнивать строки (точно также, как и прочие объекты без исключений) надо через equals. Если это кажется неинтуитивно (потому что в каком-то другом языке это не так), то сначала к этому нужно привыкнуть, а потом со временем понять почему именно так и возрадоваться, что не по-другому.
Что логично и понятно… но совершенно неинтуитивно.
Язык программирования (сейчас речь о языках ниши Java/C++/C# итд) и должен быть логичным и понятным, ибо это формальная система. В этом и есть смысл ЯП — наличие строгой семантики и синтаксиса. Иначе бы все писали на «интуитивном» русском/английском/… языке и не парились.
Нужно просто принять тот факт, что в Java генерики не такие, как в C++/#/… (ну, или наоборот). Они устроены по-другому и работают по-другому. Меньше возможностей, но совместимость + простота. Свою задачу типизации времени проектирования они отлично выполняют. При этом полностью совместимы с бородатыми JVM. Чего ещё надо? Я нахожу их довольно удобными и нужными. Можно ведь их не использовать кому не нравится. Проблем нет никаких с этим вроде…
Я даже затрудняюсь ответить на ваш вопрос на вопрос… Вы, верно, просто не очень понимаете как устроены коллекции и, в частности, тот же HashMap. Сделать, чтобы примитив мог быть ключём невозможно без горождения кучи костылей. С другой стороны сейчас там всё просто, логично и вписывается в общие единые схемы. Все эти «недоделанные» генерики, врапперы и т.д. как раз и сделаны (и сделаны именно так), чтобы не ломать общую схему и оставить простоту в реализации.
Про оператор "==" уж совсем загнули. Так и должно быть, он сравнивает ссылки, а не значения, как и во всех остальных случаях. К этому не надо «привыкать», это надо просто понять.
Логика понятна, она есть, но C# всё же намного интуитивнее.
Вы так говорите, как будто это плохо (ц) Интуитивность желаннее логичности ровно до того момента, когда начинаешь понимать, как всё работает.
Вы хотите, чтобы не было врапперов, но были примитивы?? Весьма оригинальная позиция. Обратные пожелания часты, но такое…
И как конкретно в Java всё это должно в итоге работать, позвольте узнать? Ну, например, при использовании в коллекциях? Ну, или как ключа у Map. Как примитивный тип там приделать?
Точно. Там же value передаётся туда Integer, а потом внутри метода делается add, который int обратно боксирует в Integer. Смысл замены — в избежании боксинга/унбоксинга.
Ну, с этим можно поспорить. Автобоксинг как ещё можно было сделать то? Тут просто надо с умом использовать. О чём и сказано в статье, собственно. А генерики — да, больная тема, но сделать их другими было тоже нельзя, об этом писано немало статей. Совсем неудачной попыткой я бы их точно не назвал.
О чём речь-то вообще? Все, кто использовал ЖЖ исключительно для постов «на улице дождь, ковыряю в носу» и показа фоточек публике (а таких не так уж мало) и так уже ушли в разные там контакты, остальные вроде и не собираются бросать. Последние пару лет в ЖЖ стало реально просторнее, но не скажу, что кто-то много потерял.
Не исключено. Наверное, потому что всё было растащено по интернетам из одного места с этой формулировкой про кресло-убийцо, я же для примера привёл. Читал новости и про другие случаи или там просто байки на форумах, когда-то по надобности много новостей перерывал. Никаких реальных случаев под всем этим нету, конечно, потому и таскают истории туда-сюда и додумывают, обычное дело. А люди вместо того, чтобы поднять задницу и заглянуть под сиденье кресла или просто чуть-чуть подумать логически (для многих это сложнее, да) начинают перепощивать и комментировать «ой, боюсь, у меня в офисе ведь такое же».
Были фото там, были) Будто граната взорвалась под сиденьем. Внушает ужас, тем более, что фишки — суперавторитетный сайт новостей)
Люди, да вы хоть раз разбирали/собирали такое сиденье? Или просто газ-патрон видели? Или там амортизатор газовый на дверях/багажниках/ходовых автомобилей. Нет там ничего, что может взорваться. Ну вы даёте…
Да ладно, неужели ни разу никто не видел новостей о том, что кресло взорвалось и убило кого-то? Раз в полгода-год точно появляется. Да это бред, конечно.
А размытость действительно объясняется архитектурностью (так сказать) паттерна, но далеко не у всех архитектурных паттернов присутствует размытость.
Ну а как может не быть размытости? Это же просто архитектура приложения в самом общем виде. У этого «шаблона» нет какой-то конкретной цели и поведения (как например у того же упомянутого Singleton или других шаблонов проектирования), просто общая идея разделения на три компонента.
«Неинтуитивно» для кого? Для того, кто только что на Java сел писать? Для людей, перешедших с C++? Или для кого-то лично? Стремясь к «интуитивности» очень сложно перейти черту, когда получается неразбериха, путаница и разные подводные камни. Чего в C++, например, дофига (сразу скажу, я на C++ писал очень много). Сравнивать строки через == не «интуитивно», это просто неправильно, если просто принять тот факт, что это Java и всё тут. Сравнивать строки (точно также, как и прочие объекты без исключений) надо через equals. Если это кажется неинтуитивно (потому что в каком-то другом языке это не так), то сначала к этому нужно привыкнуть, а потом со временем понять почему именно так и возрадоваться, что не по-другому.
Язык программирования (сейчас речь о языках ниши Java/C++/C# итд) и должен быть логичным и понятным, ибо это формальная система. В этом и есть смысл ЯП — наличие строгой семантики и синтаксиса. Иначе бы все писали на «интуитивном» русском/английском/… языке и не парились.
Вы так говорите, как будто это плохо (ц) Интуитивность желаннее логичности ровно до того момента, когда начинаешь понимать, как всё работает.
И как конкретно в Java всё это должно в итоге работать, позвольте узнать? Ну, например, при использовании в коллекциях? Ну, или как ключа у Map. Как примитивный тип там приделать?
Люди, да вы хоть раз разбирали/собирали такое сиденье? Или просто газ-патрон видели? Или там амортизатор газовый на дверях/багажниках/ходовых автомобилей. Нет там ничего, что может взорваться. Ну вы даёте…