mirror of
https://github.com/ByteByteGoHq/system-design-101.git
synced 2026-04-01 16:57:23 -04:00
This PR adds all the guides from [Visual Guides](https://bytebytego.com/guides/) section on bytebytego to the repository with proper links. - [x] Markdown files for guides and categories are placed inside `data/guides` and `data/categories` - [x] Guide links in readme are auto-generated using `scripts/readme.ts`. Everytime you run the script `npm run update-readme`, it reads the categories and guides from the above mentioned folders, generate production links for guides and categories and populate the table of content in the readme. This ensures that any future guides and categories will automatically get added to the readme. - [x] Sorting inside the readme matches the actual category and guides sorting on production
47 lines
2.6 KiB
Markdown
47 lines
2.6 KiB
Markdown
---
|
||
title: "Top 8 Programming Paradigms"
|
||
description: "Explore the top 8 programming paradigms shaping modern software development."
|
||
image: "https://assets.bytebytego.com/diagrams/0120-top-8-programming-paradigms-2.png"
|
||
createdAt: "2024-03-07"
|
||
draft: false
|
||
categories:
|
||
- software-development
|
||
tags:
|
||
- "Programming Paradigms"
|
||
- "Software Development"
|
||
---
|
||
|
||

|
||
|
||
## Imperative Programming
|
||
|
||
Imperative programming describes a sequence of steps that change the program’s state. Languages like C, C++, Java, Python (to an extent), and many others support imperative programming styles.
|
||
|
||
## Declarative Programming
|
||
|
||
Declarative programming emphasizes expressing logic and functionalities without describing the control flow explicitly. Functional programming is a popular form of declarative programming.
|
||
|
||
## Object-Oriented Programming (OOP)
|
||
|
||
Object-oriented programming (OOP) revolves around the concept of objects, which encapsulate data (attributes) and behavior (methods or functions). Common object-oriented programming languages include Java, C++, Python, Ruby, and C#.
|
||
|
||
## Aspect-Oriented Programming (AOP)
|
||
|
||
Aspect-oriented programming (AOP) aims to modularize concerns that cut across multiple parts of a software system. AspectJ is one of the most well-known AOP frameworks that extends Java with AOP capabilities.
|
||
|
||
## Functional Programming
|
||
|
||
Functional Programming (FP) treats computation as the evaluation of mathematical functions and emphasizes the use of immutable data and declarative expressions. Languages like Haskell, Lisp, Erlang, and some features in languages like JavaScript, Python, and Scala support functional programming paradigms.
|
||
|
||
## Reactive Programming
|
||
|
||
Reactive Programming deals with asynchronous data streams and the propagation of changes. Event-driven applications, and streaming data processing applications benefit from reactive programming.
|
||
|
||
## Generic Programming
|
||
|
||
Generic Programming aims at creating reusable, flexible, and type-independent code by allowing algorithms and data structures to be written without specifying the types they will operate on. Generic programming is extensively used in libraries and frameworks to create data structures like lists, stacks, queues, and algorithms like sorting, searching.
|
||
|
||
## Concurrent Programming
|
||
|
||
Concurrent Programming deals with the execution of multiple tasks or processes simultaneously, improving performance and resource utilization. Concurrent programming is utilized in various applications, including multi-threaded servers, parallel processing, concurrent web servers, and high-performance computing.
|