Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49768
А я всем говорю - курите первоисточник. Всё что JCP предлагает - это вторичные пережованные идеи.
Очень мало в программировании нового в наше время. Можно назвать новым применение глубоких
нейросеток - но это мать ево НЕ программирование а математика. Там по настоящиму надо учиться.
И не спринг с хибернейтом.

Что вообще вы можете назвать новым?
14 ноя 20, 01:49    [22231862]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49768
И тот паттерн-матчинг - не настоящий.

Вот настоящий. Это по идее Haskell. Но я пишу от руки поэтому оно нихрена не скомпилируется но идея такая.

data MyDataType = Sun | Mon | Tue ......

whatToDo(Sat) = "Hehe"
whatToDo(Sun) = "Hurray"
whatToDo(_) = "Ouch...:("


Тоесть я свёл все это дерьмо к декларации трех функций. А не к псевдо-switch оператору.

Больше нет ничего. Ни полиморфизьма. Ни объектов. Мир застывшей логики.
14 ноя 20, 01:57    [22231865]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton,

Ну самое новое это наверное dependent types, хотя разрабатывать теорию начали давно, только недавно появилась реальная перспектива промышленного применения.
Из интересных идей также отмечу работу с памятью в Rust, которая безопасная управляемая и быстрая. И никаких gc.
Также интересна идея STM. Транзакционная память тоже немолодая идея, но наконец то его можно пробовать в реальных проектах.
Ну и касаемо больше fp - есть такой стиль написания программы как final tagless encoding, очень большой потенциал для убийства ООП.
14 ноя 20, 02:05    [22231867]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49768
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.
14 ноя 20, 02:11    [22231870]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton
И тот паттерн-матчинг - не настоящий.

Вот настоящий. Это по идее Haskell. Но я пишу от руки поэтому оно нихрена не скомпилируется но идея такая.

data MyDataType = Sun | Mon | Tue ......

whatToDo(Sat) = "Hehe"
whatToDo(Sun) = "Hurray"
whatToDo(_) = "Ouch...:("


Тоесть я свёл все это дерьмо к декларации трех функций. А не к псевдо-switch оператору.

Больше нет ничего. Ни полиморфизьма. Ни объектов. Мир застывшей логики.


Ну скаловский паттерн матчинг конечно более развесистый но и более мощный чем у хаскеля. А вот что касается того что под соусом паттерн матчинг а пытаются всунуть в джаву.... Там да, бессмысленно и беспощадно, я о том и говорю. Лепят какие то полу-недо-фичи обрезанные и которые невозможно юзать в идиоматическом стиле и на мой взгляд только усложняют язык. Но видимо уплочено
14 ноя 20, 02:12    [22231871]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
mayton
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.

Угу, а загрязнение и приводит к смерти. Ниша сильно сузится. Вообще не понимаю стартов новых проектов на джаве. Не нравится скала или кложур - на тебе котлин
14 ноя 20, 02:14    [22231873]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49768
Мир Java ентерпрайза пока зиждется на строгом убеждении что write once ... works everywhere.
И пока это работает бинарникам ничего не грозит. Вот как долго без эволюции OpenJDK и Oracle
смогут удерживать JVM в состоянии поддержки. Старые фичи тянут на дно как гиря. Сама JVM
это по сути калькулятор Mk-60. Там даже нет намёка на команды поддержки SSE1/2/3, AVX.

Мы не можем собрать эффективный H.264 декодер видео на Java не потому что она плоха
а потому что у нас нет прямого управления фичами современного процессора. Я шутки
ради создал топик где я делаю интринзик на ассемблере x86 в Java коде но в этой шутке
я ждал реакции форума. Что скажут?
14 ноя 20, 02:19    [22231875]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10762
Сергей Лалов
у меня иерархия глубиной дай бог классов в 3
"Глубина наследования" и "сложность иерархии" - вещи сугубо "попиндикулярные". В контексте запечатанных (sealed) классов - особенно.
14 ноя 20, 08:05    [22231909]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10762
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

P.S.
Когда же вы все научитесь спокойно относиться к фичами и возможностям, которые не нужны лично вам?..
14 ноя 20, 08:10    [22231911]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10762
mayton
Что скажут?
Ровно то, что было сказано ещё в античное время: "Богу - богово, а кесарю - кесарево".
Для платформы, которая "бегает везде" нет смысла тянуть в язык фичу, доступную "почти нигде". Сначала - более-менее массовое внедрение и уже потом - поддержка платформы.
При этом, что характерно, никто не мешает сделать так, как вам хочется - собственно JVM требует для своей работы всего пяти классов. Всё остальное вы можете переделать. Если не создавать собственный компилятор - кое-что придётся оставить как есть.
14 ноя 20, 08:23    [22231912]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
Basil A. Sidorov
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

P.S.
Когда же вы все научитесь спокойно относиться к фичами и возможностям, которые не нужны лично вам?..

Ну у нас тут все либо-писатели сидят конечно. Перефразируя, упоротого прикладного программиста, надеюсь стало легче.
Sealed в скале я использую уже 5 лет и в хвост и в гриву,
так что не надо мне рассказывать про нужнгсть. применение у этой фичи в основном такое -
1) замена энумам
2) более безопасный по отношению к рантайм ошибкам паттерн матчинг.
Оба этих кейса легко покрываются хорошо имплементированными энамами, что в джаве на редкость хорошо сделано.
Я конечно допускаю, что чего-то не понимаю и в этом случае тебе не составит труда привести пару кейсов для которых sealed просто необходим
14 ноя 20, 12:53    [22232003]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10762
забыл ник
не составит труда привести пару кейсов для которых sealed просто необходим
Закрыть реализацию.
Исторический пример - "Sealed: true" в манифесте jar-файла.
Зачем может быть нужно?
В java-классе доступ по умолчанию "в пределах пакета". Предположим, что я реализовал некий "чувствительный" класс, который используется другими классами в том же пакете. Работа с лицензиями или что-нибудь этакое. Наследоваться от такого класса бессмысленно - "важные" методы и переменные не имеют модификаторов доступа, а значит и у наследников не будет доступа "куда не надо".
Но, если "чужак" поместит в этот пакет собственный класс, то сможет получить "некие преференции", которых разработчик трудолюбиво его лишал. Просто создаём собственный класс в пакете разработчика, кладём его "рядышком" и - всё. "Взлом" делается на уровне скрипта запуска.
Если jar "запечатан", то классы любых его пакетов будут загружаться строго из одного места, а значит не будет работать или класс "взломщика" или класс разработчика.
Понятное дело, что такая "защита" тривиально обходится переупаковкой jar-файла, но во многих случаях и такой вариант "защиты" более чем достаточен.

Аналогично и с запечатанными классами. Есть интерфейс (абстрактный класс), который должен быть реализован (расширен) только разработчиком и никем кроме него. При этом разработчику требуется несколько реализаций. Запечатываем (только) интерфейс (класс) и получаем гарантию, что "никто кроме нас".
14 ноя 20, 13:21    [22232016]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
забыл ник
Member

Откуда:
Сообщений: 3436
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз. В общем так ничего убедительного и не услышал.
Насчёт sealed пакетов, кстати интереснее - давно задумывался почему виртуальная машина даёт загружать пекедди с одинаковым именем с разных источников.
14 ноя 20, 14:39    [22232048]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10762
забыл ник
Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
А подумать? Ограничивается не доступ собственного (контролируемого) кода, а доступ "посторонних" к возможностям собственного кода.

P.S.
"Я ему - покажи. А он мне - в нашем клубе джентельменам верят на слово. И тут мне карта как попрёт"
14 ноя 20, 14:56    [22232058]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49768
забыл ник
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз.

Я вижу себе смысл не в секюрности а в создании непротиворечивой доменной модели.
Тоесть если вы определили sealed class Gender - то у вас будет строго детерминированный
набор типов Male, Female, Male-To-Female .e.t.c. сколько наша medical insurance system
поддерживает типов клиентов. И никто кроме архитектора не подкинет новых.

Это можно сказать так. Final class - это ограничитель по "вертикали" диаграмме наследования
а sealed - лимит по "горизонтали" или по quantity.
14 ноя 20, 16:44    [22232090]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49768
забыл ник

Насчёт sealed пакетов, кстати интереснее - давно задумывался почему виртуальная машина даёт загружать пекедди с одинаковым именем с разных источников.

Я думаю что фразу "дает загружать" надо расписать как некую последовательность шагов.
Или поисковых операций.
14 ноя 20, 16:48    [22232093]     Ответить | Цитировать Сообщить модератору
 Re: Изолированные классы  [new]
mayton
Member

Откуда: loopback
Сообщений: 49768
Некоторые sealed scala classes:

sealed trait Nothing
sealed trait Null


private[immutable] sealed abstract class MapNode[K, +V] extends Node[MapNode[K, V @uV]] {
.....
sealed abstract class Stream[+A] extends AbstractSeq[A]
.....
16 ноя 20, 01:56    [22232563]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Java Ответить