[Из песочницы] Создаем свой язык на Groovy
Основная проблема императивных языков программирования — их низкая приближенность к естественным языкам. ООП эту проблему частями решил, упорядочив данные и логику по классам объектов, но все равно это выглядит сложно для понимания. Основная проблема здесь в том, что императивные языки не приспособлены для работы с иерархиями объектов и вложенными вызовами методов. Например, у меня есть иерархия классов работы с заказами на продукты для клиентов:// Клиент class Customer { int inn String name String address String phone }
// Клиенты class Customers { Customer findByInn (inn) void add (Customer customer) }
// Продукт class Product { String article String name double price }
// Продукты class Products { Product findByArticle (article) void add (Product product) }
// Заказ class Order { int num Customer customer List details = []
OrderDetail findByPos (pos) void add (OrderDetail detail) }
// Товар заказа class OrderDetail { int pos Product product def count = 1 def getSum () { count * product.price } }
// Заказы class Orders { Order findByNum (num) void add (Order order) } Сама бизнес логика описания работы будет выглядеть вот так: Читать дальше →