Java - это очень богатый язык программирования, он прошел многолетнюю эволюцию и совершенствование. В процессе своего развития в Java сообществе сложились определенные традиции, стандарты, позволяющие быстро вести разработку, но, как оказалось, часто превращающие дальнейшую поддержку кода в кошмар.
"Мы понимаем свой код, только когда его пишем".
Первоначальное предложение Егора Бугаенко по реформированию Java (отказаться от процедурного мышления и двигаться в сторону большей объектно-ориентированности) столкнулось с огромным сопротивлением и инерцией Java комьюнити. Самым лучшим выходом стало создание языка EO, который призван решить вопрос прозрачности, читабельности, понятности (особенно чужого) кода.
Другими словами, задача стоящая перед языком EO - семантическая: в принципе реорганизовать структуру создания программ из архитектурного подхода в более природное сообщество объектов.
В EO есть только объекты и общение между ними. При этом объекты это теперь больше не тупые хранилища данных. Именно они теперь содержат логику программы, теперь нет нужды создавать слои абстракции для обработки данных, в EO достаточно просто попросить тот или иной объект выполнить, что требуется.
В EO есть только объекты и общение между ними. При этом объекты это теперь больше не тупые хранилища данных. Именно они теперь содержат логику программы, теперь нет нужды создавать слои абстракции для обработки данных, в EO достаточно просто попросить тот или иной объект выполнить, что требуется.
нежелательные компоненты для EO:
- static/class methods or attributes - статические методы;
- classes - классы (остаются только типы и объекты);
- implementation inheritance - наследование интерфейсов;
- mutability - изменяемость объектов после создания;
- NULL - пустые объекты, теперь объекты это не данные;
- global variables/procedures - глобальные переменные и процедуры
- reflection - рефлексия;
- constants - константы;
- type casting - приведение типов;
- scalar types - cкалярный тип данных;
- annotations - аннотации
- unchecked exceptions -непроверяемые исключения;
- operators - операторы;
- flow control statements (
for
,while
,if
, etc)
желательные к включению в язык компоненты:
- static analysis - статистический анализатор;
- continuous integration - непрерывная интеграция;
- build automation - автоматизация сборки;
- aspects (AOP) - аспекты;
- logging - логирование;
- unit testing - unit теcты;
- versioning - контроль версий;
- concurrency - параллелизм;
- object metadata - метаданные объекта;
- persistence - сохранение объектов в базе данных в удобном виде;
- transactions - транзакции;
- licensing - лицензирование;
- artifact repositories - хранилища артефактов;
компоненты под вопросом:
- generics - дженерики;
- garbage collection - сборщик мусора.
Спасибо большое за перевод! Так держать :)
ОтветитьУдалить