# object oriented

Published articles for object oriented.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Object-Oriented Programming in Python vs Java

DevFeed: [Object-Oriented Programming in Python vs Java](<https://devfeed.tech/articles/object-oriented-programming-in-python-vs-java-110727.md>)

Original publisher: [Read original article](<https://realpython.com/oop-in-python-vs-java/>)

Author: Jon Fincher

Published: 2026-10-31T14:00:00Z

Content type: comparison

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Java](<https://devfeed.tech/topics/java.md>), [Python](<https://devfeed.tech/topics/python.md>), [class](<https://devfeed.tech/topics/class.md>), [object](<https://devfeed.tech/topics/object.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [subclass](<https://devfeed.tech/topics/subclass.md>), [constructor](<https://devfeed.tech/topics/constructor.md>)

Tags: [access-control](<https://devfeed.tech/tags/access-control.md>), [car](<https://devfeed.tech/tags/car.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [color](<https://devfeed.tech/tags/color.md>), [compare](<https://devfeed.tech/tags/compare.md>), [comparison](<https://devfeed.tech/tags/comparison.md>), [compilation-error](<https://devfeed.tech/tags/compilation-error.md>), [complete](<https://devfeed.tech/tags/complete.md>), [composition](<https://devfeed.tech/tags/composition.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [java](<https://devfeed.tech/tags/java.md>), [knowledge](<https://devfeed.tech/tags/knowledge.md>), [learn](<https://devfeed.tech/tags/learn.md>), [object](<https://devfeed.tech/tags/object.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [object-oriented-programming](<https://devfeed.tech/tags/object-oriented-programming.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [vs](<https://devfeed.tech/tags/vs.md>)

### AI overview

The article shows how Java OOP concepts translate into Python and where the languages differ. Java declares typed attributes in class bodies, commonly keeps them private behind getters and setters, and restricts classes to single inheritance while allowing shared behavior through interfaces. Python creates instance attributes with `self` in `__init__`, exposes them by default, and offers properties for controlled access; underscore naming conventions signal non-public attributes but do not provide Java-style access control. Python also supports multiple inheritance and duck typing, while Java uses interface types for polymorphic interchangeability. Both languages provide reflection and type checks, though the article describes Python's `dir()`, `getattr()`, and `callable()` workflow as simpler than Java's reflection APIs. Python dunder methods can customize representations and overload operators; the article notes Java has no comparable operator overloading. Examples use a `Car` class to illustrate these mechanisms and practical pitfalls, including class versus instance attributes.

### Source excerpt

Compare Python vs Java for object-oriented programming and learn how to apply your Java knowledge of classes and objects to Python in a Pythonic way.

## A Modern Smalltalk

DevFeed: [A Modern Smalltalk](<https://devfeed.tech/articles/a-modern-smalltalk-109142.md>)

Original publisher: [Read original article](<https://hackaday.com/2026/10/30/a-modern-smalltalk/>)

Author: Al Williams

Published: 2026-10-30T18:30:54Z

Content type: article

Language: en

Sources: [Hackaday](<https://devfeed.tech/sources/hackaday.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Squeak/Smalltalk](<https://devfeed.tech/topics/squeak.md>), [object](<https://devfeed.tech/topics/object.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>)

Tags: [architecture](<https://devfeed.tech/tags/architecture.md>), [arduino](<https://devfeed.tech/tags/arduino.md>), [browser](<https://devfeed.tech/tags/browser.md>), [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [clone](<https://devfeed.tech/tags/clone.md>), [desktop](<https://devfeed.tech/tags/desktop.md>), [free](<https://devfeed.tech/tags/free.md>), [git](<https://devfeed.tech/tags/git.md>), [gnu](<https://devfeed.tech/tags/gnu.md>), [help](<https://devfeed.tech/tags/help.md>), [install](<https://devfeed.tech/tags/install.md>), [introduced](<https://devfeed.tech/tags/introduced.md>), [mvc](<https://devfeed.tech/tags/mvc.md>), [nice](<https://devfeed.tech/tags/nice.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [open](<https://devfeed.tech/tags/open.md>), [operator](<https://devfeed.tech/tags/operator.md>), [packages](<https://devfeed.tech/tags/packages.md>), [raspberry](<https://devfeed.tech/tags/raspberry.md>), [smalltalk](<https://devfeed.tech/tags/smalltalk.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

Cuis Smalltalk is a free, portable Smalltalk-80 environment that keeps a simple core and adds complexity through packages. It replaces the traditional MVC framework with Morphic while retaining a style familiar to users of 1990s Smalltalk. The desktop includes workspaces, help documents, and a transcript, and a class browser helps explore classes and their messages. The language treats operations such as addition as messages sent between objects, which can respond differently to the same message. Cuis uses rolling releases, though a stable release may suit application deployment. Packages for Arduino communication over a serial port exist, but they have not been updated lately and may need work.

### Source excerpt

In the history of object-oriented (OO) computer languages, Smalltalk has a special place. It wasn't the first OO language, and it hasn't spread as well as some others. But it ...read more

## Inheritance and Composition: A Python OOP Guide

DevFeed: [Inheritance and Composition: A Python OOP Guide](<https://devfeed.tech/articles/inheritance-and-composition-a-python-oop-guide-109902.md>)

Original publisher: [Read original article](<https://realpython.com/inheritance-composition-python/>)

Author: Isaac Rodriguez

Published: 2026-10-30T14:00:00Z

Content type: article

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Python](<https://devfeed.tech/topics/python.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [class](<https://devfeed.tech/topics/class.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>)

Tags: [abstract-class](<https://devfeed.tech/tags/abstract-class.md>), [cardinality](<https://devfeed.tech/tags/cardinality.md>), [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code-duplication](<https://devfeed.tech/tags/code-duplication.md>), [component](<https://devfeed.tech/tags/component.md>), [components](<https://devfeed.tech/tags/components.md>), [composition](<https://devfeed.tech/tags/composition.md>), [design](<https://devfeed.tech/tags/design.md>), [guide](<https://devfeed.tech/tags/guide.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [object](<https://devfeed.tech/tags/object.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [python](<https://devfeed.tech/tags/python.md>), [relationships](<https://devfeed.tech/tags/relationships.md>)

### AI overview

Inheritance models an "is a" relationship and reuses a base class's interface and implementation; composition models a "has a" relationship, combining objects while keeping their classes more loosely coupled. The excerpt illustrates inheritance with employee types sharing payroll behavior, and shows how expanding roles and pay policies can create large hierarchies. Multiple inheritance can introduce method resolution order and diamond problems that require explicit handling. The composition design instead gives employees separate role and payroll policy objects, so behaviors can be combined or changed without multiplying employee subclasses. The excerpt also covers Python's implicit inheritance from `object`, abstract base classes, and duck typing: a payroll system can accept any object providing the attributes and method it uses. The supplied text ends during the composition example, so its later implementation and conclusions are not available.

### Source excerpt

Learn how inheritance and composition in Python model is-a and has-a relationships, and when to use each to design flexible object-oriented code.

## Your Wish Is My Commit: Over-Compliant Refactoring in AI Coding Agents

DevFeed: [Your Wish Is My Commit: Over-Compliant Refactoring in AI Coding Agents](<https://devfeed.tech/articles/your-wish-is-my-commit-over-compliant-refactoring-in-ai-coding-agents-103639.md>)

Original publisher: [Read original article](<https://arxiv.org/abs/2610.36346>)

Author: Haocong Jiang, Sadra Sabouri, Sepand Haghighi, Souti Chattopadhyay

Published: 2026-10-28T04:00:00Z

Content type: article

Language: en

Sources: [arXiv: Software Engineering](<https://devfeed.tech/sources/arxiv-software-engineering.md>)

Topics: [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [agentic-coding](<https://devfeed.tech/topics/agentic-coding.md>), [Tech Debt](<https://devfeed.tech/topics/tech-debt.md>), [codex](<https://devfeed.tech/topics/codex.md>), [Claude Code](<https://devfeed.tech/topics/claude-code.md>)

Tags: [agents](<https://devfeed.tech/tags/agents.md>), [ai](<https://devfeed.tech/tags/ai.md>), [ai-coding-agents](<https://devfeed.tech/tags/ai-coding-agents.md>), [churn](<https://devfeed.tech/tags/churn.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [code](<https://devfeed.tech/tags/code.md>), [codex](<https://devfeed.tech/tags/codex.md>), [coding](<https://devfeed.tech/tags/coding.md>), [coding-agents](<https://devfeed.tech/tags/coding-agents.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [cs-hc](<https://devfeed.tech/tags/cs-hc.md>), [cs-se](<https://devfeed.tech/tags/cs-se.md>), [developers](<https://devfeed.tech/tags/developers.md>), [language-models](<https://devfeed.tech/tags/language-models.md>), [large-language-models](<https://devfeed.tech/tags/large-language-models.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [refactor](<https://devfeed.tech/tags/refactor.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [review](<https://devfeed.tech/tags/review.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [technical-debt](<https://devfeed.tech/tags/technical-debt.md>)

### AI overview

A controlled study found that Codex and Claude Code models kept refactoring after the code was already clean, even resuming edits after saying they were done. Across algorithmic (50) and object-oriented (10) suites, five models and more than 3,000 turns, every model continued editing; in some cases, the codebase was rewritten up to 31 times its original size before the first stop. The authors frame this as costly over-compliance that can add churn, technical debt and review burden. They define six behavioral signals intended to help developers and tool builders detect and curb it. The supplied text is an abstract, so it does not detail the signals or compare individual agents or models.

### Source excerpt

arXiv:2610.36346v1 Announce Type: new Abstract: Large language models are known to be sycophantic, over-complying with users even when doing so is unproductive. When these models act as coding agents, this can be costly: an agent that keeps editing after no edit improves the code writes churn, technical debt, and review burden into the codebase. Yet the consequences of sycophancy in software engineering remain largely understudied. To understand them, we run a controlled study of iterative refactoring, an open-ended task with no stopping criterion, where any edit an agent makes once the code is already clean reflects compliance rather than improvement. Across algorithmic (n=50) and object-oriented (n=10) suites, we repeatedly ask two widely used agents, Codex and Claude Code, to refactor further across five models. Over 3,000 turns, we define six behavioral signals of over-compliance. We hypothesized that a capable agent would stop once it recognized an optimized codebase; none did. Every model kept editing, rewriting up to 31x the original codebase before first stopping and resuming edits even after declaring the task complete. Over-compliance is a costly, multi-turn behavior that compounds with every turn, and our six signals give developers and tool builders a way to detect and curb it.

## Object-Oriented Harness: Evolving Agent Harnesses through Object-Oriented Design

DevFeed: [Object-Oriented Harness: Evolving Agent Harnesses through Object-Oriented Design](<https://devfeed.tech/articles/object-oriented-harness-evolving-agent-harnesses-through-object-oriented-design-93724.md>)

Original publisher: [Read original article](<https://arxiv.org/abs/2610.28380>)

Author: Gaotang Li, Bhavana Dalvi Mishra, Yifei Ming, Yanfei Chen, Zhongying CuiZhu, Lesly Miculicich, Long T. Le, Rui Meng, Chun-Liang Li, Hanghang Tong, Chen-Yu Lee, Tomas Pfister

Published: 2026-10-21T04:00:00Z

Content type: article

Language: en

Sources: [arXiv: Software Engineering](<https://devfeed.tech/sources/arxiv-software-engineering.md>)

Topics: [Agent Harness](<https://devfeed.tech/topics/agent-harness.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [subclass](<https://devfeed.tech/topics/subclass.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [class](<https://devfeed.tech/topics/class.md>)

Tags: [agent-harnesses](<https://devfeed.tech/tags/agent-harnesses.md>), [benchmarks](<https://devfeed.tech/tags/benchmarks.md>), [cs-cl](<https://devfeed.tech/tags/cs-cl.md>), [cs-se](<https://devfeed.tech/tags/cs-se.md>), [design](<https://devfeed.tech/tags/design.md>), [hierarchy](<https://devfeed.tech/tags/hierarchy.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [performance](<https://devfeed.tech/tags/performance.md>), [router](<https://devfeed.tech/tags/router.md>), [routing](<https://devfeed.tech/tags/routing.md>)

### AI overview

OO-Harness addresses varied task needs by evolving a hierarchy of specialized executable harnesses. During training, an evolution agent uses execution records to create harness subclasses that inherit from a base or existing specialized harness. At test time, a router applies lessons learned during training to select a harness for each task. On three long-horizon benchmarks covering business workflows, workspace tasks, and tool use, it achieved the best performance among the compared methods, with an absolute improvement of up to 15% over the base. The supplied abstract does not specify benchmark details or the ablation findings.

### Source excerpt

arXiv:2610.28380v1 Announce Type: cross Abstract: Agent harnesses are executable code that specifies the prompts, tools, and control flow around a language model. A single global harness can struggle with heterogeneous tasks that require different execution strategies. In this work, we introduce Object-Oriented Harness (OO-Harness), a harness optimization framework that evolves a hierarchy of executable harness classes using object-oriented design. During training, an evolution agent uses execution records to create a family of specialized harnesses, each implemented as a subclass of the base or an existing specialized harness via inheritance. At test time, a harness router uses routing lessons accumulated during training to select a specific harness for each task. Across three long-horizon benchmarks spanning business workflows, workspace tasks, and tool use, OO-Harness achieves the best performance among the compared methods, with an absolute improvement of up to 15% over the base. Extensive ablation studies examine the contributions of its core components.

## The Art of Object-Oriented Programming

DevFeed: [The Art of Object-Oriented Programming](<https://devfeed.tech/articles/the-art-of-object-oriented-programming-64579.md>)

Original publisher: [Read original article](<https://hackernoon.com/the-art-of-object-oriented-programming?source=rss>)

Author: Syed Ahmer Shah

Published: 2026-10-04T11:53:47Z

Content type: tutorial

Language: en

Sources: [HackerNoon](<https://devfeed.tech/sources/hackernoon.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [solid principles](<https://devfeed.tech/topics/solid-principles.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [class](<https://devfeed.tech/topics/class.md>), [object](<https://devfeed.tech/topics/object.md>), [Dependency injection](<https://devfeed.tech/topics/dependency-injection.md>)

Tags: [common-oop-design-mistakes](<https://devfeed.tech/tags/common-oop-design-mistakes.md>), [composition](<https://devfeed.tech/tags/composition.md>), [composition-over-inheritance](<https://devfeed.tech/tags/composition-over-inheritance.md>), [coupling](<https://devfeed.tech/tags/coupling.md>), [coupling-and-cohesion-in-oop](<https://devfeed.tech/tags/coupling-and-cohesion-in-oop.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [four-pillars-of-oop](<https://devfeed.tech/tags/four-pillars-of-oop.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [object-oriented-programming](<https://devfeed.tech/tags/object-oriented-programming.md>), [oop-design-principles](<https://devfeed.tech/tags/oop-design-principles.md>), [oop-principles](<https://devfeed.tech/tags/oop-principles.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

A practical tutorial explains object-oriented programming through classes, objects, state, behavior, encapsulation, abstraction, inheritance, and polymorphism. It compares composition with inheritance and discusses association, aggregation, coupling, cohesion, and common design mistakes, using code examples to show how responsibilities can be separated in a software system.

### Source excerpt

Understand OOP from classes and objects to composition, inheritance, polymorphism, coupling, and cohesion with practical examples.

## Object-Oriented Programming (OOP) in Python

DevFeed: [Object-Oriented Programming (OOP) in Python](<https://devfeed.tech/articles/object-oriented-programming-oop-in-python-60468.md>)

Original publisher: [Read original article](<https://realpython.com/python3-object-oriented-programming/>)

Author: David Amos

Published: 2026-09-26T14:00:00Z

Content type: tutorial

Language: en

Sources: [Real Python](<https://devfeed.tech/sources/real-python.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Python](<https://devfeed.tech/topics/python.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [object](<https://devfeed.tech/topics/object.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial introduces object-oriented programming in Python, explaining how classes define objects and how objects group data with methods. It covers inheritance, encapsulation, abstraction, polymorphism, and creating instances from classes.

### Source excerpt

Learn object-oriented programming in Python: the OOP paradigm, classes and inheritance, and how to instantiate objects from a class.

## Support Local Variables

DevFeed: [Support Local Variables](<https://devfeed.tech/articles/support-local-variables-45152.md>)

Original publisher: [Read original article](<https://bernsteinbear.com/blog/support-local-variables/>)

Author: Max Bernstein

Published: 2026-09-04T00:00:00Z

Content type: article

Language: en

Sources: [Max Bernstein's Blog](<https://devfeed.tech/sources/max-bernstein-s-blog.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [jit](<https://devfeed.tech/tags/jit.md>), [language](<https://devfeed.tech/tags/language.md>), [machine](<https://devfeed.tech/tags/machine.md>), [memory](<https://devfeed.tech/tags/memory.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [ssa](<https://devfeed.tech/tags/ssa.md>), [variables](<https://devfeed.tech/tags/variables.md>), [virtual-machine](<https://devfeed.tech/tags/virtual-machine.md>)

### AI overview

The article introduces ZJIT, a method-based just-in-time compiler for Ruby. It explains how ZJIT uses global and local optimization passes and represents local variables as static single-assignment values to compile Ruby semantics correctly and efficiently.

### Source excerpt

Discovering and supporting all of the wild semantics for local variables in Ruby was so interesting that the ZJIT team decided to write a paper about it: Support Local Variables (PDF). It's also the first bit of academic literature that documents and explains ZJIT. It's published at VMIL 2026, where someone on our team will be presenting it. Abstract Ruby is a dynamically typed and object-oriented programming language. Its primary implementation, CRuby, contains a bytecode virtual machine and a mature lazy basic block versioning (LBBV) just-in-time (JIT) compiler called YJIT. In order to both implement more advanced optimizations than YJIT supports and also encourage more outside contributions, we present a new method-based JIT called ZJIT. Like YJIT, ZJIT compiles from bytecode to machine code. Unlike YJIT, ZJIT has multiple global and local optimization passes. ZJIT's high-level intermediate representation is in static single assignment (SSA) form. In order to optimize Ruby's local variables, ZJIT lifts local variables into SSA values. This is a departure from how other Ruby compilers handle locals: other JIT compilers either leave local variables as memory loads and stores or do advanced partial evaluation to recover SSA values from memory. While implementing locals, we (re-)discovered what features make local variables in Ruby especially challenging to compile correctly and efficiently. We demonstrate these features and illustrate how we solved these problems in ZJIT.

## The primitive paradox: Reclaiming software discipline in an agentic world

DevFeed: [The primitive paradox: Reclaiming software discipline in an agentic world](<https://devfeed.tech/articles/the-primitive-paradox-reclaiming-software-discipline-in-an-agentic-world-57269.md>)

Original publisher: [Read original article](<https://www.thoughtworks.com/insights/blog/generative-ai/primitive-paradox-reclaiming-software-discipline-agentic-world>)

Author: Richard Gall

Published: 2026-07-14T00:00:00Z

Content type: article

Language: en

Sources: [Thoughtworks Insights](<https://devfeed.tech/sources/thoughtworks-insights.md>)

Topics: [Agentic AI](<https://devfeed.tech/topics/what-is-agentic-ai.md>), [software-architecture](<https://devfeed.tech/topics/software-architecture.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [API](<https://devfeed.tech/topics/api.md>), [function](<https://devfeed.tech/topics/function.md>), [Scalability](<https://devfeed.tech/topics/scalability.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>)

Tags: [agentic](<https://devfeed.tech/tags/agentic.md>), [agentic-ai](<https://devfeed.tech/tags/agentic-ai.md>), [api](<https://devfeed.tech/tags/api.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [platforms](<https://devfeed.tech/tags/platforms.md>), [re](<https://devfeed.tech/tags/re.md>)

### AI overview

This article argues that agentic AI systems need a disciplined architectural language built from explicit, composable primitives. It contrasts these primitives with higher-level patterns and discusses capability APIs, atomic tool design, autonomous units of work, and the risks of unreliable composition.

### Source excerpt

The primitive paradox: Reclaiming software discipline in an agentic world

## Object Oriented Programming - The Key Terms

DevFeed: [Object Oriented Programming - The Key Terms](<https://devfeed.tech/articles/object-oriented-programming-the-key-terms-34688.md>)

Original publisher: [Read original article](<https://newsletter.systemdesigncodex.com/p/object-oriented-programming-the-key>)

Author: Saurabh Dashora

Published: 2026-03-24T08:38:43Z

Content type: article

Language: en

Sources: [System Design Codex](<https://devfeed.tech/sources/system-design-codex.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [interface](<https://devfeed.tech/topics/interface.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [maintainability](<https://devfeed.tech/tags/maintainability.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>), [programming](<https://devfeed.tech/tags/programming.md>), [security](<https://devfeed.tech/tags/security.md>)

### AI overview

This tutorial introduces object-oriented programming through four principles: abstraction, encapsulation, inheritance, and polymorphism. It explains how abstraction hides implementation details, encapsulation controls access to data and methods, and inheritance supports reuse and hierarchical relationships. The supplied text begins its discussion of polymorphism but is truncated.

### Source excerpt

The essential concepts

## 12 OOP Concepts EVERY Developer Should Know

DevFeed: [12 OOP Concepts EVERY Developer Should Know](<https://devfeed.tech/articles/12-oop-concepts-every-developer-should-know-33559.md>)

Original publisher: [Read original article](<https://blog.algomaster.io/p/12-oop-concepts-every-developer-should-know>)

Author: Ashish Pratap Singh

Published: 2026-02-12T04:27:26Z

Content type: tutorial

Language: en

Sources: [AlgoMaster Newsletter](<https://devfeed.tech/sources/algomaster-newsletter.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [classes](<https://devfeed.tech/tags/classes.md>), [code](<https://devfeed.tech/tags/code.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [developer](<https://devfeed.tech/tags/developer.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [practical](<https://devfeed.tech/tags/practical.md>), [programming](<https://devfeed.tech/tags/programming.md>), [real-world](<https://devfeed.tech/tags/real-world.md>)

### AI overview

An introductory tutorial on object-oriented programming explains how classes, objects, and interfaces organize state and behavior. It uses real-world examples such as users, orders, payments, and payment gateways, and notes that these concepts are relevant to low-level design interviews.

### Source excerpt

Key Object-Oriented Programming Concepts

## A critical history of JavaScript's prototype-based design and later TypeScript and ES6 changes

DevFeed: [A critical history of JavaScript's prototype-based design and later TypeScript and ES6 changes](<https://devfeed.tech/articles/the-fall-of-javascript-35600.md>)

Original publisher: [Read original article](<https://www.yegor256.com/2025/12/28/fall-of-javascript.html>)

Author: Yegor Bugayenko (yegor256@gmail.com)

Published: 2025-12-27T21:00:00Z

Content type: opinion

Language: en

Sources: [Yegor Bugayenko](<https://devfeed.tech/sources/yegor-bugayenko.md>)

Topics: [JavaScript](<https://devfeed.tech/topics/javascript.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [ECMAScript](<https://devfeed.tech/topics/ecmascript.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>)

Tags: [es6](<https://devfeed.tech/tags/es6.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [prototype](<https://devfeed.tech/tags/prototype.md>), [prototypes](<https://devfeed.tech/tags/prototypes.md>), [typescript](<https://devfeed.tech/tags/typescript.md>), [typescript-is-clumsy](<https://devfeed.tech/tags/typescript-is-clumsy.md>), [typescript-is-ugly](<https://devfeed.tech/tags/typescript-is-ugly.md>), [typescript-types](<https://devfeed.tech/tags/typescript-types.md>), [typescript-vs-javascript](<https://devfeed.tech/tags/typescript-vs-javascript.md>)

### AI overview

This opinion article recounts JavaScript's origins and argues that its prototype-based, class-free design was later undermined by TypeScript and ES6 classes. It also compares JavaScript's object model with Scheme, Self, C++, and Java.

### Source excerpt

JavaScript was an elegant prototype-based class-free language until TypeScript and ES6 classes ruined it.

## Extend or implement

DevFeed: [Extend or implement](<https://devfeed.tech/articles/extend-or-implement-44123.md>)

Original publisher: [Read original article](<https://stitcher.io/blog/extends-vs-implements>)

Author: Brent

Published: 2024-08-21T00:00:00Z

Content type: opinion

Language: en

Sources: [Stitcher](<https://devfeed.tech/sources/stitcher-io.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [abstract class](<https://devfeed.tech/topics/abstract-class.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [Laravel](<https://devfeed.tech/topics/laravel.md>), [C++](<https://devfeed.tech/topics/c-plus-plus.md>), [Symfony](<https://devfeed.tech/topics/symfony.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [class](<https://devfeed.tech/tags/class.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [interface](<https://devfeed.tech/tags/interface.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [symfony](<https://devfeed.tech/tags/symfony.md>)

### AI overview

A personal essay examines the difference between extending an abstract class and implementing an interface, arguing that inheritance is often used to provide configuration and flexibility in ways that do not fit its intended role in object-oriented programming. It discusses examples from Laravel, Symfony, and C++ and reflects on Alan Kay's critique of how OOP evolved.

### Source excerpt

Read the full post on https://stitcher.io/blog/extends-vs-implements

## Abstraction design: Introduction

DevFeed: [Abstraction design: Introduction](<https://devfeed.tech/articles/abstraction-design-introduction-39268.md>)

Original publisher: [Read original article](<https://kt.academy/article/ek-abstraction>)

Published: 2024-02-05T00:00:00Z

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [abstraction](<https://devfeed.tech/topics/abstraction.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>)

Tags: [abstraction](<https://devfeed.tech/tags/abstraction.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [core](<https://devfeed.tech/tags/core.md>), [function](<https://devfeed.tech/tags/function.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [programming](<https://devfeed.tech/tags/programming.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This introduction explains abstraction as a form of simplification that hides complexity by deciding what to expose and what to conceal. It discusses abstractions in object-oriented and functional programming, including interfaces, classes, functions, and higher-level operations, with examples involving Java and Kotlin.

### Source excerpt

What is abstraction in programming and why is it so important.

## Workflows as Actors: Is it really possible?

DevFeed: [Workflows as Actors: Is it really possible?](<https://devfeed.tech/articles/workflows-as-actors-is-it-really-possible-36118.md>)

Original publisher: [Read original article](<https://temporal.io/blog/workflows-as-actors-is-it-really-possible>)

Author: Fitz

Published: 2023-06-27T22:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Actor](<https://devfeed.tech/topics/actor.md>), [systems](<https://devfeed.tech/topics/systems.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Complex Systems](<https://devfeed.tech/topics/complex-systems.md>)

Tags: [actor](<https://devfeed.tech/tags/actor.md>), [blog-post](<https://devfeed.tech/tags/blog-post.md>), [concurrent](<https://devfeed.tech/tags/concurrent.md>), [design-patterns](<https://devfeed.tech/tags/design-patterns.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [temporal-concepts](<https://devfeed.tech/tags/temporal-concepts.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

This article introduces the Actor Model and compares actors with objects, focusing on message passing, state, actor creation, and encapsulation. It then explains how Temporal Workflows can be built to behave like actors.

### Source excerpt

An overview on how to use Temporal Workflows in the form of an Actor Model

## Four of a Kotlin Kind at I code Java 2022 conference

DevFeed: [Four of a Kotlin Kind at I code Java 2022 conference](<https://devfeed.tech/articles/four-of-a-kotlin-kind-at-i-code-java-2022-conference-32052.md>)

Original publisher: [Read original article](<https://www.maiatoday.net/p/four-of-a-kotlin-kind-at-i-code-java-2022-conference/>)

Published: 2022-10-14T08:30:41Z

Content type: article

Language: en

Sources: [Maiatoday](<https://devfeed.tech/sources/maiatoday.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [conference](<https://devfeed.tech/tags/conference.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [functional](<https://devfeed.tech/tags/functional.md>), [imperative](<https://devfeed.tech/tags/imperative.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [pitfalls](<https://devfeed.tech/tags/pitfalls.md>), [talk](<https://devfeed.tech/tags/talk.md>), [tips](<https://devfeed.tech/tags/tips.md>), [traces](<https://devfeed.tech/tags/traces.md>)

### AI overview

The article introduces a talk about Kotlin's support for imperative, declarative, functional, and object-oriented programming. It highlights tips, guidelines, pitfalls, definitions, software history, and how Kotlin supports these concepts.

### Source excerpt

I shared my talk titled Imperative, Declarative, Object oriented, functional: Four of a Kotlin Kind at the I code Java conference. The abstract: Is Kotlin a functional language? Yes, but... Is it object oriented? Yes, but... Looking at four concepts: imperative, declarative, functional and object oriented How does Kotlin make it easy to use either or all at the same time. This talk contains: Some useful Kotlin tips, some guidelines and pitfalls for the four concepts, traces of definitions and software history. After listening to this talk you will understand what these concepts are, what each is good for and how they are supported by the Kotlin language. You can see the talk here

## Object-oriented or functional? Two ways to see the world

DevFeed: [Object-oriented or functional? Two ways to see the world](<https://devfeed.tech/articles/object-oriented-or-functional-two-ways-to-see-the-world-39357.md>)

Original publisher: [Read original article](<https://kt.academy/article/oop-vs-fp>)

Published: 2022-08-18T00:00:00Z

Content type: opinion

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [fp](<https://devfeed.tech/tags/fp.md>), [functional](<https://devfeed.tech/tags/functional.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>), [recursion](<https://devfeed.tech/tags/recursion.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This opinion article compares object-oriented programming and functional programming as ways of thinking about program design, rather than merely collections of features. It uses different ways of viewing a bedroom--as objects or actions--to illustrate the distinction while acknowledging that modern languages commonly support both styles.

### Source excerpt

The difference between the OOP and FP paradigms is deeply rooted in how we see the world. A few words on the philosophy of both approaches.

## Immutability we can afford

DevFeed: [Immutability we can afford](<https://devfeed.tech/articles/immutability-we-can-afford-26022.md>)

Original publisher: [Read original article](<https://elizarov.medium.com/immutability-we-can-afford-10c0dcb8351d?source=rss-4762e889f8fc------2>)

Author: Roman Elizarov

Published: 2020-07-22T09:18:28Z

Content type: article

Language: en

Sources: [Roman Elizarov](<https://devfeed.tech/sources/stories-by-roman-elizarov-on-medium.md>)

Topics: [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [User Interfaces](<https://devfeed.tech/topics/user-interfaces.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [class](<https://devfeed.tech/topics/class.md>), [Boilerplate](<https://devfeed.tech/topics/boilerplate.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>)

Tags: [abstractions](<https://devfeed.tech/tags/abstractions.md>), [framework](<https://devfeed.tech/tags/framework.md>), [immutability](<https://devfeed.tech/tags/immutability.md>), [imperative](<https://devfeed.tech/tags/imperative.md>), [languages](<https://devfeed.tech/tags/languages.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [primary](<https://devfeed.tech/tags/primary.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-languages](<https://devfeed.tech/tags/programming-languages.md>), [state](<https://devfeed.tech/tags/state.md>), [ui](<https://devfeed.tech/tags/ui.md>), [variables](<https://devfeed.tech/tags/variables.md>)

### AI overview

The article argues that immutable state is increasingly practical because modern machines can absorb costs that once made it unattractive, while immutability reduces errors caused by unexpected changes to shared state. With mutable repository data passed through asynchronous pipelines, receivers may see later changes, making caching difficult and defensive copying necessary. The article acknowledges that immutable updates can require copying and that immutable data structures may be slower, especially as data grows; it says resource efficiency still matters in constrained systems and at massive scale. It points to modern languages giving immutability greater status and to React, Compose, and SwiftUI using immutable data representations with unidirectional UI flows. The supplied text is an excerpt and does not establish full-document coverage.

### Source excerpt

Photo by Li Yang on Unsplash At the dawn of software engineering computers were programmed directly in machine code, then in assembly, and only later in higher-level languages. Computers are imperative. They operate by executing instructions that mutate their state, stored in registers and memory. Naturally, the same was true about programming languages. In the old world of expensive computers with limited resources, the primary concern was an efficient translation of higher-level abstractions into low-level code. The past glory of mutable state It used to be a normal practice to write software in a way that mimics the actual computer architecture with thousands of global variables that are being mutated by various pieces of the system. It might be shocking for a modern developer to learn that just recently there were cars on the street, designed as late as 2005, that ran what we would call the "Spaghetti" code. The software industry, in general, had firmly moved past the unruly global state before the end of the last century. The rise of the object-oriented programming paradigm had established an orderly approach with the encapsulation of all the mutable state in our software systems inside of objects. It had fueled tremendous growth in the complexity of modern software, layering abstractions above abstractions, while still maintaining a reasonable degree of human's ability to make sense of it. However, any developer who worked on a non-trivial piece of UI using an object-oriented framework, or had programmed in another domain with lots of asynchronously occurring events, can tell you stories of debugging all those cases where mutable state, even encapsulated into objects, continually trips you. You expect this object to be in a such and such state, but due to some rare sequence of events, it turns out to be in a state you did not expect, having been mutated by another piece of code. For example, take a popular architectural pattern where a repository class encapsu

## What are objects anyway? - Rant With Brent 02

DevFeed: [What are objects anyway? - Rant With Brent 02](<https://devfeed.tech/articles/what-are-objects-anyway-rant-with-brent-02-44327.md>)

Original publisher: [Read original article](<https://stitcher.io/blog/what-are-objects-anyway-rant-with-brent>)

Author: Brent

Published: 2019-06-05T00:00:00Z

Content type: opinion

Language: en

Sources: [Stitcher](<https://devfeed.tech/sources/stitcher-io.md>)

Topics: [object](<https://devfeed.tech/topics/object.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [apple](<https://devfeed.tech/tags/apple.md>), [object](<https://devfeed.tech/tags/object.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [oop](<https://devfeed.tech/tags/oop.md>), [podcasts](<https://devfeed.tech/tags/podcasts.md>), [programming](<https://devfeed.tech/tags/programming.md>), [rant](<https://devfeed.tech/tags/rant.md>), [spotify](<https://devfeed.tech/tags/spotify.md>), [take](<https://devfeed.tech/tags/take.md>)

### AI overview

A podcast episode examines the original definition of object-oriented programming and compares it with how OOP is understood today.

### Source excerpt

Read the full post on https://stitcher.io/blog/what-are-objects-anyway-rant-with-brent

## Object Relational Database Management System

DevFeed: [Object Relational Database Management System](<https://devfeed.tech/articles/object-relational-database-management-system-34586.md>)

Original publisher: [Read original article](<https://tapoueh.org/blog/2018/03/object-relational-database-management-system/>)

Author: Dimitri Fontaine PostgreSQL Major Contributor; Author

Published: 2018-03-22T16:40:39Z

Content type: article

Language: en

Sources: [Dimitri Fontaine](<https://devfeed.tech/sources/dimitri-fontaine.md>)

Topics: [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Database](<https://devfeed.tech/topics/database.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [ordbms](<https://devfeed.tech/tags/ordbms.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [programming](<https://devfeed.tech/tags/programming.md>)

### AI overview

This article explains why PostgreSQL is described as an object-relational database management system. It introduces object-oriented programming and discusses object-orientation models, including message passing, in relation to database systems and programming languages.

### Source excerpt

PostgreSQL is the world's most advanced open source database, and per the PostgreSQL Wikipedia page it is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards compliance. In this article, we try to understand why would PostgreSQL be named an object-relational thing. What is Object Oriented Programming and how does that apply to a database system?

## Object oriented generators

DevFeed: [Object oriented generators](<https://devfeed.tech/articles/object-oriented-generators-44184.md>)

Original publisher: [Read original article](<https://stitcher.io/blog/object-oriented-generators>)

Author: Brent

Published: 2017-06-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stitcher](<https://devfeed.tech/sources/stitcher-io.md>)

Topics: [generators](<https://devfeed.tech/topics/generators.md>), [file](<https://devfeed.tech/topics/file.md>), [object](<https://devfeed.tech/topics/object.md>), [IO](<https://devfeed.tech/topics/io.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [file](<https://devfeed.tech/tags/file.md>), [generators](<https://devfeed.tech/tags/generators.md>), [memory](<https://devfeed.tech/tags/memory.md>), [object](<https://devfeed.tech/tags/object.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [tests](<https://devfeed.tech/tags/tests.md>)

### AI overview

An article compares an object-oriented implementation of a generator that reads lines from a large file with a generator-function approach. It reports similar execution time and memory usage, while arguing that the object-oriented version is easier to reuse.

### Source excerpt

Read the full post on https://stitcher.io/blog/object-oriented-generators

## Reducing Type Hierarchies

DevFeed: [Reducing Type Hierarchies](<https://devfeed.tech/articles/reducing-type-hierarchies-22116.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2016/10/reducing-type-hierarchies.html>)

Published: 2016-10-09T00:00:00Z

Content type: article

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>), [interface](<https://devfeed.tech/topics/interface.md>), [Inheritance](<https://devfeed.tech/topics/inheritance.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [data type](<https://devfeed.tech/topics/data-type.md>)

Tags: [ardan-labs](<https://devfeed.tech/tags/ardan-labs.md>), [blog](<https://devfeed.tech/tags/blog.md>), [c-sharp](<https://devfeed.tech/tags/c-sharp.md>), [composition](<https://devfeed.tech/tags/composition.md>), [go](<https://devfeed.tech/tags/go.md>), [go-programming](<https://devfeed.tech/tags/go-programming.md>), [golang](<https://devfeed.tech/tags/golang.md>), [hierarchy](<https://devfeed.tech/tags/hierarchy.md>), [inheritance](<https://devfeed.tech/tags/inheritance.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [java](<https://devfeed.tech/tags/java.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [object-oriented-programming](<https://devfeed.tech/tags/object-oriented-programming.md>), [programming](<https://devfeed.tech/tags/programming.md>), [reuse](<https://devfeed.tech/tags/reuse.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

The excerpt argues that Go's lack of base types and subtyping makes traditional object oriented type hierarchies a poor fit for some code. It proposes grouping concrete types by shared behavior rather than shared state, using interfaces to group and decouple them, and using composition for type reuse. Its examples begin with an embedded generic Animal type specialized for Dog and Cat behavior; the excerpt ends during the example and does not show the later guidelines.

### Source excerpt

Introduction I see a lot of developers coming to Go from object oriented programming languages such as C# and Java. Because these developers have been trained to use type hierarchies, it makes sense for them to use this same pattern in Go. However, there are aspects of Go that don't allow type hierarchies to provide the same level of functionality they do in other object oriented programming languages. Specifically, the concepts of base types and subtyping don't exist in Go so type reuse requires a different way of thinking.

## Functional programming in the small, with Swift

DevFeed: [Functional programming in the small, with Swift](<https://devfeed.tech/articles/functional-programming-in-the-small-with-swift-21606.md>)

Original publisher: [Read original article](<http://miqu.me/blog/2015/09/09/functional-programming-in-the-small-with-swift/>)

Author: Miguel Angel Quiñones

Published: 2015-09-09T15:00:23Z

Content type: tutorial

Language: en

Sources: [Miguel Quinones](<https://devfeed.tech/sources/miguel-quinones.md>)

Topics: [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Swift](<https://devfeed.tech/topics/swift.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Closure](<https://devfeed.tech/topics/closure.md>), [Objective-C](<https://devfeed.tech/topics/objective-c.md>), [Object-oriented programming (OOP)](<https://devfeed.tech/topics/oop.md>)

Tags: [apps](<https://devfeed.tech/tags/apps.md>), [closure](<https://devfeed.tech/tags/closure.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [functions](<https://devfeed.tech/tags/functions.md>), [ios](<https://devfeed.tech/tags/ios.md>), [library](<https://devfeed.tech/tags/library.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [objective-c](<https://devfeed.tech/tags/objective-c.md>), [programming](<https://devfeed.tech/tags/programming.md>), [swift](<https://devfeed.tech/tags/swift.md>)

### AI overview

The author recommends "Functional Programming in the small, Object Oriented in the large" for Swift iOS teams: UIKit and other Apple frameworks are object-oriented, so adopting FP need not mean restructuring an app. Swift closures are first-class functions, with concise syntax and trailing-closure support that can aid readability and DSLs; Objective-C blocks and selectors are described as less uniform and more complex. Learning function signatures, including generic ones, helps identify how functions compose and what their types imply, though Swift does not guarantee purity. The author encourages using map, filter, reduce, and flatMap to write declarative transformations, while advising ordinary loops when no result is being produced. Custom operators can hide the mechanics of connecting functions, but may be cryptic to readers unfamiliar with them. The practical goal is clearer, maintainable code, with style choices weighed against team readability.

### Source excerpt

In a previous post, I wrote about the choice of paradigms that Swift presents for it's target audience. I also gave my opinion on how people with different backgrounds might see and approach the Functional Programming paradigm. In this post I want to share how I started to take advantage of FP with Swift for the practical domain of iOS developers: Building apps. Silver bullets In software development there are no silver bullets to kill your problems and move on. We always need to find tradeoffs and evaluate our options to decide what would be the best choice. We often need to consider not only the technical aspects but cultural or team aspects too. iOS applications involve a great deal of UI programming. The iOS frameworks are object-oriented, and Swift is not a pure FP language. Throwing away all the code from Apple's frameworks just to make our code more functional is not a realistic approach. Thus we need to balance where we want to use from different programming paradigms. For a beginner, or a team with not too much experience with FP, my choice would be doing Functional Programming in the small, Object Oriented in the large. FP in the small using Swift Let's look at the features of Swift and the standard library that help write more 'functional' without having to restructure or change how we build a project. Better functions One of the first terms you will hear when diving into FP is that functions are first-class citizens, or the language supports higher-order functions. What this means is that functions are treated like any other type. Think as functions being treated like objects; They can accept other functions as input, return other functions, and be stored and passed around. Under this definition Objective-C kind of supports this, but it's lacking in several areas. Firstly, there's a difference between blocks and selectors, the way to use them is different and the syntax is more complex. Secondly, in Swift a closure is a function without name, and they bo

## Functional vs Object-oriented approaches to validation

DevFeed: [Functional vs Object-oriented approaches to validation](<https://devfeed.tech/articles/functional-vs-object-oriented-approaches-to-validation-32148.md>)

Original publisher: [Read original article](<https://adambard.com/blog/oo-vs-functional-form-validation/>)

Published: 2014-12-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Python](<https://devfeed.tech/topics/python.md>), [Exception](<https://devfeed.tech/topics/exception.md>)

Tags: [exception](<https://devfeed.tech/tags/exception.md>), [functional](<https://devfeed.tech/tags/functional.md>), [object-oriented](<https://devfeed.tech/tags/object-oriented.md>), [python](<https://devfeed.tech/tags/python.md>), [validation](<https://devfeed.tech/tags/validation.md>)

### AI overview

This article compares functional and object-oriented approaches to validating and cleaning data in Python. It presents equivalent validation designs that return cleaned data on success and collect errors when validation fails, while discussing closures, exceptions, and execution flow.

### Source excerpt

Functional programming is often described in terms of its contrast with object-oriented programs; that is, you write functions that act on data instead of objects that wrap data and use methods to act on themselves. Functional programming wonks (like me) will tell you that writing code this way is generally better than OO, but I don't want to do that (right now). However, in this post, I'm not here to argue either side. Today, I'm just going to demonstrate a few equivalent approaches to the same problem: validating data.

[Next page](<https://devfeed.tech/tags/object-oriented.md?cursor=WyIyMDE0LTEyLTA3VDAwOjAwOjAwKzAwOjAwIiwgImNkZjZmMWRmLTAwNzctNGNlYy05YWMyLWM5MzVhMzM5M2UzYiJd>)