惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
Schneier on Security
Cisco Talos Blog
Cisco Talos Blog
T
ThreatConnect
J
Java Code Geeks
博客园 - 司徒正美
A
Arctic Wolf
T
True Tiger Recordings
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
Know Your Adversary
Know Your Adversary
T
Threat Research - Cisco Blogs
V
Vulnerabilities – Threatpost
Recorded Future
Recorded Future
P
Palo Alto Networks Blog
The Hacker News
The Hacker News
The Register - Security
The Register - Security
S
Securelist
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
I
Intezer
P
Privacy & Cybersecurity Law Blog
Scott Helme
Scott Helme
K
Kaspersky official blog
博客园 - 聂微东
Last Week in AI
Last Week in AI
V
V2EX
小众软件
小众软件
F
Fox-IT International blog
Martin Fowler
Martin Fowler
Apple Machine Learning Research
Apple Machine Learning Research
T
Tenable Blog
F
Future of Privacy Forum
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
阮一峰的网络日志
阮一峰的网络日志
GbyAI
GbyAI
T
Threatpost
I
InfoQ
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
Tor Project blog
G
GRAHAM CLULEY
D
DataBreaches.Net

DEV Community

India’s Laws Were Not Built for AI — And Courts Are Filling the Gap skill-insp: A Skill That Scores Other Skills Messaging in the Age of AI Building Strong Python Basics – Loops, Functions and Logic How to Choose the Right Tech Stack for Your Project I built a free multi-tab JSON editor — here's what I learned HTTP Headers Every Developer Should Know (2026) Building Cross-Platform Digital Products: Challenges and Best Practices Data Privacy in the Age of AI: How Product Teams Can Build Trust with Users What Would WordPress Look Like If It Were Designed Today? Why Backup Success Does Not Mean Database Recoverability Local AI Office Assistant That Never Sends Your Documents to the Cloud Building TaskForge: Translating Enterprise Chaos into an Open-Source Scheduler Tesla P40 in a Homelab: 24GB of Inference on a Budget Llama 4: Meta's Latest — Scout, Maverick, and the MoE Revolution George Hotz called AI code 'slop.' He's half right. Como Construir um Fluxo de Trabalho Baseado em Engenharia de Prompt e Automação We Audited Our Agent Tool-Call Traces. Half Our Eval Data Was Garbage. The Hidden Cost of Downtime: How SRE Error Budgets Protect National Economic Infrastructure Getting started with openHUMANS can be an exciting venture for developers looking to create innovative applications in the realm of human-ce Stack Overflow: A Powerful Community for Developers and Learners From Language Models to Humanoid Minds ✨ Road to Senior #2: How Computers Think in Numbers Why LLM debugging fails on fragmented repository context How to Deploy a LangGraph Agent on AWS Bedrock AgentCore An outreach kit for solo founders whose drafts can't hallucinate Open Satchel is live Amy Kwalwasser and the Growing Importance of Quantum Risk Modeling I Built ShellReq - A Native API Client for VS Code & Terminal If Microsoft and Uber can't afford AI coding, what chance do the rest of us have? MADCAP: Building a Multi-Agent Debate CLI That Argues With Itself So You Don't Have To Why most AI fails at IDOR (and how AMAS fixes it with causal reasoning) How to Audit a Laravel Codebase You've Inherited LangGraph 워크플로우 템플릿 (v34) BugBench: a developer origin story and practical guide for VS Code / Kiro users A solution to messy token systems for Next.js A NestJS reference app that proves the nest-native stack under realistic backend pressure Observability for AI Systems: Monitoring Drift, Hallucinations, and Reliability in Production I Thought “Data Analyst” Was the Whole Game… Then I Entered the Data Avengers Office 👀 Create and configure network security groups How to analyze the cost of Kafka? How I Shipped 2,500+ Commits With AI Agents Using a 12-Phase Workflow [Boost] We built MDCMS, a Markdown-first CMS for teams using AI agents Zero Heap Allocations at 1.18 GB/s: Deep Dive into ForgeZero 4.0.x The Minimum Viable Test Suite for Working with Agents Why Perplexity Started Citing My Blog: 5 Changes That Actually Worked Sync Supabase via OAuth: No Connection String Needed I asked three AI models the same API question. Only one had it right. Implementing Saga Pattern With Lambda Durable Function Why does AI forget what you said (and how to fix it) I built a daily Wordle-style game for AI tools - Here's how Mapping Polish company structures: querying KRS direct via API Built tmpdrop — a tiny self-hosted ephemeral file drop Running Local LLM - 0$ Personal Agentic AI Assistant - Part 3 LLD Object-Oriented Design: Interfaces & Abstract Classes (Designing Contracts) The Smaller Ship: Vitalik, the Ethereum Foundation's Restructuring, and What It Leaves for Investors Looking for 4 people to build something weird with me Building a Local-Only RAG System with Ollama and TypeScript The False Positive Tax: a 1:1 TP:FP analysis of eslint-plugin-security What's new in Data Preprocessor 1.5.x — R codegen, Robust Scaler, and a deadlock post-mortem How I self-hosted my Flask app on an old laptop for almost free I built a free DSA interview prep site because I was tired of the existing options I built an AI agent that migrates Next.js Pages Router to App Router Prisma Query Logging and PostgreSQL: Where the ORM Ends and the Database Begins Prisma query logging y PostgreSQL: dónde termina el ORM y empieza la base From Browser to Server : The Journey of an HTTP Request (Demystifying the Web’s Infrastructure) Santa Augmentcode Intent Ep.6 I Benchmarked 17 ESLint Security Plugins. Only One Found Every Vulnerability. How to Build a High-Performance Image Optimization Pipeline in 5 Minutes 50 Linux Commands Every DevOps Engineer Must Know Less Toil, More Flow - Automating the Path from Request to Implementation The Code Review Checklist I Actually Use How I run a small blog on Astro 5 + Content Collections Git: Best Practices for Professionals How IBM Bob Became My Everyday Coding Companion Solana Passkey Wallet: Replacing Seed Phrases with SIMD-0075 I built a small browser puzzle game about arrows I wrapped Claude Code in a zsh function. Here's every decision I almost got wrong. Mobile Game Optimization: A Unity Developer's Checklist Git: Best Practices for Beginners Three days I lost chasing a ghost that was already dead on disk Why Too Many Parts Hurt ClickHouse Performance Guardrails for Agent Output: Pluggable Validation Before and After LLM Calls Gemma Forge: Local AI Without the Setup Wall From Half‑dead Prototype to Local‑Only AI Medical Assistant: Rewiring MedClinic with GitHub Copilot Runninig a forkbomb in Jenkins What’s Actually Happening When You Use Git Preventing Recursive Tool Loops in LangChain Agents Building a Rock-Paper-Scissors CLI with TypeScript — Union Types, Conditionals, and Jest Your AI Coding Agent Wastes 80% of Its Context. Fixed That with Graph Theory. Why Flutter Has Become the Go-To Framework for Fintech App Development We built a scripting language just for AI agents. Here's why. Stop building AI inboxes. Build decision layers instead. Meme Monday Why I Built @editora/ui-react? Are AI tools the next level of abstraction in software development? Identity on Solana: Your Wallet Is Your Account One API Call Changed Everything The Internet Career Nobody Talks About Enough: What Is DevRel?
Clprolf Minimalist
Charles Koff · 2026-05-26 · via DEV Community

Introduction

Clprolf Minimalist is a simplified version of the Clprolf language.

Its goal is to make certain object-oriented programming best practices explicit, without introducing heavy architecture or a steep learning curve.

Clprolf Minimalist is based on one simple idea:

A class must clearly express its main role.

The language therefore helps to:

  • separate business logic from technical code,
  • limit architectural drift,
  • make inheritance more coherent,
  • improve system readability.

Clprolf Minimalist remains fully object-oriented and close to Java.


I) The Two Fundamental Principles

Clprolf Minimalist is based on two central principles.


1. A class is either business-oriented or technical

Each class belongs to one of the following two worlds:

Business / domain world

The class represents a business or conceptual responsibility.

Examples:

  • order management,
  • business logic,
  • simulation,
  • functional orchestration.

These classes are declared with:

agent

Enter fullscreen mode Exit fullscreen mode


Technical world

The class performs technical work:

  • database access,
  • networking,
  • files,
  • rendering,
  • infrastructure.

These classes are declared with:

worker

Enter fullscreen mode Exit fullscreen mode


2. Inheritance must preserve the domain

A class should inherit only from a class belonging to the same conceptual domain.

Otherwise:

composition should be used.

This principle prevents incoherent hierarchies and mixed responsibilities.


II) Class Types

Clprolf Minimalist has only three class types.


II.1) agent

Represents a business or conceptual class.

An agent:

  • contains business logic,
  • orchestrates processes,
  • makes decisions,
  • avoids heavy technical code.

Example:

public agent OrderProcessor {

    private OrderRepository repository;

    public void process(Order order) {
        if(order.total() <= 0) {
            throw Error;
        }
        repository.save(order);
    }
}

Enter fullscreen mode Exit fullscreen mode


II.2) worker

Represents a technical class.

A worker:

  • performs machine tasks,
  • manages infrastructure,
  • contains technical code.

Example:

public worker OrderRepository {

    public void save(Order order) {

        // database access

    }
}

Enter fullscreen mode Exit fullscreen mode


II.3) indef_obj

Object without a defined role.

Used:

  • during prototyping,
  • during refactoring,
  • when the role is not yet clear.

Example:

public indef_obj TemporaryManager {
}

Enter fullscreen mode Exit fullscreen mode

indef_obj enables a flexible approach close to classical OOP.


II.4) Main Domain and Technical Code

Clprolf encourages moving as much technical code as possible from agent classes into worker classes.

However, an agent may still contain a reasonable amount of technical code when it improves the simplicity or readability of the system.

An agent always has a main domain representing its central responsibility.

Secondary responsibilities may exist as long as they remain coherent with this main domain.


II.5) Freedom of Interpretation

The choice between agent and worker is left to the developer.

Some responsibilities may be interpreted differently depending on the chosen architectural vision.

For example, a connection may be represented:

  • as an agent, if it is viewed as a functional abstraction;
  • or as a worker, if it is considered a purely technical mechanism.

If one wishes to clearly separate the functional logic related to the connection from its technical implementation, one may use:

  • an agent to represent the connection,
  • and delegate the technical code to one or more worker classes.

III) Inheritance

Clprolf Minimalist greatly simplifies inheritance.

The nature keyword disappears.
The rule becomes implicit:

a class inherits only from a class belonging to the same domain.


Valid example

public agent Animal {
}

public agent Dog extends Animal {
}

Enter fullscreen mode Exit fullscreen mode


Discouraged example

public worker DatabaseConnection {
}

public agent Dog extends DatabaseConnection {
}

Enter fullscreen mode Exit fullscreen mode

Here, the domains are incompatible.
Composition should be used instead.

Class inheritance forcing remains possible with @Forc_inh above the class.


IV) Flexible Mode

Clprolf Minimalist operates only in:

flexible mode

Enter fullscreen mode Exit fullscreen mode

The developer therefore keeps their freedom:

  • mixing remains possible if necessary,
  • progressive migration is allowed,
  • compatibility with existing code is preserved,
  • but there is always a main domain.

The language mainly acts as:

a structural guide.


V) Interfaces

In Clprolf Minimalist, interfaces are viewed as:

abstract forms of inheritance.

They therefore participate in the structural continuity of the system.

family_interf  = primary interface of a family
trait_interf   = trait, shared capability between families
compat_interf  = unrestricted interface

Enter fullscreen mode Exit fullscreen mode

In Clprolf, interfaces are not viewed as simple technical contracts.

The extends and implements relationships are considered genuine forms of conceptual inheritance, hence the term “family”.


V.1) family_interf

Interface representing an abstract family.

Used for:

  • polymorphism,
  • decoupling,
  • implementation variants.

Family interfaces also possess a target role:

  • agent
  • or worker

Example

public family_interf agent Animal {

    void eat(int quantity);

}

Enter fullscreen mode Exit fullscreen mode

The hierarchy of family_interf interfaces naturally reflects the hierarchy of concrete classes.

public family_interf agent Horse extends Animal {

    void jump(int height);

}

Enter fullscreen mode Exit fullscreen mode

And will naturally lead to:

public agent AnimalImpl implements Animal { (...) }

Enter fullscreen mode Exit fullscreen mode

public agent HorseImpl extends AnimalImpl implements Horse { (...) }

Enter fullscreen mode Exit fullscreen mode


V.2) trait_interf

Interface representing a shared functionality between several family_interf.

Traits use a target role, just like family_interf:

  • agent
  • worker

Business-side example

public trait_interf agent Payable {
    void pay();
}

Enter fullscreen mode Exit fullscreen mode


Technical-side example

public trait_interf worker Persistable {
    void save();
}

Enter fullscreen mode Exit fullscreen mode


V.3) compat_interf

Generic interface without any particular role.

Allows the system to remain flexible.


Example

public compat_interf ExternalApi {
}

Enter fullscreen mode Exit fullscreen mode


V.4) Interface Usage

In Clprolf, family_interf interfaces are the equivalent of pure abstract classes.

They are intended to be implemented by one or more future Clprolf classes.
They therefore possess a target role (agent or worker).

A class may implement only one main family_interf at a time, and the role of the class must match the target role of the interface.

Clprolf therefore uses simple interface implementation, in the same way that Java uses simple class inheritance.

Indeed, a family_interf is always the structural reflection of its implementation.
This notably enables systematic loose coupling.


trait_interf interfaces express a shared functionality between several family_interf interfaces.

A trait_interf therefore represents a transversal trait shared across multiple families.

Normally, a trait_interf may only be inherited by a family_interf interface, and not directly by a class.

However, in Clprolf Minimalist, direct implementation of a trait_interf by a class remains tolerated, although discouraged.

Concrete class
    ↓ implements
family_interf
    ↓ inherits from
trait_interf

Enter fullscreen mode Exit fullscreen mode

Note: a family_interf interface may inherit from multiple family_interf or trait_interf interfaces.

A trait_interf interface may inherit only from other trait_interf interfaces, because a trait remains a trait.

Interface inheritance forcing remains possible with @Forc_int_inh above the interface (or @Forc_inh to force inheritance between different target roles).


VI) General Architecture

Clprolf Minimalist naturally encourages a simple architecture.

agent
    ↓ delegates to
worker

Enter fullscreen mode Exit fullscreen mode

agents contain:

  • business rules,
  • decisions,
  • orchestration.

workers perform:

  • technical work,
  • system access,
  • machine operations.

An agent delegates technical code to one or more worker classes.
It may still execute technical operations itself, but by calling methods from a worker.

The worker is at the service of the agent.


VII) Clprolf Framework

Clprolf may also be used as a framework inside an existing language such as Java.

In that case, the keywords are replaced with annotations.


VII.1) Classes

Agent

@Agent
public class OrderProcessor {
}

Enter fullscreen mode Exit fullscreen mode


Worker

@Worker
public class OrderRepository {
}

Enter fullscreen mode Exit fullscreen mode


Indefinite Object

@Indef_obj
public class TemporaryManager {
}

Enter fullscreen mode Exit fullscreen mode


VII.2) Family Interfaces

Family interfaces use two annotations:

  • a role annotation,
  • plus @Family_interf.

Business-side example

@Agent
@Family_interf
public interface PaymentService {
}

Enter fullscreen mode Exit fullscreen mode


Technical-side example

@Worker
@Family_interf
public interface DatabaseStorage {
}

Enter fullscreen mode Exit fullscreen mode


VII.3) Trait Interfaces

Trait interfaces use:

@Trait_interf

Enter fullscreen mode Exit fullscreen mode

with a target role.


Business example

@Agent
@Trait_interf
public interface Payable {
}

Enter fullscreen mode Exit fullscreen mode


Technical example

@Worker
@Trait_interf
public interface Persistable {
}

Enter fullscreen mode Exit fullscreen mode


VII.4) Free Compatibility

@Compat_interf
public interface ExternalApi {
}

Enter fullscreen mode Exit fullscreen mode


VIII) What Has Been Removed

In order to drastically reduce complexity:

  • model
  • information
  • abstraction
  • simu_real_obj
  • comp_as_worker
  • renaming worker_agent to worker
  • renaming version_inh to family_interf
  • renaming capacity_inh to trait_interf
  • nature
  • contracts
  • underst
  • with_compat
  • genders
  • synonyms
  • interface advices replaced with a target role
  • advanced concurrency/parallelism mechanisms

have been removed from the minimalist version.


IX) Goal of the Language

Clprolf Minimalist does not aim to replace classical OOP.

It aims to make certain important distinctions explicit:

  • business vs technical,
  • coherent inheritance vs composition,
  • the primary responsibility of a class.

X) Summary

Clprolf Minimalist adds very few concepts.


Classes

agent
worker
indef_obj

Enter fullscreen mode Exit fullscreen mode


Interfaces

family_interf
trait_interf
compat_interf

Enter fullscreen mode Exit fullscreen mode


Two Fundamental Rules

1. Separate business and technical concerns.
2. Inherit only within the same domain.

Enter fullscreen mode Exit fullscreen mode