Открыть список
Как стать автором
Обновить
82
Карма
31
Рейтинг
Zheka Kozlov @orionll

Пользователь

Чистая архитектура. Часть III — Принципы дизайна

Ди Ай Пи, наверное, но это не точно

Чистая архитектура. Часть II — Парадигмы программирования

А вот Алан Кей, создатель ООП, говорит об обратном, сами объекты менее важны, чем сообщения.

То, что создал Алан Кей, мало имеет отношения к тому, что сейчас принято называть ООП. То самое ООП, которое он создал, это скорее модель акторов типа Akka или Erlang. Мне удобнее мыслить в терминах интерфейсов и классов, и там нет никаких сообщений (по крайней мере first-class), а есть инкапсуляция, наследование и полиморфизм.
В Rust есть инкапсуляция, наследование и полиморфизм, но это не ООП язык.

Ну и что? Самокат – это транспортное средство, но транспортное средство – это не обязательно самокат.

стараться не прибегать к мутабельности, и смысл ФП — разные вещи. ФП — это скорее отсутствие состояния, а вовсе не иммутабельность

Какая-то каша. Сначала вы про чистые функции говорите, теперь вот почему-то уже это отсутствие состояния. Вообще иммутабельность, отсутствие состояния и чистые функции – это вовсе не взаимоисключающие понятия. Скорее наоборот, это тесно связанные вещи, и если используешь что-то одно, то, скорее всего, ты автоматически получаешь другое. Если ты используешь только иммутабельность, то у тебя 99% кода будет чистым. И если ты пишешь только чистые функции, то у тебя, почти всё будет иммутабельное.

И в том же Хаскеле кстати вполне себе есть наследование, полиморфизм и инкапсуляция

Откуда в Хаскелле наследование? Тайпклассы – это не наследование. Это реализация интерфейса, что совсем не то же самое. Полиморфизм там есть, но другой. В ООП это подтиповой полиморфизм, а там параметрический.

Чистая архитектура. Часть II — Парадигмы программирования

Смысл ООП совершенно не в инкапсуляции и наследования, а в обмене сообщениями между обьектами.

Это неправильное определение ООП. ООП — это как раз инкапсуляция, наследование и полиморфизм.
Смысл ФП вовсе даже не в иммутабельности, а в чистых функциях без побочных эффектов. Мутабельность внутри них вполне себе имеет место быть.

Знаем, на Хаскелле писали. Но в Хаскелле действительно все переменные неизменяемые, так что Дядя Боб всё верно написал. И когда пишешь на Хаскелле, то пытаешься всеми силами не прибегать к мутабельности, т.к. такие действия приходится в монады заворачивать, что резко усложняет код.

API, ради которых наконец-то стоит обновиться с Java 8. Часть 3

В каком из бенчмарков? В первом вызывается new ArrayList<>(sourceList), и он и так выделяет массив точной длины. Во втором размер неизвестен в общем случае – фильтр может быть любым.

API, ради которых наконец-то стоит обновиться с Java 8. Часть 3

Не в суперклассе Object, а в утилитном классе Objects, который в отдельном пакете java.util находится.

API, ради которых наконец-то стоит обновиться с Java 8. Часть 3

Какой кошмар. Статью можно сразу удалять из-за такого позора.
PS. Графики рисует сторонняя тулза.

Вышла Java 16

Забавный факт: с 2017 года вышло столько же версий Java, сколько и до 2017 года.

Вышла Java 16

Анбоксинг в современной Java

Ответ на опрос: использую range(from, to), когда мне нужно использовать i в лямбде внутри тела цикла. В остальных случаях пишу обычный for (int i = ...).

Анбоксинг в современной Java

IntStream.range(0, this.size).map(i -> i * i * i).sum() работает так же быстро, как и простой for

Вышла Java 15

Нет, LTS это 11, 17, 23, 29 и т.д.

Плагинное приложение на Java без боли

Кстати, в Java 15 наконец-то можно будет нормально создавать временные классы и выгружать их с помощью метода Lookup.defineHiddenClass. Долгожданная фича.

Плагинное приложение на Java без боли

ServiceLoader до Java 9 — это совсем не то же самое.
В вашей ссылке нет ничего про запрет использования префикса I.

Как вы можете сделать Java лучше

Ключи -Xmodule и -Xpatch, видимо, были в ранних версиях Java 9, но потом поменялись на --patch-module. Правильные строки запуска такие:

javac --patch-module java.base=src -d out/java.base src/java/util/*.java

java --patch-module java.base=out/java.base <main class>

Java-дайджест за 29 мая

Как можно было не написать про запуск сайта inside.java?

Java-дайджест за 13 мая

По-любому не попадёт. Я даже не уверен, попадёт ли она туда с preview.

Java-дайджест за 13 мая

Пока паттерн-матчинг с оператором switch не работает. В этом релизе будут добавлены только sealed-классы. Паттерн-матчинг появится в будущих релизах.

Java-дайджест за 13 мая

А ещё стало известно, что Sealed Classes & Interfaces попадут в JDK 15 (почти наверняка). Я считаю, что эта новость тоже достойна дайджеста.

Java-дайджест за 4 мая

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

API, ради которых наконец-то стоит обновиться с Java 8. Часть 2

Есть немалая категория кода, которая ожидает, что из Iterable можно получить сколько угодно итераторов.

Не вижу проблемы. Значит, такому коду не надо передавать Stream и всё.
В любом случае, наследование Stream от Iterable принесёт во много раз больше пользы, чем вреда.
Кстати, если вы почитаете javadoc к Iterable, то увидите, что там нигде не написано, что iterator() можно вызывать сколько угодно раз. Так что те, кто завязался на то, что обойти Iterable можно много раз – сами себе злобные Буратины.

Информация

В рейтинге
173-й
Откуда
Новосибирск, Новосибирская обл., Россия
Зарегистрирован
Активность