Спасибо за разбор, было довольно интересно. Правда сам предмет спора несколько сомнителен.
Во-первых обычно больше интересует производительность, а не размер вспомогательных объектов в байтах (хотя да, бывают кейсы, когда это важно).
Во-вторых все эти байтовые размеры в принципе могут поменяться с выходом новой версии компилятора.
В-третьих если говорить про расход памяти в рантайме, то нужно говорить про размер генерируемого native-кода — ведь совсем не обязательно, что больший по размеру байткод даст больший по по размеру native-код.
Современные процессоры используют предиктор ветвей для ускорения операций с помощью — это достигается за счет того, что система может «предсказывать» адреса, где находятся инструкции, которые скоро будут исполнены.
За последний год у меня и некоторых моих знакомых дважы на срок порядка 6 часов пропадали все контакты. С учетом того, что у меня скайп один из основных инструментов общения — это было очень болезненно. Судя по сообщениям на форуме скайпа — проблемы носили массовый, но не всеобщий характер.
Также я на несколько суток остался без основного скайп-аккаунта из-за того, что MS смержил мой аккаунт с данными другого аккаунта (видимо в процессе миграции в облако и антеграции с MS-аккаунтами). Мне понадобилось потратить много часов на разбирательства, чтобы вернуть себе аккаунт.
Недавно «умерли» некоторые старые чат-комнаты — в них теперь нельзя писать сообщения (требует апдейт комнаты, но при этом апдейт не проходит).
Так английское «astronaut» правильно переводить как «космонавт». Ни то, ни другое не содержит явной отсылки на национальность. А вот если по-английски написано «cosomaut», либо по русски «астронавт», то тут уже появляется отсылка на национальность. Либо автор переводит по приницпу «как слышу, так и пишу».
Мы используем целый ряд разных названий для людей, работающих в космосе, чтобы подчеркнуть их происхождение и национальность.
А как по мне — так очень глупо это звучит. Хотите подчеркнуть национальность? Пишите «китайский космонавт». Не хотите? Пишите просто «космонавт». А «тайконавт»… это как «космонавт-азиат». С таким легким, но вполне заметным оттенком расовой дискриминации.
Collections.sort(list, new Comparator<Integer>() {...});
на JDK 7+ на самом деле никакого пересоздания объекта происходить не должно (гуглить allocation elimination и/или scalar replacement). Так что лямбды тут перед анонимными классами не дают преимущества, а замечание «мудрейшего тимлида» — просто устаревший приём.
Сторонний код — такая же часть вашего приложения, как и ваш код. Вы видимо не застали такие эпики как dll-hell, rpm-hell, jar-hell и прочие dependency-hell?
Для всех перечисленных проблем есть нормальные решения. Взять хотя бы тот же Maven для Java.
Во-первых обычно больше интересует производительность, а не размер вспомогательных объектов в байтах (хотя да, бывают кейсы, когда это важно).
Во-вторых все эти байтовые размеры в принципе могут поменяться с выходом новой версии компилятора.
В-третьих если говорить про расход памяти в рантайме, то нужно говорить про размер генерируемого native-кода — ведь совсем не обязательно, что больший по размеру байткод даст больший по по размеру native-код.
Пруф? (Подсказка: в Java есть JIT, весьма эффективный).
Также я на несколько суток остался без основного скайп-аккаунта из-за того, что MS смержил мой аккаунт с данными другого аккаунта (видимо в процессе миграции в облако и антеграции с MS-аккаунтами). Мне понадобилось потратить много часов на разбирательства, чтобы вернуть себе аккаунт.
Недавно «умерли» некоторые старые чат-комнаты — в них теперь нельзя писать сообщения (требует апдейт комнаты, но при этом апдейт не проходит).
Что-то гарантировать может только цифровая подпись в том или ином виде. Для начала хотя бы хранение проектных файлов в VCS.
на JDK 7+ на самом деле никакого пересоздания объекта происходить не должно (гуглить allocation elimination и/или scalar replacement). Так что лямбды тут перед анонимными классами не дают преимущества, а замечание «мудрейшего тимлида» — просто устаревший приём.