powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Изолированные классы
16 сообщений из 41, страница 2 из 2
Изолированные классы
    #40018209
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И тот паттерн-матчинг - не настоящий.

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

Код: python
1.
2.
3.
4.
5.
data MyDataType = Sun | Mon | Tue ......

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



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

Больше нет ничего. Ни полиморфизьма. Ни объектов. Мир застывшей логики.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018210
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну самое новое это наверное dependent types, хотя разрабатывать теорию начали давно, только недавно появилась реальная перспектива промышленного применения.
Из интересных идей также отмечу работу с памятью в Rust, которая безопасная управляемая и быстрая. И никаких gc.
Также интересна идея STM. Транзакционная память тоже немолодая идея, но наконец то его можно пробовать в реальных проектах.
Ну и касаемо больше fp - есть такой стиль написания программы как final tagless encoding, очень большой потенциал для убийства ООП.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018212
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018213
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
И тот паттерн-матчинг - не настоящий.

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

Код: python
1.
2.
3.
4.
5.
data MyDataType = Sun | Mon | Tue ......

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



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

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


Ну скаловский паттерн матчинг конечно более развесистый но и более мощный чем у хаскеля. А вот что касается того что под соусом паттерн матчинг а пытаются всунуть в джаву.... Там да, бессмысленно и беспощадно, я о том и говорю. Лепят какие то полу-недо-фичи обрезанные и которые невозможно юзать в идиоматическом стиле и на мой взгляд только усложняют язык. Но видимо уплочено
...
Рейтинг: 0 / 0
Изолированные классы
    #40018214
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В случае с Java может произойти не убийство а загрязнение языка. И я сочувствую новичкам
которые входят в язык. Им сложнее освоить базу. Она - расширяется и через 10 лет догонит С++.

Угу, а загрязнение и приводит к смерти. Ниша сильно сузится. Вообще не понимаю стартов новых проектов на джаве. Не нравится скала или кложур - на тебе котлин
...
Рейтинг: 0 / 0
Изолированные классы
    #40018215
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мир Java ентерпрайза пока зиждется на строгом убеждении что write once ... works everywhere.
И пока это работает бинарникам ничего не грозит. Вот как долго без эволюции OpenJDK и Oracle
смогут удерживать JVM в состоянии поддержки. Старые фичи тянут на дно как гиря. Сама JVM
это по сути калькулятор Mk-60. Там даже нет намёка на команды поддержки SSE1/2/3, AVX.

Мы не можем собрать эффективный H.264 декодер видео на Java не потому что она плоха
а потому что у нас нет прямого управления фичами современного процессора. Я шутки
ради создал топик где я делаю интринзик на ассемблере x86 в Java коде но в этой шутке
я ждал реакции форума. Что скажут?
...
Рейтинг: 0 / 0
Изолированные классы
    #40018233
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
у меня иерархия глубиной дай бог классов в 3
"Глубина наследования" и "сложность иерархии" - вещи сугубо "попиндикулярные". В контексте запечатанных (sealed) классов - особенно.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018235
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

P.S.
Когда же вы все научитесь спокойно относиться к фичами и возможностям, которые не нужны лично вам ?..
...
Рейтинг: 0 / 0
Изолированные классы
    #40018236
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Что скажут?
Ровно то, что было сказано ещё в античное время: "Богу - богово, а кесарю - кесарево".
Для платформы, которая "бегает везде" нет смысла тянуть в язык фичу, доступную "почти нигде". Сначала - более-менее массовое внедрение и уже потом - поддержка платформы.
При этом, что характерно, никто не мешает сделать так, как вам хочется - собственно JVM требует для своей работы всего пяти классов. Всё остальное вы можете переделать. Если не создавать собственный компилятор - кое-что придётся оставить как есть.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018286
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
забыл ник
Ключевое слово упоротых
Т.е. чуть менее, чем все разработчики API. Java SE API - в том числе.

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

Ну у нас тут все либо-писатели сидят конечно. Перефразируя, упоротого прикладного программиста, надеюсь стало легче.
Sealed в скале я использую уже 5 лет и в хвост и в гриву,
так что не надо мне рассказывать про нужнгсть. применение у этой фичи в основном такое -
1) замена энумам
2) более безопасный по отношению к рантайм ошибкам паттерн матчинг.
Оба этих кейса легко покрываются хорошо имплементированными энамами, что в джаве на редкость хорошо сделано.
Я конечно допускаю, что чего-то не понимаю и в этом случае тебе не составит труда привести пару кейсов для которых sealed просто необходим
...
Рейтинг: 0 / 0
Изолированные классы
    #40018292
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
не составит труда привести пару кейсов для которых sealed просто необходим
Закрыть реализацию.
Исторический пример - "Sealed: true" в манифесте jar-файла.
Зачем может быть нужно?
В java-классе доступ по умолчанию "в пределах пакета". Предположим, что я реализовал некий "чувствительный" класс, который используется другими классами в том же пакете. Работа с лицензиями или что-нибудь этакое. Наследоваться от такого класса бессмысленно - "важные" методы и переменные не имеют модификаторов доступа, а значит и у наследников не будет доступа "куда не надо".
Но, если "чужак" поместит в этот пакет собственный класс, то сможет получить "некие преференции", которых разработчик трудолюбиво его лишал. Просто создаём собственный класс в пакете разработчика, кладём его "рядышком" и - всё. "Взлом" делается на уровне скрипта запуска.
Если jar "запечатан", то классы любых его пакетов будут загружаться строго из одного места, а значит не будет работать или класс "взломщика" или класс разработчика.
Понятное дело, что такая "защита" тривиально обходится переупаковкой jar-файла, но во многих случаях и такой вариант "защиты" более чем достаточен.

Аналогично и с запечатанными классами. Есть интерфейс (абстрактный класс), который должен быть реализован (расширен) только разработчиком и никем кроме него. При этом разработчику требуется несколько реализаций. Запечатываем (только) интерфейс (класс) и получаем гарантию, что "никто кроме нас".
...
Рейтинг: 0 / 0
Изолированные классы
    #40018311
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз. В общем так ничего убедительного и не услышал.
Насчёт sealed пакетов, кстати интереснее - давно задумывался почему виртуальная машина даёт загружать пекедди с одинаковым именем с разных источников.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018319
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
А подумать? Ограничивается не доступ собственного (контролируемого) кода, а доступ "посторонних" к возможностям собственного кода.

P.S.
"Я ему - покажи. А он мне - в нашем клубе джентельменам верят на слово. И тут мне карта как попрёт"
...
Рейтинг: 0 / 0
Изолированные классы
    #40018340
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Практический смысл так и остался непонятен. Насчёт интерфейсов - это по определению вещь, которая должна быть публично доступная и расширяемая. Если надо ее закрыть, то проще не допустить ее появления в публичном api, а практической необходимости ограничивать в контролируемом тобой коде вообще не вижу.
Что касается классов - чем final не устраивает хз.

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

Это можно сказать так. Final class - это ограничитель по "вертикали" диаграмме наследования
а sealed - лимит по "горизонтали" или по quantity.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018342
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник

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

Я думаю что фразу "дает загружать" надо расписать как некую последовательность шагов.
Или поисковых операций.
...
Рейтинг: 0 / 0
Изолированные классы
    #40018638
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Некоторые sealed scala classes:

Код: java
1.
2.
sealed trait Nothing
sealed trait Null



Код: java
1.
2.
3.
4.
private[immutable] sealed abstract class MapNode[K, +V] extends Node[MapNode[K, V @uV]] {
.....
sealed abstract class Stream[+A] extends AbstractSeq[A]
.....
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Изолированные классы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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