Если полистаете хабр, то найдете статьи с рассуждениями на темы, что же следует понимать под разными сочетаниями букв и ролями. Так что уточнение был бы уместно.
Чаще всего обсуждение деталей происходит на Grooming сессиях...
Давайте посмотрим слово Grooming например в Cambridge Dictionary.
Есть ещё проблема, что часто доки и книги написаны "снизу-вверх", то есть объясняют азы, потом переходят к верхнему уровню, тогда как для понимания удобнее наоборот - сначала общий вид, понимание слоев абстракции, подсистем, потом детали.
К сожалению,разработчики не желают и не умеют писать документацию. Из-за подхода "вот вам код, читайте" другие вынуждены тратить излишне много времени на понимание как работать с разработанной кем-то системой/утилитой.
В линуксе чтобы разобраться как что-то сделать часто приходится собирать информацию по кусочкам и постоянно проверять актуальность на данный момент.
Вот время компиляции одного и того же небольшого приложения в 2-х версиях на моём компьютере, несколько последовательных прогонов:
Kotlin:
BUILD SUCCESSFUL in 2m 24s
BUILD SUCCESSFUL in 1m 51s
BUILD SUCCESSFUL in 1m 2s
BUILD SUCCESSFUL in 1m 37s
BUILD SUCCESSFUL in 1m 25s
Java:
BUILD SUCCESSFUL in 1m 30s
BUILD SUCCESSFUL in 44s
BUILD SUCCESSFUL in 38s
BUILD SUCCESSFUL in 32s
BUILD SUCCESSFUL in 29s
Не похоже на 10%.
У меня периодически инкрементальная сборка увеличивает размер выходного файла. как у вас?
Одно из ключевых преимуществ Kotlin — это его поддержка null safety
Как считаете, у них это получилось? В яве равн нулл, не равно нулл, ну потом еще Optional придумали. Тут стало в 2 раза больше типов с вопросом и без, добавились команды "?.", "?:", "!!", потом выяснилось, что объект, который объявлен как не могущий быть null, непонятно чем инициализировать и ввели lateinit, ну и дальше насыпали методов вроде orNull(). Ну а в коде для полей с вопросом дополнительно вызывается проверка на null с бросанием NullPointerException, которое бы выбросилось бы и так при попытке доступа.
Давайте обсудим в комментариях перспективы языка Kotlin в контексте мобильной разработки
Система доставки результата пользователю - часть инфраструктуры языка, без которой он бесполезен. Вряд ли вы не сталкивались с ситуацией, когда программа просит какую-нибудь отсутствующую библиотеку или она не той версии. Это как раз одна из проблем доставки.
Претензии именно к джаве - непонятны.
Речь идёт о подводных камнях языка. Раз речь о яве - то о ней и разговор.
Что такое целостность локализации? ResourceBundle существует уже миллион лет
Вы к этому ResourceBundle обращаетесь по строковому ключу ресурса. Так? А как сделать так, чтобы во-первых к ключу обязательно имелся локализованный ресурс, а во-вторых не используемых ресурсов там не было? А ещё и чтобы при наведении курсора показывался локализованный текст на выбранном по умолчанию языке.
Запускать? — ./java -jar file.jar Что тут могло усложниться?
Раньше: заходишь на сайт оракла, качаешь jre, ставишь, потом просто двойным щелчком запускаешь jar файл. Сейчас ищешь где и что скачать нужной версии, потом где-нибудь находишь что-нибудь типа архива openJDK, распаковываешь его и тыкаешься, чтобы понять что и как надо запускать.
Если разработчик озаботился этим вопросом, то у вас, как у пользователя, этой проблемы стоять не должно.
А оно так перестало работать после того, как Oracle что-то там опять мудрить начала. Вот на днях надо было запустить. Идём в инет, забиваем в поиске "скачать jre 17", в результате поиска либо jdk, либо jre8. Да ещё эти jdk как простые архивы, без установщика. Вам понравится как пользователю прописывать всякие переменные среды, связывать расширения, прописывать аргументы запуска?
Итак, просто отдать jar файл, как всего несколько лет назад, предложить поставить jre и запустить двойным щелчком не получится? Предлагаете вместо пары сотен кБ jar файла отдавать файл мегабайтов под 40-50?
Давайте расширим вопрос дистрибьюции. Вы пользуетесь приложением и оно нормально работало с java 8, но вот вы обновились до java 17 и теперь оно не хочет запускаться. Ваши действия?
Далее, обфусцируете код, но выходит новая версия ProGuard и вот обфусцированное приложение не запускается, хотя ничего не менялось. Или собираете код под Android и релизная версия отказывается нормально работать. Ваши действия? Ну и можно расширить вопрос о защите от копирования.
Далее, вы хотите раздать .apk для Android. И тут оказывается, что ваш любимый фаловый менеджер отказывается устанавливать его. Ваши действия?
Согласны, что пункт первый достоин называться подводным камнем разработки на Java?
Расчёт и тюнинг схем, и посложнее, можно делать сразу. Вот, например.
Покажите что-нибудь поинтереснее. Например, расчёт малосигналой функции импульсного БП.
Также, можете показать как выглядит отклик LC ФНЧ на ступенчатое воздействие в этом симуляторе если L и C идеальные?
Если полистаете хабр, то найдете статьи с рассуждениями на темы, что же следует понимать под разными сочетаниями букв и ролями. Так что уточнение был бы уместно.
Давайте посмотрим слово Grooming например в Cambridge Dictionary.
Это что-то особенное наверно должно быть :) Полное ощущение, что уже давно никто по ссылкам в статьях не ходит.
Есть ещё проблема, что часто доки и книги написаны "снизу-вверх", то есть объясняют азы, потом переходят к верхнему уровню, тогда как для понимания удобнее наоборот - сначала общий вид, понимание слоев абстракции, подсистем, потом детали.
Хабраэффект всё ещё существует?
К сожалению,разработчики не желают и не умеют писать документацию. Из-за подхода "вот вам код, читайте" другие вынуждены тратить излишне много времени на понимание как работать с разработанной кем-то системой/утилитой.
В линуксе чтобы разобраться как что-то сделать часто приходится собирать информацию по кусочкам и постоянно проверять актуальность на данный момент.
А что в 80 ГГб Vivado? Почему так много?
Представляет. Пик напряжения выброса на коллекторе всегда интересен.
Несёт, потому что при зарытии транзистора резко увеличивается напряжение на коллекторе и оно через делитель Скб и Cбэ поступает на базу.
При открытии транзистора Cкб также работает в паре с Сбэ, т.к. его тоже надо перезарядить.
Вероятно, да, не критично. Остаётся верить, что инкрементальная сборка менее тормозная и не даёт каких-то побочных эффектов.
Это результаты прогонов последовательных "холодных" сборок. Время изменяется из-за прогрева кэша.
Что насчёт увеличения размера файла при инкрементальной сборке относительно сборки с нуля?
Вот время компиляции одного и того же небольшого приложения в 2-х версиях на моём компьютере, несколько последовательных прогонов:
Не похоже на 10%.
У меня периодически инкрементальная сборка увеличивает размер выходного файла. как у вас?
Как считаете, у них это получилось? В яве равн нулл, не равно нулл, ну потом еще Optional придумали. Тут стало в 2 раза больше типов с вопросом и без, добавились команды "?.", "?:", "!!", потом выяснилось, что объект, который объявлен как не могущий быть null, непонятно чем инициализировать и ввели lateinit, ну и дальше насыпали методов вроде orNull(). Ну а в коде для полей с вопросом дополнительно вызывается проверка на null с бросанием NullPointerException, которое бы выбросилось бы и так при попытке доступа.
Компилируется долго почему-то.
Да и с расширением функциональности тоже не всё гладко. Всегда переезжать базовый метод или добалять новый? И как потом не запутаться какой вызывать?
Спасибо за вариант. Но как насчёт jre? Зачем пользователю jdk?
Система доставки результата пользователю - часть инфраструктуры языка, без которой он бесполезен. Вряд ли вы не сталкивались с ситуацией, когда программа просит какую-нибудь отсутствующую библиотеку или она не той версии. Это как раз одна из проблем доставки.
Речь идёт о подводных камнях языка. Раз речь о яве - то о ней и разговор.
Вы к этому ResourceBundle обращаетесь по строковому ключу ресурса. Так? А как сделать так, чтобы во-первых к ключу обязательно имелся локализованный ресурс, а во-вторых не используемых ресурсов там не было? А ещё и чтобы при наведении курсора показывался локализованный текст на выбранном по умолчанию языке.
Вопрос был конкретным. Вы же смогли понятно и достаточно кратко на него ответить, за что вам спасибо.
Раньше: заходишь на сайт оракла, качаешь jre, ставишь, потом просто двойным щелчком запускаешь jar файл. Сейчас ищешь где и что скачать нужной версии, потом где-нибудь находишь что-нибудь типа архива openJDK, распаковываешь его и тыкаешься, чтобы понять что и как надо запускать.
Сначала его надо озаботить.
Мне непонятно, почему было просто, стало сложно.
Мне как пользователю, что делать?
А оно так перестало работать после того, как Oracle что-то там опять мудрить начала. Вот на днях надо было запустить. Идём в инет, забиваем в поиске "скачать jre 17", в результате поиска либо jdk, либо jre8. Да ещё эти jdk как простые архивы, без установщика. Вам понравится как пользователю прописывать всякие переменные среды, связывать расширения, прописывать аргументы запуска?
Итак, просто отдать jar файл, как всего несколько лет назад, предложить поставить jre и запустить двойным щелчком не получится? Предлагаете вместо пары сотен кБ jar файла отдавать файл мегабайтов под 40-50?
Давайте расширим вопрос дистрибьюции. Вы пользуетесь приложением и оно нормально работало с java 8, но вот вы обновились до java 17 и теперь оно не хочет запускаться. Ваши действия?
Далее, обфусцируете код, но выходит новая версия ProGuard и вот обфусцированное приложение не запускается, хотя ничего не менялось. Или собираете код под Android и релизная версия отказывается нормально работать. Ваши действия? Ну и можно расширить вопрос о защите от копирования.
Далее, вы хотите раздать .apk для Android. И тут оказывается, что ваш любимый фаловый менеджер отказывается устанавливать его. Ваши действия?
Согласны, что пункт первый достоин называться подводным камнем разработки на Java?