Urgent.News

What's breaking now, across thousands of outlets.

Tech

Invention of OOPs

1. The problem OOP was trying to solve In the late 1950s and early 1960s, programs were written as long sequences of procedures operating on shared global data. As programs grew, this broke down: Any function could change any data, so bugs spread across the whole codebase. Real-world things (a ship, a customer, a bank account) had no single home in the code; their data and behaviour were…

In the late 1950s and early 1960s, programs were written as long sequences of procedures operating on shared global data. This approach broke down as programs grew larger, with any function potentially changing any data, causing bugs to spread across the entire codebase. Real-world entities such as ships, customers, and bank accounts had no single home in the code; their data and behavior were scattered throughout.

Researchers sought a way to model the world as a set of self-contained things that could communicate with each other. This idea led to the development of object-oriented programming (OOP). The story of OOP spans several key milestones and individuals.

In 1963, Ivan Sutherland at MIT created Sketchpad, a graphics system featuring master drawings and instances, which can be considered an early form of class/object. Between 1962 and 1967, Ole-Johan Dahl and Kristen Nygaard at the Norwegian Computing Center in Oslo developed Simula I and Simula 67, marking the first OOP language. Simula 67 introduced classes, objects, inheritance, subclasses, and virtual methods, providing the foundations for OOP.

The term "object-oriented" was coined by Alan Kay in 1966-1967, inspired by Sketchpad, Simula, and biological concepts of cells communicating via messages. In 1972-1980, Xerox PARC developed Smalltalk, a pure OOP language where everything is an object that communicates by sending messages. Smalltalk also introduced the graphical user interface (GUI), windows, and the Model-View-Controller (MVC) architecture.

Bjarne Stroustrup at Bell Labs introduced C with Classes in 1979, followed by the release of C++ in 1983. Stroustrup incorporated Simula's ideas into C, making OOP more accessible for mainstream industry use. Objective-C, developed by Brad Cox and Tom Love in 1984, brought Smalltalk-style messaging to C, laying the groundwork for NeXT and Apple's platforms.

In 1994, Gamma, Helm, Johnson, and Vlissides published "Design Patterns," a catalog of 23 reusable OOP design solutions. This work turned OOP into a design discipline, and in 1995, James Gosling at Sun Microsystems introduced Java, emphasizing write once, run anywhere and making class-based OOP the default for enterprise software.

Over time, principles such as SOLID have emerged to guide the construction of maintainable object-oriented systems. These principles include Single Responsibility, which ensures a class has only one reason to change; Open/Closed, which allows classes to be open for extension but closed for modification; Liskov Substitution, which ensures that subtypes can replace their base types without altering correctness; Interface Segregation, which promotes many small interfaces rather than one large one; and Dependency Inversion, which advocates depending on abstractions rather than concrete implementations.

OOP plays a crucial role in system design, serving as the language for low-level design (LLD) where classes, interfaces, relationships, and patterns are defined. By representing domain concepts as objects and defining relationships between them, OOP allows developers to map real-world systems to software architecture. This mapping aids in creating clear, modular, and maintainable systems.

There are two main schools of thought in OOP: the Simula/C++/Java approach, which focuses on classes and inheritance, and the Smalltalk/AI approach, which emphasizes objects sending messages. Both perspectives highlight the importance of messaging as the fundamental concept of OOP, echoing modern architectural patterns like microservices and actor systems.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

I Built ReleaseReady: A Simple Tool to Check Your Project Before Release 🚀

I Built ReleaseReady: A Simple Tool to Check Your Project Before Release 🚀 Before releasing a project, there are many small things developers need to check — security, build configuration…

  • ReleaseReady tool scans repositories for release-readiness
  • Identifies potential issues in security, dependencies, documentation, and more
  • Achieved 98% readiness score in self-test with 8 passed checks

D35:信心 0.70 的那一注,押在已經漲了 1.3% 的盤上

九點二十七分,阿富看了一眼盤。加權指數開 47767,這時已經拉到 48253,比前一天收盤漲 1.30%。一分鐘後他寫下今天的策略,裡面有一筆預測:大盤收盤上漲,信心 0.70,區間 48000 到 48500。 0.70 是他整個實驗以來寫過最高的信心值。我把交易日誌裡所有帶信心數字的預測翻了一遍,五十多處,大多落在 0.40 到 0.55,最高的只到 0.60。今天第一次站上 0.70。…

Expo OTA Updates Are a Loaded Gun. Here's the Safety.

TL;DR runtimeVersion is the only thing standing between an OTA update and a crash loop. Use the fingerprint policy, not appVersion . An OTA update can't change native code.

  • Runtime version mismatch can cause app crashes during OTA updates
  • Fingerprint policy ensures compatibility of OTA updates
  • Use preview channel for testing OTA updates before production

More from Wednesday 30 September →