powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему популярна 8 версия и веб использование?
25 сообщений из 156, страница 5 из 7
Почему популярна 8 версия и веб использование?
    #40099400
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Тогда я повторю вопрос - чем не устраивает то, что уже завезли в Java 8???
https://habr.com/ru/post/579178/
текстовые блоки
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099401
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

О да, текстовые блоки, интерполяторы это тоже топчик
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099403
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
О да, текстовые блоки, интерполяторы это тоже топчик
мелочь, а приятно.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099444
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Я конечно не совсем показатель, но..
mayton "страдает", вполне конкретно, по беззнаковым типам.
Мой вопрос к нему тоже относится сугубо (и исключительно) к возможностям Java 8 в отношении этих самых беззнаковых.
Каким боком к этой узкой нише даже ваши алгебраические типы? Потому, что всё остальное - вообще никак.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099445
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
текстовые блоки
Ещё один чукчо-писатель ...
Беззноковые как соотносятся с текстовыми блоками???
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099446
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типичный пример неумения думатьАвтор страдает ...
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
static String formatter(Object o) {
    String formatted = "unknown";
    if (o instanceof Integer i) {
        formatted = String.format("int %d", i);
    } else if (o instanceof Long l) {
        formatted = String.format("long %d", l);
    } else if (o instanceof Double d) {
        formatted = String.format("double %f", d);
    } else if (o instanceof String s) {
        formatted = String.format("String %s", s);
    }
    return formatted;
}

... и цепочка вложенных if это (действительно) ужасно.
Но почему эти страдающие перфекционисты не в состоянии переписать цепочку в блок:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
static String formatter(Object o) {
    if (o instanceof Integer i) {
        return String.format("int %d", i);
    };
    if (o instanceof Long l) {
        return String.format("long %d", l);
    };
    if (o instanceof Double d) {
        return String.format("double %f", d);
    };
    if (o instanceof String s) {
        return String.format("String %s", s);
    }
    return "unknown";
}

?
Оно, конечно, тоже громоздкое, но это хотя бы "Die erste Kolonne marshiert ..." и не требует ломать голову над вопросом - "А нафига тут вложенность? Оптимизация выхода? Серьёзно???"

P.S.
Когда я вижу аргументацию такого качества , хочется спросить: вы действительно считаете свои аргументы убедительными?
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099475
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

чел приводит примитивный пример для большей наглядности.
и то , что использование вложенных if , в не цепочка if не является предосудительным в данном случае - вполне возможен и более общий случай, когда после этой цепочки стоит не renurn, а продолжение кода.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099477
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Ещё один чукчо-писатель ...
Беззноковые как соотносятся с текстовыми блоками???
а кто их сравнивает? зачем смешивать мух и котлеты?
был вопрос , что нет в 8 , по сравнению с 17 - я ответил.
ведь текстовые блоки намного нагляднее чем раньше было.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099478
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник

2) отсутствие ADT - алгебраических типов данных
3) Плохой inference типов
..
10) нормальных генерикрв с ко- и контр- вариантностью. А также генерикрв на примитивах
11) аналога do- или for comprehension. В широком контексте - монадического контекста
12) нормальных лямбд чтобы можно было писать простые функции высшего порядка

В глобальном масштабе. Если движенье в сторону scala это улучшение - то зачем тогда java?
Это тот-же самый вопрос который говорят и про java-kotlin. Язык, если он работает более 20 лет - уже
имеет свою устойчивую аудиторию разработки и поддержки. И ему (языку) может быть лучше
"подлатать" свои недостатки. А фичи других языков - пусть останутся фичами других языков.

По поводу строгости, inference и прочее. Мне кажется реализовать строгость в полной мере
в java будет невозможно именно в связи с ее либеральной архитектурой jvm. В строгом языке
мы не можем передать в функцию объект (Object) до тех пор пока компиллятор не будет видеть
диапазон возможных подтипов которые потенциально туда зайдут или паттерн матчинг решит
что этот код - законен и может работать. В противоположность в Java слишком популярны
механики рефлексии которые откладывают принятие решения "на потом" что создает
некую вольность в рантайме. Этим пользуются фреймворки. И именно такие вольности
не позволяют нам постулировать строгий язык наподобие Haskell на базе java. Тут уже либо
строгий вывод типов, либо - возможности рантайма.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099485
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А фичи других языков - пусть останутся фичами других языков

+++
А мы мы так доиграемся и завтра кому-то захочется писать на Java без скобочек и без точек с запятыми, а блоки кода чтобы определялись по количеству пробелов от начала строки. И ведь протолкнут в релиз... хипстеры треклятые.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099491
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
был вопрос
... в вашей головечто нет в 8 , по сравнению с 17 - я ответил... на вопрос, который вы сами себе и задали.
Встречный вопрос - меня-то нафига цитировать? Мой вопрос относился к совершенно конкретному и очень узкому "стенанию" про отсутствие беззнаковых.

P.S.
Неужели так сложно понять, что если человек не поленился и вырезал из "стены текста" конкретные строки, то "это ж неспроста"?
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099496
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
чел приводит примитивный пример для большей наглядности.
Ещё древние советовали не выплёскивать младенца вместе с водой.
Поэтому примитивность примера (заменяется на toString()) - вообще не оправдание.и то , что использование вложенных if , в не цепочка if не является предосудительным в данном случаеВот именно в данном конкретном случае вложенные if-ы - тупость и мракобесие.
Вложенные условные операторы нужны только для того, чтобы "оптимизировать" количество сравнений.
Гораздо более прямолинейный вариант оптимизации - использовать оператор return прямо там, где он требуется.вполне возможен и более общий случай, когда после этой цепочки стоит не renurn, а продолжение кода.Возможен, но не в данном конкретном случае.

P.S.
И мне опять приходится повторить свой вопрос: используя аргументы такого качества, вы действительно считаете их убедительными?
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099501
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
И мне опять приходится повторить свой вопрос: используя аргументы такого качества, вы действительно считаете их убедительными?
придираться к примеру, просто показывающему разницу - не есть хорошо.

Basil A. Sidorov
Вложенные условные операторы нужны только для того, чтобы "оптимизировать" количество сравнений.
Гораздо более прямолинейный вариант оптимизации - использовать оператор return прямо там, где он требуется.вполне возможен и более общий случай, когда после этой цепочки стоит не renurn, а продолжение кода.
тут вопрос не о оптимизации, а о варианте замены, что и где нужно оптимизировать это не относится к данному примеру.
тебе нравятся if - используй , где считаешь нужно. никто не заставляет.
я то же бы использовал множественные ретурны, если б это было в таком методе. но я понял мыль автора и мне этого достаточно.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099502
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

ЗЫ
а придраться можно и к фонарному столбу....
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099503
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099525
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Basil A. Sidorov
Тогда я повторю вопрос - чем не устраивает то, что уже завезли в Java 8???
https://habr.com/ru/post/579178/
текстовые блоки

Я ворчу про знаковую арифметику уже давно. Кажется еще с Jdk 1.5

Есть пример толи от Мартына Фавлера толи от Джоша Керивского. Классика жанра.
Поиск половинным делением в массиве работает. Но периодически падает с арифметикой
доступа при некоторых условиях. Пример достаточно экзотичен и воспроизвести его нелегко.
Нужен толстый массив.

Код: java
1.
2.
3.
4.
int binary_search(int *arr, int l, int r, int a)
    {
        if (r >= l) {
            int mid = (l + r - 1) / 2;


Арифметика доступа к массиву требует гарантий. Гарантий того что мы не выскочим за разрядную сетку.
Будучи портированным с С++ или "C" где элемент mid имел запас по прочности в виде unsigned int,
алгоритм работает. На тех же объемах в Java он может не работать.

Есть умный рефакторинг который позволяет уменьшить риски переполнений так
Код: java
1.
int mid = l + (r - l) / 2;


но не все это делают. Вообще сложно портировать C/C++ код с сохранением поведения арифметики точно.
Это - тривиальный пример. А есть еще и операции умножения.

Коробочное решение - использовать strict-арифметику из пакета Math. В этом случае переполнение сетки
мы задетектим исключением. Это не всегда удобно. Ведь вам
придется инфиксную операцию "+" переписывать на вызов методов. И разумеется после такого рефакторинга
читаемость кода пострадает. Он уже не выглядит портом с С++. Он - уродлив как бухгалтерия с BigDecimal.

Можно также на уровне контрактов ограничить входные параметры. Тоесть заручится что размер массива
будет всегда не более чем четверть диапазона int к примеру. Но это всё такие условности. 99% даю что
разработчик это не проверяет. И бинарный поиск (просто как наивный пример) будет протестирован
поверхностно и на малых объемах.

Некоторые возразят дескыть мы и так получаем исключение класса IndexOutOf... но я отвечу что
это просто частный пример. Алгоритм мог быть другой (не поисковый) и мы могли попасть в некорректный индекс
в позитивном диапазоне. Такое не детектировалось бы.

И что я хочу? Я от восьмерки ничего не хочу. Я просто говорил что было-бы неплохо в Java-18 иметь беззнаковую
арифметику. Microsoft.Net внедрил беззнаковые типы? Внедрил. Такой проблемы у него нет.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099537
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Увы.
Мейнстрим идет в уход от арифметики. Например в итераторы.... Коллекции, контейнеры
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099543
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Увы.
Мейнстрим идет в уход от арифметики. Например в итераторы.... Коллекции, контейнеры


А как коллекции, контейнеры связаны с арифметикой?

1)
Полностью поддержку mayton'а. Вместо синтаксической патоки (т.к. даже сахаром ее не назвать), лучше бы типы расширили. Безнаковые, арифметика с фиксированной точкой (number), обработка null'а (синтаксис Kotlin'а), выкинуть get'ры/set'ы (property в Delphi), добавить нормальные коллекции на примитивные типы и так далее и тому подобное.

2)
Что if, что switch - на мой взгяд, одинаковая помойка.

Ну а if/switch'и с instanceof - явное нарушение базовых принципов ООП. Т.к., по "обычному" ООП, такое поведение должно было бы не if/switch'а кодироваться, а виртуальной функцией.

В результате появляется "новая" фича, которая будет учить "новых" программистов кодировать в стиле Basic'а 80'х годов прошлого века. Когда 90% программы: If, substr, instr'ы.... а слов "парсер", "синтаксический разбор" программисты даже и не знают.

IMHO
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099546
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.
по хорошему, нужно было бы нормальные ссылки на функцию + HashTable с описанием:
тип параметра = функция форматирования

Ну и вся ф-ция String formatter(Object o)
должна была бы выглядить (без всяких switch):
return formatFunctions.get( o.getType() ).format( o );
+ код на проверку null )))

Но в "классической" Java такое можно изобразить только через 100500 строк кода с порождением безумного кол-ва классов или, скорее всего, в "современной" Java через лямбды.

IMHO
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099547
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
https://habr.com/ru/post/579178/
текстовые блоки


1. посмотрел в проекте текущем, слово switch встречается аж 8 раз и везде enum
2. текстовые блоки и интерполяция не нужна: с "длинным" текстом приходится напрягаться разве что при написании текста исключений, а все остальное лежит в ресурсах, а интерполяция она вещь такая, что завтра тебе будут в нее вставлять "rm -rf /" и будет весело, здесь твое рвение вызвано исключительно тем, что ты любишь писать SQL-лапшу
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099548
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Есть умный рефакторинг который позволяет уменьшить риски переполнений так
Код: java
1.
int mid = l + (r - l) / 2;



чет вспомнил, что где-то в проекте был бинарный поиск, побежал смотреть, а там '>>> 1'
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099552
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mayton,
Увы.
Мейнстрим идет в уход от арифметики. Например в итераторы.... Коллекции, контейнеры

Я-же говорю. Я рассматриваю кейс когда числовой алгоритм (криптография, численные методы,
хеши) был портирован с языков имеющих unsigned.

Ты говоришь мир уходит. Он уходит лишь малой частью которая никак не влияет на мой тезис.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099555
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Я ворчу про знаковую арифметику уже давно.
...
И что я хочу? Я от восьмерки ничего не хочу.
А зря. Именно туда и завезли операции беззнаковой арифметики.
Именно поэтому я и хотел услышать внятное пояснение: чем, собственно, не устраивают возможности Java 8 в части беззнаковой арифметики.
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099558
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
mayton
Я ворчу про знаковую арифметику уже давно.
...
И что я хочу? Я от восьмерки ничего не хочу.
А зря. Именно туда и завезли операции беззнаковой арифметики.
Именно поэтому я и хотел услышать внятное пояснение: чем, собственно, не устраивают возможности Java 8 в части беззнаковой арифметики.

"завезли" это:

The "new support" is the addition of the static methods in the Integer and Long classes, e.g. Integer.divideUnsigned. If you're not using those methods, your "unsigned" long above 2^63-1 is just a plain old long with a negative value.

???
...
Рейтинг: 0 / 0
Почему популярна 8 версия и веб использование?
    #40099559
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev
А как коллекции, контейнеры связаны с арифметикой?
а что сейчас вычислять и "сдвигать" если итераторы?
Раньше указатель++ и перешел в массиве на след кусок данных.
Сейчас
for (auto fille: контейнерФайлов) {
...
Коллекции заменили массивы.
Так как надо сдвигать, перераспределять память и блокировать автоматически и лениво.
...
Рейтинг: 0 / 0
25 сообщений из 156, страница 5 из 7
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему популярна 8 версия и веб использование?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]