Почему в Java нет pattern matching и литералов списков/мап?

psm-home

Вот уже и лямбды вкрутили, а таких казалось бы простых и полезных вещей нет. Это просто не нужно ширнармассам или есть какие-то фундаментальные препятствия?

Dmitriy82

Почему не вкрутили не знаю, но паттерн матчинг для ОО системы типов это сложно и непонятно как делать. Есть примеры языков, где такое сделано по-нормальному?

psm-home

Не знаю, что такое по-нормальному, я вообще маску на свалке нашел, но вот скажем case классы в scala вроде ничего так. Но ты прав, слово "простых" в вопросе можно отнести только к литералам.

apl13

Вот уже и лямбды вкрутили, а таких казалось бы простых и полезных вещей нет.
Гм.
Слы, э.
Лямбды фундаментальнее, какбе.

nikola1956

Мне вот реально на практике только трейтов (толстых интерфейсов) не хватает. Еще не очень удобно передавать SQL-запросы к БД, но это решается с помощью хороших классов-оберток. Да, а вот трейты нужны!

yroslavasako

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

nikola1956

В целом согласен. Но какие-то дополнительные языковые вещи могут сократить код и он станет проще для "макаки" (что это?) тоже, если, конечно, эти нововведения будут использованы и для упрощения API тех или иных популярных библиотек.

6yrop

это решается с помощью хороших классов-оберток
это что такое?

nikola1956

это что такое?
Например, в отдельных параметрах метода передавать имена и значения для SELECT, WHERE, ORDER BY и т.п. В общем, изолировать себя от генерации SQL-строк и синтаксиса SQL.

6yrop

а нафига изолироваться от синтаксиса SQL? В итоге же у вас получается ужасно громоздкий синтаксис. А у SQL всё аккуратно.

nikola1956

В итоге же у вас получается ужасно громоздкий синтаксис. А у SQL всё аккуратно.
Конечно, все зависит от конкретной ситуации, иногда удобнее так, иногда иначе.

6yrop

иногда удобнее так, иногда иначе.
когда удобнее так, а когда иначе?

nikola1956

когда удобнее так, а когда иначе?
Не знаю, как ответить :ooo:
В общем, сам обычно использую обертки, это упрощает код логики работы с БД, в котором я не хочу видеть генерацию строк SQL.

6yrop

Не знаю, как ответить
Херово. Ты не знаешь, когда надо пользоваться твоим API.
В общем, сам обычно использую обертки, это упрощает код логики работы с БД, в котором я не хочу видеть генерацию строк SQL.

Порой код пишется не для себя, а для людей.

nikola1956

Ты не знаешь, когда надо пользоваться твоим API.
Все это пустое, оптимальное решение нужно для конкретной задачи, а не вообще. На том стоим :)

yroslavasako

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

6yrop

увеличить размер инструментария
вроде инструментария в джава дохера

danilov

А как работают литералы для разных реализаций в других языках?
Например, я использую примерно поровну хэшмапы с открытой адресацией и со списками, реже TreeMap.

bav46

ты че не понял, нужно садицо песать контролаблквери для джавы

yroslavasako

но вот видишь, не хватает. Просят ввести ещё.

karkar

в других языках?
Например, через универсальное представление промежуточным типом std::initializer_list<T>.
Оставить комментарий
Имя или ник:
Комментарий: