Mariana Berga
Rute Figueiredo

25. Oktober 2023

Min Read

Funktionale Programmierung vs. OOP: Paradigmen vergleichen

Funktionale Programmierung und objektorientierte Programmierung (OOP) haben sehr unterschiedliche Programmieransätze. Dieser Artikel erklärt detailliert, woraus die einzelnen Programmierparadigmen bestehen, und fasst die wichtigsten Unterschiede zusammen.

blue arrow to the left
Imaginary Cloud logo

Programmierparadigmen

Ein Programmierparadigma ist ein Ansatz (oder eine Methode) zur Lösung einer bestimmten Programmieraufgabe. Paradigmen stehen für das Verschiedene Strategien, Prinzipien, und Regeln ein Entwickler kann implementieren, um Software zu entwickeln.

Jede existierende Programmiersprache (und es gibt viele) muss mindestens einer folgen Programmierparadigma. Trotz ihrer Unterschiede haben alle Paradigmen ihre Vor- und Nachteile, weshalb immer mehr beliebte Programmiersprachen das Angebot bevorzugen Multiparadigmenprogrammierung anstatt strikt nur einem zu folgen. In der Regel kommt es jedoch auf die Präferenzen der Entwickler und die Ziele der Anwendungen an.

Außerdem ist es selten, dass es sich um eine „reine“ Sprache handelt, die nur ein Paradigma zu 100% unterstützt. Zum Beispiel Java ist bekanntermaßen eine objektorientierte Programmiersprache (OOP), aber ist sie zu 100% OOP? Nun, vielleicht nicht zu 100%, aber nah dran, was ausreicht, um ihren Ruf als „eine der reinsten“ OOP-Sprachen aufrechtzuerhalten.

Heutzutage gibt es eine unglaubliche Anzahl von Programmierparadigmen, denen wir folgen können. Kurz gesagt, es gibt zwei Hauptparadigmen - imperativ und deklarativ - die mehrere Programmierparadigmen beeinflussen. Zu den beliebtesten gehören das logische Programmierparadigma, das prozedurale Programmierparadigma und natürlich die funktionale und objektorientierte Programmierung.

blue arrow to the left
Imaginary Cloud logo

Funktionale Programmierung

Funktionale Programmierung ist ein deklaratives Programmierparadigma, das schreibt reine Funktionen, was bedeutet, dass diese Funktionen keine Variablen ändern, sondern stattdessen neue als Ausgabe generieren. Mit anderen Worten, die Ausgabe einer reinen Funktion hängt nur von den Eingabeparametern ab; es gibt also keine externen Auswirkungen, wodurch Nebenwirkungen vermieden werden. Darüber hinaus hilft das Schreiben reiner Funktionen Entwicklern auch dabei, veränderliche Daten und gemeinsame Zustände zu vermeiden.

Daher hat funktionale Programmierung viele Vorteile und wird in vielen Programmiersprachen und Frameworks verwendet. Es ist ein beliebtes Programmierparadigma aufgrund seiner Fähigkeit wartbare und saubere Software erstellen durch die Verwendung von Funktionen, die für die Codeorganisation unerlässlich sind.

blue arrow to the left
Imaginary Cloud logo

Objektorientierte Programmierung

Objektorientierte Programmierung ist ein Programmierparadigma, das Daten und die Softwarestruktur auf der Grundlage des Konzepts von organisiert Klassen und Objekte.

Klassen sind eine Reihe von Anweisungen (oder Blueprints), die eine Datenstruktur für ein bestimmtes Objekt festlegen und festlegen, was das Objekt enthalten soll (die Variablentypen, die in einem Objekt existieren können) und wie es sich verhalten wird (die Methoden oder Elementfunktionen, die definieren, wie mit den Variablen gearbeitet wird). Somit gilt Objekte sind Instanzen von Klassen, da Klassen als „Vorlagen“ zum Erstellen von Objekten dienen. Außerdem können Objekte Daten in Form von Feldern (auch bekannt als Attribute) und Code in Form von Prozeduren (auch benannte Methoden) enthalten.

blue arrow to the left
Imaginary Cloud logo

Reine Funktionen

Wie bereits erwähnt, basiert die funktionale Programmierung auf Funktionen, wohingegen objektorientierte Programmierung auf Klassen und entsprechenden Objekten basiert. A wirken ist ein Prozess, der eine Dateneingabe abruft, verarbeitet und dann eine Ausgabe zurückgibt. Daher sind Funktionen Codemodule, die geschrieben wurden, um eine bestimmte Aufgabe zu erfüllen. Reine Funktionen sind „rein“, weil sie immer dieselbe Ausgabe für dieselben Argumentwerte zurückgeben.

Außerdem die reine Funktionsanwendung hat keine Nebenwirkungen da es keine Variation mit lokalen statischen Variablen, veränderlichen Referenzargumenten, Eingabestreams oder anderen externen Aspekten gibt. Sie sind völlig unabhängig von einem Staat; sie benötigen nur die Eingaben. Dieses Merkmal hat vier Hauptvorteile:

  • Gut Lesbarkeit und Verständlichkeit da sie atomar sind.
  • Reine Funktionen sind eine gute Lösung für parallele Verarbeitung über verteilte Computercluster und CPUs hinweg.
  • Da reine Funktionen unabhängig sind, ist es einfacher zu refaktorieren und zu reorganisieren sie innerhalb des Codes. Außerdem macht es sie auch mehr, wenn sie unabhängig von außen sind tragbar und einfacher wiederzuverwenden in anderen Anwendungen.
  • Reine Funktionen können sein leicht getestet, wenn man bedenkt, dass man nur die Eingaben testen und das (erwartete) Ergebnis bestätigen muss.

Reine Funktionen sind daher sehr einfache und wiederverwendbare Codeblöcke, die bei der Implementierung eines Programms äußerst praktisch sein können. Daher ist es absolut sinnvoll, dass Funktionen sind die Haupteinheit der funktionalen Programmierung. Obwohl es möglich ist, reine Funktionen in OOP zu erstellen, steht dieses Paradigma nicht im Mittelpunkt, da seine Haupteinheit Objekte sind, die wiederum so konzipiert sind, dass sie mit dem Zustand des Objekts interagieren.

Der Nachteil reiner Funktionen besteht darin, dass Operationen Vorrang vor Daten haben. Wenn eine reine Funktion nur Ausgaben mit identischen Eingaben erzeugt, kann sie keine anderen (und möglicherweise aussagekräftigen) Werte zurückgeben. Aus diesem Grund ist funktionale Programmierung extrem betriebsbereit, praktisch und, wie der Name schon sagt, funktionell.

blue arrow to the left
Imaginary Cloud logo

Objekte und Klassen

Objektorientierte Programmierung stützt sich in hohem Maße auf das Konzept von Klassen und Objekten, die wiederum Funktionen und Daten enthalten. Wie bereits erklärt, ist eine Klasse ein etablierter Entwurf (oder Prototyp), aus dem Objekte gebaut werden. Klassen stellen also eine Reihe von Methoden (oder Eigenschaften) dar, die dem Typ eines bestimmten Objekts gemeinsam sind. Im Gegenzug ein Objekt ist die Basiseinheit von OOP und repräsentiert reale Entitäten. Ein Objekt muss über Folgendes verfügen:

  • Eine Identität: ein eindeutiger Name; eine eindeutige ID ermöglicht es Objekten, mit anderen Objekten zu interagieren.
  • Ein Staat: Der Zustand eines Objekts spiegelt die Eigenschaften oder Attribute eines Objekts wider.
  • Verhalten: die Methoden eines Objekts und wie Objekte auf andere Objekte reagieren und mit ihnen interagieren.

Stellen wir uns zum Beispiel vor, wir haben „Athlete 1" als Objekt, und innerhalb dieses Objekts haben wir alle Daten über das Objekt durch die Eigenschaften. Das Bundesland könnte also Sport, Größe, Gewicht, Trophäen, Land usw. sein. In diesen Eigenschaften werden Daten gespeichert und Daten des Objekts kann durch Funktionen manipuliert werden, die einem Objekt zugeordnet sind. In diesem Fall könnten die Methoden dieses Objekts Attack, Defense, Jump, Run, Sprint usw. lauten. Außerdem kann der Entwickler Eigenschaften erstellen, indem er Variablen im Codemodul des Objekts deklariert.

Zusammenfassend lässt sich sagen, dass in OOP-Sprachen die Daten in den Eigenschaften gespeichert werden, und die Logik dahinter liegt in Funktionen und entsprechende Methoden. Bei der objektorientierten Programmierung sind Methoden Funktionen, die zu einer Klasse oder einem Objekt gehören; Methoden „gehören“ einer bestimmten Klasse oder sogar Objekt. Im Vergleich Funktionen sind „kostenlos“, was bedeutet, dass sie sich in einem anderen Bereich des Codes befinden können und nicht zu Klassen oder Objekten gehören. Daher ist eine Methode immer eine Funktion, aber eine Funktion ist nicht immer eine Methode. Wenn Objekte Eigenschaften und Methoden enthalten, die eng zusammenarbeiten, gehören diese Objekte derselben Klasse an.

In einer OOP-Sprache wird Code geschrieben, um die Klassen und folglich die jeweiligen Objekte zu definieren. Reine objektorientierte Sprachen folgen vier Kernprinzipien: Verkapselung, Abstraktion, Vererbung und Polymorphie.

The Four OOP Principles

Konzentrieren wir uns zunächst auf die Verkapselung. Verkapselung ist in OOP sehr wichtig, da es in der Fähigkeit besteht, Variablen innerhalb einer Klasse vor dem Zugriff von außen zu kapseln. Eigenschaften und Methoden können privat oder öffentlich sein. OOP-Sprachen ermöglichen es Entwicklern, mehrere Sichtbarkeitsgrade festzulegen. Einerseits können private Funktionen nur für die Klasse selbst sichtbar sein. Auf der anderen Seite können öffentliche Features für jeden sichtbar sein.

Erbschaft ist auch äußerst wichtig, da es einen Mechanismus zur Organisation und Strukturierung der Software bietet. Es ermöglicht Klassen, Zustände und Verhaltensweisen von ihren Superklassen zu erben, was auch bedeutet, dass dieses Prinzip die Wiederverwendbarkeit unterstützt.

Veränderlich gegen Unveränderlich

Objektorientierte Programmierung kann veränderbare Daten unterstützen. Im Gegensatz dazu verwendet die funktionale Programmierung stattdessen unveränderliche Daten. In beiden Programmierparadigmen ist ein unveränderliches Objekt bezieht sich auf ein Objekt, dessen Zustand nach der Erstellung nicht mehr geändert werden kann. EIN veränderbares Objekt besteht aus genau dem Gegenteil; der Zustand eines Objekts kann auch nach seiner Erstellung geändert werden.

In reinen funktionalen Programmiersprachen (z. B. Haskell) ist es unmöglich, veränderbare Objekte zu erstellen. Daher sind Objekte in der Regel unveränderlich. In OOP-Sprachen ist die Antwort nicht so einfach, da sie mehr davon abhängt die Spezifikationen jeder OOP-Sprache. Zeichenketten- und konkrete Objekte können als unveränderliche Objekte ausgedrückt werden, um sowohl die Laufzeiteffizienz als auch die Lesbarkeit zu verbessern. Außerdem können unveränderliche Objekte beim Umgang mit Multithread-Anwendungen sehr hilfreich sein, da dadurch das Risiko vermieden wird, dass die Daten von anderen Threads geändert werden.

Veränderbare Objekte haben auch ihre Vorteile. Sie ermöglichen es Entwicklern, Änderungen direkt am Objekt vorzunehmen, ohne es zuweisen zu müssen. Das spart Zeit und beschleunigt das Projekt. Es ist jedoch Sache des Entwicklers und des Entwicklungsteams, zu entscheiden, ob sich dies gemäß den Projektzielen tatsächlich auszahlt. Zum Beispiel kann eine Mutation auch mehr Türen für Bugs öffnen, aber manchmal ist ihre Geschwindigkeit sehr geeignet und sogar notwendig.

Daher kann OOP Veränderlichkeit unterstützen, aber seine Sprachen können auch Unveränderlichkeit ermöglichen. Java, C++, C#, Python, Rubin, und Perl können als objektorientierte Programmiersprachen betrachtet werden, aber sie unterstützen nicht ausschließlich Mutabilität oder Unveränderlichkeit. In Java sind die Zeichenketten beispielsweise unveränderliche Objekte. Nichtsdestotrotz hat Java auch veränderbare Versionen von Zeichenketten. Ähnlich können Entwickler in C++ neue Klasseninstanzen als unveränderlich oder als veränderbar deklarieren. Ein weiteres gutes Beispiel ist Python, das eingebaute Typen hat, die unveränderlich sind (z. B. Zahlen, Boolesche Werte, Frozensets, Zeichenketten und Tupel); die benutzerdefinierten Klassen sind jedoch normalerweise veränderbar.

Es ist auch wichtig zu bedenken, dass viele der genannten Sprachen nicht zu 100% funktional oder objektorientiert sind. Zum Beispiel Python ist eine der beliebtesten Sprachen, und es ist wirklich eine Sprache mit mehreren Paradigmen. Daher kann es je nach Präferenz der Entwickler einen funktionaleren oder OOP-Ansatz beinhalten.

Imperativ gegen deklarativ

Deklarative Programmierung ist ein Programmierparadigma, das festlegt, was das Programm leisten muss. Es deklariert nicht, wie das Programm eine bestimmte Berechnung während des gesamten Kontrollablaufs durchführen soll; es deklariert lediglich was es will ohne zu erklären, wie man es bekommt. Im Gegensatz dazu Imperative Programmierung stützt sich auf eine Abfolge von Anweisungen, um den Status eines Programms zu ändern, und bietet eine detaillierte Beschreibung für jeden Schritt auf wie erreicht man ein bestimmtes Ziel.

Die Mehrheit von OOP-Sprachen wurden in erster Linie so konzipiert, dass sie der imperativen Programmierung folgen. Im Vergleich dazu funktionale Programmierung neigt dazu, einem eher deklarativen Programmieransatz zu folgen, da seine Logik die Flusskontrolle zur Erzielung einer bestimmten Ausgabe nicht explizit beschreibt. Stattdessen drückt es eine Berechnung als reine Funktion aus.

blue arrow to the left
Imaginary Cloud logo

Funktionale Programmierung im Vergleich zu OOP: Die wichtigsten Unterschiede

blue arrow to the left
Imaginary Cloud logo

Fazit

Funktionale Programmierung und OOP sind zwei der beliebtesten und (wenn auch nur teilweise) verfolgten Programmierparadigmen. Obwohl beide unterschiedliche Herangehensweisen verfolgen, wurden beide entwickelt, um Entwicklern dabei zu helfen, effiziente und qualitativ hochwertige Anwendungen zu erstellen. Diese Paradigmen haben einfach unterschiedliche Wege — und mit „Wegen“ meinen wir Strategien, Prinzipien und Regeln — um dorthin zu gelangen.

Einerseits in OOP Daten werden in Objekten gespeichert da die Daten und das jeweilige Verhalten (das heißt, was ein Programm mit oder mit Daten machen kann) zu einem einzigen Ort gehören sollten.

Andererseits, in der funktionalen Programmierung Daten werden von Funktionen weitergegeben und gesammelt. Es speichert jedoch keine Daten in Objekten, da dies die Klarheit beeinträchtigen könnte, wenn man bedenkt, dass bei der funktionalen Programmierung Daten und Verhalten unterschiedlich sind.

Beide Programmierparadigmen haben ihre Vor- und Nachteile, weshalb viele Entwickler es tatsächlich vorziehen, sie zu implementieren hybride Lösungen entsprechend den Anforderungen und Zielen jedes Projekts.

Grow your revenue and user engagement by running a UX Audit! - Book a call

Fanden Sie diesen Artikel hilfreich? Diese könnten dir auch gefallen!

blue arrow to the left
Imaginary Cloud logo

Real-world examples by project type

Theory is cheap. The functional programming or OOP split gets a lot clearer when you look at what teams actually ship.

Streaming and high-concurrency back ends. Netflix rebuilt parts of its API around functional reactive programming, a declarative style that treats data as asynchronous streams of events and stitches them together with operators like map and zip, using RxJava to get more resilience and efficiency at scale .

Fintech and correctness-critical logic. Nubank, the largest independent digital bank in Latin America, runs on Clojure, and in 2020 it acquired Cognitect, the consultancy behind the language. By the time of that deal it was reportedly running around 2.5 million lines of Clojure across roughly 500 microservices. That is a bank betting big on functional programming, because, as its engineers put it, financial services look a lot like mathematical functions.

Real-time and fault-tolerant systems. Elixir, running on the Erlang BEAM virtual machine, is a go-to for messaging and anything that has to stay up when parts of it fall over. It is still one of the most admired languages in the 2025 Stack Overflow survey.

Data engineering and analytics. Transformation-heavy work, ETL, batch and stream processing, fits the functional style like a glove, which is why Scala and PySpark pipelines lean so hard on map, filter and reduce and on immutability.

Enterprise and line-of-business applications. CRUD-heavy products, internal tools and big enterprise systems usually lean on object-oriented programming. The domain is rich, the team is large, and the hiring depth and mature tooling of Java, C# and TypeScript keep the cost of ownership down. It is the unglamorous majority of software, and OOP is the pragmatic default for most of it.

blue arrow to the left
Imaginary Cloud logo

The Imaginary Cloud Paradigm-Fit Matrix

After enough client projects you stop arguing about languages and start watching two variables, because they predict paradigm fit better than popularity or personal taste ever do. The first is data and concurrency complexity: how much your system is really about transforming and reasoning over data under load. The second is team size and FP talent: how big the team is, and how easily you can hire and keep people fluent in functional code.

Plot those two and you get four zones. We named them, because naming the zone is how the conversation stays honest.

Small / specialised team Large / generalist team
High data and concurrency complexity Specialist Core. Lean functional. A senior team on a pipeline, pricing engine or concurrent back end gets the most from immutability and pure functions. Hybrid Split. Functional core, imperative shell. Isolate the gnarly transformation logic in pure functions, then keep service and domain boundaries object-oriented so the wider team stays productive.
Low data and concurrency complexity Pragmatic Default. Either way works. Pick what the team already knows, usually OOP, because here the paradigm matters less than shipping. Broad Build. Lean object-oriented. CRUD and line-of-business systems with broad hiring needs, where object-oriented programming's talent pool and clear boundaries give the lowest cost of ownership.

How to read the matrix

Drop your project onto both axes before the OOP or functional argument turns into a language war. The zone you land in is where the conversation starts, not where it ends, because regulation, an existing codebase and the seniority of the people you can actually hire will all nudge the answer. Treat it as a map, not a verdict.

The two mistakes we see most

The classic blunder is reaching for a heavily functional stack on a Broad Build product. You buy correctness guarantees you do not need and inherit a hiring problem you cannot afford. The mirror-image mistake is forcing mutable, object-heavy code onto a Specialist Core workload, then burning the budget chasing race conditions. Naming the zones early, before a line of code exists, is how we keep clients out of both ditches.

A quick scenario: same feature, two paradigms

Picture two teams building the same payments-reconciliation feature. The OOP team hires from a deep Java pool and ships a first cut quickly, then pays for it later as concurrency bugs in shared mutable state drag on every release. The functional team spends longer on ramp-up and recruitment, but its reconciliation core is pure, property-tested and parallelises cleanly, so its costs flatten as volume climbs. Neither team is wrong. The matrix just tells you which cost curve you would rather live with for this feature.

A practical decision checklist

Before you commit a paradigm for a new service or product, run through six questions.

  1. What is the system mostly doing, transforming data or modelling a domain of interacting entities? Transformation leans functional. Rich domains lean OOP.
  2. How concurrent is it? Heavy concurrency or distribution sharply raises the value of immutability.
  3. Who is going to build and maintain it, and can you hire more of them? Talent availability is a constraint, not a footnote.
  4. What does a defect cost you? Finance, healthcare and safety justify FP's stricter guarantees.
  5. What does the existing codebase already use? Consistency usually beats a marginally better paradigm in a greenfield corner.
  6. Where is the clean seam between pure logic and I/O? If you can draw it, a functional core with an imperative shell is often the best of both.

Frequently asked questions

What is the difference between functional and object-oriented programming?

Functional programming keeps data immutable and runs it through pure functions with no side effects, so data and behaviour stay apart. OOP bundles data and behaviour together inside objects that hold mutable state. In short, the OOP vs functional difference is this: FP passes data through functions, while OOP keeps data and the methods that act on it in one place.

When should I use functional programming instead of OOP?

Use functional programming when the system is mostly data transformation, concurrency or correctness-critical logic: pricing engines, ETL and analytics pipelines, streaming back ends, financial calculations. Its immutability and pure functions kill off whole classes of state bug and make code safe to parallelise. Use OOP when you are modelling a rich domain full of interacting entities and need a large team to move fast.

Give me a real example of when to use functional programming over OOP.

A bank building payments and ledger logic is a strong case. The rules behave like mathematical functions, correctness is non-negotiable, and immutability heads off a pile of concurrency bugs. Nubank runs millions of lines of Clojure for exactly this reason. Flip it around and a CRM or admin app, rich domain, large team, is usually a cleaner fit for OOP.

Is Python functional or object-oriented?

Both. Python is multi-paradigm: it fully supports OOP and also ships functional tools like lambdas, comprehensions, map, filter, functools and itertools. Its own documentation calls it multi-paradigm (Python Functional Programming HOWTO). Most production Python is object-oriented with functional touches.

Is React functional or OOP?

These days, functional in style. Since hooks arrived, components are written as functions, and React leans on functional ideas: immutable state, pure render functions, composition over inheritance. Class components still exist and are object-oriented, but new code is overwhelmingly function-based.

Can you mix functional and OOP in the same project?

Yes, and most large systems do. The reliable pattern is a functional core, imperative shell: keep the business calculations as pure, easily tested functions, then wrap them in object-oriented code for persistence, I/O and orchestration. The one rule is to keep the boundary explicit, so mutable state never seeps into the pure layer.

Which paradigm is better for large engineering teams?

For large, fast-growing generalist teams, object-oriented programming languages usually have the edge: deeper talent pools, faster onboarding, mature tooling, and encapsulation boundaries that line up with team and service ownership. Strongly functional stacks can work for big teams when the problem is genuinely complex and you can hire and keep specialists. The smaller talent market is the catch.

Which is better for a startup?

For most startups, optimise for speed and hireability: a multi-paradigm stack like TypeScript or Python lets you ship and recruit fast. Go heavily functional only if your core problem is genuinely complex or correctness-critical, fintech or data infrastructure, and you can attract specialist engineers. A functional core inside a mainstream stack is often the best of both for an early team.

Should I learn OOP or functional programming first?

OOP first is the pragmatic route for most people, since it dominates job listings and existing codebases. That said, picking up functional ideas early, pure functions, immutability, higher-order functions, makes you a better OOP developer too, because it trains you to minimise shared mutable state. The practical move is to learn a multi-paradigm language like Python or TypeScript and absorb both.

Is functional programming faster than OOP?

Neither is faster by default. Functional code parallelises more safely because there is no shared mutable state, which helps throughput across cores and machines. OOP with in-place mutation can win in a tight single-threaded hot path by skipping reallocation. Performance hangs far more on your algorithms, data structures and runtime than on the paradigm.

What are the main functional programming languages?

Purely functional: Haskell. Functional-first but pragmatic: Clojure, Elixir, Erlang, F#, OCaml and Scala (which also does OOP). Multi-paradigm languages with strong functional support: Python, JavaScript and TypeScript, Kotlin, C# and Rust. Your pick usually comes down to ecosystem: Scala and Kotlin keep you on the JVM, F# on .NET, Elixir on the BEAM.

Does object-oriented programming support immutability?

Yes. Most OOP languages let you declare immutable types: Java's String and records, C#'s readonly and records, Python's tuples and frozen dataclasses, Kotlin's val. In OOP, immutability is a choice you make. In pure functional languages, it is the default.

blue arrow to the left
Imaginary Cloud logo

Conclusion

So, is one paradigm the winner? No, of course not. Functional programming and OOP just put state and behaviour in different places, and that single choice ripples out into your team, your risk and your bill. OOP wraps data and behaviour inside objects, which is brilliant for rich domains and large-team ownership. Functional programming sends immutable data through pure functions, which buys you correctness and safe concurrency. The strongest teams treat the OOP vs functional call as an architectural decision, weigh it against team structure, delivery risk, maintainability and cost of ownership, and more often than not land on a deliberate hybrid rather than a flag to plant.

Here is the whole thing in one line: pick the paradigm whose costs you are happiest to live with for this system, not the one that wins the argument. If you are making that call for a specific platform, our team has chosen and blended these paradigms across client systems, and we can help you place yours on the matrix above.

Book a technical architecture review with Imaginary Cloud

Grow your revenue and user engagement by running a UX Audit! - Book a call
Mariana Berga
Mariana Berga

Marketing-Praktikant mit besonderem Interesse an Technologie und Forschung. In meiner Freizeit spiele ich Volleyball und verwöhne meinen Hund so gut es geht.

Read more posts by this author
Rute Figueiredo
Rute Figueiredo

Softwareentwickler mit großer Neugier auf Technologie und deren Auswirkungen auf unser Leben. Liebe zu Sport, Musik und Lernen!

Read more posts by this author

People who read this post, also found these interesting:

Dropdown caret icon