Дмитрий Завалишин - Java as a better C

Поделиться
HTML-код
  • Опубликовано: 24 янв 2025

Комментарии • 38

  • @TheDirt8
    @TheDirt8 7 месяцев назад +1

    Отличный доклад! Матерый опытный специалист! Побольше бы подобного.

  • @МихаилБратухин
    @МихаилБратухин 9 месяцев назад +2

    Ютуб удалил прошлый комментарий (из-за кода на Си или из-за ссылки на фрагмент в ролике непонятно). Пишу второй раз. На слайде в ролике на 19:50 минуте приводится пример с кодом на Си с применением оператора "запятая", а далее какой-то страшный листинг кода на Java, который якобы его повторяет. Очень может быть это и так, но я попробовал переписать это используя механизмы функционального программирования в Java (Supplier'ы). Также мне пришлось обернуть в класс Box значение bonus, т.к. при передаче по ссылке в метод значение не изменится для ссылок, примитивов и финализированных объектов, типа Long, Integer, String и т.д. Зато, при передаче внутрь метода упаковки можно изменить значение в её поле, если конечно не используется структуры, типа record.
    Получился код примерно такого вида:
    private static int counter = 0;
    public static void main(String[] args) {
    int bonus = RandomGenerator.getDefault().nextInt(0, 100);
    int age = RandomGenerator.getDefault().nextInt(0, 15);
    System.out.printf(">>> bonus = %d, age = %d", bonus, age);
    Box box = new Box(bonus);
    boolean result = calc(() -> box.bonus += 10, () -> age > 10) ||
    calc(() -> box.bonus += 20, () -> age > 5) ||
    calc(() -> box.bonus += 40, () -> age > 2) ||
    calc(() -> box.bonus += 100, () -> true);
    bonus = box.bonus;
    System.out.printf(">>>>> box = %s, result = %b, new bonus = %d, age = %d", box, result, bonus, age);
    }
    static boolean calc(Supplier supplier, BooleanSupplier booleanSupplier) {
    counter++;
    System.out.printf("Вызвали %d-й раз
    ", counter);
    supplier.get();
    return booleanSupplier.getAsBoolean();
    }
    Из минусов - лишний класс Box + анонимные классы спрятанные внутри лямбды, зато код получился максимально близким именно к оригиналу. А не такой, как в следующем слайде. Так, что даже на Java можно с некоторыми оговорками написать как в опереторе "запятая" из Си. Но вопрос надо ли оно?

  • @ldmitry6858
    @ldmitry6858 3 месяца назад

    за ttd отдельный лайк, было очень интересно. спасибо

  • @АнтонГордеев-ч6у
    @АнтонГордеев-ч6у 9 месяцев назад +1

    Очень круто) Куча новых для меня крутых мыслей)

  • @sweetcapitan5690
    @sweetcapitan5690 9 месяцев назад +5

    Короче можно вставить вместо "Явы" любой другой язык с СИ подобным синтаксисом и доклад ничуть не поменяется.

    • @triti77
      @triti77 7 месяцев назад

      Не любой, а хотя бы язык с имеющимся бэком на популярную виртуалку.

  • @BossThe-t6n
    @BossThe-t6n 5 месяцев назад

    Java разве не компилируемый язык?

  • @МихаилБратухин
    @МихаилБратухин 9 месяцев назад +2

    Глянул на код с "запятой" из Си (на ruclips.net/video/mHeYf4tk9Pg/видео.html) и попробовал его тупо в лоб сделать на Java, пришлось правда применить обертку в виде класса Box с полем bonus + метод calc, который возвращает boolean значение с двумя входящими параметрами в виде обычного Supplier и BooleanSupplier. Получилось примерно вот так:
    public static void main(String[] args) {
    int bonus = 20;
    int age = 2;
    Box box = new Box(bonus);
    boolean result = calc(() -> box.bonus += 10, () -> age > 10) ||
    calc(() -> box.bonus += 20, () -> age > 5) ||
    calc(() -> box.bonus += 40, () -> age > 2) ||
    calc(() -> box.bonus += 100, () -> true);
    bonus = box.bonus;
    System.out.printf(">>>>> box = %s, result = %b, new bonus = %d, age = %d", box, result, bonus, age);
    }
    static boolean calc(Supplier supplier, BooleanSupplier booleanSupplier) {
    supplier.get();
    return booleanSupplier.getAsBoolean();
    }
    Из минусов - лишний класс Box + анонимные классы спрятанные внутри лямбды, зато код получился максимально близким именно к оригиналу. А не такой, как в следующем слайде. Так, что даже на Java можно с некоторыми оговорками написать как в опереторе "запятая" из Си. Но вопрос надо ли оно?
    Проверил работу с Си-шной реализацией и вроде всё отрабатывает одинаково:
    #include
    #include
    #include
    int main()
    {
    int bonus = 20;
    int age = 2;
    bool result = (bonus+=10, age > 10) ||
    (bonus+=20, age > 5) ||
    (bonus+=40, age > 2)||
    (bonus+=100, true);
    printf("result = %s, bonus = %d", result ? "true" : "false", bonus);
    return 0;
    }

  • @ansarozden5767
    @ansarozden5767 9 месяцев назад +2

    Крутой человек! Больше всего удивил тот факт, что он перенес работу с указателями просто на массивы.

  • @ArtemSukhov-q5n
    @ArtemSukhov-q5n 9 месяцев назад

    Отличный доклад! Хочется побольше такого)

  • @alws2532
    @alws2532 9 месяцев назад +3

    Доклад хороший, но, замечу, что мы - слушатели, говорю за своё окружение, кликбэйтные не отражающие содержания названия докладов не одобряем вообще никак.

  • @gingun95
    @gingun95 8 месяцев назад

    Если уж такую телегу и разгонять, то уже лучше про шарпы рассказывать, а не джаву. При сильном желании и сову на глобус натянуть можно. В принципе как развлечение может и ок, но смысла перегонять такие проекты именно на жава ваще смысла не вижу. Не зря тот же юнити с шарпами, а анриал с плюсами. Имхо...

    • @zeroanyway
      @zeroanyway 7 месяцев назад

      Что хорошего в шарпе? У него нет виртуальных потоков, нет ADT и паттерн матчинга с полнотой по ним же, нет всей полноты мощности дженериков жавы, да даже прокси объекты там нельзя создать не из интерфейсов.
      Плюс вм жавы >>>> шарпа.

  • @guai9632
    @guai9632 9 месяцев назад +4

    мощный чувак

  • @neshkeev
    @neshkeev 9 месяцев назад +3

    Люди, которые называют java явой, должны называть jazz яз

    • @ldmitry6858
      @ldmitry6858 3 месяца назад

      а остров в индонезии как называют?

  • @turlir
    @turlir 9 месяцев назад +10

    Не представляю что испытали люди в зале, когда увидели на слайдах слово Ява. Мне в записи это читать неприятно. Можно было легко обойтись без этого дурновкусия. Не хочу делать преждевременных выводов, но для меня это признак того что конференция скатилась. После известных событий заметно что организаторы стараются заменить пропавших спикеров другими, не менее интересными. Раньше доклады были про Java, а не про Яву и более интересные.

    • @stariyczedun
      @stariyczedun 9 месяцев назад +7

      какой душный комментарий
      я по работе говорю в основном по английски и то меня это не парит. я каких только кривых произношений названий языка не слышал, особенно шведы отличаются со своей "йОва".

    • @ИльяБогачев-щ8ю
      @ИльяБогачев-щ8ю 9 месяцев назад +11

      даже если он будет говорить Джабба вместо Джавы это не умаляет того, насколько грамотный доклад и сколько человек положил труда для этого

    • @alws2532
      @alws2532 9 месяцев назад +6

      Её и сами джависты нет нет да и называют явой, не раз слышал. И вообще тупые попытки клеить ярлычки, как в притче про мудреца, палец и луну... как это на наполнение доклада и конференции повлияло... да никак почти.

    • @ITksh-zp1ob
      @ITksh-zp1ob 9 месяцев назад +4

      @@alws2532 13 лет пишу на яве, сейчас на котлине, никогда не парился говорить ява джава, какая разница.

    • @JLarky
      @JLarky 9 месяцев назад +1

      I agree. Why are people even trying to watch conferences where speakers are talking in Russian?

  • @AlexAlex-jk2tn
    @AlexAlex-jk2tn 9 месяцев назад +1

    Я сам разработчик С++ и меня тоже очень часто смущают, когда люди считают, что язык С++ сильно отличается от других ЯП, той же джавы. Вообще не вижу смысла, зачем что-то писать на джаве или C#, когда можно столь же легко и безопасно написать на С++. Почему некоторые люди упорно пытаются доказывать, что С++ - прошлый век, когда я бы сказал, что всё в точности до наоборот, в С++ у тебя никаких дополнительных абстракций в виде ява-машины нет, и поэтому код выполняется гораздо проще и производительней, а главное, что если следовать паттернам джавы, то никаких проблем с безопасностью не возникает, просто не нужно использовать низкоуровневые вещи (типа оператора new/delete), если вы не пишете что-то супер низкоуровневое с требованием к производительности и где вы бы и так без C++ не обошлись.

    • @alekseylebedev6278
      @alekseylebedev6278 9 месяцев назад +9

      Потому что людям нужно решать проблемы бизнеса здесь и сейчас, а не проблемы С++.

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 9 месяцев назад

      @@alekseylebedev6278 У С++ проблем не больше чем у других языков, тут скорее от разработчика зависит, чтобы он не лез под капот языка и не использовал, то, что для него не делали (new, delete, raw-pointers, etc), а использовал то, что общепринято использовать.

    • @alws2532
      @alws2532 9 месяцев назад +4

      Может нужно сначала реально иметь серьёзный опыт реальной разработки в других языках перед таким высказыванием? Прошлый не прошлый век плевать, но плюсы имеют ряд своих проблем удорожающих разработку, иначе бы со столь мощной историей и багажом от фреймов до стандартов на которые многие как минимум смотрели при создании других ЯП бы правил половиной мира.

    • @alws2532
      @alws2532 9 месяцев назад +6

      С Java вообще странное сравнение, там макака(условно) парой кликов(почти буквально) в IDE может даже не написать, а уже поднять и настроить шаблонный кубернетис с флотом микро-сервисов от базы, шины сообщений, бэком со всеми слоями и системой тестирования, и т.д. Может я отстал и такое есть в C++?

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn 9 месяцев назад

      @@alws2532 Возможно вы действительно не осведомлены в современных IDE, т.к. тоже самое делается и для С++ и для Python. Но это же всё кодогенерация и она не делает того, что реально нужно заказчику, поэтому и нужны программисты, а в большинстве случаев вообще приходится работать существующим проектом, а не писать новый, и тогда кодогенерация почти не пригождается, разве что классы генерировать.

  • @ruff7209
    @ruff7209 9 месяцев назад +2

    С - си,
    Java - джава....нет бл "ява"
    Самоходный кринж и бедные слушатели в зале

    • @Sasha-z6c
      @Sasha-z6c 7 месяцев назад +2

      Открой окно душнила, у меня аж монитор от тебя запотел.

  • @ldmitry6858
    @ldmitry6858 3 месяца назад

    за ttd отдельный лайк, было очень интересно. спасибо